[gnome-devel-docs] Updated Spanish translation



commit 5494a30774ba395926df939e7a365452d331d56c
Author: Nicolás Satragno <nsatragno gnome org>
Date:   Fri Mar 8 11:45:15 2013 +0100

    Updated Spanish translation

 platform-demos/es/es.po | 7972 ++++++++++++++++++++++++++++++-----------------
 1 files changed, 5186 insertions(+), 2786 deletions(-)
---
diff --git a/platform-demos/es/es.po b/platform-demos/es/es.po
index c08e9fd..0f1a103 100644
--- a/platform-demos/es/es.po
+++ b/platform-demos/es/es.po
@@ -3,29 +3,29 @@
 # Copyright (C) 2011 gnome-devel-docs's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-devel-docs package.
 # Jorge González <jorgegonz svn gnome org>, 2011.
-# Daniel Mustieles <daniel mustieles gmail com>, 2011, 2012.
 # Nicolás Satragno <nsatragno gnome org>, 2012, 2013.
+# Daniel Mustieles <daniel mustieles gmail com>, 2011, 2012, 2013.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: gnome-devel-docs.platform-demos.master\n"
-"POT-Creation-Date: 2013-01-10 19:07+0000\n"
-"PO-Revision-Date: 2013-01-14 12:33-0300\n"
-"Last-Translator: Nicolás Satragno <nsatragno gnome org>\n"
-"Language-Team: Español; Castellano <gnome-es-list gnome org>\n"
+"POT-Creation-Date: 2013-03-05 14:44+0000\n"
+"PO-Revision-Date: 2013-03-08 11:41+0100\n"
+"Last-Translator: Daniel Mustieles <daniel mustieles gmail com>\n"
+"Language-Team: Español <gnome-es-list gnome org>\n"
 "Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Gtranslator 2.91.5\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: Gtranslator 2.91.6\n"
 
 #. Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2
 msgctxt "_"
 msgid "translator-credits"
 msgstr ""
-"Nicolás Satragno <nsatragno gmail com>, 2012\n"
-"Daniel Mustieles <daniel mustieles gmail com>, 2011-2012\n"
+"Nicolás Satragno <nsatragno gmail com>, 2012 - 2013\n"
+"Daniel Mustieles <daniel mustieles gmail com>, 2011-2013\n"
 "Jorge González <jorgegonz svn gnome org>, 2011"
 
 #: C/index.page:7(credit/name)
@@ -60,12 +60,12 @@ msgid "Johannes Schmid"
 msgstr "Johannes Schmid"
 
 #: C/index.page:19(credit/years) C/bug-filing.page:11(credit/years)
-#: C/documentation.page:12(credit/years) C/entry.py.page:20(credit/years)
-#: C/model-view-controller.py.page:16(credit/years)
-#: C/properties.py.page:16(credit/years)
-#: C/signals-callbacks.py.page:16(credit/years)
-#: C/strings.py.page:16(credit/years) C/textview.py.page:16(credit/years)
-#: C/toolbar_builder.py.page:28(credit/years)
+#: C/documentation.page:12(credit/years) C/entry.py.page:22(credit/years)
+#: C/model-view-controller.py.page:17(credit/years)
+#: C/properties.py.page:17(credit/years)
+#: C/signals-callbacks.py.page:17(credit/years)
+#: C/strings.py.page:17(credit/years) C/textview.py.page:17(credit/years)
+#: C/toolbar_builder.py.page:29(credit/years)
 #: C/translate.page:12(credit/years)
 msgid "2011"
 msgstr "2011"
@@ -81,18 +81,18 @@ msgstr "2011"
 #: C/entry.vala.page:12(credit/name)
 #: C/filechooserdialog.vala.page:15(credit/name)
 #: C/gmenu.c.page:12(credit/name) C/gmenu.js.page:12(credit/name)
-#: C/gmenu.py.page:12(credit/name) C/gmenu.vala.page:19(credit/name)
-#: C/grid.py.page:13(credit/name) C/grid.vala.page:14(credit/name)
+#: C/gmenu.py.page:14(credit/name) C/gmenu.vala.page:19(credit/name)
+#: C/grid.py.page:14(credit/name) C/grid.vala.page:14(credit/name)
 #: C/GtkApplicationWindow.c.page:12(credit/name)
 #: C/GtkApplicationWindow.js.page:12(credit/name)
-#: C/GtkApplicationWindow.py.page:12(credit/name)
+#: C/GtkApplicationWindow.py.page:14(credit/name)
 #: C/GtkApplicationWindow.vala.page:12(credit/name)
 #: C/guitar-tuner.vala.page:21(credit/name)
 #: C/helloWorld.js.page:19(credit/name) C/image.vala.page:12(credit/name)
 #: C/image-viewer.vala.page:26(credit/name) C/js.page:11(credit/name)
 #: C/label.vala.page:12(credit/name) C/linkbutton.vala.page:12(credit/name)
 #: C/menubar.py.page:14(credit/name) C/menubar.vala.page:14(credit/name)
-#: C/menubutton.py.page:12(credit/name) C/menubutton.vala.page:12(credit/name)
+#: C/menubutton.py.page:13(credit/name) C/menubutton.vala.page:12(credit/name)
 #: C/messagedialog.vala.page:12(credit/name)
 #: C/progressbar.vala.page:12(credit/name) C/py.page:10(credit/name)
 #: C/radiobutton.vala.page:15(credit/name) C/scale.vala.page:14(credit/name)
@@ -102,12 +102,12 @@ msgstr "2011"
 #: C/textview.vala.page:12(credit/name)
 #: C/togglebutton.vala.page:15(credit/name) C/toolbar.js.page:12(credit/name)
 #: C/toolbar.vala.page:13(credit/name)
-#: C/toolbar_builder.py.page:14(credit/name)
+#: C/toolbar_builder.py.page:15(credit/name)
 #: C/toolbar_builder.vala.page:14(credit/name)
 #: C/treeview_simple_liststore.vala.page:14(credit/name)
 #: C/translate.page:10(credit/name) C/tutorial.py.page:14(credit/name)
 #: C/vala.page:10(credit/name) C/window.c.page:12(credit/name)
-#: C/window.py.page:12(credit/name) C/window.vala.page:12(credit/name)
+#: C/window.py.page:14(credit/name) C/window.vala.page:12(credit/name)
 msgid "Tiffany Antopolski"
 msgstr "Tiffany Antopolski"
 
@@ -243,101 +243,100 @@ msgstr "Taryn Fox"
 #: C/aboutdialog.py.page:15(credit/years)
 #: C/aboutdialog.vala.page:16(credit/years)
 #: C/beginner.js.page:12(credit/years) C/button.c.page:16(credit/years)
-#: C/button.js.page:14(credit/years) C/button.py.page:15(credit/years)
-#: C/button.vala.page:15(credit/years) C/buttonbox.py.page:15(credit/years)
+#: C/button.js.page:14(credit/years) C/button.py.page:16(credit/years)
+#: C/button.vala.page:15(credit/years) C/buttonbox.py.page:16(credit/years)
 #: C/checkbutton.c.page:14(credit/years)
 #: C/checkbutton.js.page:14(credit/years)
 #: C/checkbutton.py.page:15(credit/years)
 #: C/checkbutton.vala.page:14(credit/years)
-#: C/colorbutton.py.page:14(credit/years)
+#: C/colorbutton.py.page:15(credit/years)
 #: C/colorbutton.vala.page:16(credit/years)
 #: C/comboboxtext.js.page:16(credit/years) C/combobox.js.page:18(credit/years)
-#: C/combobox.py.page:14(credit/years) C/combobox.vala.page:14(credit/years)
+#: C/combobox.py.page:16(credit/years) C/combobox.vala.page:14(credit/years)
 #: C/combobox_multicolumn.py.page:15(credit/years)
 #: C/dialog.c.page:16(credit/years) C/dialog.js.page:14(credit/years)
-#: C/dialog.py.page:15(credit/years) C/dialog.vala.page:14(credit/years)
+#: C/dialog.py.page:16(credit/years) C/dialog.vala.page:14(credit/years)
 #: C/entry.c.page:14(credit/years) C/entry.js.page:14(credit/years)
-#: C/entry.py.page:14(credit/years) C/entry.vala.page:14(credit/years)
-#: C/filechooserdialog.py.page:17(credit/years)
+#: C/entry.py.page:16(credit/years) C/entry.vala.page:14(credit/years)
+#: C/filechooserdialog.py.page:18(credit/years)
 #: C/filechooserdialog.vala.page:17(credit/years)
-#: C/fontchooserwidget.py.page:15(credit/years)
+#: C/fontchooserwidget.py.page:16(credit/years)
 #: C/gmenu.c.page:14(credit/years) C/gmenu.js.page:14(credit/years)
-#: C/gmenu.py.page:14(credit/years) C/gmenu.py.page:20(credit/years)
+#: C/gmenu.py.page:16(credit/years) C/gmenu.py.page:22(credit/years)
 #: C/gmenu.vala.page:15(credit/years) C/grid.c.page:14(credit/years)
-#: C/grid.js.page:14(credit/years) C/grid.py.page:15(credit/years)
-#: C/grid.py.page:21(credit/years) C/grid.vala.page:16(credit/years)
+#: C/grid.js.page:14(credit/years) C/grid.py.page:16(credit/years)
+#: C/grid.py.page:22(credit/years) C/grid.vala.page:16(credit/years)
 #: C/GtkApplicationWindow.c.page:14(credit/years)
 #: C/GtkApplicationWindow.js.page:14(credit/years)
-#: C/GtkApplicationWindow.py.page:14(credit/years)
-#: C/GtkApplicationWindow.py.page:19(credit/years)
+#: C/GtkApplicationWindow.py.page:16(credit/years)
+#: C/GtkApplicationWindow.py.page:21(credit/years)
 #: C/GtkApplicationWindow.vala.page:14(credit/years)
 #: C/guitar-tuner.js.page:13(credit/years)
 #: C/hellognome.js.page:13(credit/years) C/helloWorld.js.page:16(credit/years)
 #: C/image.c.page:14(credit/years) C/image.js.page:13(credit/years)
-#: C/image.py.page:14(credit/years) C/image.vala.page:14(credit/years)
+#: C/image.py.page:16(credit/years) C/image.vala.page:14(credit/years)
 #: C/label.c.page:15(credit/years) C/label.js.page:14(credit/years)
-#: C/label.py.page:15(credit/years) C/label.py.page:20(credit/years)
+#: C/label.py.page:17(credit/years) C/label.py.page:22(credit/years)
 #: C/label.vala.page:14(credit/years) C/linkbutton.c.page:14(credit/years)
 #: C/linkbutton.js.page:14(credit/years) C/linkbutton.py.page:15(credit/years)
-#: C/linkbutton.vala.page:14(credit/years) C/menubar.py.page:16(credit/years)
-#: C/menubar.py.page:21(credit/years) C/menubar.vala.page:16(credit/years)
-#: C/menubutton.js.page:14(credit/years) C/menubutton.py.page:14(credit/years)
-#: C/menubutton.py.page:20(credit/years)
+#: C/linkbutton.vala.page:14(credit/years) C/menubar.c.page:16(credit/years)
+#: C/menubar.py.page:16(credit/years) C/menubar.py.page:21(credit/years)
+#: C/menubar.vala.page:16(credit/years) C/menubutton.js.page:14(credit/years)
+#: C/menubutton.py.page:15(credit/years) C/menubutton.py.page:21(credit/years)
 #: C/menubutton.vala.page:14(credit/years)
 #: C/messagedialog.c.page:15(credit/years)
 #: C/messagedialog.js.page:17(credit/years)
 #: C/messagedialog.py.page:15(credit/years)
 #: C/messagedialog.vala.page:14(credit/years)
-#: C/model-view-controller.py.page:21(credit/years)
-#: C/paned.py.page:14(credit/years) C/progressbar.c.page:15(credit/years)
+#: C/model-view-controller.py.page:22(credit/years)
+#: C/paned.py.page:15(credit/years) C/progressbar.c.page:15(credit/years)
 #: C/progressbar.js.page:13(credit/years)
-#: C/progressbar.py.page:14(credit/years)
+#: C/progressbar.py.page:15(credit/years)
 #: C/progressbar.vala.page:14(credit/years)
-#: C/properties.py.page:21(credit/years) C/radiobutton.c.page:16(credit/years)
+#: C/properties.py.page:22(credit/years) C/radiobutton.c.page:16(credit/years)
 #: C/radiobutton.js.page:14(credit/years)
-#: C/radiobutton.py.page:18(credit/years)
+#: C/radiobutton.py.page:16(credit/years)
 #: C/radiobutton.vala.page:17(credit/years) C/scale.c.page:16(credit/years)
-#: C/scale.js.page:14(credit/years) C/scale.py.page:15(credit/years)
-#: C/scale.vala.page:16(credit/years)
-#: C/scrolledwindow.py.page:14(credit/years)
+#: C/scale.js.page:14(credit/years) C/scale.py.page:16(credit/years)
+#: C/scale.vala.page:16(credit/years) C/scrolledwindow.c.page:16(credit/years)
+#: C/scrolledwindow.py.page:15(credit/years)
 #: C/scrolledwindow.vala.page:15(credit/years)
-#: C/separator.py.page:15(credit/years)
+#: C/separator.py.page:16(credit/years)
 #: C/set-up-gedit.js.page:13(credit/years)
-#: C/signals-callbacks.py.page:21(credit/years)
+#: C/signals-callbacks.py.page:22(credit/years)
 #: C/spinbutton.c.page:17(credit/years) C/spinbutton.js.page:17(credit/years)
-#: C/spinbutton.py.page:15(credit/years)
+#: C/spinbutton.py.page:16(credit/years)
 #: C/spinbutton.vala.page:16(credit/years) C/spinner.c.page:15(credit/years)
-#: C/spinner.js.page:14(credit/years) C/spinner.py.page:14(credit/years)
+#: C/spinner.js.page:14(credit/years) C/spinner.py.page:15(credit/years)
 #: C/spinner.vala.page:14(credit/years) C/statusbar.c.page:18(credit/years)
-#: C/statusbar.js.page:14(credit/years) C/statusbar.py.page:17(credit/years)
-#: C/statusbar.vala.page:17(credit/years) C/strings.py.page:21(credit/years)
+#: C/statusbar.js.page:14(credit/years) C/statusbar.py.page:16(credit/years)
+#: C/statusbar.vala.page:17(credit/years) C/strings.py.page:22(credit/years)
 #: C/switch.c.page:14(credit/years) C/switch.js.page:14(credit/years)
-#: C/switch.py.page:19(credit/years) C/switch.vala.page:18(credit/years)
+#: C/switch.py.page:15(credit/years) C/switch.vala.page:18(credit/years)
 #: C/textview.c.page:14(credit/years) C/textview.js.page:18(credit/years)
-#: C/textview.py.page:22(credit/years) C/textview.vala.page:14(credit/years)
+#: C/textview.py.page:23(credit/years) C/textview.vala.page:14(credit/years)
 #: C/togglebutton.c.page:18(credit/years)
 #: C/togglebutton.js.page:14(credit/years)
-#: C/togglebutton.py.page:17(credit/years)
-#: C/togglebutton.vala.page:17(credit/years)
-#: C/toolbar.js.page:14(credit/years) C/toolbar.py.page:15(credit/years)
+#: C/togglebutton.py.page:15(credit/years)
+#: C/togglebutton.vala.page:17(credit/years) C/toolbar.c.page:16(credit/years)
+#: C/toolbar.js.page:14(credit/years) C/toolbar.py.page:16(credit/years)
 #: C/toolbar.vala.page:15(credit/years)
-#: C/toolbar_builder.py.page:16(credit/years)
-#: C/toolbar_builder.py.page:22(credit/years)
+#: C/toolbar_builder.py.page:17(credit/years)
+#: C/toolbar_builder.py.page:23(credit/years)
 #: C/toolbar_builder.vala.page:16(credit/years)
-#: C/tooltip.py.page:15(credit/years)
-#: C/treeview_advanced_liststore.py.page:17(credit/years)
-#: C/treeview_cellrenderertoggle.py.page:14(credit/years)
+#: C/tooltip.py.page:16(credit/years)
+#: C/treeview_advanced_liststore.py.page:15(credit/years)
+#: C/treeview_cellrenderertoggle.py.page:15(credit/years)
 #: C/treeview_simple_liststore.js.page:17(credit/years)
 #: C/treeview_simple_liststore.py.page:16(credit/years)
 #: C/treeview_simple_liststore.vala.page:16(credit/years)
-#: C/treeview_treestore.py.page:14(credit/years)
-#: C/tutorial.py.page:16(credit/years) C/tutorial.py.page:21(credit/years)
-#: C/weatherApp.js.page:13(credit/years)
+#: C/treeview_treestore.py.page:16(credit/years)
+#: C/tutorial.py.page:16(credit/years) C/weatherApp.js.page:13(credit/years)
 #: C/weatherAppMain.js.page:12(credit/years)
 #: C/weatherAutotools.js.page:12(credit/years)
 #: C/weatherGeonames.js.page:12(credit/years) C/window.c.page:14(credit/years)
-#: C/window.js.page:14(credit/years) C/window.py.page:14(credit/years)
-#: C/window.py.page:19(credit/years) C/window.vala.page:14(credit/years)
+#: C/window.js.page:14(credit/years) C/window.py.page:16(credit/years)
+#: C/window.py.page:21(credit/years) C/window.vala.page:14(credit/years)
 msgid "2012"
 msgstr "2012"
 
@@ -395,17 +394,17 @@ msgid ""
 "thing, like a checkbox or picture, and GNOME has a wide variety of them to "
 "choose from. We call them \"native\" widgets to distinguish them from things "
 "like the button and header in the web app we wrote. Because instead of using "
-"web code, these are going to be 100 percent GNOME, using Gtk+."
+"web code, these are going to be 100 percent GNOME, using GTK+."
 msgstr ""
 "Esta vez, solo se van a usar widgets nativos de GNOME. Un widget sólo es una "
 "cosa, como una casilla de verificación o una imagen, y GNOME tiene una "
 "amplia variedad para elegir. Se llaman widgets «nativos» para distinguirlos "
 "de cosas como el botón y la cabecera en la aplicación web que escribió. "
-"Porque en lugar de usar código web, estos van a ser 100% GNOME, usando Gtk+."
+"Porque en lugar de usar código web, estos van a ser 100% GNOME, usando GTK+."
 
 #: C/02_welcome_to_the_grid.js.page:35(note/p)
 msgid ""
-"Gtk+ stands for \"GIMP Toolkit\". It's like a toolbox of widgets that you "
+"GTK+ stands for \"GIMP Toolkit\". It's like a toolbox of widgets that you "
 "can reach into, while building your applications. It was originally written "
 "for <link href=\"http://www.gimp.org/\";>the GIMP</link>, which is a free "
 "software image editor."
@@ -421,11 +420,11 @@ msgstr "Creando la aplicación"
 
 #: C/02_welcome_to_the_grid.js.page:41(section/p)
 msgid ""
-"Before we dig out any widgets from the Gtk+ toolbox, we first need to write "
+"Before we dig out any widgets from the GTK+ toolbox, we first need to write "
 "the basic boilerplate code that our application requires."
 msgstr ""
 "Antes de sacar ningún widget de la caja de herramientas de GTK+, se necesita "
-"escribir el código plantilla que la aplicación requiere."
+"escribir el código básico plantilla que la aplicación requiere."
 
 #: C/02_welcome_to_the_grid.js.page:42(section/code)
 #: C/comboboxtext.js.page:30(section/code) C/textview.js.page:38(section/code)
@@ -569,7 +568,7 @@ msgstr ""
 "aparecerá en la parte superior de la ventana."
 
 #: C/02_welcome_to_the_grid.js.page:91(section/title)
-msgid "Reaching into the Gtk+ toolbox"
+msgid "Reaching into the GTK+ toolbox"
 msgstr "Usar la caja de herramientas de GTK+"
 
 #: C/02_welcome_to_the_grid.js.page:92(section/p)
@@ -784,9 +783,9 @@ msgid ""
 "application just open a terminal, go to the directory where your application "
 "is at, and type"
 msgstr ""
-"Guarde su aplicación como «welcome_to_the_grid.js». Después, para ejecutar "
-"su aplicación simplemente abra una terminal, vaya a la carpeta en la que "
-"está, y escriba"
+"Guarde su aplicación como «welcome_to_the_grid.js». Después, para ejecutar su "
+"aplicación simplemente abra una terminal, vaya a la carpeta en la que está, "
+"y escriba"
 
 #: C/02_welcome_to_the_grid.js.page:147(section/screen)
 #, no-wrap
@@ -878,8 +877,8 @@ msgid ""
 "like!"
 msgstr ""
 "Sí, también puede establecer la propiedad «column_spacing» en una rejilla, o "
-"las propiedades «margin_left» y «margin_right» en cualquier widget. "
-"Pruébelas, si quiere."
+"las propiedades «margin_left» y «margin_right» en cualquier widget. Pruébelas, "
+"si quiere."
 
 #: C/02_welcome_to_the_grid.js.page:180(section/title)
 msgid "Adding more widgets"
@@ -957,8 +956,8 @@ msgid ""
 msgstr ""
 "Configurar la imagen para que ocupe dos columnas no la estrecha en sí "
 "horizontalmente. En vez de eso, estrecha la caja invisible que el widget "
-"«Image» ocupa para llenar ambas columnas, y luego pone la imagen en el "
-"centro de esa caja."
+"«Image» ocupa para llenar ambas columnas, y luego pone la imagen en el centro "
+"de esa caja."
 
 #: C/02_welcome_to_the_grid.js.page:201(item/p)
 msgid ""
@@ -985,8 +984,8 @@ msgstr ""
 #: C/02_welcome_to_the_grid.js.page:207(section/p)
 msgid "Second, we can set the Grid's column_homogenous property to true."
 msgstr ""
-"Segundo, se puede establecer la propiedad «column_homogenous» de la rejilla "
-"a «true»."
+"Segundo, se puede establecer la propiedad «column_homogenous» de la rejilla a "
+"«true»."
 
 #: C/02_welcome_to_the_grid.js.page:208(section/code)
 #, no-wrap
@@ -1123,8 +1122,8 @@ msgstr ""
 "Se ponen comillas simples alrededor de «gtk-about» aquí porque, a diferencia "
 "de cadenas de texto que tienen comillas dobles, esa parte nunca necesitará "
 "traducirse a otro lenguaje. En realidad, si se <em>tradujera</em> rompería "
-"el icono, porque su nombre todavía es «gtk-about» sin importar el lenguaje "
-"en el que habla."
+"el icono, porque su nombre todavía es «gtk-about» sin importar el lenguaje en "
+"el que habla."
 
 #: C/02_welcome_to_the_grid.js.page:256(section/title)
 #: C/03_getting_the_signal.js.page:339(section/title)
@@ -1636,10 +1635,10 @@ msgid ""
 "\"clicked\" signal instead."
 msgstr ""
 "Eche un vistazo a la parte que usa el método «connect» de la aplicación y "
-"«Lang.bind», para conectar sus señales «activate» y «startup» a las "
-"funciones que presentan la ventana y construyen la IU. Va a hacer lo mismo "
-"con el botón cuando llegue a él, excepto que conectará la señal «clicked» en "
-"su lugar."
+"«Lang.bind», para conectar sus señales «activate» y «startup» a las funciones "
+"que presentan la ventana y construyen la IU. Va a hacer lo mismo con el "
+"botón cuando llegue a él, excepto que conectará la señal «clicked» en su "
+"lugar."
 
 #: C/03_getting_the_signal.js.page:76(section/title)
 msgid "Click the button"
@@ -1831,9 +1830,9 @@ msgid ""
 msgstr ""
 "Muchos widgets tienen las mismas propiedades y métodos. Tanto las etiquetas "
 "como los botones, por ejemplo, tienen una propiedad «label» que dice qué "
-"texto va dentro de ellos, y métodos «get_label» y «set_label» que le "
-"permiten verificar cuál es el texto y cambiarlo, respectivamente. Por lo que "
-"si aprende cómo funciona un widget, también aprenderá cómo funcionan otros "
+"texto va dentro de ellos, y métodos «get_label» y «set_label» que le permiten "
+"verificar cuál es el texto y cambiarlo, respectivamente. Por lo que si "
+"aprende cómo funciona un widget, también aprenderá cómo funcionan otros "
 "similares."
 
 #: C/03_getting_the_signal.js.page:132(section/code)
@@ -1888,13 +1887,13 @@ msgstr "Pulsar el interruptor"
 
 #: C/03_getting_the_signal.js.page:154(section/p)
 msgid ""
-"Buttons aren't the only input widgets in our Gtk+ toolbox. We can also use "
+"Buttons aren't the only input widgets in our GTK+ toolbox. We can also use "
 "switches, like the one in this example. Switches don't have a label "
 "property, so we have to create a separate Label that says what it does to go "
 "next to it."
 msgstr ""
 "Los botones no son el único widget de entrada de la caja de herramientas de "
-"Gtk+. También se pueden usar interruptores, como el de este ejemplo. Los "
+"GTK+. También se pueden usar interruptores, como el de este ejemplo. Los "
 "interruptores no tienen una propiedad «label», por lo que hay que crear una "
 "etiqueta separada que diga qué hace a su lado."
 
@@ -2065,10 +2064,9 @@ msgid ""
 "method. It returns true if the Switch is turned on, and false if the Switch "
 "is turned off."
 msgstr ""
-"Ahora se cambia la función «_getACookie» para que verifique si el "
-"dispensador de galletas está encendido. Se hace usando el método "
-"«get_active» del interruptor. Devuelve «true» si está encendido, y «false» "
-"si está apagado."
+"Ahora se cambia la función «_getACookie» para que verifique si el dispensador "
+"de galletas está encendido. Se hace usando el método «get_active» del "
+"interruptor. Devuelve «true» si está encendido, y «false» si está apagado."
 
 #: C/03_getting_the_signal.js.page:209(note/p)
 msgid ""
@@ -2136,10 +2134,10 @@ msgid ""
 "border_width is the number of pixels between any widget and the edge of the "
 "window."
 msgstr ""
-"Primero, cambie el nombre de la «ApplicationWindow» e incremente su "
-"propiedad «border_width», para que los widgets no se empaqueten demasiado "
-"apretados. El «border_width» es el número de píxeles entre cualquier widget "
-"y el borde de la ventana."
+"Primero, cambie el nombre de la «ApplicationWindow» e incremente su propiedad "
+"«border_width», para que los widgets no se empaqueten demasiado apretados. El "
+"«border_width» es el número de píxeles entre cualquier widget y el borde de "
+"la ventana."
 
 #: C/03_getting_the_signal.js.page:235(section/code)
 #, no-wrap
@@ -2171,8 +2169,8 @@ msgid ""
 "to the name of another RadioButton."
 msgstr ""
 "Después de eso, se crean los botones de radio. ¿Recuerda cómo se crean en "
-"grupos? Eso se hace estableciendo la propiedad «group» de cada botón de "
-"radio al nombre de otro."
+"grupos? Eso se hace estableciendo la propiedad «group» de cada botón de radio "
+"al nombre de otro."
 
 #: C/03_getting_the_signal.js.page:247(section/code)
 #, no-wrap
@@ -2367,12 +2365,11 @@ msgid ""
 "not, so we use JavaScript's built-in toLowerCase method to change the "
 "Entry's text to all lower case inside the if statement."
 msgstr ""
-"Y ahora se modifica la declaración «if» de «_getACookie» nuevamente, usando "
-"el método «get_text» del «Entry» para obtener el texto que introdujo y "
-"verificar si deletreó «cookie» correctamente. No importa si utiliza "
-"mayúsculas, por lo que se usa el método «toLowerCase» integrado de "
-"JavaScript para cambiar todo el texto del «Entry» a minúsculas dentro de la "
-"declaración «if»."
+"Y ahora se modifica la declaración «if» de «_getACookie» nuevamente, usando el "
+"método «get_text» del «Entry» para obtener el texto que introdujo y verificar "
+"si deletreó «cookie» correctamente. No importa si utiliza mayúsculas, por lo "
+"que se usa el método «toLowerCase» integrado de JavaScript para cambiar todo "
+"el texto del «Entry» a minúsculas dentro de la declaración «if»."
 
 #: C/03_getting_the_signal.js.page:320(note/p)
 msgid ""
@@ -3319,11 +3316,13 @@ msgstr "AboutDialog (C)"
 #: C/dialog.c.page:14(credit/name) C/entry.c.page:12(credit/name)
 #: C/grid.c.page:12(credit/name) C/image.c.page:12(credit/name)
 #: C/label.c.page:13(credit/name) C/linkbutton.c.page:12(credit/name)
-#: C/messagedialog.c.page:13(credit/name) C/progressbar.c.page:13(credit/name)
-#: C/radiobutton.c.page:14(credit/name) C/scale.c.page:14(credit/name)
+#: C/menubar.c.page:14(credit/name) C/messagedialog.c.page:13(credit/name)
+#: C/progressbar.c.page:13(credit/name) C/radiobutton.c.page:14(credit/name)
+#: C/scale.c.page:14(credit/name) C/scrolledwindow.c.page:14(credit/name)
 #: C/spinbutton.c.page:15(credit/name) C/spinner.c.page:13(credit/name)
 #: C/statusbar.c.page:16(credit/name) C/switch.c.page:12(credit/name)
 #: C/textview.c.page:12(credit/name) C/togglebutton.c.page:16(credit/name)
+#: C/toolbar.c.page:14(credit/name)
 msgid "Monica Kochofar"
 msgstr "Monica Kochofar"
 
@@ -3342,7 +3341,7 @@ msgid "An AboutDialog example using Gtk.ApplicationWindow and Menu"
 msgstr "Un ejemplo de AboutDialog usando Gtk.ApplicationWindow y Menu"
 
 #: C/aboutdialog.c.page:26(note/p) C/aboutdialog.vala.page:31(note/p)
-#: C/gmenu.c.page:23(note/p) C/gmenu.py.page:29(note/p)
+#: C/gmenu.c.page:23(note/p)
 msgid ""
 "<em style=\"bold\">You need to be running Gtk3.4 or later for this to work</"
 "em>"
@@ -3692,63 +3691,65 @@ msgstr ""
 #: C/aboutdialog.c.page:30(page/p) C/aboutdialog.js.page:24(page/p)
 #: C/aboutdialog.py.page:41(section/p) C/aboutdialog.vala.page:34(page/p)
 #: C/button.c.page:29(page/p) C/button.js.page:26(page/p)
-#: C/button.py.page:50(section/p) C/buttonbox.py.page:45(section/p)
-#: C/checkbutton.c.page:25(page/p) C/checkbutton.py.page:44(section/p)
-#: C/checkbutton.vala.page:25(page/p) C/colorbutton.py.page:38(section/p)
+#: C/button.py.page:52(section/p) C/buttonbox.py.page:46(section/p)
+#: C/checkbutton.c.page:25(page/p) C/checkbutton.py.page:42(section/p)
+#: C/checkbutton.vala.page:25(page/p) C/colorbutton.py.page:40(section/p)
 #: C/colorbutton.vala.page:27(page/p) C/comboboxtext.js.page:176(section/p)
-#: C/combobox.js.page:233(section/p) C/combobox.py.page:38(section/p)
+#: C/combobox.js.page:233(section/p) C/combobox.py.page:42(section/p)
 #: C/combobox.vala.page:25(page/p)
 #: C/combobox_multicolumn.py.page:41(section/p) C/dialog.c.page:29(page/p)
-#: C/dialog.js.page:25(page/p) C/dialog.py.page:45(section/p)
+#: C/dialog.js.page:25(page/p) C/dialog.py.page:46(section/p)
 #: C/dialog.vala.page:27(page/p) C/entry.c.page:27(page/p)
-#: C/entry.js.page:25(page/p) C/entry.py.page:59(section/p)
-#: C/entry.vala.page:25(page/p) C/filechooserdialog.py.page:69(section/p)
+#: C/entry.js.page:25(page/p) C/entry.py.page:61(section/p)
+#: C/entry.vala.page:25(page/p) C/filechooserdialog.py.page:70(section/p)
 #: C/filechooserdialog.vala.page:35(section/p)
-#: C/fontchooserwidget.py.page:43(section/p) C/gmenu.c.page:27(page/p)
-#: C/gmenu.js.page:25(page/p) C/gmenu.py.page:74(section/p)
+#: C/fontchooserwidget.py.page:44(section/p) C/gmenu.c.page:27(page/p)
+#: C/gmenu.js.page:25(page/p) C/gmenu.py.page:77(section/p)
 #: C/gmenu.vala.page:37(page/p) C/grid.c.page:27(page/p)
-#: C/grid.js.page:29(page/p) C/grid.py.page:53(section/p)
+#: C/grid.js.page:29(page/p) C/grid.py.page:54(section/p)
 #: C/grid.vala.page:27(page/p) C/GtkApplicationWindow.c.page:25(page/p)
 #: C/GtkApplicationWindow.js.page:26(page/p)
-#: C/GtkApplicationWindow.py.page:48(section/p)
+#: C/GtkApplicationWindow.py.page:50(section/p)
 #: C/GtkApplicationWindow.vala.page:26(page/p) C/image.c.page:28(page/p)
-#: C/image.js.page:27(page/p) C/image.py.page:98(section/p)
+#: C/image.js.page:27(page/p) C/image.py.page:100(section/p)
 #: C/image.vala.page:27(page/p) C/label.c.page:32(page/p)
-#: C/label.js.page:25(page/p) C/label.py.page:86(section/p)
+#: C/label.js.page:25(page/p) C/label.py.page:87(section/p)
 #: C/label.vala.page:26(page/p) C/linkbutton.c.page:27(page/p)
 #: C/linkbutton.js.page:25(page/p) C/linkbutton.py.page:44(section/p)
-#: C/linkbutton.vala.page:25(page/p) C/menubar.py.page:181(section/p)
-#: C/menubar.vala.page:187(section/p) C/menubutton.js.page:28(page/p)
-#: C/menubutton.py.page:50(section/p) C/menubutton.vala.page:28(page/p)
-#: C/messagedialog.c.page:31(page/p) C/messagedialog.js.page:189(section/p)
+#: C/linkbutton.vala.page:25(page/p) C/menubar.c.page:32(page/p)
+#: C/menubar.py.page:183(section/p) C/menubar.vala.page:187(section/p)
+#: C/menubutton.js.page:28(page/p) C/menubutton.py.page:53(section/p)
+#: C/menubutton.vala.page:28(page/p) C/messagedialog.c.page:31(page/p)
+#: C/messagedialog.js.page:189(section/p)
 #: C/messagedialog.py.page:54(section/p) C/messagedialog.vala.page:26(page/p)
-#: C/paned.py.page:38(section/p) C/progressbar.c.page:28(page/p)
-#: C/progressbar.js.page:34(page/p) C/progressbar.py.page:53(section/p)
+#: C/paned.py.page:39(section/p) C/progressbar.c.page:28(page/p)
+#: C/progressbar.js.page:34(page/p) C/progressbar.py.page:54(section/p)
 #: C/progressbar.vala.page:25(page/p) C/radiobutton.c.page:29(page/p)
-#: C/radiobutton.py.page:49(section/p) C/radiobutton.vala.page:28(page/p)
-#: C/scale.c.page:29(page/p) C/scale.py.page:53(section/p)
-#: C/scale.vala.page:27(page/p) C/scrolledwindow.py.page:41(section/p)
-#: C/scrolledwindow.vala.page:26(page/p) C/separator.py.page:35(section/p)
-#: C/spinbutton.c.page:30(page/p) C/spinbutton.py.page:45(section/p)
+#: C/radiobutton.py.page:46(section/p) C/radiobutton.vala.page:28(page/p)
+#: C/scale.c.page:29(page/p) C/scale.py.page:54(section/p)
+#: C/scale.vala.page:27(page/p) C/scrolledwindow.c.page:29(page/p)
+#: C/scrolledwindow.py.page:42(section/p)
+#: C/scrolledwindow.vala.page:26(page/p) C/separator.py.page:36(section/p)
+#: C/spinbutton.c.page:30(page/p) C/spinbutton.py.page:46(section/p)
 #: C/spinbutton.vala.page:27(page/p) C/spinner.c.page:28(page/p)
-#: C/spinner.js.page:25(page/p) C/spinner.py.page:38(section/p)
+#: C/spinner.js.page:25(page/p) C/spinner.py.page:39(section/p)
 #: C/spinner.vala.page:25(page/p) C/statusbar.c.page:31(page/p)
 #: C/statusbar.py.page:50(section/p) C/statusbar.vala.page:28(page/p)
-#: C/switch.c.page:28(page/p) C/switch.py.page:46(section/p)
+#: C/switch.c.page:28(page/p) C/switch.py.page:42(section/p)
 #: C/switch.vala.page:31(page/p) C/textview.c.page:31(page/p)
 #: C/textview.py.page:93(section/p) C/textview.vala.page:30(page/p)
-#: C/togglebutton.c.page:31(page/p) C/togglebutton.py.page:43(section/p)
-#: C/togglebutton.vala.page:28(page/p) C/toolbar.js.page:26(page/p)
-#: C/toolbar.py.page:50(section/p) C/toolbar.vala.page:29(page/p)
-#: C/toolbar_builder.py.page:189(section/p)
-#: C/toolbar_builder.vala.page:146(page/p) C/tooltip.py.page:53(section/p)
-#: C/treeview_advanced_liststore.py.page:43(section/p)
-#: C/treeview_cellrenderertoggle.py.page:39(section/p)
+#: C/togglebutton.c.page:31(page/p) C/togglebutton.py.page:41(section/p)
+#: C/togglebutton.vala.page:28(page/p) C/toolbar.c.page:30(page/p)
+#: C/toolbar.js.page:26(page/p) C/toolbar.py.page:52(section/p)
+#: C/toolbar.vala.page:29(page/p) C/toolbar_builder.py.page:191(section/p)
+#: C/toolbar_builder.vala.page:146(page/p) C/tooltip.py.page:55(section/p)
+#: C/treeview_advanced_liststore.py.page:41(section/p)
+#: C/treeview_cellrenderertoggle.py.page:41(section/p)
 #: C/treeview_simple_liststore.js.page:272(section/p)
-#: C/treeview_simple_liststore.py.page:41(section/p)
+#: C/treeview_simple_liststore.py.page:42(section/p)
 #: C/treeview_simple_liststore.vala.page:27(page/p)
-#: C/treeview_treestore.py.page:39(section/p) C/window.c.page:29(page/p)
-#: C/window.py.page:60(section/p) C/window.vala.page:33(page/p)
+#: C/treeview_treestore.py.page:41(section/p) C/window.c.page:29(page/p)
+#: C/window.py.page:61(section/p) C/window.vala.page:33(page/p)
 msgid "In this sample we used the following:"
 msgstr "En este ejemplo se usa lo siguiente:"
 
@@ -4033,7 +4034,7 @@ msgstr ""
 "app.application.run(ARGV);\n"
 
 #: C/aboutdialog.js.page:28(item/p) C/gmenu.c.page:31(item/p)
-#: C/gmenu.js.page:29(item/p) C/gmenu.py.page:76(item/p)
+#: C/gmenu.js.page:29(item/p) C/gmenu.py.page:79(item/p)
 #: C/messagedialog.js.page:193(item/p) C/switch.js.page:265(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gio/unstable/GMenu.html\";>GMenu</"
@@ -4042,10 +4043,11 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gio/unstable/GMenu.html\";>GMenu</"
 "link>"
 
-#: C/aboutdialog.js.page:29(item/p) C/filechooserdialog.py.page:78(item/p)
+#: C/aboutdialog.js.page:29(item/p) C/filechooserdialog.py.page:79(item/p)
 #: C/gmenu.c.page:32(item/p) C/gmenu.js.page:30(item/p)
-#: C/gmenu.py.page:77(item/p) C/messagedialog.js.page:194(item/p)
-#: C/messagedialog.py.page:61(item/p) C/switch.js.page:266(item/p)
+#: C/gmenu.py.page:80(item/p) C/menubar.c.page:38(item/p)
+#: C/messagedialog.js.page:194(item/p) C/messagedialog.py.page:61(item/p)
+#: C/switch.js.page:266(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gio/stable/GSimpleAction.html";
 "\">GSimpleAction</link>"
@@ -4104,35 +4106,50 @@ msgctxt "text"
 msgid "AboutDialog (Python)"
 msgstr "AboutDialog (Python)"
 
-#: C/aboutdialog.py.page:13(credit/name) C/button.py.page:13(credit/name)
-#: C/buttonbox.py.page:13(credit/name) C/checkbutton.py.page:13(credit/name)
-#: C/colorbutton.py.page:12(credit/name) C/combobox.py.page:12(credit/name)
+#: C/aboutdialog.py.page:13(credit/name) C/beginner.c.page:19(credit/name)
+#: C/beginner.js.page:15(credit/name) C/beginner.py.page:18(credit/name)
+#: C/beginner.vala.page:18(credit/name) C/button.py.page:14(credit/name)
+#: C/buttonbox.py.page:14(credit/name) C/checkbutton.py.page:13(credit/name)
+#: C/colorbutton.py.page:13(credit/name) C/combobox.py.page:14(credit/name)
 #: C/combobox_multicolumn.py.page:13(credit/name)
-#: C/dialog.py.page:13(credit/name) C/entry.py.page:12(credit/name)
-#: C/filechooserdialog.py.page:15(credit/name)
-#: C/fontchooserwidget.py.page:13(credit/name) C/gmenu.py.page:18(credit/name)
-#: C/grid.py.page:19(credit/name)
-#: C/GtkApplicationWindow.py.page:17(credit/name)
-#: C/image.py.page:12(credit/name) C/label.py.page:13(credit/name)
-#: C/linkbutton.py.page:13(credit/name) C/menubar.py.page:19(credit/name)
-#: C/menubutton.py.page:18(credit/name)
+#: C/dialog.py.page:14(credit/name) C/entry.py.page:14(credit/name)
+#: C/filechooserdialog.py.page:16(credit/name)
+#: C/fontchooserwidget.py.page:14(credit/name) C/gmenu.py.page:20(credit/name)
+#: C/grid.py.page:20(credit/name)
+#: C/GtkApplicationWindow.py.page:19(credit/name)
+#: C/guitar-tuner.c.page:22(credit/name)
+#: C/guitar-tuner.cpp.page:20(credit/name)
+#: C/guitar-tuner.py.page:22(credit/name)
+#: C/guitar-tuner.py.page:27(credit/name)
+#: C/guitar-tuner.vala.page:25(credit/name) C/image.py.page:14(credit/name)
+#: C/image-viewer.c.page:22(credit/name)
+#: C/image-viewer.cpp.page:20(credit/name)
+#: C/image-viewer.js.page:22(credit/name)
+#: C/image-viewer.py.page:22(credit/name)
+#: C/image-viewer.vala.page:30(credit/name) C/js.page:15(credit/name)
+#: C/label.py.page:15(credit/name) C/linkbutton.py.page:13(credit/name)
+#: C/magic-mirror.vala.page:22(credit/name) C/menubar.py.page:19(credit/name)
+#: C/menubutton.py.page:19(credit/name) C/message-board.c.page:19(credit/name)
 #: C/messagedialog.py.page:13(credit/name)
-#: C/model-view-controller.py.page:19(credit/name)
-#: C/paned.py.page:12(credit/name) C/progressbar.py.page:12(credit/name)
-#: C/properties.py.page:19(credit/name) C/radiobutton.py.page:16(credit/name)
-#: C/scale.py.page:13(credit/name) C/scrolledwindow.py.page:12(credit/name)
-#: C/separator.py.page:13(credit/name)
-#: C/signals-callbacks.py.page:19(credit/name)
-#: C/spinbutton.py.page:13(credit/name) C/spinner.py.page:12(credit/name)
-#: C/statusbar.py.page:15(credit/name) C/strings.py.page:19(credit/name)
-#: C/switch.py.page:17(credit/name) C/textview.py.page:20(credit/name)
-#: C/togglebutton.py.page:15(credit/name) C/toolbar.py.page:13(credit/name)
-#: C/toolbar_builder.py.page:20(credit/name) C/tooltip.py.page:13(credit/name)
-#: C/treeview_advanced_liststore.py.page:15(credit/name)
-#: C/treeview_cellrenderertoggle.py.page:12(credit/name)
+#: C/model-view-controller.py.page:20(credit/name)
+#: C/paned.py.page:13(credit/name) C/photo-wall.c.page:21(credit/name)
+#: C/progressbar.py.page:13(credit/name) C/properties.py.page:20(credit/name)
+#: C/py.page:14(credit/name) C/radiobutton.py.page:14(credit/name)
+#: C/record-collection.js.page:22(credit/name) C/scale.py.page:14(credit/name)
+#: C/scrolledwindow.py.page:13(credit/name)
+#: C/separator.py.page:14(credit/name)
+#: C/signals-callbacks.py.page:20(credit/name)
+#: C/spinbutton.py.page:14(credit/name) C/spinner.py.page:13(credit/name)
+#: C/statusbar.py.page:14(credit/name) C/strings.py.page:20(credit/name)
+#: C/switch.py.page:13(credit/name) C/textview.py.page:21(credit/name)
+#: C/togglebutton.py.page:13(credit/name) C/toolbar.py.page:14(credit/name)
+#: C/toolbar_builder.py.page:21(credit/name) C/tooltip.py.page:14(credit/name)
+#: C/treeview_advanced_liststore.py.page:13(credit/name)
+#: C/treeview_cellrenderertoggle.py.page:13(credit/name)
 #: C/treeview_simple_liststore.py.page:14(credit/name)
-#: C/treeview_treestore.py.page:12(credit/name)
-#: C/tutorial.py.page:19(credit/name) C/window.py.page:17(credit/name)
+#: C/treeview_treestore.py.page:14(credit/name)
+#: C/tutorial.py.page:19(credit/name) C/vala.page:14(credit/name)
+#: C/weatherApp.js.page:16(credit/name) C/window.py.page:19(credit/name)
 msgid "Marta Maria Casetti"
 msgstr "Marta Maria Casetti"
 
@@ -4148,37 +4165,37 @@ msgstr ""
 "Un ejemplo de AboutDialog usando Gtk.ApplicationWindow y Menu (el diálogo se "
 "muestra al pulsar el elemento de menú «Acerca de»)."
 
-#: C/aboutdialog.py.page:28(section/title) C/button.py.page:29(section/title)
-#: C/buttonbox.py.page:29(section/title)
+#: C/aboutdialog.py.page:28(section/title) C/button.py.page:30(section/title)
+#: C/buttonbox.py.page:30(section/title)
 #: C/checkbutton.py.page:28(section/title)
-#: C/colorbutton.py.page:27(section/title)
-#: C/combobox.py.page:27(section/title)
+#: C/colorbutton.py.page:28(section/title)
+#: C/combobox.py.page:29(section/title)
 #: C/combobox_multicolumn.py.page:28(section/title)
-#: C/dialog.py.page:28(section/title) C/entry.py.page:32(section/title)
-#: C/filechooserdialog.py.page:51(section/title)
-#: C/fontchooserwidget.py.page:29(section/title)
-#: C/gmenu.py.page:34(section/title) C/grid.py.page:35(section/title)
-#: C/GtkApplicationWindow.py.page:32(section/title)
-#: C/image.py.page:31(section/title) C/label.py.page:33(section/title)
+#: C/dialog.py.page:29(section/title) C/entry.py.page:34(section/title)
+#: C/filechooserdialog.py.page:52(section/title)
+#: C/fontchooserwidget.py.page:30(section/title)
+#: C/gmenu.py.page:35(section/title) C/grid.py.page:36(section/title)
+#: C/GtkApplicationWindow.py.page:34(section/title)
+#: C/image.py.page:33(section/title) C/label.py.page:35(section/title)
 #: C/linkbutton.py.page:29(section/title)
-#: C/menubutton.py.page:35(section/title)
-#: C/messagedialog.py.page:28(section/title) C/paned.py.page:27(section/title)
-#: C/progressbar.py.page:37(section/title)
-#: C/radiobutton.py.page:31(section/title) C/scale.py.page:28(section/title)
-#: C/scrolledwindow.py.page:27(section/title)
-#: C/separator.py.page:29(section/title)
-#: C/spinbutton.py.page:28(section/title) C/spinner.py.page:27(section/title)
-#: C/statusbar.py.page:30(section/title) C/switch.py.page:34(section/title)
-#: C/textview.py.page:42(section/title)
-#: C/togglebutton.py.page:30(section/title)
-#: C/toolbar.py.page:29(section/title)
-#: C/toolbar_builder.py.page:162(section/title)
-#: C/tooltip.py.page:28(section/title)
-#: C/treeview_advanced_liststore.py.page:30(section/title)
-#: C/treeview_cellrenderertoggle.py.page:27(section/title)
+#: C/menubutton.py.page:36(section/title)
+#: C/messagedialog.py.page:28(section/title) C/paned.py.page:28(section/title)
+#: C/progressbar.py.page:38(section/title)
+#: C/radiobutton.py.page:29(section/title) C/scale.py.page:29(section/title)
+#: C/scrolledwindow.py.page:28(section/title)
+#: C/separator.py.page:30(section/title)
+#: C/spinbutton.py.page:29(section/title) C/spinner.py.page:28(section/title)
+#: C/statusbar.py.page:29(section/title) C/switch.py.page:30(section/title)
+#: C/textview.py.page:43(section/title)
+#: C/togglebutton.py.page:28(section/title)
+#: C/toolbar.py.page:30(section/title)
+#: C/toolbar_builder.py.page:163(section/title)
+#: C/tooltip.py.page:29(section/title)
+#: C/treeview_advanced_liststore.py.page:28(section/title)
+#: C/treeview_cellrenderertoggle.py.page:28(section/title)
 #: C/treeview_simple_liststore.py.page:29(section/title)
-#: C/treeview_treestore.py.page:27(section/title)
-#: C/window.py.page:42(section/title)
+#: C/treeview_treestore.py.page:29(section/title)
+#: C/window.py.page:44(section/title)
 msgid "Code used to generate this example"
 msgstr "Código usado para generar este ejemplo"
 
@@ -4351,47 +4368,49 @@ msgstr ""
 msgid "Useful methods for an AboutDialog widget"
 msgstr "Métodos útiles para un widget «AboutDialog»"
 
-#: C/aboutdialog.py.page:36(section/p) C/button.py.page:34(section/p)
-#: C/dialog.py.page:36(section/p) C/fontchooserwidget.py.page:34(section/p)
-#: C/messagedialog.py.page:36(section/p) C/radiobutton.py.page:37(section/p)
-#: C/togglebutton.py.page:38(section/p)
+#: C/aboutdialog.py.page:36(section/p)
 msgid ""
-"For an explanation of signals and callback functions, see <link xref="
-"\"signals-callbacks.py\">this page</link>."
+"In line 15 the signal <code>\"activate\"</code> is connected to the callback "
+"function <code>about_cb()</code> using <code><var>widget</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation."
 msgstr ""
-"Para una explicación de señales y funciones de retorno de llamada, consulte "
-"<link xref=\"signals-callbacks.py\">esta página</link>."
+"En la línea 15 la señal <code>«activate»</code> se conecta a la función de "
+"retorno de llamada <code>about_cb()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
+"detallada."
 
-#: C/aboutdialog.py.page:40(section/title) C/button.py.page:49(section/title)
-#: C/buttonbox.py.page:44(section/title)
-#: C/checkbutton.py.page:43(section/title)
-#: C/colorbutton.py.page:37(section/title)
-#: C/combobox.py.page:37(section/title)
+#: C/aboutdialog.py.page:40(section/title) C/button.py.page:51(section/title)
+#: C/buttonbox.py.page:45(section/title)
+#: C/checkbutton.py.page:41(section/title)
+#: C/colorbutton.py.page:39(section/title)
+#: C/combobox.py.page:41(section/title)
 #: C/combobox_multicolumn.py.page:40(section/title)
-#: C/dialog.py.page:44(section/title) C/entry.py.page:58(section/title)
-#: C/filechooserdialog.py.page:68(section/title)
-#: C/fontchooserwidget.py.page:42(section/title)
-#: C/gmenu.py.page:73(section/title) C/grid.py.page:52(section/title)
-#: C/GtkApplicationWindow.py.page:47(section/title)
-#: C/image.py.page:97(section/title) C/label.py.page:85(section/title)
-#: C/linkbutton.py.page:43(section/title) C/menubar.py.page:180(section/title)
-#: C/menubutton.py.page:49(section/title)
-#: C/messagedialog.py.page:53(section/title) C/paned.py.page:37(section/title)
-#: C/progressbar.py.page:52(section/title)
-#: C/radiobutton.py.page:48(section/title) C/scale.py.page:52(section/title)
-#: C/scrolledwindow.py.page:40(section/title)
-#: C/spinbutton.py.page:44(section/title) C/spinner.py.page:37(section/title)
-#: C/statusbar.py.page:49(section/title) C/switch.py.page:45(section/title)
+#: C/dialog.py.page:45(section/title) C/entry.py.page:60(section/title)
+#: C/filechooserdialog.py.page:69(section/title)
+#: C/fontchooserwidget.py.page:43(section/title)
+#: C/gmenu.py.page:76(section/title) C/grid.py.page:53(section/title)
+#: C/GtkApplicationWindow.py.page:49(section/title)
+#: C/image.py.page:99(section/title) C/label.py.page:86(section/title)
+#: C/linkbutton.py.page:43(section/title) C/menubar.py.page:182(section/title)
+#: C/menubutton.py.page:52(section/title)
+#: C/messagedialog.py.page:53(section/title) C/paned.py.page:38(section/title)
+#: C/progressbar.py.page:53(section/title)
+#: C/radiobutton.py.page:45(section/title) C/scale.py.page:53(section/title)
+#: C/scrolledwindow.py.page:41(section/title)
+#: C/spinbutton.py.page:45(section/title) C/spinner.py.page:38(section/title)
+#: C/statusbar.py.page:49(section/title) C/switch.py.page:41(section/title)
 #: C/textview.py.page:92(section/title)
-#: C/togglebutton.py.page:42(section/title)
-#: C/toolbar.py.page:49(section/title)
-#: C/toolbar_builder.py.page:188(section/title)
-#: C/tooltip.py.page:52(section/title)
-#: C/treeview_advanced_liststore.py.page:42(section/title)
-#: C/treeview_cellrenderertoggle.py.page:38(section/title)
-#: C/treeview_simple_liststore.py.page:40(section/title)
-#: C/treeview_treestore.py.page:38(section/title)
-#: C/window.py.page:58(section/title)
+#: C/togglebutton.py.page:40(section/title)
+#: C/toolbar.py.page:51(section/title)
+#: C/toolbar_builder.py.page:190(section/title)
+#: C/tooltip.py.page:54(section/title)
+#: C/treeview_advanced_liststore.py.page:40(section/title)
+#: C/treeview_cellrenderertoggle.py.page:40(section/title)
+#: C/treeview_simple_liststore.py.page:41(section/title)
+#: C/treeview_treestore.py.page:40(section/title)
+#: C/window.py.page:59(section/title)
 msgid "API References"
 msgstr "Referencias de la API"
 
@@ -4403,8 +4422,8 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkAboutDialog.html";
 "\">GtkAboutDialog</link>"
 
-#: C/aboutdialog.py.page:46(item/p) C/checkbutton.py.page:47(item/p)
-#: C/grid.py.page:56(item/p) C/GtkApplicationWindow.py.page:53(item/p)
+#: C/aboutdialog.py.page:46(item/p) C/checkbutton.py.page:45(item/p)
+#: C/grid.py.page:57(item/p) C/GtkApplicationWindow.py.page:55(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkApplicationWindow.";
 "html\">GtkApplicationWindow</link>"
@@ -4412,9 +4431,9 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkApplicationWindow.";
 "html\">GtkApplicationWindow</link>"
 
-#: C/aboutdialog.py.page:48(item/p) C/checkbutton.py.page:46(item/p)
-#: C/grid.py.page:55(item/p) C/GtkApplicationWindow.py.page:52(item/p)
-#: C/messagedialog.py.page:64(item/p) C/window.py.page:62(item/p)
+#: C/aboutdialog.py.page:48(item/p) C/checkbutton.py.page:44(item/p)
+#: C/grid.py.page:56(item/p) C/GtkApplicationWindow.py.page:54(item/p)
+#: C/messagedialog.py.page:64(item/p) C/window.py.page:63(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkApplication.html";
 "\">GtkApplication</link>"
@@ -4609,13 +4628,13 @@ msgid "GNOME Documentation Project"
 msgstr "Proyecto de documentación de GNOME"
 
 #: C/audio-player.vala.page:18(page/title)
-msgid "3 Audio Player"
-msgstr "3. Reproductor de sonido"
+msgid "Audio player"
+msgstr "Reproductor de sonido"
 
 #: C/beginner.c.page:8(info/title)
 msgctxt "text"
-msgid "Beginner's Tutorials (C)"
-msgstr "Tutoriales para principiantes (C)"
+msgid "Tutorial for beginners (C)"
+msgstr "Tutorial para principiantes (C)"
 
 #: C/beginner.c.page:12(info/desc) C/beginner.vala.page:12(info/desc)
 msgid ""
@@ -4625,11 +4644,33 @@ msgstr ""
 "Una guía de programación de interfaces usuario en GTK+ para principiantes, "
 "incluyendo ejemplos de código y ejercicios prácticos."
 
-#: C/beginner.c.page:20(page/title) C/beginner.vala.page:19(page/title)
-msgid "0 Beginner's Tutorials"
-msgstr "0. Tutoriales para principiantes"
-
-#: C/beginner.c.page:22(synopsis/p) C/beginner.vala.page:21(synopsis/p)
+#: C/beginner.c.page:21(credit/years) C/beginner.js.page:17(credit/years)
+#: C/beginner.py.page:20(credit/years) C/beginner.vala.page:20(credit/years)
+#: C/guitar-tuner.c.page:24(credit/years)
+#: C/guitar-tuner.cpp.page:22(credit/years)
+#: C/guitar-tuner.py.page:24(credit/years)
+#: C/guitar-tuner.py.page:29(credit/years)
+#: C/guitar-tuner.vala.page:27(credit/years)
+#: C/image-viewer.c.page:24(credit/years)
+#: C/image-viewer.cpp.page:22(credit/years)
+#: C/image-viewer.js.page:24(credit/years)
+#: C/image-viewer.py.page:24(credit/years)
+#: C/image-viewer.vala.page:32(credit/years) C/js.page:17(credit/years)
+#: C/magic-mirror.vala.page:24(credit/years)
+#: C/message-board.c.page:21(credit/years)
+#: C/photo-wall.c.page:23(credit/years) C/py.page:16(credit/years)
+#: C/record-collection.js.page:24(credit/years)
+#: C/tutorial.py.page:26(credit/years) C/vala.page:16(credit/years)
+#: C/weatherApp.js.page:18(credit/years)
+msgid "2013"
+msgstr "2013"
+
+#: C/beginner.c.page:25(page/title) C/beginner.js.page:23(page/title)
+#: C/beginner.vala.page:24(page/title)
+msgid "Tutorial for beginners and code samples"
+msgstr "Tutorial para principiantes y ejemplos de código"
+
+#: C/beginner.c.page:27(synopsis/p) C/beginner.vala.page:26(synopsis/p)
 msgid ""
 "Although these tutorials are designed for beginners, we can't cover all the "
 "basics. Before attempting to follow these tutorials, you are expected to be "
@@ -4639,161 +4680,159 @@ msgstr ""
 "cubrir todos los conceptos básicos. Antes de intentar seguir estos "
 "tutoriales, debe estar familiarizado con los siguientes conceptos:"
 
-#: C/beginner.c.page:24(item/p) C/beginner.vala.page:23(item/p)
+#: C/beginner.c.page:29(item/p) C/beginner.vala.page:28(item/p)
 msgid "Object oriented programming"
 msgstr "Programación orientada a objetos"
 
-#: C/beginner.c.page:25(item/p)
+#: C/beginner.c.page:30(item/p)
 msgid "The C programming language"
 msgstr "El lenguaje de programación C:"
 
-#: C/beginner.c.page:29(synopsis/p) C/beginner.vala.page:32(synopsis/p)
-#: C/tutorial.py.page:28(synopsis/p)
+#: C/beginner.c.page:34(synopsis/p) C/beginner.vala.page:37(synopsis/p)
 msgid ""
 "By following these tutorials you will learn the basics of GUI programming "
-"using Gtk+."
+"using GTK+."
 msgstr ""
 "Siguiendo estos tutoriales, aprenderá los conceptos básicos de la "
-"programación de interfaces de usuario usando GTK+."
+"programación de IGU usando GTK+."
 
-#: C/beginner.c.page:33(section/title) C/beginner.js.page:36(section/title)
-#: C/beginner.vala.page:36(section/title)
+#: C/beginner.c.page:38(section/title) C/beginner.js.page:41(section/title)
+#: C/beginner.vala.page:41(section/title)
 msgid "Tutorials"
 msgstr "Tutoriales"
 
-#: C/beginner.c.page:37(section/title) C/beginner.js.page:40(section/title)
-#: C/beginner.py.page:27(section/title) C/beginner.vala.page:40(section/title)
+#: C/beginner.c.page:42(section/title) C/beginner.js.page:45(section/title)
+#: C/beginner.vala.page:45(section/title) C/py.page:31(section/title)
 msgid "Code samples"
 msgstr "Ejemplos de código"
 
-#: C/beginner.c.page:38(section/p) C/beginner.js.page:42(section/p)
-#: C/beginner.vala.page:41(section/p) C/tutorial.py.page:38(section/p)
+#: C/beginner.c.page:43(section/p) C/beginner.js.page:47(section/p)
+#: C/beginner.vala.page:46(section/p)
 msgid "To run the code samples:"
 msgstr "Para ejecutar los ejemplos de código:"
 
-#: C/beginner.c.page:42(item/p)
+#: C/beginner.c.page:47(item/p)
 msgid "Copy and paste the code into <var>filename</var>.c"
 msgstr "Copie y pegue el código en <var>nombre_archivo</var>.c"
 
-#: C/beginner.c.page:43(item/p) C/beginner.c.page:56(item/p)
-#: C/beginner.vala.page:46(item/p) C/tutorial.py.page:41(item/p)
+#: C/beginner.c.page:48(item/p) C/beginner.c.page:61(item/p)
+#: C/beginner.vala.page:51(item/p)
 msgid "In the terminal type:"
 msgstr "Escriba en la terminal:"
 
-#: C/beginner.c.page:44(item/screen)
+#: C/beginner.c.page:49(item/screen)
 #, no-wrap
 msgid "gcc <var>filename</var>.c `pkg-config --cflags --libs gtk+-3.0` -o <var>filename</var>\n"
 msgstr "gcc <var>nombre_archivo</var>.c `pkg-config --cflags --libs gtk+-3.0` -o <var>nombre_archivo</var>\n"
 
-#: C/beginner.c.page:46(item/screen) C/beginner.c.page:60(item/screen)
-#: C/beginner.vala.page:48(item/screen)
+#: C/beginner.c.page:51(item/screen) C/beginner.c.page:65(item/screen)
+#: C/beginner.vala.page:53(item/screen)
 #, no-wrap
 msgid "./<var>filename</var>"
 msgstr "./<var>nombre_archivo</var>"
 
-#: C/beginner.c.page:50(note/p)
+#: C/beginner.c.page:55(note/p)
 msgid ""
-"For more information about compiling Gtk+ programs see <link href=\"http://";
-"developer.gnome.org/gtk3/3.4/gtk-compiling.html\">Compiling Gtk+ "
+"For more information about compiling GTK+ programs see <link href=\"http://";
+"developer.gnome.org/gtk3/3.4/gtk-compiling.html\">Compiling GTK+ "
 "Applications on UNIX</link>."
 msgstr ""
 "Para obtener más información sobre cómo compilar programas en GTK+, consulte "
 "<link href=\"http://developer.gnome.org/gtk3/3.4/gtk-compiling.html";
 "\">Compilar aplicaciones GTK+ en UNIX</link>."
 
-#: C/beginner.c.page:54(section/p)
+#: C/beginner.c.page:59(section/p)
 msgid "You can also use the Vala compiler to compile these samples:"
 msgstr "También puede usar el compilador de Vala para compilar estos ejemplos:"
 
-#: C/beginner.c.page:57(item/screen)
+#: C/beginner.c.page:62(item/screen)
 #, no-wrap
 msgid "valac --pkg gtk+-3.0 <var>filename</var>.c"
 msgstr "valac --pkg gtk+-3.0 <var>nombre_archivo</var>.c"
 
-#: C/beginner.c.page:59(item/p)
+#: C/beginner.c.page:64(item/p)
 msgid "To run:"
 msgstr "Para ejecutarlos:"
 
-#: C/beginner.c.page:63(section/title) C/beginner.js.page:49(section/title)
-#: C/beginner.py.page:29(section/title) C/beginner.vala.page:52(section/title)
+#: C/beginner.c.page:68(section/title) C/beginner.js.page:54(section/title)
+#: C/beginner.py.page:31(section/title) C/beginner.vala.page:57(section/title)
 msgid "Windows"
 msgstr "Ventanas"
 
-#: C/beginner.c.page:66(section/title) C/beginner.js.page:51(section/title)
-#: C/beginner.py.page:32(section/title) C/beginner.vala.page:55(section/title)
+#: C/beginner.c.page:71(section/title) C/beginner.js.page:56(section/title)
+#: C/beginner.py.page:33(section/title) C/beginner.vala.page:60(section/title)
 msgid "Display widgets"
 msgstr "Widgets de visualización"
 
-#: C/beginner.c.page:68(section/title) C/beginner.js.page:53(section/title)
-#: C/beginner.py.page:34(section/title) C/beginner.vala.page:57(section/title)
+#: C/beginner.c.page:73(section/title) C/beginner.js.page:58(section/title)
+#: C/beginner.py.page:35(section/title) C/beginner.vala.page:62(section/title)
 msgid "Buttons and toggles"
 msgstr "Botones y casillas"
 
-#: C/beginner.c.page:70(section/title) C/beginner.js.page:55(section/title)
-#: C/beginner.py.page:36(section/title) C/beginner.vala.page:59(section/title)
+#: C/beginner.c.page:75(section/title) C/beginner.js.page:60(section/title)
+#: C/beginner.py.page:37(section/title) C/beginner.vala.page:64(section/title)
 msgid "Numeric and text data entry"
 msgstr "Entrada de daos numérica y de texto"
 
-#: C/beginner.c.page:72(section/title) C/beginner.js.page:57(section/title)
-#: C/beginner.py.page:38(section/title) C/beginner.vala.page:61(section/title)
+#: C/beginner.c.page:77(section/title) C/beginner.js.page:62(section/title)
+#: C/beginner.py.page:39(section/title) C/beginner.vala.page:66(section/title)
 msgid "Multiline text editor"
 msgstr "Editor de texto multilínea"
 
-#: C/beginner.c.page:74(section/title) C/beginner.js.page:59(section/title)
-#: C/beginner.py.page:40(section/title) C/beginner.vala.page:63(section/title)
+#: C/beginner.c.page:79(section/title) C/beginner.js.page:64(section/title)
+#: C/beginner.py.page:41(section/title) C/beginner.vala.page:68(section/title)
 msgid "Menu, combo box and toolbar widgets"
 msgstr "Widgets de menú, caja combinada y barra de herramientas"
 
-#: C/beginner.c.page:76(section/title) C/beginner.js.page:61(section/title)
-#: C/beginner.py.page:42(section/title) C/beginner.vala.page:65(section/title)
+#: C/beginner.c.page:81(section/title) C/beginner.js.page:66(section/title)
+#: C/beginner.py.page:43(section/title) C/beginner.vala.page:70(section/title)
 msgid "TreeView widget"
 msgstr "Widget TreeView"
 
-#: C/beginner.c.page:78(section/title) C/beginner.js.page:63(section/title)
-#: C/beginner.py.page:44(section/title) C/beginner.vala.page:67(section/title)
+#: C/beginner.c.page:83(section/title) C/beginner.js.page:68(section/title)
+#: C/beginner.py.page:45(section/title) C/beginner.vala.page:72(section/title)
+#: C/tutorial.py.page:126(steps/title)
 msgid "Selectors"
 msgstr "Selectores"
 
-#: C/beginner.c.page:79(section/title) C/beginner.js.page:64(section/title)
-#: C/beginner.py.page:45(section/title) C/beginner.vala.page:68(section/title)
+#: C/beginner.c.page:84(section/title) C/beginner.js.page:69(section/title)
+#: C/beginner.py.page:46(section/title) C/beginner.vala.page:73(section/title)
 msgid "File selectors"
 msgstr "Selectores de archivos"
 
-#: C/beginner.c.page:81(section/title) C/beginner.js.page:66(section/title)
-#: C/beginner.py.page:47(section/title) C/beginner.vala.page:70(section/title)
+#: C/beginner.c.page:86(section/title) C/beginner.js.page:71(section/title)
+#: C/beginner.py.page:48(section/title) C/beginner.vala.page:75(section/title)
 msgid "Font selectors"
 msgstr "Selectores de tipografías"
 
-#: C/beginner.c.page:83(section/title) C/beginner.js.page:68(section/title)
-#: C/beginner.py.page:49(section/title) C/beginner.vala.page:72(section/title)
+#: C/beginner.c.page:88(section/title) C/beginner.js.page:73(section/title)
+#: C/beginner.py.page:50(section/title) C/beginner.vala.page:77(section/title)
 msgid "Color Selectors"
 msgstr "Selectores de color"
 
-#: C/beginner.c.page:86(section/title) C/beginner.js.page:71(section/title)
-#: C/beginner.py.page:52(section/title) C/beginner.vala.page:75(section/title)
+#: C/beginner.c.page:91(section/title) C/beginner.js.page:76(section/title)
+#: C/beginner.py.page:53(section/title) C/beginner.vala.page:80(section/title)
 msgid "Layout containers"
 msgstr "Contenedores de la distribución"
 
-#: C/beginner.c.page:88(section/title) C/beginner.js.page:73(section/title)
-#: C/beginner.py.page:54(section/title) C/beginner.vala.page:77(section/title)
-#: C/tutorial.py.page:66(steps/title)
+#: C/beginner.c.page:93(section/title) C/beginner.js.page:78(section/title)
+#: C/beginner.py.page:55(section/title) C/beginner.vala.page:82(section/title)
 msgid "Ornaments"
 msgstr "Adornos"
 
-#: C/beginner.c.page:90(section/title) C/beginner.js.page:75(section/title)
-#: C/beginner.py.page:56(section/title) C/beginner.vala.page:79(section/title)
+#: C/beginner.c.page:95(section/title) C/beginner.js.page:80(section/title)
+#: C/beginner.py.page:57(section/title) C/beginner.vala.page:84(section/title)
 msgid "Scrolling"
 msgstr "Desplazamiento"
 
-#: C/beginner.c.page:92(section/title) C/beginner.js.page:77(section/title)
-#: C/beginner.py.page:58(section/title) C/beginner.vala.page:81(section/title)
+#: C/beginner.c.page:97(section/title) C/beginner.js.page:82(section/title)
+#: C/beginner.py.page:59(section/title) C/beginner.vala.page:86(section/title)
 msgid "Miscellaneous"
 msgstr "Varios"
 
-#: C/beginner.c.page:97(section/title) C/beginner.js.page:82(section/title)
-#: C/beginner.vala.page:86(section/title)
+#: C/beginner.c.page:102(section/title) C/beginner.js.page:87(section/title)
+#: C/beginner.vala.page:91(section/title)
 #: C/menubar.vala.page:197(section/title)
-#: C/tutorial.py.page:147(section/title)
 msgid "Exercises"
 msgstr "Ejercicios"
 
@@ -4806,7 +4845,7 @@ msgstr "Ejercicios"
 msgid "Susanna Huhtanen"
 msgstr "Susanna Huhtanen"
 
-#: C/beginner.js.page:15(info/desc)
+#: C/beginner.js.page:20(info/desc)
 msgid ""
 "A beginner's guide to writing GNOME applications in JavaScript, including "
 "code samples and practice exercises."
@@ -4814,11 +4853,7 @@ msgstr ""
 "Una guía para principiantes sobre escribir aplicaciones de GNOME en "
 "JavaScript, incluyendo ejemplos de código y ejercicios de práctica."
 
-#: C/beginner.js.page:18(page/title)
-msgid "0 Beginner's tutorials and samples"
-msgstr "0. Tutoriales para principiantes y ejemplos"
-
-#: C/beginner.js.page:20(synopsis/p)
+#: C/beginner.js.page:25(synopsis/p)
 msgid ""
 "JavaScript is one of the most popular programming languages on the web. It's "
 "not just for the web, though. If you have even a basic understanding of "
@@ -4834,7 +4869,7 @@ msgstr ""
 "link> están escritos en JavaScript, y también <link href=\"https://live.";
 "gnome.org/GnomeShell/Tour\">GNOME Shell</link>, la parte más básica de GNOME."
 
-#: C/beginner.js.page:21(note/p)
+#: C/beginner.js.page:26(note/p)
 msgid ""
 "GNOME Shell is what you see when you click on \"Activities\" in the top-left "
 "corner of your screen. It also controls the clock and the rest of the top "
@@ -4848,11 +4883,11 @@ msgstr ""
 "estos tutoriales le mostrarán cómo usar JavaScript para escribir extensiones "
 "de GNOME Shell, que le añaden características o cambian su comportamiento."
 
-#: C/beginner.js.page:25(section/title)
+#: C/beginner.js.page:30(section/title)
 msgid "Getting Started"
 msgstr "Inicio"
 
-#: C/beginner.js.page:26(section/p)
+#: C/beginner.js.page:31(section/p)
 msgid ""
 "These tutorials are designed for people who already know how to write in "
 "JavaScript, and who have GNOME installed on their computers already, but who "
@@ -4866,7 +4901,7 @@ msgstr ""
 "JavaScript, o si necesita ayuda instalando GNOME, eche un vistazo a estos "
 "recursos primero:"
 
-#: C/beginner.js.page:28(item/p)
+#: C/beginner.js.page:33(item/p)
 msgid ""
 "<link href=\"http://eloquentjavascript.net/contents.html\";>Eloquent "
 "JavaScript</link> is a free, Creative Commons-licensed book, which explains "
@@ -4878,7 +4913,7 @@ msgstr ""
 "explica los conceptos básicos de programación en JavaScript. Dado que no va "
 "a escribir JavaScript para la web, sólo necesitará leer hasta el capítulo 10."
 
-#: C/beginner.js.page:29(item/p)
+#: C/beginner.js.page:34(item/p)
 msgid ""
 "<link href=\"http://www.gnome.org/getting-gnome/\";>Download GNOME</link> as "
 "part of a distribution, like Fedora, openSUSE, or Ubuntu. Each distribution "
@@ -4888,7 +4923,7 @@ msgstr ""
 "como parte de una distribución, como Fedora, openSUSE, o Ubuntu. Cada "
 "distribución tiene sus propias instrucciones para obtener GNOME."
 
-#: C/beginner.js.page:30(item/p)
+#: C/beginner.js.page:35(item/p)
 msgid ""
 "<link xref=\"set-up-gedit.js\">Set up gedit</link> for writing applications. "
 "GNOME's text editor, gedit, is sometimes just called \"text editor\"."
@@ -4897,7 +4932,7 @@ msgstr ""
 "aplicaciones. El editor de texto de GNOME, gedit, a veces solo se llama "
 "«editor de texto»."
 
-#: C/beginner.js.page:41(section/p)
+#: C/beginner.js.page:46(section/p)
 msgid ""
 "These samples show how to use widgets in your GNOME applications. Each one "
 "demonstrates a complete application which showcases the featured widget. At "
@@ -4909,23 +4944,23 @@ msgstr ""
 "final de cada ejemplo, encontrará enlaces a material de referencia más "
 "detallado."
 
-#: C/beginner.js.page:44(item/p)
+#: C/beginner.js.page:49(item/p)
 msgid "Copy and paste the code into <var>filename</var>.js"
 msgstr "Copie y pegue el código en <var>nombre_archivo</var>.js"
 
-#: C/beginner.js.page:45(item/p)
+#: C/beginner.js.page:50(item/p)
 msgid "In the terminal, type:"
 msgstr "Escriba en la terminal:"
 
-#: C/beginner.js.page:46(item/screen)
+#: C/beginner.js.page:51(item/screen)
 #, no-wrap
 msgid "gjs <var>filename</var>.js"
 msgstr "gjs <var>nombre_archivo</var>.js"
 
 #: C/beginner.py.page:8(info/title)
 msgctxt "text"
-msgid "Gtk Widget Sample Code and Tutorials (Python)"
-msgstr "Código de ejemplo de widget de GTK+ y tutoriales (Python)"
+msgid "GTK+ widgets sample code (Python)"
+msgstr "Código de ejemplo de widget de GTK+ (Python)"
 
 #: C/beginner.py.page:12(info/desc)
 msgid ""
@@ -4935,11 +4970,11 @@ msgstr ""
 "Una guía de programación de IU en GTK+, incluyendo ejemplos de código y "
 "ejercicios de práctica."
 
-#: C/beginner.py.page:19(page/title)
-msgid "Gtk Widget Sample Code and Tutorials"
-msgstr "Código de ejemplo de widget de GTK+ y tutoriales"
+#: C/beginner.py.page:24(page/title)
+msgid "GTK+ widgets sample code"
+msgstr "Código de ejemplo de widgets de GTK+"
 
-#: C/beginner.py.page:21(synopsis/p)
+#: C/beginner.py.page:26(synopsis/p)
 msgid ""
 "If you are a beginner and you would like a tutorial to guide you step by "
 "step in an exploration of what you can do with GTK+ 3, you should go to the "
@@ -4951,23 +4986,27 @@ msgstr ""
 "\"tutorial.py\"/>. Si está buscando un widget específico, puede encontrarlo "
 "en las secciones a continuación."
 
+#: C/beginner.py.page:63(section/title)
+msgid "Theory pages"
+msgstr "Páginas de teoría"
+
 #: C/beginner.vala.page:8(info/title)
 msgctxt "text"
-msgid "Beginner Tutorials (Vala)"
-msgstr "Tutoriales para principiantes (Vala)"
+msgid "Tutorial for beginners (Vala)"
+msgstr "Tutorial para principiantes (Vala)"
 
-#: C/beginner.vala.page:24(item/p)
+#: C/beginner.vala.page:29(item/p)
 msgid "The Vala programming language:"
 msgstr "El lenguaje de programación Vala:"
 
-#: C/beginner.vala.page:26(item/p)
+#: C/beginner.vala.page:31(item/p)
 msgid ""
 "<link href=\"https://live.gnome.org/Vala/Tutorial\";>The Vala Tutorial</link>"
 msgstr ""
 "<link href=\"https://live.gnome.org/Vala/Tutorial\";>El tutorial de Vala</"
 "link>"
 
-#: C/beginner.vala.page:27(item/p)
+#: C/beginner.vala.page:32(item/p)
 msgid ""
 "<link href=\"https://live.gnome.org/Vala/Documentation#Sample_Code\";>Sample "
 "Vala code</link>"
@@ -4975,11 +5014,11 @@ msgstr ""
 "<link href=\"https://live.gnome.org/Vala/Documentation#Sample_Code\";>Código "
 "de ejemplo de Vala</link>"
 
-#: C/beginner.vala.page:45(item/p)
+#: C/beginner.vala.page:50(item/p)
 msgid "Copy and paste the code into <var>filename</var>.vala"
 msgstr "Copie y pegue el código en <var>nombre_archivo</var>.vala"
 
-#: C/beginner.vala.page:47(item/screen)
+#: C/beginner.vala.page:52(item/screen)
 #, no-wrap
 msgid "valac --pkg gtk+-3.0 <var>filename</var>.vala"
 msgstr "valac --pkg gtk+-3.0 <var>nombre_archivo</var>.vala"
@@ -5095,7 +5134,7 @@ msgstr ""
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
 #: C/button.c.page:24(media) C/button.js.page:21(media)
-#: C/button.py.page:23(media) C/button.vala.page:23(media)
+#: C/button.py.page:24(media) C/button.vala.page:23(media)
 msgctxt "_"
 msgid "external ref='media/button.png' md5='8d69efbb3a0d3e043af6139b6492171c'"
 msgstr "external ref='media/button.png' md5='8d69efbb3a0d3e043af6139b6492171c'"
@@ -5105,13 +5144,13 @@ msgctxt "text"
 msgid "Button (C)"
 msgstr "Botón (C)"
 
-#: C/button.c.page:19(info/desc) C/button.py.page:18(info/desc)
+#: C/button.c.page:19(info/desc) C/button.py.page:19(info/desc)
 #: C/button.vala.page:18(info/desc)
 msgid "A button widget which emits a signal when clicked"
 msgstr "Un widget de botón que emite una señal cuando se pulsa sobre él"
 
 #: C/button.c.page:22(page/title) C/button.js.page:20(page/title)
-#: C/button.py.page:21(page/title)
+#: C/button.py.page:22(page/title)
 msgid "Button"
 msgstr "Button"
 
@@ -5167,7 +5206,7 @@ msgid ""
 "  gtk_container_add (GTK_CONTAINER (window), button);\n"
 "\n"
 "  /*Connecting the clicked signal to the callback function*/\n"
-"  g_signal_connect (GTK_Button (button), \n"
+"  g_signal_connect (GTK_BUTTON (button),\n"
 "                    \"clicked\", \n"
 "                    G_CALLBACK (button_clicked), \n"
 "                    G_OBJECT (window));\n"
@@ -5232,7 +5271,7 @@ msgstr ""
 "  gtk_container_add (GTK_CONTAINER (window), button);\n"
 "\n"
 "  /*Connecting the clicked signal to the callback function*/\n"
-"  g_signal_connect (GTK_Button (button), \n"
+"  g_signal_connect (GTK_BUTTON (button),\n"
 "                    \"clicked\", \n"
 "                    G_CALLBACK (button_clicked), \n"
 "                    G_OBJECT (window));\n"
@@ -5256,7 +5295,7 @@ msgstr ""
 "  return status;\n"
 "}\n"
 
-#: C/button.c.page:35(item/p) C/buttonbox.py.page:49(item/p)
+#: C/button.c.page:35(item/p) C/buttonbox.py.page:50(item/p)
 #: C/grid.c.page:34(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkButton.html";
@@ -5430,11 +5469,11 @@ msgctxt "text"
 msgid "Button (Python)"
 msgstr "Botón (Python)"
 
-#: C/button.py.page:24(page/p) C/button.vala.page:24(page/p)
+#: C/button.py.page:25(page/p) C/button.vala.page:24(page/p)
 msgid "A button widget connected to a simple callback function."
 msgstr "Un widget de botón conectado a una función de retorno de llamada."
 
-#: C/button.py.page:30(section/code)
+#: C/button.py.page:31(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -5513,21 +5552,24 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/button.py.page:33(section/title)
+#: C/button.py.page:35(section/title)
 msgid "Useful methods for a Button widget"
 msgstr "Métodos útiles para un widget «Button»"
 
-#: C/button.py.page:35(section/p)
+#: C/button.py.page:36(section/p)
 msgid ""
-"<code>button = Gtk.Button(label=\"Click me\")</code> could also be used to "
-"create a button and set the text directly. For a general discussion of this, "
-"see <link xref=\"properties.py\">here</link>."
+"In line 16 the <code>\"clicked\"</code> signal from the button is connected "
+"to the callback function <code>do_clicked()</code> using <code><var>widget</"
+"var>.connect(<var>signal</var>, <var>callback function</var>)</code>. See "
+"<link xref=\"signals-callbacks.py\"/> for a more detailed explanation."
 msgstr ""
-"<code>button = Gtk.Button(label=\"Click me\")</code> también podría usarse "
-"para crear un botón y establecer el texto directamente. Para una discusión "
-"general sobre esto, consulte <link xref=\"properties.py\">aquí</link>."
+"En la línea 16, la señal <code>«clicked»</code> del botón se conecta a la "
+"función de retorno de llamada <code>do_clicked()</code> usando "
+"<code><var>widget</var>.connect(<var>señal</var>, <var>función de retorno de "
+"llamada</var>)</code>. Consulte la <link xref=\"signals-callbacks.py\"/> "
+"para una explicación más detallada."
 
-#: C/button.py.page:37(item/p)
+#: C/button.py.page:38(item/p)
 msgid ""
 "<code>set_relief(Gtk.ReliefStyle.NONE)</code> sets to none the relief style "
 "of the edges of the Gtk.Button - as opposed to <code>Gtk.ReliefStyle.NORMAL</"
@@ -5537,7 +5579,7 @@ msgstr ""
 "de los bordes del «Gtk.Button» a «ninguno», opuesto a <code>Gtk.ReliefStyle."
 "NORMAL</code>."
 
-#: C/button.py.page:38(item/p)
+#: C/button.py.page:39(item/p)
 msgid ""
 "If the label of the button is a <link href=\"http://developer.gnome.org/gtk3/";
 "unstable/gtk3-Stock-Items.html\">stock icon</link>, <code>set_use_stock(True)"
@@ -5548,14 +5590,14 @@ msgstr ""
 "<code>set_use_stock(True)</code> establece la etiqueta al nombre del icono "
 "del almacén correspondiente."
 
-#: C/button.py.page:39(item/p)
+#: C/button.py.page:40(item/p)
 msgid ""
 "To set an image (e.g. a stock image) for the button <code>button</code>:"
 msgstr ""
 "Para establecer una imagen (por ejemplo, una imagen del almacén) para el "
 "botón <code>button</code>:"
 
-#: C/button.py.page:40(item/code)
+#: C/button.py.page:41(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -5568,7 +5610,7 @@ msgstr ""
 "image.set_from_stock(Gtk.STOCK_ABOUT, Gtk.IconSize.BUTTON)\n"
 "button.set_image(image)"
 
-#: C/button.py.page:44(item/p)
+#: C/button.py.page:45(item/p)
 msgid ""
 "You should not set a label for the button after this, otherwise it will show "
 "the label and not the image."
@@ -5576,7 +5618,7 @@ msgstr ""
 "No debe establecer una etiqueta para el botón después de esto, ya que si lo "
 "hace mostrará la etiqueta y no la imagen."
 
-#: C/button.py.page:45(item/p)
+#: C/button.py.page:46(item/p)
 msgid ""
 "If we use <code>set_focus_on_click(False)</code> the button will not grab "
 "focus when it is clicked by the mouse. This could be useful in places like "
@@ -5588,7 +5630,7 @@ msgstr ""
 "herramientas, para que el foco del teclado no se quite del área principal de "
 "la aplicación."
 
-#: C/button.py.page:52(item/p)
+#: C/button.py.page:54(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkButton.html";
 "\">GtkButton</link>"
@@ -5596,11 +5638,11 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkButton.html";
 "\">GtkButton</link>"
 
-#: C/button.py.page:53(item/p) C/dialog.py.page:50(item/p)
-#: C/image.py.page:101(item/p) C/label.py.page:89(item/p)
+#: C/button.py.page:55(item/p) C/dialog.py.page:51(item/p)
+#: C/image.py.page:103(item/p) C/label.py.page:90(item/p)
 #: C/linkbutton.py.page:46(item/p) C/messagedialog.py.page:60(item/p)
-#: C/radiobutton.py.page:51(item/p) C/separator.py.page:37(item/p)
-#: C/window.py.page:63(item/p)
+#: C/radiobutton.py.page:48(item/p) C/separator.py.page:38(item/p)
+#: C/window.py.page:64(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkWindow.html";
 "\">GtkWindow</link>"
@@ -5720,7 +5762,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/buttonbox.py.page:23(media)
+#: C/buttonbox.py.page:24(media)
 msgctxt "_"
 msgid ""
 "external ref='media/buttonbox_calculator.png' "
@@ -5734,19 +5776,19 @@ msgctxt "text"
 msgid "ButtonBox (Python)"
 msgstr "Botonera (Python)"
 
-#: C/buttonbox.py.page:18(info/desc)
+#: C/buttonbox.py.page:19(info/desc)
 msgid "A container for arranging buttons"
 msgstr "Un contenedor para organizar botones"
 
-#: C/buttonbox.py.page:21(page/title)
+#: C/buttonbox.py.page:22(page/title) C/tutorial.py.page:91(steps/title)
 msgid "ButtonBox"
 msgstr "Botonera"
 
-#: C/buttonbox.py.page:24(page/p)
+#: C/buttonbox.py.page:25(page/p)
 msgid "A calculator - the buttons are enclosed in horizontal ButtonBoxes."
 msgstr "Una calculadora: los botones se agrupan en botoneras horizontales."
 
-#: C/buttonbox.py.page:30(section/code)
+#: C/buttonbox.py.page:31(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -6035,11 +6077,11 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/buttonbox.py.page:34(section/title)
+#: C/buttonbox.py.page:35(section/title)
 msgid "Uselful methods for a ButtonBox widget"
 msgstr "Métodos útiles para un widget botonera"
 
-#: C/buttonbox.py.page:36(item/p)
+#: C/buttonbox.py.page:37(item/p)
 msgid ""
 "The layout of the ButtonBox are set with <code>set_layout(layout)</code>, "
 "where <code>layout</code> can be <code>Gtk.ButtonBoxStyle.SPREAD</code> "
@@ -6058,7 +6100,7 @@ msgstr ""
 "code> (los botones se agrupan hacia el final), <code>Gtk.ButtonBoxStyle."
 "CENTER</code> (los botones se agrupan hacia el centro)."
 
-#: C/buttonbox.py.page:37(item/p)
+#: C/buttonbox.py.page:38(item/p)
 msgid ""
 "<code>set_child_secondary(button, is_secondary)</code> sets whether "
 "<code>button</code> should appear in a secondary group of children. A "
@@ -6080,7 +6122,7 @@ msgstr ""
 "principales en la botonera . Para los otros estilos, aparecen inmediatamente "
 "a continuación de los hijos principales."
 
-#: C/buttonbox.py.page:38(item/p)
+#: C/buttonbox.py.page:39(item/p)
 msgid ""
 "<code>set_child_non_homogeneous(button, is_non_homogeneous)</code> sets "
 "whether the child is exempted from homogeous sizing. Default value is "
@@ -6090,7 +6132,7 @@ msgstr ""
 "el hijo está exento de dimensionado homogéneo. El valor predeterminado es "
 "<code>False</code>."
 
-#: C/buttonbox.py.page:39(item/p)
+#: C/buttonbox.py.page:40(item/p)
 msgid ""
 "<code>set_spacing(spacing)</code> sets the spacing, in pixels, between the "
 "buttons of the box."
@@ -6098,7 +6140,7 @@ msgstr ""
 "<code>set_spacing(espaciado)</code> establece el espaciado, en píxeles, "
 "entre los botones de la botonera."
 
-#: C/buttonbox.py.page:47(item/p)
+#: C/buttonbox.py.page:48(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkButtonBox.html";
 "\">GtkButtonBox</link>"
@@ -6106,7 +6148,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkButtonBox.html";
 "\">GtkButtonBox</link>"
 
-#: C/buttonbox.py.page:48(item/p)
+#: C/buttonbox.py.page:49(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkBox.html\";>GtkBox</"
 "link>"
@@ -6114,7 +6156,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkBox.html\";>GtkBox</"
 "link>"
 
-#: C/buttonbox.py.page:50(item/p) C/entry.c.page:33(item/p)
+#: C/buttonbox.py.page:51(item/p) C/entry.c.page:33(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkEntry.html";
 "\">GtkEntry</link>"
@@ -6122,7 +6164,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkEntry.html";
 "\">GtkEntry</link>"
 
-#: C/buttonbox.py.page:51(item/p) C/grid.c.page:35(item/p)
+#: C/buttonbox.py.page:52(item/p) C/grid.c.page:35(item/p)
 #: C/radiobutton.c.page:36(item/p) C/spinbutton.c.page:39(item/p)
 #: C/statusbar.c.page:39(item/p) C/switch.c.page:36(item/p)
 #: C/togglebutton.c.page:39(item/p)
@@ -6139,9 +6181,19 @@ msgid "C"
 msgstr "C"
 
 #: C/c.page:15(page/title)
-msgid "Tutorials, code samples, and plaform demos in C"
+msgid "Tutorials, code samples and plaform demos in C"
 msgstr "Tutoriales, ejemplos de código y demostraciones de la plataforma en C"
 
+#: C/c.page:20(section/title) C/vala.page:25(section/title)
+msgid "Code samples and tutorial"
+msgstr "Ejemplos de código y tutorial"
+
+#: C/c.page:27(section/title) C/cpp.page:20(section/title)
+#: C/js.page:35(section/title) C/py.page:38(section/title)
+#: C/vala.page:29(section/title)
+msgid "Examples of applications"
+msgstr "Ejemplos de aplicaciones"
+
 #. This is a reference to an external file such as an image or video. When
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
@@ -6317,8 +6369,8 @@ msgid ""
 "\" tests as false."
 msgstr ""
 "Una casilla de verificación envía la señal «toggled» cuando se activa o "
-"desactiva. Cuando está activada, la propiedad «active» es «true». Cuando no "
-"lo está, «active» es «false»."
+"desactiva. Cuando está activada, la propiedad «active» es «true». Cuando no lo "
+"está, «active» es «false»."
 
 #: C/checkbutton.js.page:27(section/title)
 #: C/comboboxtext.js.page:29(section/title)
@@ -6916,27 +6968,24 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/checkbutton.py.page:32(section/p)
-msgid ""
-"We could also create the CheckButton with <code>button = Gtk.CheckButton."
-"new_with_label(\"Show Title\")</code>."
-msgstr ""
-"También se podría crear la casilla de verificación con <code>button = Gtk."
-"CheckButton.new_with_label(\"Show Title\")</code>."
-
-#: C/checkbutton.py.page:37(section/title)
+#: C/checkbutton.py.page:35(section/title)
 msgid "Useful methods for a CheckButton widget"
 msgstr "Métodos útiles para un widget «CheckButton»"
 
-#: C/checkbutton.py.page:38(section/p) C/switch.py.page:41(section/p)
+#: C/checkbutton.py.page:36(section/p)
 msgid ""
-"For a discussion on signals and callback functions, see <link xref=\"signals-"
-"callbacks.py\">this page</link>."
+"In line 17 the <code>\"toggled\"</code> signal is connected to the callback "
+"function <code>toggled_cb()</code> using <code><var>widget</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation."
 msgstr ""
-"Para ver una discusión sobre señales y funciones de retorno de llamada, "
-"consulte <link xref=\"signals-callbacks.py\">esta página</link>."
+"En la línea 17 la señal <code>«toggled»</code> se conecta a una función de "
+"retorno de llamada <code>toggled_cb()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
+"detallada."
 
-#: C/checkbutton.py.page:48(item/p) C/togglebutton.py.page:45(item/p)
+#: C/checkbutton.py.page:46(item/p) C/togglebutton.py.page:43(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToggleButton.html";
 "\">GtkToggleButton</link>"
@@ -6944,7 +6993,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToggleButton.html";
 "\">GtkToggleButton</link>"
 
-#: C/checkbutton.py.page:49(item/p)
+#: C/checkbutton.py.page:47(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCheckButton.html";
 "\">GtkCheckButton</link>"
@@ -7087,7 +7136,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/colorbutton.py.page:21(media) C/colorbutton.vala.page:23(media)
+#: C/colorbutton.py.page:22(media) C/colorbutton.vala.page:23(media)
 msgctxt "_"
 msgid ""
 "external ref='media/colorbutton.png' md5='904539d26fe367bf99f9a0961cfc9a03'"
@@ -7099,15 +7148,15 @@ msgctxt "text"
 msgid "ColorButton (Python)"
 msgstr "ColorButton (Python)"
 
-#: C/colorbutton.py.page:17(info/desc) C/colorbutton.vala.page:19(info/desc)
+#: C/colorbutton.py.page:18(info/desc) C/colorbutton.vala.page:19(info/desc)
 msgid "A button to launch a color selection dialog"
 msgstr "Un botón para mostrar el diálogo de selección de color"
 
-#: C/colorbutton.py.page:20(page/title) C/colorbutton.vala.page:22(page/title)
+#: C/colorbutton.py.page:21(page/title) C/colorbutton.vala.page:22(page/title)
 msgid "ColorButton"
 msgstr "ColorButton"
 
-#: C/colorbutton.py.page:22(page/p)
+#: C/colorbutton.py.page:23(page/p)
 msgid ""
 "This ColorButton launches a color selection dialog and prints in the "
 "terminal the RGB values of the color selected."
@@ -7115,7 +7164,7 @@ msgstr ""
 "Este ColorButton muestra un diálogo de selección de color e imprime por la "
 "terminal los valores RGB del color seleccionado."
 
-#: C/colorbutton.py.page:28(section/code)
+#: C/colorbutton.py.page:29(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -7224,11 +7273,11 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/colorbutton.py.page:32(section/title)
+#: C/colorbutton.py.page:33(section/title)
 msgid "Useful methods for a ColorButton widget"
 msgstr "Métodos útiles para un widget «ColorButton»"
 
-#: C/colorbutton.py.page:33(section/p)
+#: C/colorbutton.py.page:34(section/p)
 msgid ""
 "<code>set_color(color)</code>, where the <code>color</code> is defined as in "
 "the example, sets the color of the ColorButton, which by default is black. "
@@ -7238,7 +7287,20 @@ msgstr ""
 "el ejemplo, establece el color del «ColorButton», que es negro de manera "
 "predeterminada. <code>get_color()</code> devuelve el color."
 
-#: C/colorbutton.py.page:40(item/p)
+#: C/colorbutton.py.page:35(section/p)
+msgid ""
+"In line 23 the <code>\"color-set\"</code> signal is connected to the "
+"callback function <code>on_color_chosen()</code> using <code><var>widget</"
+"var>.connect(<var>signal</var>, <var>callback function</var>)</code>. See "
+"<link xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 23 la señal <code>«color-set»</code> se conecta a una función de "
+"retorno de llamada <code>on_color_chosen()</code> usando <code><var>widget</"
+"var>.connect(<var>señal</var>, <var>función de retorno de llamada</var>)</"
+"code>. Consulte la <link xref=\"signals-callbacks.py\"/> para una "
+"explicación más detallada."
+
+#: C/colorbutton.py.page:42(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkColorButton.html";
 "\">GtkColorButton</link>"
@@ -7246,7 +7308,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkColorButton.html";
 "\">GtkColorButton</link>"
 
-#: C/colorbutton.py.page:41(item/p)
+#: C/colorbutton.py.page:43(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkColorChooser.html";
 "\">GtkColorChooser</link>"
@@ -7254,7 +7316,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkColorChooser.html";
 "\">GtkColorChooser</link>"
 
-#: C/colorbutton.py.page:42(item/p)
+#: C/colorbutton.py.page:44(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gdk3/stable/gdk3-RGBA-Colors.html";
 "\">RGBA Colors</link>"
@@ -7381,7 +7443,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/comboboxtext.js.page:23(media) C/combobox.py.page:21(media)
+#: C/comboboxtext.js.page:23(media) C/combobox.py.page:23(media)
 #: C/combobox.vala.page:21(media)
 msgctxt "_"
 msgid ""
@@ -7413,8 +7475,8 @@ msgstr ""
 "Un «ComboBox» es un menú desplegable. La diferencia entre un <link xref="
 "\"combobox.js\">ComboBox</link> y un «ComboBoxText» es que este sólo tiene "
 "opciones básicas de texto, mientras que un «ComboBox» completo usa un "
-"«ListStore» o «TreeStore» (que son básicamente hojas de cálculo) para "
-"mostrar cosas como opciones de bifurcación, o imágenes junto a cada opción."
+"«ListStore» o «TreeStore» (que son básicamente hojas de cálculo) para mostrar "
+"cosas como opciones de bifurcación, o imágenes junto a cada opción."
 
 #: C/comboboxtext.js.page:25(note/p)
 msgid ""
@@ -7485,8 +7547,8 @@ msgid ""
 "to go in."
 msgstr ""
 "Todo el código de este ejemplo va en la clase «MessageDialogExample». El "
-"código anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-";
-"gtk-3.0/gjs/Gtk.Application.html\">Gtk.Application</link> para que vayan los "
+"código anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-";
+"3.0/gjs/Gtk.Application.html\">Gtk.Application</link> para que vayan los "
 "widgets y la ventana."
 
 #: C/comboboxtext.js.page:66(section/code) C/combobox.js.page:70(section/code)
@@ -7574,10 +7636,10 @@ msgid ""
 "create an array for your ComboBoxText entries, then use a for loop to append "
 "them in order, like we did here."
 msgstr ""
-"Después de crear el «ComboBoxText», se usa su método <file>append_text</"
-"file> para añadirle cadenas de texto. Al igual que las entradas en una "
-"matriz, cada una tiene un número para identificarlas, comenzando por el 0. "
-"Para hacer las cosas más simples, puede crear una matriz para los datos del "
+"Después de crear el «ComboBoxText», se usa su método <file>append_text</file> "
+"para añadirle cadenas de texto. Al igual que las entradas en una matriz, "
+"cada una tiene un número para identificarlas, comenzando por el 0. Para "
+"hacer las cosas más simples, puede crear una matriz para los datos del "
 "«ComboBoxText», y después usar un bucle «for» para añadirlos en orden, como "
 "aquí."
 
@@ -7731,9 +7793,9 @@ msgid ""
 "We do that using the <file>get_active</file> method, which returns the "
 "number ID of your selection."
 msgstr ""
-"Antes de mostrar un «MessageDialog», se verifica que no ha elegido el "
-"mensaje «Seleccionar distribución». Después de eso, se establece su texto a "
-"la entrada en la matriz que le corresponde a la entrada activa en el "
+"Antes de mostrar un «MessageDialog», se verifica que no ha elegido el mensaje "
+"«Seleccionar distribución». Después de eso, se establece su texto a la "
+"entrada en la matriz que le corresponde a la entrada activa en el "
 "«ComboBoxText». Esto se hace usando el método <file>get_active</file>, que "
 "devuelve la identificación numérica de su selección."
 
@@ -8066,9 +8128,7 @@ msgstr "ComboBox (JavaScript)"
 msgid "A customizable drop-down menu"
 msgstr "Un menú desplegable personalizable."
 
-#: C/combobox.js.page:24(page/title) C/combobox.py.page:20(page/title)
-#: C/combobox.vala.page:20(page/title)
-#: C/combobox_multicolumn.py.page:21(page/title)
+#: C/combobox.js.page:24(page/title) C/combobox.vala.page:20(page/title)
 msgid "ComboBox"
 msgstr "ComboBox"
 
@@ -8086,8 +8146,8 @@ msgstr ""
 "el equivalente a un widget <link xref=\"treeview_simple_liststore.js"
 "\">TreeView</link> que aparece cuando lo pulsa, completo con un "
 "«ListStore» (básicamente una hoja de cálculo) que dice qué está en las filas "
-"y columnas. En este ejemplo, el «ListStore» tiene el nombre de cada opción "
-"en una columna, y el nombre de un elemento del almacén en la otra, que el "
+"y columnas. En este ejemplo, el «ListStore» tiene el nombre de cada opción en "
+"una columna, y el nombre de un elemento del almacén en la otra, que el "
 "«ComboBox» convierte en un icono para cada opción."
 
 #: C/combobox.js.page:27(page/p)
@@ -8312,11 +8372,10 @@ msgid ""
 "we make sure to check for that first."
 msgstr ""
 "Aquí se crea una matriz de las opciones de texto y sus iconos "
-"correspondientes, después se ponen en el «ListStore» de forma parecida a "
-"cOmo se haría para un «ListStore» de un <link xref="
-"\"treeview_simple_liststore.js\">TreeView</link>. Sólo se quiere poner un "
-"icono si hay uno en la matriz de opciones, por lo que primero hay que "
-"asegurarse de verificar esto."
+"correspondientes, después se ponen en el «ListStore» de forma parecida a cOmo "
+"se haría para un «ListStore» de un <link xref=\"treeview_simple_liststore.js"
+"\">TreeView</link>. Sólo se quiere poner un icono si hay uno en la matriz de "
+"opciones, por lo que primero hay que asegurarse de verificar esto."
 
 #: C/combobox.js.page:120(note/p)
 msgid ""
@@ -8349,10 +8408,9 @@ msgid ""
 "can use a TreeStore if you want to have a ComboBox with branching options. "
 "In this case, we're just using the ListStore we already created."
 msgstr ""
-"Cada «ComboBox» tiene un «modelo» subyacente del que toma todas sus "
-"opciones. Puede usar un «TreeStore» si quiere tener un «ComboBox» con "
-"opciones de bifurcación. En este caso, solo se está usando el «ListStore» "
-"que ya se creó."
+"Cada «ComboBox» tiene un «modelo» subyacente del que toma todas sus opciones. "
+"Puede usar un «TreeStore» si quiere tener un «ComboBox» con opciones de "
+"bifurcación. En este caso, solo se está usando el «ListStore» que ya se creó."
 
 #: C/combobox.js.page:131(section/code)
 #, no-wrap
@@ -8406,10 +8464,10 @@ msgid ""
 "the icons. We can store the names of the icons' stock types as strings, but "
 "when we display them we need a CellRenderer that's designed for pictures."
 msgstr ""
-"Se usa un «CellRendererText» para mostrar el texto, y un "
-"«CellRendererPixbuf» para mostrar los iconos. Se pueden almacenar los "
-"nombres de los tipos del almacén de iconos como cadenas, pero cuando se "
-"muestran se necesita un «CellRenderer» diseñado para imágenes."
+"Se usa un «CellRendererText» para mostrar el texto, y un «CellRendererPixbuf» "
+"para mostrar los iconos. Se pueden almacenar los nombres de los tipos del "
+"almacén de iconos como cadenas, pero cuando se muestran se necesita un "
+"«CellRenderer» diseñado para imágenes."
 
 #: C/combobox.js.page:146(note/p)
 msgid ""
@@ -8421,13 +8479,13 @@ msgid ""
 "the information in the ListStore in a different way, without it affecting "
 "our ComboBox."
 msgstr ""
-"Al igual que con un «TreeView», el «modelo» (en este caso un «ListStore») y "
-"la «vista» (en este caso el «ComboBox») están separados. Es por esto que se "
+"Al igual que con un «TreeView», el «modelo» (en este caso un «ListStore») y la "
+"«vista» (en este caso el «ComboBox») están separados. Es por esto que se "
 "pueden hacer cosas como tener las columnas en un orden en el «ListStore», y "
-"después empaquetar los «CellRenderer» que les corresponden en el «ComboBox» "
-"en un orden diferente. Incluso se puede crear un «TreeView» u otro widget "
-"que muestre la información en el «ListStore» de una manera diferente, sin "
-"afectar el «ComboBox»."
+"después empaquetar los «CellRenderer» que les corresponden en el «ComboBox» en "
+"un orden diferente. Incluso se puede crear un «TreeView» u otro widget que "
+"muestre la información en el «ListStore» de una manera diferente, sin afectar "
+"el «ComboBox»."
 
 #: C/combobox.js.page:148(section/code)
 #, no-wrap
@@ -8456,10 +8514,10 @@ msgid ""
 msgstr ""
 "Se quiere que el texto «Select» sea la parte que la gente ve al principio, "
 "que les haga pulsar el «ComboBox»; por lo que se establece como entrada "
-"activa. También se conecta la señal <file>changed</file> del «ComboBox» a "
-"una función de retorno de llamada, para que siempre que alguien pulse una "
-"opción nueva suceda algo. En este caso, sólo se va a mostrar una ventana "
-"emergente con un pequeño «haiku»."
+"activa. También se conecta la señal <file>changed</file> del «ComboBox» a una "
+"función de retorno de llamada, para que siempre que alguien pulse una opción "
+"nueva suceda algo. En este caso, sólo se va a mostrar una ventana emergente "
+"con un pequeño «haiku»."
 
 #: C/combobox.js.page:157(section/code)
 #, no-wrap
@@ -8519,9 +8577,9 @@ msgid ""
 msgstr ""
 "Se va a crear un <link xref=\"messagedialog.js\">MessageDialog</link> "
 "emergente, que muestra un «haiku» tonto de acuerdo a qué distribución "
-"seleccione. Primero, se crea la matriz de «haiku». Dado que la primera "
-"cadena en el «ComboBox» es sólo el mensaje «Select», la primera cadena en la "
-"matriz se hace vacía."
+"seleccione. Primero, se crea la matriz de «haiku». Dado que la primera cadena "
+"en el «ComboBox» es sólo el mensaje «Select», la primera cadena en la matriz "
+"se hace vacía."
 
 #: C/combobox.js.page:181(section/code)
 #, no-wrap
@@ -8942,17 +9000,21 @@ msgctxt "text"
 msgid "ComboBox (Python)"
 msgstr "ComboBox (Python)"
 
-#: C/combobox.py.page:17(info/desc) C/combobox.vala.page:17(info/desc)
+#: C/combobox.py.page:19(info/desc) C/combobox.vala.page:17(info/desc)
 #: C/combobox_multicolumn.py.page:18(info/desc)
 msgid "A widget used to choose from a list of items"
 msgstr "Un widget usado para elegir de una lista de elementos"
 
-#: C/combobox.py.page:22(page/p) C/combobox_multicolumn.py.page:23(page/p)
+#: C/combobox.py.page:22(page/title)
+msgid "ComboBox (one column)"
+msgstr "ComboBox (una columna)"
+
+#: C/combobox.py.page:24(page/p) C/combobox_multicolumn.py.page:23(page/p)
 msgid "This ComboBox prints to the terminal your selection when you change it."
 msgstr ""
 "Esta ComboBox imprime su selección en la terminal cuando cambia la cambia."
 
-#: C/combobox.py.page:28(section/code)
+#: C/combobox.py.page:30(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -9077,25 +9139,44 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/combobox.py.page:32(section/title)
+#: C/combobox.py.page:34(section/title)
 #: C/combobox_multicolumn.py.page:34(section/title)
 msgid "Useful methods for a ComboBox widget"
 msgstr "Métodos útiles para un widget «ComboBox»"
 
-#: C/combobox.py.page:33(section/p)
+#: C/combobox.py.page:35(section/p)
 #: C/combobox_multicolumn.py.page:35(section/p)
 msgid ""
 "The ComboBox widget is designed around a <em>Model/View/Controller</em> "
-"design. For more information, and for a list of useful methods for ComboBox "
-"and TreeModel, see <link xref=\"model-view-controller.py\">here</link>."
+"design: the <em>Model</em> stores the data; the <em>View</em> gets change "
+"notifications and displays the content of the model; the <em>Controller</"
+"em>, finally, changes the state of the model and notifies the view of these "
+"changes. For more information and for a list of useful methods for ComboBox "
+"see <link xref=\"model-view-controller.py\"/>."
 msgstr ""
 "El widget «ComboBox» está desarrollado sobre el diseño <em>Modelo/Vista/"
-"Controlador</em>. Para más información, y una lista de métodos útiles de "
-"«ComboBox» y «TreeModel», consulte <link xref=\"model-view-controller.py"
-"\">aquí</link>."
-
-#: C/combobox.py.page:40(item/p) C/combobox_multicolumn.py.page:43(item/p)
-#: C/model-view-controller.py.page:188(item/p)
+"Controlador</em>: el <em>Modelo</em> almacena los datos, la <em>Vista</em> "
+"obtiene las notificaciones de cambio y muestra el contenido del modelo; el "
+"<em>Controlador</em>, finalmente, cambia el estado del modelo y le notifica "
+"a la vista los cambios. Para más información, y una lista de métodos útiles "
+"de «ComboBox» y «TreeModel», consulte la <link xref=\"model-view-controller.py"
+"\"/>."
+
+#: C/combobox.py.page:36(section/p)
+msgid ""
+"In line 35 the <code>\"changed\"</code> signal is connected to the callback "
+"function <code>on_changed()</code> using <code><var>widget</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 35 la señal <code>«changed»</code> se conecta a la función de "
+"retorno de llamada <code>on_changed()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
+"detallada."
+
+#: C/combobox.py.page:44(item/p) C/combobox_multicolumn.py.page:43(item/p)
+#: C/model-view-controller.py.page:189(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkComboBox.html";
 "\">GtkComboBox</link>"
@@ -9103,9 +9184,9 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkComboBox.html";
 "\">GtkComboBox</link>"
 
-#: C/combobox.py.page:41(item/p) C/combobox_multicolumn.py.page:44(item/p)
-#: C/treeview_advanced_liststore.py.page:47(item/p)
-#: C/treeview_simple_liststore.py.page:45(item/p)
+#: C/combobox.py.page:45(item/p) C/combobox_multicolumn.py.page:44(item/p)
+#: C/treeview_advanced_liststore.py.page:45(item/p)
+#: C/treeview_simple_liststore.py.page:46(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkListStore.html";
 "\">GtkListStore</link>"
@@ -9113,11 +9194,11 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkListStore.html";
 "\">GtkListStore</link>"
 
-#: C/combobox.py.page:42(item/p) C/combobox_multicolumn.py.page:45(item/p)
-#: C/treeview_advanced_liststore.py.page:48(item/p)
-#: C/treeview_cellrenderertoggle.py.page:44(item/p)
-#: C/treeview_simple_liststore.py.page:46(item/p)
-#: C/treeview_treestore.py.page:44(item/p)
+#: C/combobox.py.page:46(item/p) C/combobox_multicolumn.py.page:45(item/p)
+#: C/treeview_advanced_liststore.py.page:46(item/p)
+#: C/treeview_cellrenderertoggle.py.page:46(item/p)
+#: C/treeview_simple_liststore.py.page:47(item/p)
+#: C/treeview_treestore.py.page:46(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererText.";
 "html\">GtkCellRendererText</link>"
@@ -9125,7 +9206,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererText.";
 "html\">GtkCellRendererText</link>"
 
-#: C/combobox.py.page:43(item/p)
+#: C/combobox.py.page:47(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellLayout.html";
 "\">GtkCellLayout</link>"
@@ -9133,9 +9214,9 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellLayout.html";
 "\">GtkCellLayout</link>"
 
-#: C/combobox.py.page:44(item/p) C/combobox_multicolumn.py.page:48(item/p)
-#: C/treeview_advanced_liststore.py.page:50(item/p)
-#: C/treeview_simple_liststore.py.page:48(item/p)
+#: C/combobox.py.page:48(item/p) C/combobox_multicolumn.py.page:48(item/p)
+#: C/treeview_advanced_liststore.py.page:48(item/p)
+#: C/treeview_simple_liststore.py.page:49(item/p)
 msgid ""
 "<link href=\"http://git.gnome.org/browse/pygobject/tree/gi/overrides/Gtk.py";
 "\">pygobject - Python bindings for GObject Introspection</link>"
@@ -9348,6 +9429,10 @@ msgstr ""
 "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellLayout.set_attributes.";
 "html\">set_attributes</link>"
 
+#: C/combobox_multicolumn.py.page:21(page/title)
+msgid "ComboBox (two columns)"
+msgstr "ComboBox (dos columnas)"
+
 #: C/combobox_multicolumn.py.page:29(section/code)
 #, no-wrap
 msgid ""
@@ -9495,6 +9580,19 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
+#: C/combobox_multicolumn.py.page:36(section/p)
+msgid ""
+"In line 45 the <code>\"changed\"</code> signal is connected to the callback "
+"function <code>on_changed()</code> using <code><var>widget</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 45 la señal <code>«changed»</code> se conecta a la función de "
+"retorno de llamada <code>on_changed()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
+"detallada."
+
 #: C/combobox_multicolumn.py.page:46(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererPixbuf.";
@@ -9503,7 +9601,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererPixbuf.";
 "html\">GtkCellRendererPixbuf</link>"
 
-#: C/combobox_multicolumn.py.page:47(item/p) C/toolbar.py.page:55(item/p)
+#: C/combobox_multicolumn.py.page:47(item/p) C/toolbar.py.page:57(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/gtk3-Stock-Items.html";
 "\">Stock Items</link>"
@@ -9517,8 +9615,8 @@ msgid "C++"
 msgstr "C++"
 
 #: C/cpp.page:15(page/title)
-msgid "Platform demos in C++"
-msgstr "Demostraciones de la plataforma en C++"
+msgid "Code samples and platform demos in C++"
+msgstr "Ejemplos de código y demostraciones de la plataforma en C++"
 
 #. This is a reference to an external file such as an image or video. When
 #. the file changes, the md5 hash will change to let you know you need to
@@ -9540,7 +9638,7 @@ msgstr "Demostraciones de la plataforma en C++"
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
 #: C/dialog.c.page:24(media) C/dialog.js.page:21(media)
-#: C/dialog.py.page:22(media) C/dialog.vala.page:21(media)
+#: C/dialog.py.page:23(media) C/dialog.vala.page:21(media)
 msgctxt "_"
 msgid "external ref='media/dialog.png' md5='c90a33386a600e892fe623d4072c8c38'"
 msgstr "external ref='media/dialog.png' md5='c90a33386a600e892fe623d4072c8c38'"
@@ -9551,12 +9649,12 @@ msgid "Dialog (C)"
 msgstr "Diálogo (C)"
 
 #: C/dialog.c.page:19(info/desc) C/dialog.js.page:17(info/desc)
-#: C/dialog.py.page:18(info/desc) C/dialog.vala.page:17(info/desc)
+#: C/dialog.py.page:19(info/desc) C/dialog.vala.page:17(info/desc)
 msgid "A popup window"
 msgstr "Una ventana emergente"
 
 #: C/dialog.c.page:22(page/title) C/dialog.js.page:20(page/title)
-#: C/dialog.py.page:21(page/title) C/dialog.vala.page:20(page/title)
+#: C/dialog.py.page:22(page/title) C/dialog.vala.page:20(page/title)
 msgid "Dialog"
 msgstr "Diálogo"
 
@@ -9995,13 +10093,13 @@ msgctxt "text"
 msgid "Dialog (Python)"
 msgstr "Diálogo (Python)"
 
-#: C/dialog.py.page:23(page/p)
+#: C/dialog.py.page:24(page/p)
 msgid "A dialog with the response signal connected to a callback function."
 msgstr ""
 "Un diálogo con la señal de respuesta conectada a una función de retorno de "
 "llamada."
 
-#: C/dialog.py.page:30(section/code)
+#: C/dialog.py.page:31(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -10122,11 +10220,19 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/dialog.py.page:35(section/title)
+#: C/dialog.py.page:36(section/title)
 msgid "Useful methods for a Dialog widget"
 msgstr "Métodos útiles para un widget «Dialog»"
 
-#: C/dialog.py.page:38(item/p)
+#: C/dialog.py.page:37(section/p)
+msgid ""
+"In line 16 the signal <code>\"clicked\"</code> is connected to the callback "
+"function <code>on_button_click()</code> using <code><var>widget</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+
+#: C/dialog.py.page:39(item/p)
 msgid ""
 "Instead of <code>set_modal(True)</code> we could have <code>set_modal(False)"
 "</code> followed by <code>set_destroy_with_parent(True)</code> that would "
@@ -10136,23 +10242,23 @@ msgstr ""
 "(False)</code> seguido de <code>set_destroy_with_parent(True)</code> que "
 "destruiría la ventana de diálogo si se cerrara la ventana principal."
 
-#: C/dialog.py.page:39(item/p)
+#: C/dialog.py.page:40(item/p)
 msgid ""
 "<code>add_button(button_text=\"The Answer\", response_id=42)</code>, where "
 "<code>42</code> is any integer, is an alternative to <code>add_button"
 "(button_text=\"text\", response_id=Gtk.ResponseType.RESPONSE)</code>, where "
 "<code>RESPONSE</code> could be one of <code>OK, CANCEL, CLOSE, YES, NO, "
-"APPLY, HELP</code>, which in turn correspond to the integers <code>-5, "
-"-6,..., -11</code>."
+"APPLY, HELP</code>, which in turn correspond to the integers <code>-5, -"
+"6,..., -11</code>."
 msgstr ""
 "<code>add_button(button_text=\"La respuesta\", response_id=42)</code>, donde "
 "<code>42</code> es cualquier entero, es una alternativa a <code>add_button"
 "(button_text=\"texto\", response_id=Gtk.ResponseType.RESPUESTA)</code>, "
 "donde <code>RESPUESTA</code> podría ser <code>OK, CANCEL, CLOSE, YES, NO, "
-"APPLY, HELP</code>, que a su vez corresponden a los enteros <code>-5, "
-"-6,..., -11</code>."
+"APPLY, HELP</code>, que a su vez corresponden a los enteros <code>-5, -"
+"6,..., -11</code>."
 
-#: C/dialog.py.page:49(item/p) C/messagedialog.py.page:59(item/p)
+#: C/dialog.py.page:50(item/p) C/messagedialog.py.page:59(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkDialog.html";
 "\">GtkDialog</link>"
@@ -10388,10 +10494,9 @@ msgstr ""
 "Si quiere <link href=\"https://live.gnome.org/DocumentationProject/Tasks/";
 "DeveloperDocs\">contribuir al desarrollo de los <app>Tutoriales del "
 "desarrollador de GNOME</app></link>, puede ponerse en contacto con los "
-"desarrolladores usando <link href=\"https://cbe005.chat.mibbit.com/?url=irc";
-"%3A%2F%2Firc.gnome.org%2Fdocs\">irc</link>, o mediante la <link href="
-"\"http://mail.gnome.org/mailman/listinfo/gnome-doc-devel-list\";>lista "
-"decorreo</link>."
+"desarrolladores usando <link href=\"https://cbe005.chat.mibbit.com/?url=irc%";
+"3A%2F%2Firc.gnome.org%2Fdocs\">irc</link>, o mediante la <link href=\"http://";
+"mail.gnome.org/mailman/listinfo/gnome-doc-devel-list\">lista decorreo</link>."
 
 #. This is a reference to an external file such as an image or video. When
 #. the file changes, the md5 hash will change to let you know you need to
@@ -10413,7 +10518,7 @@ msgstr ""
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
 #: C/entry.c.page:22(media) C/entry.js.page:21(media)
-#: C/entry.py.page:26(media) C/entry.vala.page:21(media)
+#: C/entry.py.page:28(media) C/entry.vala.page:21(media)
 msgctxt "_"
 msgid "external ref='media/entry.png' md5='8a828cffdcbaa4bad83342e109f28cc8'"
 msgstr "external ref='media/entry.png' md5='8a828cffdcbaa4bad83342e109f28cc8'"
@@ -10423,13 +10528,13 @@ msgctxt "text"
 msgid "Entry (C)"
 msgstr "Entry (C)"
 
-#: C/entry.c.page:17(info/desc) C/entry.py.page:22(info/desc)
+#: C/entry.c.page:17(info/desc) C/entry.py.page:24(info/desc)
 #: C/entry.vala.page:17(info/desc)
 msgid "A single line text entry field"
 msgstr "Un campo de entrada de texto de una sola línea"
 
 #: C/entry.c.page:20(page/title) C/entry.js.page:20(page/title)
-#: C/entry.py.page:25(page/title) C/entry.vala.page:20(page/title)
+#: C/entry.py.page:27(page/title) C/entry.vala.page:20(page/title)
 msgid "Entry"
 msgstr "Entry"
 
@@ -10765,20 +10870,20 @@ msgctxt "text"
 msgid "Entry (Python)"
 msgstr "Entry (Python)"
 
-#: C/entry.py.page:18(credit/name) C/label.py.page:18(credit/name)
-#: C/model-view-controller.py.page:14(credit/name)
-#: C/properties.py.page:14(credit/name)
-#: C/signals-callbacks.py.page:14(credit/name)
-#: C/strings.py.page:14(credit/name) C/textview.py.page:14(credit/name)
-#: C/toolbar_builder.py.page:26(credit/name)
+#: C/entry.py.page:20(credit/name) C/label.py.page:20(credit/name)
+#: C/model-view-controller.py.page:15(credit/name)
+#: C/properties.py.page:15(credit/name)
+#: C/signals-callbacks.py.page:15(credit/name)
+#: C/strings.py.page:15(credit/name) C/textview.py.page:15(credit/name)
+#: C/toolbar_builder.py.page:27(credit/name)
 msgid "Sebastian Pölsterl"
 msgstr "Sebastian Pölsterl"
 
-#: C/entry.py.page:27(page/p)
+#: C/entry.py.page:29(page/p)
 msgid "This application greets you in the terminal with the name you provide."
 msgstr "Esta aplicación le saluda en la terminal con el nombre que le indique."
 
-#: C/entry.py.page:33(section/code)
+#: C/entry.py.page:35(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -10861,55 +10966,59 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/entry.py.page:37(section/title)
+#: C/entry.py.page:39(section/title)
 msgid "Useful methods for an Entry widget"
 msgstr "Métodos útiles para un widget «Entry»"
 
-#: C/entry.py.page:38(section/p)
-msgid ""
-"For an explanation of signals and callback functions, see <link xref="
-"\"signals-callbacks.py\">this page</link>. Some of the signals that a Gtk."
-"Entry widget can emit are: <code>\"activate\"</code> (emitted when the user "
-"activates the Entry key); <code>\"backspace\"</code> (emitted when the user "
-"activates the Backspace or Shift-Backspace keys); <code>\"copy-clipboard\"</"
-"code> (Ctrl-c and Ctrl-Insert); <code>\"paste-clipboard\"</code> (Ctrl-v and "
-"Shift-Insert); <code>\"delete-from-cursor\"</code> (Delete, for deleting a "
-"character; Ctrl-Delete, for deleting a word); <code>\"icon-press\"</code> "
-"(emitted when the user clicks an activable icon); <code>\"icon-release\"</"
-"code> (emitted on the button release from a mouse click over an activable "
-"icon); <code>\"insert-at-cursor\"</code> (emitted when the user initiates "
-"the insertion of a fixed string at the cursor); <code>\"move-cursor\"</code> "
-"(emitted when the user initiates a cursor movement); <code>\"populate-popup"
-"\"</code> (emitted before showing the context menu of the entry; it can be "
-"used to add items to it)."
-msgstr ""
-"Para una explicación de señales y funciones de retorno de llamada, consulte "
-"<link xref=\"signals-callbacks.py\">esta página</link>. Algunas de las "
-"señales que un widget «Gtk.Entry» puede emitir son: <code>«activate»</code> "
-"(cuando el usuario pulsa la tecla «Intro»); <code>«backspace»</code> (cuando "
-"el usuario pulsa las teclas «Retroceso» o «Mayús-Retroceso»); <code>«copy-"
-"clipboard»</code> («Ctrl-C» y «Ctrl-Insert»); <code>«paste-clipboard»</code> "
-"(«Ctrl-V» o «Mayús-Insert»); <code>«delete-from-cursor»</code> («Suprimir», "
-"para borrar un carácter; «Ctrl-Suprimir», para borrar una palabra); "
-"<code>«icon-press»</code> (cuando el usuario pulsa un icono activable); "
-"<code>«icon-release»</code> (cuando el botón del ratón se suelta sobre un "
-"icono activable); <code>«insert-at-cursor»</code> (cuando el usuario inicia "
-"la inserción de una cadena fija en el cursor); <code>«move-cursor»</code> "
-"(cuando el usuario inicia un movimiento del cursor); <code>«populate-popup»</"
-"code> (antes de mostrar el menú contextual de una entrada; puede usarse para "
-"añadirle elementos)."
-
-#: C/entry.py.page:40(item/p)
+#: C/entry.py.page:40(section/p)
+msgid ""
+"In line 14 the signal <code>\"activate\"</code> is connected to the callback "
+"function <code>cb_activate()</code> using <code><var>widget</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation. Some of the "
+"signals that a Gtk.Entry widget can emit are: <code>\"activate\"</code> "
+"(emitted when the user activates the Entry key); <code>\"backspace\"</code> "
+"(emitted when the user activates the Backspace or Shift-Backspace keys); "
+"<code>\"copy-clipboard\"</code> (Ctrl-c and Ctrl-Insert); <code>\"paste-"
+"clipboard\"</code> (Ctrl-v and Shift-Insert); <code>\"delete-from-cursor\"</"
+"code> (Delete, for deleting a character; Ctrl-Delete, for deleting a word); "
+"<code>\"icon-press\"</code> (emitted when the user clicks an activable "
+"icon); <code>\"icon-release\"</code> (emitted on the button release from a "
+"mouse click over an activable icon); <code>\"insert-at-cursor\"</code> "
+"(emitted when the user initiates the insertion of a fixed string at the "
+"cursor); <code>\"move-cursor\"</code> (emitted when the user initiates a "
+"cursor movement); <code>\"populate-popup\"</code> (emitted before showing "
+"the context menu of the entry; it can be used to add items to it)."
+msgstr ""
+"En la línea 14 la señal <code>«activate»</code> se conecta a la función de "
+"retorno de llamada <code>cb_activate()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
+"detallada. Algunas de las señales que un widget «Gtk.Entry» puede emitir son: "
+"<code>«activate»</code> (cuando el usuario pulsa la tecla «Intro»); "
+"<code>«backspace»</code> (cuando el usuario pulsa las teclas «Retroceso» o "
+"«Mayús-Retroceso»); <code>«copy-clipboard»</code> («Ctrl-C» y «Ctrl-Insert»); "
+"<code>«paste-clipboard»</code> («Ctrl-V» o «Mayús-Insert»); <code>«delete-from-"
+"cursor»</code> («Suprimir», para borrar un carácter; «Ctrl-Suprimir», para "
+"borrar una palabra); <code>«icon-press»</code> (cuando el usuario pulsa un "
+"icono activable); <code>«icon-release»</code> (cuando el botón del ratón se "
+"suelta sobre un icono activable); <code>«insert-at-cursor»</code> (cuando el "
+"usuario inicia la inserción de una cadena fija en el cursor); <code>«move-"
+"cursor»</code> (cuando el usuario inicia un movimiento del cursor); "
+"<code>«populate-popup»</code> (antes de mostrar el menú contextual de una "
+"entrada; puede usarse para añadirle elementos)."
+
+#: C/entry.py.page:42(item/p)
 msgid ""
 "<code>get_buffer()</code> and <code>set_buffer(buffer)</code>, where "
 "<code>buffer</code> is a Gtk.EntryBuffer object, can be used to get and set "
 "the buffer for the entry."
 msgstr ""
 "<code>get_buffer()</code> y <code>set_buffer(búfer)</code> donde "
-"<code>búfer</code> es un objeto «Gtk.EntryBuffer», pueden usarse para "
-"obtener y establecer el búfer de la entrada."
+"<code>búfer</code> es un objeto «Gtk.EntryBuffer», pueden usarse para obtener "
+"y establecer el búfer de la entrada."
 
-#: C/entry.py.page:41(item/p)
+#: C/entry.py.page:43(item/p)
 msgid ""
 "<code>get_text()</code> and <code>set_text(\"some text\")</code> can be used "
 "to get and set the content for the entry."
@@ -10917,18 +11026,18 @@ msgstr ""
 "<code>get_text()</code> y <code>set_text(\"texto\")</code> pueden usarse "
 "para obtener y establecer el contenido de la entrada."
 
-#: C/entry.py.page:42(item/p)
+#: C/entry.py.page:44(item/p)
 msgid "<code>get_text_length()</code> is self-explanatory."
 msgstr "<code>get_text_length()</code> obtiene la longitud del texto."
 
-#: C/entry.py.page:43(item/p)
+#: C/entry.py.page:45(item/p)
 msgid ""
 "<code>get_text_area()</code> gets the area where the entry's text is drawn."
 msgstr ""
 "<code>get_text_area()</code> obtiene el área en la que se dibuja el texto de "
 "la entrada."
 
-#: C/entry.py.page:44(item/p)
+#: C/entry.py.page:46(item/p)
 msgid ""
 "If we set <code>set_visibility(False)</code> the characters in the entry are "
 "displayed as the invisible char. This is the best available in the current "
@@ -10942,7 +11051,7 @@ msgstr ""
 "(ch)</code>, donde <code>ch</code> es un carácter Unicode. El último método "
 "se revierte con <code>unset_invisbile_char()</code>."
 
-#: C/entry.py.page:45(item/p)
+#: C/entry.py.page:47(item/p)
 msgid ""
 "<code>set_max_length(int)</code>, where <code>int</code> is an integer, "
 "truncates every entry longer than <code>int</code> to have the desired "
@@ -10952,7 +11061,7 @@ msgstr ""
 "trunca todas las entradas más largas que <code>int</code> para tener la "
 "longitud máxima deseada."
 
-#: C/entry.py.page:46(item/p)
+#: C/entry.py.page:48(item/p)
 msgid ""
 "By default, if you press the Entry key the Gtk.Entry emits the signal <code>"
 "\"activate\"</code>. If you would like to activate the default widget for "
@@ -10964,13 +11073,13 @@ msgstr ""
 "predeterminado de la ventana (establecido usando <code>set_default(widget)</"
 "code> en la ventana), entonces use <code>set_activates_default(True)</code>."
 
-#: C/entry.py.page:47(item/p)
+#: C/entry.py.page:49(item/p)
 msgid "To set a frame around the entry: <code>set_has_frame(True)</code>."
 msgstr ""
 "Para poner un marco alrededor de la entrada: <code>set_has_frame(True)</"
 "code>."
 
-#: C/entry.py.page:48(item/p)
+#: C/entry.py.page:50(item/p)
 msgid ""
 "<code>set_placeholder_text(\"some text\")</code> sets the text to be "
 "displayed in the entry when it is empty and unfocused."
@@ -10978,7 +11087,7 @@ msgstr ""
 "<code>set_placeholder_text(\"texto\")</code> establece el texto que mostrar "
 "en la entrada cuando esté vacía y sin foco."
 
-#: C/entry.py.page:49(item/p)
+#: C/entry.py.page:51(item/p)
 msgid ""
 "<code>set_overwrite_mode(True)</code> and <code>set_overwrite_mode(False)</"
 "code> are self-explanatory."
@@ -10986,7 +11095,7 @@ msgstr ""
 "<code>set_overwrite_mode(True)</code> y <code>set_overwrite_mode(False)</"
 "code> activa o desactiva el modo de sobreescritura."
 
-#: C/entry.py.page:50(item/p)
+#: C/entry.py.page:52(item/p)
 msgid ""
 "If we have <code>set_editable(False)</code> the user cannot edit the text in "
 "the widget."
@@ -10994,7 +11103,7 @@ msgstr ""
 "Si tiene <code>set_editable(False)</code> el usuario no puede editar el "
 "texto en el widget."
 
-#: C/entry.py.page:51(item/p)
+#: C/entry.py.page:53(item/p)
 msgid ""
 "<code>set_completion(completion)</code>, where <code>completion</code> is a "
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkEntryCompletion.html";
@@ -11006,7 +11115,7 @@ msgstr ""
 "\"><code>Gtk.EntryCompletion</code></link>, configura el completado; o lo "
 "desactiva si <code>completado</code> es <code>None</code>."
 
-#: C/entry.py.page:52(item/p)
+#: C/entry.py.page:54(item/p)
 msgid ""
 "An Entry widget can display progress or activity information behind the "
 "text. We use <code>set_progress_fraction(fraction)</code>, where "
@@ -11034,7 +11143,7 @@ msgstr ""
 "(la cantidad de movimiento por pulso la determina, como se dijo "
 "anteriormente, <code>set_progress_pulse_step()</code>)."
 
-#: C/entry.py.page:53(item/p)
+#: C/entry.py.page:55(item/p)
 msgid ""
 "An Entry widget can also show icons. These icons can be activatable by "
 "clicking, can be set up as drag source and can have tooltips. To add an "
@@ -11060,7 +11169,7 @@ msgstr ""
 "(\"texto del consejo\")</code> o <code>set_icon_tooltip_markup(\"texto del "
 "consejo en el lenguaje de marcado Pango\")</code>."
 
-#: C/entry.py.page:61(item/p)
+#: C/entry.py.page:63(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkEntry.html";
 "\">GtkEntry</link>"
@@ -11192,7 +11301,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/filechooserdialog.py.page:24(media)
+#: C/filechooserdialog.py.page:25(media)
 msgctxt "_"
 msgid ""
 "external ref='media/filechooserdialog_save.png' "
@@ -11205,7 +11314,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/filechooserdialog.py.page:26(media)
+#: C/filechooserdialog.py.page:27(media)
 msgctxt "_"
 msgid ""
 "external ref='media/filechooserdialog_menu.png' "
@@ -11219,16 +11328,16 @@ msgctxt "text"
 msgid "FileChooserDialog (Python)"
 msgstr "FileChooserDialog (Python)"
 
-#: C/filechooserdialog.py.page:20(info/desc)
+#: C/filechooserdialog.py.page:21(info/desc)
 msgid "A dialog suitable for \"Open\" and \"Save\" commands"
 msgstr "Un diálogo adecuado para comandos «Abrir» y «Guardar»"
 
-#: C/filechooserdialog.py.page:23(page/title)
+#: C/filechooserdialog.py.page:24(page/title)
 #: C/filechooserdialog.vala.page:23(page/title)
 msgid "FileChooserDialog"
 msgstr "FileChooserDialog"
 
-#: C/filechooserdialog.py.page:25(page/p)
+#: C/filechooserdialog.py.page:26(page/p)
 msgid ""
 "This FileChooserDialog saves a text document, which can be opened or written "
 "from scratch in a TextView (see below)."
@@ -11236,27 +11345,27 @@ msgstr ""
 "Este «FileChooserDialog» guarda un documento de texto, que puede abrirse o "
 "escribirse desde cero en un «TextView» (vea a continuación)."
 
-#: C/filechooserdialog.py.page:27(page/p)
+#: C/filechooserdialog.py.page:28(page/p)
 msgid "It is also possible to call a FileChooserDialog to open a new document."
 msgstr ""
 "También es posible llamar a un «FileChooserDialog» para abrir un documento "
 "nuevo."
 
-#: C/filechooserdialog.py.page:32(section/title)
+#: C/filechooserdialog.py.page:33(section/title)
 msgid "Steps to recreate the example"
 msgstr "Pasos para recrear el ejemplo"
 
-#: C/filechooserdialog.py.page:34(item/p)
+#: C/filechooserdialog.py.page:35(item/p)
 msgid ""
 "Create a file .ui to describe an app-menu with items \"New\", \"Open\", "
 "\"Save\", \"Save as\", and \"Quit\". This can be done with Glade or in a "
 "text editor. See <link xref=\"#xml\"/>"
 msgstr ""
 "Cree un archivo «.ui» para describir un menú de aplicación con elementos "
-"«New», «Open», «Save», «Save as», y «Quit». Esto puede hacerse con Glade o "
-"en un editor de texto. Consulte <link xref=\"#xml\"/>"
+"«New», «Open», «Save», «Save as», y «Quit». Esto puede hacerse con Glade o en un "
+"editor de texto. Consulte <link xref=\"#xml\"/>"
 
-#: C/filechooserdialog.py.page:35(item/p)
+#: C/filechooserdialog.py.page:36(item/p)
 msgid ""
 "Create a Python program for a Gtk.TextView with a Gtk.Buffer <code>self."
 "buffer</code>, and a <code>self.file</code> which will be a Gio.File and we "
@@ -11266,7 +11375,7 @@ msgstr ""
 "<code>self.buffer</code>, y un <code>self.file</code> que será un «Gio.File» "
 "establecido inicialmente a <code>None</code>."
 
-#: C/filechooserdialog.py.page:36(item/p)
+#: C/filechooserdialog.py.page:37(item/p)
 msgid ""
 "In this program, create also the actions corresponding to the items in the "
 "app-menu, connect them to callback functions, and import the menu in the "
@@ -11276,35 +11385,38 @@ msgstr ""
 "en el menú de aplicación, conéctelos a funciones de retorno de llamada, e "
 "importe el menú en el método <code>do_startup()</code> con un «Gtk.Builder»."
 
-#: C/filechooserdialog.py.page:37(item/p)
+#: C/filechooserdialog.py.page:38(item/p)
 msgid ""
 "\"New\" and \"Quit\" actions and callback functions are quite "
-"straightforward, see <link xref=\"#code\"/>."
+"straightforward, see <link xref=\"#code\"/>. See <link xref=\"signals-"
+"callbacks.py\"/> for a more detailed explanation of signals and callback "
+"functions."
 msgstr ""
 "Las acciones y funciones de retorno de llamada «New» y «Quit» son bastante "
-"directas, consulte <link xref=\"#code\"/>."
+"directas, consulte <link xref=\"#code\"/>. Consulte la <link xref=\"signals-"
+"callbacks.py\"/> para una explicación más detallada de señales y funciones "
+"de retorno de llamada."
 
-#: C/filechooserdialog.py.page:38(item/p)
+#: C/filechooserdialog.py.page:39(item/p)
 msgid ""
 "\"Open\" callback should create and open a Gtk.FileChooserDialog for \"Open"
 "\", connected with another callback function for each of the two \"Open\" "
 "and \"Cancel\" buttons of the FileChooserDialog."
 msgstr ""
-"La devolución de llamada «Open» debe crear y abrir un «Gtk."
-"FileChooserDialog» para «Abrir», conectado con otra función de retorno de "
-"llamada por cada uno de los dos botones «Open» y «Cancel» del "
-"«FileChooserDialog»."
+"La devolución de llamada «Open» debe crear y abrir un «Gtk.FileChooserDialog» "
+"para «Abrir», conectado con otra función de retorno de llamada por cada uno "
+"de los dos botones «Open» y «Cancel» del «FileChooserDialog»."
 
-#: C/filechooserdialog.py.page:39(item/p)
+#: C/filechooserdialog.py.page:40(item/p)
 msgid ""
 "\"Save as\" works basically as \"Open\", but the callback function of the "
 "\"Save\" button depends on a more complex method <code>save_to_file()</code>."
 msgstr ""
 "«Save as» funciona básicamente como «Open», pero la función de retorno de "
-"llamada del botón «Save» depende en un método más complejo, "
-"<code>save_to_file()</code>."
+"llamada del botón «Save» depende en un método más complejo, <code>save_to_file"
+"()</code>."
 
-#: C/filechooserdialog.py.page:40(item/p)
+#: C/filechooserdialog.py.page:41(item/p)
 msgid ""
 "\"Save\" can be reduced to the case where the file is <code>None</code>, "
 "that is the case where <code>self.file</code> is a new file, which in turn "
@@ -11316,7 +11428,7 @@ msgstr ""
 "su vez es el caso de «Save as»; y al caso en el que el archivo no es "
 "<code>None</code>, que a su vez se reduce a <code>save_to_file()</code>."
 
-#: C/filechooserdialog.py.page:41(item/p)
+#: C/filechooserdialog.py.page:42(item/p)
 msgid ""
 "Finally, the method <code>save_to_file()</code>: see <link xref=\"#code\"/>, "
 "lines 146 - 175."
@@ -11324,11 +11436,11 @@ msgstr ""
 "Finalmente, el método <code>save_to_file()</code>: consulte <link xref="
 "\"#code\"/>, líneas 146 - 175."
 
-#: C/filechooserdialog.py.page:46(section/title)
+#: C/filechooserdialog.py.page:47(section/title)
 msgid "XML file which creates the app-menu"
 msgstr "Archivo XML que crea el menú de aplicación"
 
-#: C/filechooserdialog.py.page:47(section/code)
+#: C/filechooserdialog.py.page:48(section/code)
 #: C/filechooserdialog.vala.page:29(section/code)
 #, no-wrap
 msgid ""
@@ -11396,7 +11508,7 @@ msgstr ""
 "  &lt;/menu&gt;\n"
 "&lt;/interface&gt;\n"
 
-#: C/filechooserdialog.py.page:52(section/code)
+#: C/filechooserdialog.py.page:53(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -11819,11 +11931,11 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/filechooserdialog.py.page:56(section/title)
+#: C/filechooserdialog.py.page:57(section/title)
 msgid "Useful methods for a FileChooserDialog"
 msgstr "Métodos útiles para un «FileChooserDialog»"
 
-#: C/filechooserdialog.py.page:57(section/p)
+#: C/filechooserdialog.py.page:58(section/p)
 msgid ""
 "Note that the action of the FileChooserDialog can be one of the following: "
 "<code>Gtk.FileChooserAction.OPEN</code> (the file chooser will only let the "
@@ -11843,11 +11955,11 @@ msgstr ""
 "existente), o  <code>Gtk.FileChooserAction.CREATE_FOLDER</code> (se le "
 "permitirá al usuario elegir una carpeta nueva o existente)."
 
-#: C/filechooserdialog.py.page:58(section/p)
+#: C/filechooserdialog.py.page:59(section/p)
 msgid "Besides the methods used in the <link xref=\"#code\"/>, we have:"
 msgstr "Además de los métodos usados en el <link xref=\"#code\"/>, existen:"
 
-#: C/filechooserdialog.py.page:60(item/p)
+#: C/filechooserdialog.py.page:61(item/p)
 msgid ""
 "<code>set_show_hidden(True)</code> is used to display hidden files and "
 "folders."
@@ -11855,7 +11967,7 @@ msgstr ""
 "<code>set_show_hidden(True)</code> se usa para mostrar carpetas y archivos "
 "ocultos."
 
-#: C/filechooserdialog.py.page:61(item/p)
+#: C/filechooserdialog.py.page:62(item/p)
 msgid ""
 "<code>set_select_multiple(True)</code> sets that multiple files can be "
 "selected. This is only relevant if the mode is <code>Gtk.FileChooserAction."
@@ -11866,7 +11978,7 @@ msgstr ""
 "FileChooserAction.OPEN</code> o <code>Gtk.FileChooserAction.SELECT_FOLDER</"
 "code>."
 
-#: C/filechooserdialog.py.page:62(item/p)
+#: C/filechooserdialog.py.page:63(item/p)
 msgid ""
 "In a \"Save as\" dialog, <code>set_current_name(current_name)</code> sets "
 "<code>current_name</code> in the file selector, as if entered by the user; "
@@ -11879,7 +11991,7 @@ msgstr ""
 "como <code>Sin nombre.txt</code>. Este método no debe usarse excepto en un "
 "diálogo «Save as»."
 
-#: C/filechooserdialog.py.page:63(item/p)
+#: C/filechooserdialog.py.page:64(item/p)
 msgid ""
 "The default current folder is \"recent items\". To set another folder use "
 "<code>set_current_folder_uri(uri)</code>; but note you should use this "
@@ -11892,7 +12004,7 @@ msgstr ""
 "una carpeta específica sólo cuando está ejecutando un comando «Save as» y ya "
 "tenga un archivo guardado en algún lado."
 
-#: C/filechooserdialog.py.page:71(item/p)
+#: C/filechooserdialog.py.page:72(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkFileChooserDialog.html";
 "\">GtkFileChooserDialog</link>"
@@ -11900,7 +12012,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkFileChooserDialog.html";
 "\">GtkFileChooserDialog</link>"
 
-#: C/filechooserdialog.py.page:72(item/p)
+#: C/filechooserdialog.py.page:73(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkFileChooser.html";
 "\">GtkFileChooser</link>"
@@ -11908,8 +12020,9 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkFileChooser.html";
 "\">GtkFileChooser</link>"
 
-#: C/filechooserdialog.py.page:73(item/p) C/image.c.page:33(item/p)
-#: C/label.c.page:37(item/p)
+#: C/filechooserdialog.py.page:74(item/p) C/image.c.page:33(item/p)
+#: C/label.c.page:37(item/p) C/menubar.c.page:37(item/p)
+#: C/scrolledwindow.c.page:34(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkWindow.html";
 "\">GtkWindow</link>"
@@ -11917,7 +12030,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkWindow.html";
 "\">GtkWindow</link>"
 
-#: C/filechooserdialog.py.page:74(item/p) C/textview.c.page:38(item/p)
+#: C/filechooserdialog.py.page:75(item/p) C/textview.c.page:38(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkTextView.html";
 "\">GtkTextView</link>"
@@ -11925,7 +12038,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkTextView.html";
 "\">GtkTextView</link>"
 
-#: C/filechooserdialog.py.page:75(item/p) C/textview.c.page:37(item/p)
+#: C/filechooserdialog.py.page:76(item/p) C/textview.c.page:37(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkTextBuffer.html";
 "\">GtkTextBuffer</link>"
@@ -11933,7 +12046,8 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkTextBuffer.html";
 "\">GtkTextBuffer</link>"
 
-#: C/filechooserdialog.py.page:76(item/p) C/textview.c.page:39(item/p)
+#: C/filechooserdialog.py.page:77(item/p) C/scrolledwindow.c.page:35(item/p)
+#: C/textview.c.page:39(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkScrolledWindow.html";
 "\">GtkScrolledWindow</link>"
@@ -11941,13 +12055,13 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkScrolledWindow.html";
 "\">GtkScrolledWindow</link>"
 
-#: C/filechooserdialog.py.page:77(item/p)
+#: C/filechooserdialog.py.page:78(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gio/stable/GFile.html\";>GFile</link>"
 msgstr ""
 "<link href=\"http://developer.gnome.org/gio/stable/GFile.html\";>GFile</link>"
 
-#: C/filechooserdialog.py.page:79(item/p)
+#: C/filechooserdialog.py.page:80(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkBuilder.html";
 "\">GtkBuilder</link>"
@@ -11980,9 +12094,9 @@ msgstr ""
 "Este ejemplo demuestra cómo usar el «FileChooserDialog». Está incorporado en "
 "una aplicación de edición de texto muy simple. Todas las <link xref="
 "\"menubar.vala#win-app\">acciones</link>, incluyendo los comandos «open», "
-"«save» y «save-as» pueden encontrarse en el <link xref=\"gmenu.vala\">menú "
-"de la aplicación</link>. Aquí, el menú se crea usando un archivo de IU XML, "
-"que a su vez se importa a la aplicación usando «Gtk.Builder»."
+"«save» y «save-as» pueden encontrarse en el <link xref=\"gmenu.vala\">menú de "
+"la aplicación</link>. Aquí, el menú se crea usando un archivo de IU XML, que "
+"a su vez se importa a la aplicación usando «Gtk.Builder»."
 
 #: C/filechooserdialog.vala.page:28(section/title)
 msgid "XML UI file which creates the app-menu"
@@ -12430,7 +12544,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/fontchooserwidget.py.page:23(media)
+#: C/fontchooserwidget.py.page:24(media)
 msgctxt "_"
 msgid ""
 "external ref='media/fontchooserwidget.png' "
@@ -12444,19 +12558,19 @@ msgctxt "text"
 msgid "FontChooserWidget (Python)"
 msgstr "FontChooserWidget (Python)"
 
-#: C/fontchooserwidget.py.page:18(info/desc)
+#: C/fontchooserwidget.py.page:19(info/desc)
 msgid "A widget to choose a font"
 msgstr "Un widget para elegir la tipografía"
 
-#: C/fontchooserwidget.py.page:21(page/title)
+#: C/fontchooserwidget.py.page:22(page/title)
 msgid "FontChooserWidget"
 msgstr "FontChooserWidget"
 
-#: C/fontchooserwidget.py.page:24(page/p)
+#: C/fontchooserwidget.py.page:25(page/p)
 msgid "A FontChooserWidget with a callback function."
 msgstr "Un FontChooserWidget con una función de retorno de llamada."
 
-#: C/fontchooserwidget.py.page:30(section/code)
+#: C/fontchooserwidget.py.page:31(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -12539,11 +12653,20 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/fontchooserwidget.py.page:33(section/title)
+#: C/fontchooserwidget.py.page:34(section/title)
 msgid "Useful methods for a FontChooserWidget"
 msgstr "Métodos útiles para un «FontChooserWidget»"
 
-#: C/fontchooserwidget.py.page:36(item/p)
+#: C/fontchooserwidget.py.page:35(section/p)
+msgid ""
+"In line 16 the <code>\"notify::font\"</code> signal from the widget is "
+"connected to the callback function <code>font_cb()</code> using "
+"<code><var>widget</var>.connect(<var>signal</var>, <var>callback function</"
+"var>)</code>. See <link xref=\"signals-callbacks.py\"/> for a more detailed "
+"explanation."
+msgstr ""
+
+#: C/fontchooserwidget.py.page:37(item/p)
 msgid ""
 "To set the font which is initially selected, use <code>set_font(font)</code> "
 "(where <code>font</code> is the font name) or <code>set_font_desc(font)</"
@@ -12554,7 +12677,7 @@ msgstr ""
 "tipografía) o <code>set_font_desc(tipografía)</code> (donde "
 "<code>tipografía</code> es la PangoFontDescription)."
 
-#: C/fontchooserwidget.py.page:37(item/p)
+#: C/fontchooserwidget.py.page:38(item/p)
 msgid ""
 "To get the selected font use <code>get_font()</code> or <code>get_font_desc()"
 "</code>."
@@ -12562,7 +12685,7 @@ msgstr ""
 "Para obtener la fuente seleccionada use <code>get_font()</code> o "
 "<code>get_font_desc()</code>."
 
-#: C/fontchooserwidget.py.page:38(item/p)
+#: C/fontchooserwidget.py.page:39(item/p)
 msgid ""
 "To change the text which is shown in the preview area, use "
 "<code>set_preview_text()</code>."
@@ -12570,7 +12693,7 @@ msgstr ""
 "Para cambiar el texto que se muestra en el área de previsualización, use "
 "<code>set_preview_text()</code>."
 
-#: C/fontchooserwidget.py.page:45(item/p)
+#: C/fontchooserwidget.py.page:46(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkFontChooserWidget.";
 "html\">GtkFontChooserWidget</link>"
@@ -12749,12 +12872,12 @@ msgid "A simple implementation of GMenuModel"
 msgstr "Una implementación sencilla del GMenuModel"
 
 #: C/gmenu.c.page:20(page/title) C/gmenu.js.page:20(page/title)
-#: C/gmenu.py.page:26(page/title) C/gmenu.vala.page:26(page/title)
+#: C/gmenu.py.page:28(page/title) C/gmenu.vala.page:26(page/title)
 msgid "GMenu"
 msgstr "GMenu"
 
 #: C/gmenu.c.page:22(page/p) C/gmenu.js.page:22(page/p)
-#: C/gmenu.py.page:28(page/p) C/gmenu.vala.page:34(page/p)
+#: C/gmenu.py.page:30(page/p) C/gmenu.vala.page:34(page/p)
 msgid "A GtkApplication with a simple GMenu and SimpleActions"
 msgstr "Una GtkApplication con un GMenu sencillo y SimpleActions"
 
@@ -13102,7 +13225,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/gmenu.py.page:27(media)
+#: C/gmenu.py.page:29(media)
 msgctxt "_"
 msgid ""
 "external ref='media/gmenu.py.png' md5='52c68b34d5d566f37e9f803dedb6353a'"
@@ -13114,11 +13237,11 @@ msgctxt "text"
 msgid "GMenu (Python)"
 msgstr "GMenu (Python)"
 
-#: C/gmenu.py.page:23(info/desc)
+#: C/gmenu.py.page:25(info/desc)
 msgid "A simple implementation of GMenu"
 msgstr "Una implementación sencilla de GMenu"
 
-#: C/gmenu.py.page:35(section/code)
+#: C/gmenu.py.page:36(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -13249,15 +13372,24 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/gmenu.py.page:40(section/title)
+#: C/gmenu.py.page:41(section/title)
 msgid "Useful methods for a GSimpleAction and a GMenu"
 msgstr "Métodos útiles para una «GSimpleAction» y un GMenu"
 
-#: C/gmenu.py.page:42(section/p)
+#: C/gmenu.py.page:43(section/p)
+msgid ""
+"In line 33 the signal <code>\"activate\"</code> from the action "
+"<code>new_action</code> (not the menu!) is connected to the callback "
+"function <code>new_cb()</code> using <code><var>action</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+
+#: C/gmenu.py.page:45(section/p)
 msgid "Useful methods for a GSimpleAction:"
 msgstr "Métodos útiles para una «GSimpleAction»:"
 
-#: C/gmenu.py.page:44(item/p)
+#: C/gmenu.py.page:47(item/p)
 msgid ""
 "To create a new action that is <em>stateless</em>, that is, an action that "
 "do not retain or depend on a state given by the action itself, use"
@@ -13265,7 +13397,7 @@ msgstr ""
 "Para crear una acción nueva que <em>no dependa del estado</em>, es decir, "
 "una acción que no retenga o dependa de un estado dado a la acción en sí, use"
 
-#: C/gmenu.py.page:45(item/code)
+#: C/gmenu.py.page:48(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -13274,7 +13406,7 @@ msgstr ""
 "\n"
 "action = Gio.SimpleAction.new(\"name\", parameter_type)"
 
-#: C/gmenu.py.page:47(item/p)
+#: C/gmenu.py.page:50(item/p)
 msgid ""
 "where <code>\"name\"</code> is the name of the action and "
 "<code>parameter_type</code> is the type of the parameters that the action "
@@ -13292,7 +13424,7 @@ msgstr ""
 "gnome.org/glib/unstable/glib-GVariantType.html\">aquí</link>. Para crear una "
 "acción nueva <em>con estado</em>, use"
 
-#: C/gmenu.py.page:48(item/code)
+#: C/gmenu.py.page:51(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -13301,7 +13433,7 @@ msgstr ""
 "\n"
 "action = Gio.SimpleAction.new_stateful(\"name\", parameter_type, initial_state)"
 
-#: C/gmenu.py.page:50(item/p)
+#: C/gmenu.py.page:53(item/p)
 msgid ""
 "where <code>initial_state</code> is defined as a GVariant - for instance "
 "<code>Glib.Variant.new_string('start')</code>; for a list of possiblities "
@@ -13313,7 +13445,7 @@ msgstr ""
 "posibilidades consulte <link href=\"http://developer.gnome.org/glib/unstable/";
 "glib-GVariant.html\">aquí</link>."
 
-#: C/gmenu.py.page:51(item/p)
+#: C/gmenu.py.page:54(item/p)
 msgid ""
 "<code>set_enabled(True)</code> sets the action as enabled; an action must be "
 "enabled in order to be activated or in order to have its state changed from "
@@ -13325,7 +13457,7 @@ msgstr ""
 "cambien su estado. Sólo el que implementa la acción debe llamarlo. Los "
 "usuarios de la acción no deben intentar modificar su opción «enabled»."
 
-#: C/gmenu.py.page:52(item/p)
+#: C/gmenu.py.page:55(item/p)
 msgid ""
 "<code>set_state(state)</code>, where <code>state</code> is a GVariant, sets "
 "the state of the action, updating the 'state' property to the given value. "
@@ -13339,11 +13471,11 @@ msgstr ""
 "la acción, en cambio, deben llamar a <code>change_state(estado)</code> "
 "(donde <code>estado</code> es como se mencionó) para solicitar el cambio."
 
-#: C/gmenu.py.page:55(section/p)
+#: C/gmenu.py.page:58(section/p)
 msgid "Useful methods for a GMenu:"
 msgstr "Métodos útiles para un GMenu:"
 
-#: C/gmenu.py.page:57(item/p)
+#: C/gmenu.py.page:60(item/p)
 msgid ""
 "To insert an item in the menu in position <code>position</code>, use "
 "<code>insert(position, label, detailed_action)</code>, where <code>label</"
@@ -13360,7 +13492,7 @@ msgstr ""
 "una discusión más detallada de esto en la <link xref=\"menubar.py#win-app\"/"
 ">."
 
-#: C/gmenu.py.page:58(item/p)
+#: C/gmenu.py.page:61(item/p)
 msgid ""
 "To append or prepend an item in the menu use respectively <code>append"
 "(label, detailed_action)</code> and <code>prepend(label, detailed_action)</"
@@ -13370,7 +13502,7 @@ msgstr ""
 "<code>append(etiqueta, acción_detallada)</code> y <code>prepend(etiqueta, "
 "acción_detallada)</code>."
 
-#: C/gmenu.py.page:59(item/p)
+#: C/gmenu.py.page:62(item/p)
 msgid ""
 "Another way of adding items to the menu is to create them as "
 "<code>GMenuItem</code>s and use <code>insert_item(position, item)</code>, "
@@ -13382,7 +13514,7 @@ msgstr ""
 "(elemento)</code>, o <code>prepend_item(elemento)</code>; por lo que por "
 "ejemplo se podría tener:"
 
-#: C/gmenu.py.page:60(item/code)
+#: C/gmenu.py.page:63(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -13393,7 +13525,7 @@ msgstr ""
 "about = Gio.MenuItem.new(\"About\", \"app.about\")\n"
 "menu.append_item(about)"
 
-#: C/gmenu.py.page:64(item/p)
+#: C/gmenu.py.page:67(item/p)
 msgid ""
 "We can also add a whole subsection in a menu using <code>insert_section"
 "(position, label, section)</code>, <code>append_section(label, section)</"
@@ -13406,7 +13538,7 @@ msgstr ""
 "(etiqueta, sección)</code>, donde <code>etiqueta</code> es el título de la "
 "subsección."
 
-#: C/gmenu.py.page:65(item/p)
+#: C/gmenu.py.page:68(item/p)
 msgid ""
 "To add a submenu that will expand and collapse, use <code>insert_submenu"
 "(position, label, section)</code>, <code>append_submenu(label, section)</"
@@ -13418,17 +13550,17 @@ msgstr ""
 "</code>, o <code>prepend_submenu(etiqueta, sección)</code>, donde "
 "<code>etiqueta</code> es el título de la subsección."
 
-#: C/gmenu.py.page:66(item/p)
+#: C/gmenu.py.page:69(item/p)
 msgid "To remove an item from the menu, use <code>remove(postion)</code>."
 msgstr "Para eliminar un elemento del menú, use <code>remove(posición)</code>."
 
-#: C/gmenu.py.page:67(item/p)
+#: C/gmenu.py.page:70(item/p)
 msgid "To set a label for the menu, use <code>set_label(label)</code>."
 msgstr ""
 "Para establecer una etiqueta para el menú, use <code>set_label(etiqueta)</"
 "code>."
 
-#: C/gmenu.py.page:78(item/p)
+#: C/gmenu.py.page:81(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/glib/unstable/glib-GVariantType.html";
 "\">GVariantType</link>"
@@ -13436,7 +13568,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/glib/unstable/glib-GVariantType.html";
 "\">GVariantType</link>"
 
-#: C/gmenu.py.page:79(item/p)
+#: C/gmenu.py.page:82(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/glib/unstable/glib-GVariant.html";
 "\">GVariant</link>"
@@ -13462,7 +13594,7 @@ msgstr "GMenu (Vala)"
 
 #: C/gmenu.vala.page:29(note/p)
 msgid ""
-"<em style=\"strong\">You need to be running Gtk+-3.4 or later for this to "
+"<em style=\"strong\">You need to be running GTK+-3.4 or later for this to "
 "work</em>"
 msgstr ""
 "<em style=\"strong\">Necesita ejecutar GTK+-3.4 o superior para que "
@@ -13475,8 +13607,8 @@ msgid ""
 "link> is fixed. Therefore, the problematic line has been commented out."
 msgstr ""
 "Este programa no compilará con la opción de «salir» conectada hasta que se "
-"resuelva el <link href=\"https://bugzilla.gnome.org/show_bug.cgi?";
-"id=674090\">error nº 674090</link>. Por lo tanto, esa línea se ha comentado"
+"resuelva el <link href=\"https://bugzilla.gnome.org/show_bug.cgi?id=674090";
+"\">error nº 674090</link>. Por lo tanto, esa línea se ha comentado"
 
 #: C/gmenu.vala.page:36(page/code)
 #, no-wrap
@@ -13658,12 +13790,12 @@ msgid "Grid (C)"
 msgstr "Grid (C)"
 
 #: C/grid.c.page:17(info/desc) C/grid.js.page:21(info/desc)
-#: C/grid.py.page:24(info/desc) C/grid.vala.page:19(info/desc)
+#: C/grid.py.page:25(info/desc) C/grid.vala.page:19(info/desc)
 msgid "Pack widgets in rows and columns"
 msgstr "Empaquetar widgets en filas y columnas"
 
 #: C/grid.c.page:20(page/title) C/grid.js.page:24(page/title)
-#: C/grid.py.page:27(page/title) C/tutorial.py.page:62(steps/title)
+#: C/grid.py.page:28(page/title)
 msgid "Grid"
 msgstr "Rejilla"
 
@@ -14004,7 +14136,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/grid.py.page:29(media)
+#: C/grid.py.page:30(media)
 msgctxt "_"
 msgid ""
 "external ref='media/grid_simple.png' md5='c806f2e69b30373d4d2e08b41d6cc1f6'"
@@ -14016,11 +14148,11 @@ msgctxt "text"
 msgid "Grid (Python)"
 msgstr "Grid (Python)"
 
-#: C/grid.py.page:30(page/p)
+#: C/grid.py.page:31(page/p)
 msgid "Some labels in a grid."
 msgstr "Algunas etiquetas en una rejilla."
 
-#: C/grid.py.page:36(section/code)
+#: C/grid.py.page:37(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -14105,11 +14237,11 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/grid.py.page:40(section/title)
+#: C/grid.py.page:41(section/title)
 msgid "Useful methods for a Grid widget"
 msgstr "Métodos útiles para un widget «Grid»"
 
-#: C/grid.py.page:43(item/p)
+#: C/grid.py.page:44(item/p)
 msgid ""
 "To attach a widget <code>child</code> in position <code>left, top</code> in "
 "a slot of given <code>width, height</code> use <code>attach(child, top, "
@@ -14127,7 +14259,7 @@ msgstr ""
 "<code>lado</code> puede ser <code>Gtk.PositionType.LEFT, Gtk.PositionType."
 "RIGHT, Gtk.PositionType.TOP, Gtk.PositionType.BOTTOM</code>."
 
-#: C/grid.py.page:44(item/p)
+#: C/grid.py.page:45(item/p)
 msgid ""
 "<code>insert_row(position)</code> and <code>insert_column(position)</code> "
 "do exactly what they say; children which are attached at or below this "
@@ -14150,7 +14282,7 @@ msgstr ""
 "BOTTOM</code>, se inserta una fila; si es <code>Gtk.PositionType.LEFT</code> "
 "o <code>Gtk.PositionType.RIGHT</code>, se inserta una columna."
 
-#: C/grid.py.page:45(item/p)
+#: C/grid.py.page:46(item/p)
 msgid ""
 "<code>set_row_homogeneous(True)</code> and <code>set_column_homogeneous(True)"
 "</code> ensure that (respectively) every row or every column has the same "
@@ -14160,24 +14292,20 @@ msgstr ""
 "code> se aseguran de que (respectivamente) cada fila o cada columna tengan "
 "la misma anchura o altura."
 
-#: C/grid.py.page:46(item/p)
+#: C/grid.py.page:47(item/p)
 msgid ""
 "<code>set_row_spacing(spacing)</code> and <code>set_column_spacing(spacing)</"
 "code> force a spacing between (respectively) rows or columns. The value of "
 "<code>spacing</code> can be between <code>0</code>, which is the default "
-"value, and <code>32767</code>"
+"value, and <code>32767</code>."
 msgstr ""
 "<code>set_row_spacing(espaciado)</code> y <code>set_column_spacing(espaciado)"
 "</code> fuerzan un espaciado entre (respectivamente) filas o columnas. El "
 "valor de <code>espaciado</code> puede estar entre <code>0</code>, que es el "
 "valor predeterminado, y <code>32767</code>."
 
-#: C/grid.py.page:42(section/list)
-msgid "<_:item-1/> <_:item-2/> <_:item-3/> <_:item-4/>."
-msgstr "<_:item-1/> <_:item-2/> <_:item-3/> <_:item-4/>."
-
-#: C/grid.py.page:57(item/p) C/label.py.page:88(item/p)
-#: C/separator.py.page:40(item/p) C/switch.py.page:49(item/p)
+#: C/grid.py.page:58(item/p) C/label.py.page:89(item/p)
+#: C/separator.py.page:41(item/p) C/switch.py.page:45(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkLabel.html";
 "\">GtkLabel</link>"
@@ -14185,8 +14313,8 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkLabel.html";
 "\">GtkLabel</link>"
 
-#: C/grid.py.page:58(item/p) C/image.py.page:100(item/p)
-#: C/paned.py.page:42(item/p) C/scrolledwindow.py.page:45(item/p)
+#: C/grid.py.page:59(item/p) C/image.py.page:102(item/p)
+#: C/paned.py.page:43(item/p) C/scrolledwindow.py.page:46(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkImage.html";
 "\">GtkImage</link>"
@@ -14194,9 +14322,9 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkImage.html";
 "\">GtkImage</link>"
 
-#: C/grid.py.page:59(item/p) C/radiobutton.py.page:52(item/p)
-#: C/separator.py.page:39(item/p) C/switch.py.page:50(item/p)
-#: C/toolbar_builder.py.page:193(item/p)
+#: C/grid.py.page:60(item/p) C/radiobutton.py.page:49(item/p)
+#: C/separator.py.page:40(item/p) C/switch.py.page:46(item/p)
+#: C/toolbar_builder.py.page:195(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkGrid.html";
 "\">GtkGrid</link>"
@@ -14345,9 +14473,9 @@ msgstr ""
 #. whatever you like once you have updated your copy of the file.
 #: C/GtkApplicationWindow.c.page:21(media)
 #: C/GtkApplicationWindow.js.page:21(media)
-#: C/GtkApplicationWindow.py.page:26(media)
+#: C/GtkApplicationWindow.py.page:28(media)
 #: C/GtkApplicationWindow.vala.page:21(media) C/window.c.page:21(media)
-#: C/window.js.page:24(media) C/window.py.page:30(media)
+#: C/window.js.page:24(media) C/window.py.page:32(media)
 #: C/window.vala.page:24(media)
 msgctxt "_"
 msgid "external ref='media/window.png' md5='eb0cde3530978619c25bddfaeb453345'"
@@ -14366,7 +14494,7 @@ msgstr ""
 
 #: C/GtkApplicationWindow.c.page:20(page/title)
 #: C/GtkApplicationWindow.js.page:20(page/title)
-#: C/GtkApplicationWindow.py.page:25(page/title)
+#: C/GtkApplicationWindow.py.page:27(page/title)
 #: C/GtkApplicationWindow.vala.page:20(page/title)
 msgid "ApplicationWindow"
 msgstr "ApplicationWindow"
@@ -14444,7 +14572,7 @@ msgid "ApplicationWindow (JavaScript)"
 msgstr "ApplicationWindow (JavaScript)"
 
 #: C/GtkApplicationWindow.js.page:17(info/desc)
-#: C/GtkApplicationWindow.py.page:22(info/desc)
+#: C/GtkApplicationWindow.py.page:24(info/desc)
 #: C/GtkApplicationWindow.vala.page:17(info/desc)
 msgid "GtkWindow subclass with GtkApplication support"
 msgstr "Subclase GtkWindow con soporte de GtkApplication"
@@ -14563,12 +14691,12 @@ msgctxt "text"
 msgid "ApplicationWindow (Python)"
 msgstr "ApplicationWindow (Python)"
 
-#: C/GtkApplicationWindow.py.page:27(page/p)
+#: C/GtkApplicationWindow.py.page:29(page/p)
 #: C/GtkApplicationWindow.vala.page:22(page/p)
 msgid "The simplest GtkApplication Window which can support Menus."
 msgstr "La ventana de GtkApplication más sencilla que puede soportar menús."
 
-#: C/GtkApplicationWindow.py.page:34(section/code)
+#: C/GtkApplicationWindow.py.page:36(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -14641,11 +14769,11 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/GtkApplicationWindow.py.page:38(section/title)
+#: C/GtkApplicationWindow.py.page:40(section/title)
 msgid "Useful methods for a Gtk.ApplicationWindow widget"
 msgstr "Métodos útiles para un widget «Gtk.ApplicationWindow»"
 
-#: C/GtkApplicationWindow.py.page:41(item/p) C/window.py.page:52(item/p)
+#: C/GtkApplicationWindow.py.page:43(item/p) C/window.py.page:53(item/p)
 msgid ""
 "<code>set_default_size(200, 100)</code> sets the default size of the window "
 "to a width of <code>200</code> and a height of <code>100</code>; if instead "
@@ -14656,7 +14784,7 @@ msgstr ""
 "code>; si en lugar de un número positivo le pasa <code>-1</code> tendrá el "
 "tamaño predeterminado."
 
-#: C/GtkApplicationWindow.py.page:42(item/p) C/window.py.page:53(item/p)
+#: C/GtkApplicationWindow.py.page:44(item/p) C/window.py.page:54(item/p)
 msgid ""
 "<code>set_position(Gtk.WindowPosition.CENTER)</code> centers the window. "
 "Other options are <code>Gtk.WindowPosition.NONE, Gtk.WindowPosition.MOUSE, "
@@ -14740,9 +14868,9 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/guitar-tuner.c.page:39(media) C/guitar-tuner.cpp.page:37(media)
-#: C/guitar-tuner.js.page:36(media) C/guitar-tuner.py.page:39(media)
-#: C/guitar-tuner.vala.page:42(media)
+#: C/guitar-tuner.c.page:44(media) C/guitar-tuner.cpp.page:42(media)
+#: C/guitar-tuner.js.page:36(media) C/guitar-tuner.py.page:49(media)
+#: C/guitar-tuner.vala.page:47(media)
 msgctxt "_"
 msgid ""
 "external ref='media/guitar-tuner.png' md5='35e615e0f5e293671d00c5c414ac2f6b'"
@@ -14768,8 +14896,8 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/guitar-tuner.c.page:94(media) C/guitar-tuner.cpp.page:88(media)
-#: C/guitar-tuner.py.page:90(media) C/guitar-tuner.vala.page:95(media)
+#: C/guitar-tuner.c.page:99(media) C/guitar-tuner.cpp.page:93(media)
+#: C/guitar-tuner.py.page:100(media) C/guitar-tuner.vala.page:100(media)
 msgctxt "_"
 msgid ""
 "external ref='media/guitar-tuner-glade.png' "
@@ -14802,9 +14930,9 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/guitar-tuner.c.page:139(media) C/guitar-tuner.cpp.page:117(media)
-#: C/guitar-tuner.js.page:42(media) C/guitar-tuner.py.page:133(media)
-#: C/guitar-tuner.vala.page:129(media)
+#: C/guitar-tuner.c.page:144(media) C/guitar-tuner.cpp.page:122(media)
+#: C/guitar-tuner.js.page:42(media) C/guitar-tuner.py.page:143(media)
+#: C/guitar-tuner.vala.page:134(media)
 msgctxt "_"
 msgid ""
 "external ref='media/guitar-tuner-pipeline.png' "
@@ -14815,23 +14943,25 @@ msgstr ""
 
 #: C/guitar-tuner.c.page:7(info/title)
 msgctxt "text"
-msgid "Guitar Tuner (C)"
+msgid "Guitar tuner (C)"
 msgstr "Afinador de guitarra (C)"
 
 #: C/guitar-tuner.c.page:10(info/desc) C/guitar-tuner.py.page:10(info/desc)
 msgid ""
-"Use Gtk+ and GStreamer to build a simple guitar tuner application for GNOME. "
+"Use GTK+ and GStreamer to build a simple guitar tuner application for GNOME. "
 "Shows off how to use the interface designer."
 msgstr ""
 "Usar GTK+ y GStreamer para construir un sencillo afinador de guitarra para "
 "GNOME. Muestra cómo usar el diseñador de interfaces."
 
-#: C/guitar-tuner.c.page:23(page/title) C/guitar-tuner.cpp.page:21(page/title)
-msgid "Guitar Tuner"
+#: C/guitar-tuner.c.page:28(page/title) C/guitar-tuner.cpp.page:26(page/title)
+#: C/guitar-tuner.js.page:19(page/title) C/guitar-tuner.py.page:33(page/title)
+#: C/guitar-tuner.vala.page:31(page/title)
+msgid "Guitar tuner"
 msgstr "Afinador de guitarra"
 
-#: C/guitar-tuner.c.page:26(synopsis/p) C/guitar-tuner.cpp.page:24(synopsis/p)
-#: C/guitar-tuner.py.page:26(synopsis/p)
+#: C/guitar-tuner.c.page:31(synopsis/p) C/guitar-tuner.cpp.page:29(synopsis/p)
+#: C/guitar-tuner.py.page:36(synopsis/p)
 msgid ""
 "In this tutorial, we're going to make a program which plays tones that you "
 "can use to tune a guitar. You will learn how to:"
@@ -14839,62 +14969,62 @@ msgstr ""
 "En este tutorial se va a hacer un programa que reproduce tonos que puede "
 "usar para afinar su guitarra. Aprenderá a:"
 
-#: C/guitar-tuner.c.page:28(item/p) C/guitar-tuner.cpp.page:26(item/p)
-#: C/guitar-tuner.py.page:28(item/p)
+#: C/guitar-tuner.c.page:33(item/p) C/guitar-tuner.cpp.page:31(item/p)
+#: C/guitar-tuner.py.page:38(item/p)
 msgid "Set up a basic project in Anjuta"
 msgstr "Configurar un proyecto básico en Anjuta"
 
-#: C/guitar-tuner.c.page:29(item/p) C/guitar-tuner.cpp.page:27(item/p)
-#: C/guitar-tuner.py.page:29(item/p)
+#: C/guitar-tuner.c.page:34(item/p) C/guitar-tuner.cpp.page:32(item/p)
+#: C/guitar-tuner.py.page:39(item/p)
 msgid "Create a simple GUI with Anjuta's UI designer"
 msgstr "Crear una IGU sencilla con el diseñador IU de Anjuta"
 
-#: C/guitar-tuner.c.page:30(item/p) C/guitar-tuner.cpp.page:28(item/p)
-#: C/guitar-tuner.py.page:30(item/p)
+#: C/guitar-tuner.c.page:35(item/p) C/guitar-tuner.cpp.page:33(item/p)
+#: C/guitar-tuner.py.page:40(item/p)
 msgid "Use GStreamer to play sounds"
 msgstr "Usar GStreamer para reproducir sonidos"
 
-#: C/guitar-tuner.c.page:32(synopsis/p) C/guitar-tuner.cpp.page:30(synopsis/p)
-#: C/guitar-tuner.py.page:32(synopsis/p)
-#: C/guitar-tuner.vala.page:35(synopsis/p)
-#: C/image-viewer.js.page:34(synopsis/p) C/image-viewer.py.page:34(synopsis/p)
-#: C/image-viewer.vala.page:40(synopsis/p)
-#: C/magic-mirror.vala.page:33(synopsis/p)
+#: C/guitar-tuner.c.page:37(synopsis/p) C/guitar-tuner.cpp.page:35(synopsis/p)
+#: C/guitar-tuner.py.page:42(synopsis/p)
+#: C/guitar-tuner.vala.page:40(synopsis/p)
+#: C/image-viewer.js.page:38(synopsis/p) C/image-viewer.py.page:38(synopsis/p)
+#: C/image-viewer.vala.page:45(synopsis/p)
+#: C/magic-mirror.vala.page:38(synopsis/p)
 msgid "You'll need the following to be able to follow this tutorial:"
 msgstr "Necesitará lo siguiente para poder seguir este tutorial:"
 
-#: C/guitar-tuner.c.page:34(item/p) C/guitar-tuner.cpp.page:32(item/p)
-#: C/guitar-tuner.py.page:34(item/p) C/image-viewer.js.page:36(item/p)
-#: C/image-viewer.py.page:36(item/p) C/magic-mirror.vala.page:35(item/p)
+#: C/guitar-tuner.c.page:39(item/p) C/guitar-tuner.cpp.page:37(item/p)
+#: C/guitar-tuner.py.page:44(item/p) C/image-viewer.js.page:40(item/p)
+#: C/image-viewer.py.page:40(item/p) C/magic-mirror.vala.page:40(item/p)
 msgid "An installed copy of the <link xref=\"getting-ready\">Anjuta IDE</link>"
 msgstr "Una copia instalada del <link xref=\"getting-ready\">EID Anjuta</link>"
 
-#: C/guitar-tuner.c.page:35(item/p)
+#: C/guitar-tuner.c.page:40(item/p)
 msgid "Basic knowledge of the C programming language"
 msgstr "Conocimiento básico del lenguaje de programación C"
 
-#: C/guitar-tuner.c.page:42(section/title)
-#: C/guitar-tuner.cpp.page:40(section/title)
-#: C/guitar-tuner.py.page:42(section/title)
-#: C/image-viewer.c.page:36(section/title)
-#: C/image-viewer.cpp.page:34(section/title)
-#: C/image-viewer.js.page:45(section/title)
-#: C/image-viewer.py.page:44(section/title)
-#: C/image-viewer.vala.page:51(section/title)
-#: C/magic-mirror.vala.page:44(section/title)
-#: C/message-board.c.page:41(section/title)
-#: C/photo-wall.c.page:46(section/title)
-#: C/record-collection.js.page:47(section/title)
+#: C/guitar-tuner.c.page:47(section/title)
+#: C/guitar-tuner.cpp.page:45(section/title)
+#: C/guitar-tuner.py.page:52(section/title)
+#: C/image-viewer.c.page:41(section/title)
+#: C/image-viewer.cpp.page:39(section/title)
+#: C/image-viewer.js.page:49(section/title)
+#: C/image-viewer.py.page:48(section/title)
+#: C/image-viewer.vala.page:56(section/title)
+#: C/magic-mirror.vala.page:49(section/title)
+#: C/message-board.c.page:45(section/title)
+#: C/photo-wall.c.page:51(section/title)
+#: C/record-collection.js.page:52(section/title)
 msgid "Create a project in Anjuta"
 msgstr "Crear un proyecto en Anjuta"
 
-#: C/guitar-tuner.c.page:43(section/p) C/guitar-tuner.cpp.page:41(section/p)
-#: C/guitar-tuner.py.page:43(section/p) C/guitar-tuner.vala.page:46(section/p)
-#: C/image-viewer.c.page:37(section/p) C/image-viewer.cpp.page:35(section/p)
-#: C/image-viewer.js.page:46(section/p) C/image-viewer.py.page:45(section/p)
-#: C/image-viewer.vala.page:52(section/p)
-#: C/magic-mirror.vala.page:45(section/p) C/photo-wall.c.page:47(section/p)
-#: C/record-collection.js.page:48(section/p)
+#: C/guitar-tuner.c.page:48(section/p) C/guitar-tuner.cpp.page:46(section/p)
+#: C/guitar-tuner.py.page:53(section/p) C/guitar-tuner.vala.page:51(section/p)
+#: C/image-viewer.c.page:42(section/p) C/image-viewer.cpp.page:40(section/p)
+#: C/image-viewer.js.page:50(section/p) C/image-viewer.py.page:49(section/p)
+#: C/image-viewer.vala.page:57(section/p)
+#: C/magic-mirror.vala.page:50(section/p) C/photo-wall.c.page:52(section/p)
+#: C/record-collection.js.page:53(section/p)
 msgid ""
 "Before you start coding, you'll need to set up a new project in Anjuta. This "
 "will create all of the files you need to build and run the code later on. "
@@ -14904,11 +15034,11 @@ msgstr ""
 "Esto creará todos los archivos que necesite para construir y ejecutar el "
 "código más adelante. También es útil para mantener todo ordenado."
 
-#: C/guitar-tuner.c.page:46(item/p) C/guitar-tuner.cpp.page:44(item/p)
-#: C/guitar-tuner.py.page:46(item/p) C/image-viewer.c.page:40(item/p)
-#: C/image-viewer.cpp.page:38(item/p) C/image-viewer.js.page:49(item/p)
-#: C/image-viewer.py.page:48(item/p) C/magic-mirror.vala.page:48(item/p)
-#: C/photo-wall.c.page:50(item/p) C/record-collection.js.page:51(item/p)
+#: C/guitar-tuner.c.page:51(item/p) C/guitar-tuner.cpp.page:49(item/p)
+#: C/guitar-tuner.py.page:56(item/p) C/image-viewer.c.page:45(item/p)
+#: C/image-viewer.cpp.page:43(item/p) C/image-viewer.js.page:53(item/p)
+#: C/image-viewer.py.page:52(item/p) C/magic-mirror.vala.page:53(item/p)
+#: C/photo-wall.c.page:55(item/p) C/record-collection.js.page:56(item/p)
 msgid ""
 "Start Anjuta and click <guiseq><gui>File</gui><gui>New</gui><gui>Project</"
 "gui></guiseq> to open the project wizard."
@@ -14916,17 +15046,17 @@ msgstr ""
 "Inicie Anjuta y pulse <guiseq><gui>Archivo</gui><gui>Nuevo</"
 "gui><gui>Proyecto</gui></guiseq> para abrir el asistente de proyectos."
 
-#: C/guitar-tuner.c.page:49(item/p)
+#: C/guitar-tuner.c.page:54(item/p)
 msgid ""
-"Choose <gui>Gtk+ (Simple)</gui> from the <gui>C</gui> tab, click "
+"Choose <gui>GTK+ (Simple)</gui> from the <gui>C</gui> tab, click "
 "<gui>Continue</gui>, and fill out your details on the next few pages. Use "
 "<file>guitar-tuner</file> as project name and directory."
 msgstr ""
-"Seleccione <gui>Gtk+ (simple)</gui> en la pestaña <gui>C</gui>, pulse "
-"<gui>Continuar</gui>, y rellene los detalles en las siguientes páginas. Use "
+"Seleccione <gui>GTK+ (simple)</gui> en la pestaña <gui>C</gui>, pulse "
+"<gui>Continuar</gui>, y rellene sus detalles en las siguientes páginas. Use "
 "<file>afinador-guitarra</file> como nombre del proyecto y de la carpeta."
 
-#: C/guitar-tuner.c.page:52(item/p)
+#: C/guitar-tuner.c.page:57(item/p)
 msgid ""
 "Make sure that <gui>Configure external packages</gui> is switched <gui>ON</"
 "gui>. On the next page, select <em>gstreamer-0.10</em> from the list to "
@@ -14936,8 +15066,8 @@ msgstr ""
 "gui>. En la siguiente página, seleccione <em>gstreamer-0.10</em> de la lista "
 "para incluir la biblioteca GStreamer en su proyecto."
 
-#: C/guitar-tuner.c.page:56(item/p) C/image-viewer.c.page:51(item/p)
-#: C/photo-wall.c.page:65(item/p)
+#: C/guitar-tuner.c.page:61(item/p) C/image-viewer.c.page:56(item/p)
+#: C/photo-wall.c.page:70(item/p)
 msgid ""
 "Click <gui>Apply</gui> and the project will be created for you. Open "
 "<file>src/main.c</file> from the <gui>Project</gui> or <gui>File</gui> tabs. "
@@ -14947,8 +15077,8 @@ msgstr ""
 "file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</gui>. Debería "
 "ver algo de código que comience con las líneas:"
 
-#: C/guitar-tuner.c.page:57(item/code) C/image-viewer.c.page:52(item/code)
-#: C/photo-wall.c.page:66(item/code)
+#: C/guitar-tuner.c.page:62(item/code) C/image-viewer.c.page:57(item/code)
+#: C/photo-wall.c.page:71(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -14959,17 +15089,17 @@ msgstr ""
 "#include &lt;config.h&gt;\n"
 "#include &lt;gtk/gtk.h&gt;"
 
-#: C/guitar-tuner.c.page:65(section/title)
-#: C/guitar-tuner.cpp.page:63(section/title)
-#: C/guitar-tuner.vala.page:68(section/title)
-#: C/image-viewer.c.page:60(section/title)
-#: C/image-viewer.cpp.page:60(section/title)
-#: C/image-viewer.vala.page:107(section/title)
-#: C/magic-mirror.vala.page:72(section/title)
+#: C/guitar-tuner.c.page:70(section/title)
+#: C/guitar-tuner.cpp.page:68(section/title)
+#: C/guitar-tuner.vala.page:73(section/title)
+#: C/image-viewer.c.page:65(section/title)
+#: C/image-viewer.cpp.page:65(section/title)
+#: C/image-viewer.vala.page:112(section/title)
+#: C/magic-mirror.vala.page:77(section/title)
 msgid "Build the code for the first time"
 msgstr "Construir el código por primera vez"
 
-#: C/guitar-tuner.c.page:66(section/p)
+#: C/guitar-tuner.c.page:71(section/p)
 msgid ""
 "C is a rather verbose language, so don't be surprised that the file contains "
 "quite a lot of code. Most of it is template code. It loads an (empty) window "
@@ -14982,7 +15112,7 @@ msgstr ""
 "usuario y la muestra. A continuación se ofrecen más detalles; omita esta "
 "lista si entiende los conceptos básicos:"
 
-#: C/guitar-tuner.c.page:70(item/p) C/image-viewer.c.page:65(item/p)
+#: C/guitar-tuner.c.page:75(item/p) C/image-viewer.c.page:70(item/p)
 msgid ""
 "The three <code>#include</code> lines at the top include the <code>config</"
 "code> (useful autoconf build defines), <code>gtk</code> (user interface) and "
@@ -14995,7 +15125,7 @@ msgstr ""
 "(internacionalización). Las funciones de estas bibliotecas se usan en el "
 "resto del código."
 
-#: C/guitar-tuner.c.page:73(item/p)
+#: C/guitar-tuner.c.page:78(item/p)
 msgid ""
 "The <code>create_window</code> function creates a new window by opening a "
 "GtkBuilder file (<file>src/guitar-tuner.ui</file>, defined a few lines "
@@ -15010,8 +15140,8 @@ msgstr ""
 "de todos sus elementos. Puede usar el editor Anjuta para diseñar interfaces "
 "de usuario con GtkBuilder."
 
-#: C/guitar-tuner.c.page:74(item/p) C/image-viewer.c.page:69(item/p)
-#: C/image-viewer.vala.page:117(item/p)
+#: C/guitar-tuner.c.page:79(item/p) C/image-viewer.c.page:74(item/p)
+#: C/image-viewer.vala.page:122(item/p)
 msgid ""
 "Connecting signals is how you define what happens when you push a button, or "
 "when some other event happens. Here, the <code>destroy</code> function is "
@@ -15021,7 +15151,7 @@ msgstr ""
 "cuando ocurre algún otro evento. Aquí, se llama a la función <code>destroy</"
 "code> (y se sale de la aplicación) cuando cierra la ventana."
 
-#: C/guitar-tuner.c.page:77(item/p) C/image-viewer.c.page:72(item/p)
+#: C/guitar-tuner.c.page:82(item/p) C/image-viewer.c.page:77(item/p)
 msgid ""
 "The <code>main</code> function is run by default when you start a C "
 "application. It calls a few functions which set up and then run the "
@@ -15035,7 +15165,7 @@ msgstr ""
 "principal de GTK+, que ejecuta la interfaz de usuario y comienza a escuchar "
 "eventos (como pulsaciones del ratón y del teclado)."
 
-#: C/guitar-tuner.c.page:80(item/p) C/image-viewer.c.page:75(item/p)
+#: C/guitar-tuner.c.page:85(item/p) C/image-viewer.c.page:80(item/p)
 msgid ""
 "The <code>ENABLE_NLS</code> conditional definition sets up <code>gettext</"
 "code>, which is a framework for translating applications. These functions "
@@ -15046,10 +15176,10 @@ msgstr ""
 "funciones especifican cómo deben manejar su aplicación las herramientas de "
 "traducción cuando las ejecuta."
 
-#: C/guitar-tuner.c.page:84(section/p) C/guitar-tuner.cpp.page:78(section/p)
-#: C/image-viewer.c.page:79(section/p) C/image-viewer.cpp.page:76(section/p)
-#: C/image-viewer.vala.page:127(section/p)
-#: C/magic-mirror.vala.page:87(section/p)
+#: C/guitar-tuner.c.page:89(section/p) C/guitar-tuner.cpp.page:83(section/p)
+#: C/image-viewer.c.page:84(section/p) C/image-viewer.cpp.page:81(section/p)
+#: C/image-viewer.vala.page:132(section/p)
+#: C/magic-mirror.vala.page:92(section/p)
 msgid ""
 "This code is ready to be used, so you can compile it by clicking "
 "<guiseq><gui>Build</gui><gui>Build Project</gui></guiseq> (or press "
@@ -15059,8 +15189,8 @@ msgstr ""
 "<guiseq><gui>Construir</gui><gui>Construir proyecto</gui></guiseq> (o "
 "pulsando <keyseq><key>Mayús</key><key>F7</key></keyseq>)."
 
-#: C/guitar-tuner.c.page:85(section/p) C/guitar-tuner.cpp.page:79(section/p)
-#: C/image-viewer.c.page:80(section/p) C/image-viewer.cpp.page:77(section/p)
+#: C/guitar-tuner.c.page:90(section/p) C/guitar-tuner.cpp.page:84(section/p)
+#: C/image-viewer.c.page:85(section/p) C/image-viewer.cpp.page:82(section/p)
 msgid ""
 "Press <gui>Execute</gui> on the next window that appears to configure a "
 "debug build. You only need to do this once, for the first build."
@@ -15069,14 +15199,14 @@ msgstr ""
 "configurar una construcción de depuración. Esto sólo necesita hacer una vez "
 "para la primera construcción."
 
-#: C/guitar-tuner.c.page:89(section/title)
-#: C/guitar-tuner.cpp.page:83(section/title)
-#: C/guitar-tuner.py.page:85(section/title)
-#: C/guitar-tuner.vala.page:90(section/title)
+#: C/guitar-tuner.c.page:94(section/title)
+#: C/guitar-tuner.cpp.page:88(section/title)
+#: C/guitar-tuner.py.page:95(section/title)
+#: C/guitar-tuner.vala.page:95(section/title)
 msgid "Create the user interface"
 msgstr "Crear la interfaz de usuario"
 
-#: C/guitar-tuner.c.page:90(section/p) C/guitar-tuner.cpp.page:84(section/p)
+#: C/guitar-tuner.c.page:95(section/p) C/guitar-tuner.cpp.page:89(section/p)
 msgid ""
 "A description of the user interface (UI) is contained in the GtkBuilder "
 "file. To edit the user interface, open <file>src/guitar_tuner.ui</file>. "
@@ -15090,8 +15220,8 @@ msgstr ""
 "en el centro; los widgets y sus propiedades están a la izquierda, y la "
 "paleta de los widgets disponibles está a la derecha."
 
-#: C/guitar-tuner.c.page:92(section/p) C/guitar-tuner.cpp.page:86(section/p)
-#: C/guitar-tuner.py.page:88(section/p)
+#: C/guitar-tuner.c.page:97(section/p) C/guitar-tuner.cpp.page:91(section/p)
+#: C/guitar-tuner.py.page:98(section/p)
 msgid ""
 "The layout of every UI in GTK+ is organized using boxes and tables. Let's "
 "use a vertical <gui>GtkButtonBox</gui> here to assign six <gui>GtkButtons</"
@@ -15101,8 +15231,8 @@ msgstr ""
 "Aquí se usará una <gui>GtkButtonBox</gui> vertical para asignar seis "
 "<gui>GtkButtons</gui>, uno para cada una de las cuerdas de la guitarra."
 
-#: C/guitar-tuner.c.page:98(item/p) C/guitar-tuner.cpp.page:92(item/p)
-#: C/guitar-tuner.py.page:94(item/p)
+#: C/guitar-tuner.c.page:103(item/p) C/guitar-tuner.cpp.page:97(item/p)
+#: C/guitar-tuner.py.page:104(item/p)
 msgid ""
 "Select a <gui>GtkButtonBox</gui> from the <gui>Container</gui> section of "
 "the <gui>Palette</gui> on the right and put it into the window. In the "
@@ -15114,8 +15244,8 @@ msgstr ""
 "de <gui>Propiedades</gui>, establezca el número de elementos a «6» (para las "
 "seis cuerdas) y la orientación a «vertical»."
 
-#: C/guitar-tuner.c.page:102(item/p) C/guitar-tuner.cpp.page:96(item/p)
-#: C/guitar-tuner.py.page:98(item/p)
+#: C/guitar-tuner.c.page:107(item/p) C/guitar-tuner.cpp.page:101(item/p)
+#: C/guitar-tuner.py.page:108(item/p)
 msgid ""
 "Now, choose a <gui>GtkButton</gui> from the palette and put it into the "
 "first part of the box."
@@ -15123,7 +15253,7 @@ msgstr ""
 "Ahora, elija un <gui>GtkButton</gui> de la paleta y póngalo en la primera "
 "parte de la caja."
 
-#: C/guitar-tuner.c.page:105(item/p) C/guitar-tuner.py.page:101(item/p)
+#: C/guitar-tuner.c.page:110(item/p) C/guitar-tuner.py.page:111(item/p)
 msgid ""
 "While the button is still selected, change the <gui>Label</gui> property in "
 "the <gui>Widgets</gui> tab to <gui>E</gui>. This will be the low E string."
@@ -15132,7 +15262,7 @@ msgstr ""
 "en la pestaña <gui>Widgets</gui> a <gui>E</gui>. Esta será la cuerda Mi "
 "grave."
 
-#: C/guitar-tuner.c.page:108(item/p) C/guitar-tuner.py.page:104(item/p)
+#: C/guitar-tuner.c.page:113(item/p) C/guitar-tuner.py.page:114(item/p)
 msgid ""
 "Switch to the <gui>Signals</gui> tab (inside the <gui>Widgets</gui> tab) and "
 "look for the <code>clicked</code> signal of the button. You can use this to "
@@ -15147,8 +15277,8 @@ msgstr ""
 "<code>on_button_clicked</code> en la columna <gui>Manejador</gui> y pulse "
 "<key>Intro</key>."
 
-#: C/guitar-tuner.c.page:111(item/p) C/guitar-tuner.py.page:107(item/p)
-#: C/guitar-tuner.vala.page:116(item/p)
+#: C/guitar-tuner.c.page:116(item/p) C/guitar-tuner.py.page:117(item/p)
+#: C/guitar-tuner.vala.page:121(item/p)
 msgid ""
 "Repeat the above steps for the other buttons, adding the next 5 strings with "
 "the names <em>A</em>, <em>D</em>, <em>G</em>, <em>B</em>, and <em>e</em>."
@@ -15157,8 +15287,8 @@ msgstr ""
 "cuerdas restantes con los nombres <em>A</em>, <em>D</em>, <em>G</em>, <em>B</"
 "em>, y <em>e</em>."
 
-#: C/guitar-tuner.c.page:114(item/p) C/guitar-tuner.py.page:110(item/p)
-#: C/guitar-tuner.vala.page:119(item/p)
+#: C/guitar-tuner.c.page:119(item/p) C/guitar-tuner.py.page:120(item/p)
+#: C/guitar-tuner.vala.page:124(item/p)
 msgid ""
 "Save the UI design (by clicking <guiseq><gui>File</gui><gui>Save</gui></"
 "guiseq>) and keep it open."
@@ -15166,12 +15296,12 @@ msgstr ""
 "Guarde el diseño de la IU (pulsando <guiseq><gui>Archivo</gui><gui>Guardar</"
 "gui></guiseq>) y déjelo abierto."
 
-#: C/guitar-tuner.c.page:120(section/title)
-#: C/guitar-tuner.vala.page:197(section/title)
+#: C/guitar-tuner.c.page:125(section/title)
+#: C/guitar-tuner.vala.page:202(section/title)
 msgid "Creating the signal handler"
 msgstr "Crear el manejador de señales"
 
-#: C/guitar-tuner.c.page:121(section/p) C/guitar-tuner.py.page:117(section/p)
+#: C/guitar-tuner.c.page:126(section/p) C/guitar-tuner.py.page:127(section/p)
 msgid ""
 "In the UI designer, you made it so that all of the buttons will call the "
 "same function, <gui>on_button_clicked</gui>, when they are clicked. We need "
@@ -15181,7 +15311,7 @@ msgstr ""
 "misma función, <gui>on_button_clicked</gui>, cuando se pulsan. Se debe "
 "añadir esta función al archivo de código fuente."
 
-#: C/guitar-tuner.c.page:122(section/p)
+#: C/guitar-tuner.c.page:127(section/p)
 msgid ""
 "To do this, open <file>main.c</file> while the user interface file is still "
 "open. Switch to the <gui>Signals</gui> tab, which you already used to set "
@@ -15196,7 +15326,7 @@ msgstr ""
 "fuente, fuera de cualquier función. Se añadirá el siguiente código a su "
 "archivo de código fuente:"
 
-#: C/guitar-tuner.c.page:125(section/code)
+#: C/guitar-tuner.c.page:130(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -15211,7 +15341,7 @@ msgstr ""
 "\n"
 "}"
 
-#: C/guitar-tuner.c.page:130(section/p)
+#: C/guitar-tuner.c.page:135(section/p)
 msgid ""
 "This signal handler has two arguments: a pointer to the <code>GtkWidget</"
 "code> that called the function (in our case, always a <code>GtkButton</"
@@ -15229,7 +15359,7 @@ msgstr ""
 "pasar un puntero a una estructura de datos a la que puede necesitar acceder "
 "dentro del manejador de la señal.)"
 
-#: C/guitar-tuner.c.page:131(section/p) C/guitar-tuner.py.page:125(section/p)
+#: C/guitar-tuner.c.page:136(section/p) C/guitar-tuner.py.page:135(section/p)
 msgid ""
 "For now, we'll leave the signal handler empty while we work on writing the "
 "code to produce sounds."
@@ -15237,16 +15367,16 @@ msgstr ""
 "Por ahora, se dejará el manejador de la señal vacío mientras se escribe el "
 "código para producir sonidos."
 
-#: C/guitar-tuner.c.page:135(section/title)
-#: C/guitar-tuner.cpp.page:112(section/title)
+#: C/guitar-tuner.c.page:140(section/title)
+#: C/guitar-tuner.cpp.page:117(section/title)
 #: C/guitar-tuner.js.page:38(section/title)
-#: C/guitar-tuner.py.page:129(section/title)
-#: C/guitar-tuner.vala.page:125(section/title)
+#: C/guitar-tuner.py.page:139(section/title)
+#: C/guitar-tuner.vala.page:130(section/title)
 msgid "GStreamer pipelines"
 msgstr "Tuberías de Gstreamer"
 
-#: C/guitar-tuner.c.page:136(section/p) C/guitar-tuner.js.page:39(section/p)
-#: C/guitar-tuner.py.page:130(section/p)
+#: C/guitar-tuner.c.page:141(section/p) C/guitar-tuner.js.page:39(section/p)
+#: C/guitar-tuner.py.page:140(section/p)
 msgid ""
 "GStreamer is GNOME's multimedia framework — you can use it for playing, "
 "recording, and processing video, audio, webcam streams and the like. Here, "
@@ -15256,8 +15386,8 @@ msgstr ""
 "reproducir, grabar y procesar vídeo, sonido, flujos de la cámara web y "
 "similares. En este caso, se usará para generar tonos de frecuencia única."
 
-#: C/guitar-tuner.c.page:137(section/p) C/guitar-tuner.cpp.page:115(section/p)
-#: C/guitar-tuner.js.page:40(section/p) C/guitar-tuner.py.page:131(section/p)
+#: C/guitar-tuner.c.page:142(section/p) C/guitar-tuner.cpp.page:120(section/p)
+#: C/guitar-tuner.js.page:40(section/p) C/guitar-tuner.py.page:141(section/p)
 msgid ""
 "Conceptually, GStreamer works as follows: You create a <em>pipeline</em> "
 "containing several processing elements going from the <em>source</em> to the "
@@ -15270,9 +15400,9 @@ msgstr ""
 "por ejemplo, un archivo de imagen, un vídeo o un archivo de música, y la "
 "salida puede ser un widget o la tarjeta de sonido."
 
-#: C/guitar-tuner.c.page:138(section/p) C/guitar-tuner.cpp.page:116(section/p)
-#: C/guitar-tuner.js.page:41(section/p) C/guitar-tuner.py.page:132(section/p)
-#: C/guitar-tuner.vala.page:128(section/p)
+#: C/guitar-tuner.c.page:143(section/p) C/guitar-tuner.cpp.page:121(section/p)
+#: C/guitar-tuner.js.page:41(section/p) C/guitar-tuner.py.page:142(section/p)
+#: C/guitar-tuner.vala.page:133(section/p)
 msgid ""
 "Between source and sink, you can apply various filters and converters to "
 "handle effects, format conversions and so on. Each element of the pipeline "
@@ -15283,20 +15413,20 @@ msgstr ""
 "tubería tiene propiedades que se pueden usar para cambiar este "
 "comportamiento."
 
-#: C/guitar-tuner.c.page:140(media/p) C/guitar-tuner.cpp.page:118(media/p)
-#: C/guitar-tuner.js.page:43(media/p) C/guitar-tuner.py.page:134(media/p)
-#: C/guitar-tuner.vala.page:130(media/p)
+#: C/guitar-tuner.c.page:145(media/p) C/guitar-tuner.cpp.page:123(media/p)
+#: C/guitar-tuner.js.page:43(media/p) C/guitar-tuner.py.page:144(media/p)
+#: C/guitar-tuner.vala.page:135(media/p)
 msgid "An example GStreamer pipeline."
 msgstr "Un ejemplo de tubería de GStreamer."
 
-#: C/guitar-tuner.c.page:145(section/title)
-#: C/guitar-tuner.py.page:139(section/title)
-#: C/guitar-tuner.vala.page:135(section/title)
+#: C/guitar-tuner.c.page:150(section/title)
+#: C/guitar-tuner.py.page:149(section/title)
+#: C/guitar-tuner.vala.page:140(section/title)
 msgid "Set up the pipeline"
 msgstr "Configurar la tubería"
 
-#: C/guitar-tuner.c.page:146(section/p) C/guitar-tuner.cpp.page:129(section/p)
-#: C/guitar-tuner.py.page:140(section/p)
+#: C/guitar-tuner.c.page:151(section/p) C/guitar-tuner.cpp.page:134(section/p)
+#: C/guitar-tuner.py.page:150(section/p)
 msgid ""
 "In this simple example we will use a tone generator source called "
 "<code>audiotestsrc</code> and send the output to the default system sound "
@@ -15310,7 +15440,7 @@ msgstr ""
 "configurar la frecuencia del generador de tonos; esto es accesible a través "
 "de la propiedad <code>freq</code> de <code>audiotestsrc</code>."
 
-#: C/guitar-tuner.c.page:148(section/p)
+#: C/guitar-tuner.c.page:153(section/p)
 msgid ""
 "Insert the following line into <file>main.c</file>, just below the "
 "<code>#include &lt;gtk/gtk.h&gt;</code> line:"
@@ -15318,12 +15448,12 @@ msgstr ""
 "Inserte la siguiente línea en <file>main.c</file>, justo a continuación de "
 "la línea <code>#include &lt;gtk/gtk.h&gt;</code>:"
 
-#: C/guitar-tuner.c.page:149(section/code)
+#: C/guitar-tuner.c.page:154(section/code)
 #, no-wrap
 msgid "#include &lt;gst/gst.h&gt;"
 msgstr "#include &lt;gst/gst.h&gt;"
 
-#: C/guitar-tuner.c.page:150(section/p)
+#: C/guitar-tuner.c.page:155(section/p)
 msgid ""
 "This includes the GStreamer library. You also need to add a line to "
 "initialize GStreamer; put the following code on the line above the "
@@ -15333,12 +15463,12 @@ msgstr ""
 "inicializar GStreamer; ponga la siguiente línea de código antes de la "
 "llamada <code>gtk_init</code> en la función <code>main</code>:"
 
-#: C/guitar-tuner.c.page:151(section/code)
+#: C/guitar-tuner.c.page:156(section/code)
 #, no-wrap
 msgid "gst_init (&amp;argc, &amp;argv);"
 msgstr "gst_init (&amp;argc, &amp;argv);"
 
-#: C/guitar-tuner.c.page:152(section/p)
+#: C/guitar-tuner.c.page:157(section/p)
 msgid ""
 "Then, copy the following function into <file>main.c</file> above the empty "
 "<code>on_button_clicked</code> function:"
@@ -15346,7 +15476,7 @@ msgstr ""
 "Después, copie la siguiente función en <file>main.c</file> encima de la "
 "función <code>on_button_clicked</code> vacía:"
 
-#: C/guitar-tuner.c.page:153(section/code)
+#: C/guitar-tuner.c.page:158(section/code)
 #, no-wrap
 msgid ""
 "static void\n"
@@ -15397,7 +15527,7 @@ msgstr ""
 "\tg_timeout_add (LENGTH, (GSourceFunc) pipeline_stop, pipeline);\n"
 "}"
 
-#: C/guitar-tuner.c.page:179(item/p)
+#: C/guitar-tuner.c.page:184(item/p)
 msgid ""
 "The first five lines create source and sink GStreamer elements "
 "(<code>GstElement</code>), and a pipeline element (which will be used as a "
@@ -15414,7 +15544,7 @@ msgstr ""
 "sumidero <code>autoaudiosink</code> (la salida de la tarjeta de sonido "
 "predeterminada)."
 
-#: C/guitar-tuner.c.page:182(item/p)
+#: C/guitar-tuner.c.page:187(item/p)
 msgid ""
 "The call to <code>g_object_set</code> sets the <code>freq</code> property of "
 "the source element to <code>frequency</code>, which is passed as an argument "
@@ -15426,7 +15556,7 @@ msgstr ""
 "argumento a la función <code>play_sound</code>. Esto sólo es la frecuencia "
 "de la nota en Hercios; más adelante se definirán algunas frecuencias útiles."
 
-#: C/guitar-tuner.c.page:185(item/p)
+#: C/guitar-tuner.c.page:190(item/p)
 msgid ""
 "<code>gst_bin_add_many</code> puts the source and sink into the pipeline. "
 "The pipeline is a <code>GstBin</code>, which is just an element that can "
@@ -15440,7 +15570,7 @@ msgstr ""
 "elementos como quiera a una tubería añadiendo más argumentos a "
 "<code>gst_bin_add_many</code>."
 
-#: C/guitar-tuner.c.page:188(item/p)
+#: C/guitar-tuner.c.page:193(item/p)
 msgid ""
 "Next, <code>gst_element_link</code> is used to connect the elements "
 "together, so the output of <code>source</code> (a tone) goes into the input "
@@ -15456,12 +15586,12 @@ msgstr ""
 "reproducción, configurando el estado de la tubería a reproduciendo "
 "(<code>GST_STATE_PLAYING</code>)."
 
-#: C/guitar-tuner.c.page:195(section/title)
-#: C/guitar-tuner.py.page:180(section/title)
+#: C/guitar-tuner.c.page:200(section/title)
+#: C/guitar-tuner.py.page:190(section/title)
 msgid "Stopping playback"
 msgstr "Detener la reproducción"
 
-#: C/guitar-tuner.c.page:196(section/p)
+#: C/guitar-tuner.c.page:201(section/p)
 msgid ""
 "We don't want to play an annoying tone forever, so the last thing "
 "<code>play_sound</code> does is to call <code>g_timeout_add</code>. This "
@@ -15477,7 +15607,7 @@ msgstr ""
 "<code>pipeline_stop</code>, y se queda llamando a <code>pipeline_stop</code> "
 "hasta que devuelve <code>FALSE</code>."
 
-#: C/guitar-tuner.c.page:197(section/p)
+#: C/guitar-tuner.c.page:202(section/p)
 msgid ""
 "Now, we'll write the <code>pipeline_stop</code> function which is called by "
 "<code>g_timeout_add</code>. Insert the following code <em>above</em> the "
@@ -15487,7 +15617,7 @@ msgstr ""
 "llamada por <code>g_timeout_add</code>. Inserte el código siguiente "
 "<em>encima</em> de la función <code>play_sound</code>:"
 
-#: C/guitar-tuner.c.page:198(section/code)
+#: C/guitar-tuner.c.page:203(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -15514,7 +15644,7 @@ msgstr ""
 "\treturn FALSE;\n"
 "}"
 
-#: C/guitar-tuner.c.page:209(section/p)
+#: C/guitar-tuner.c.page:214(section/p)
 msgid ""
 "The call to <code>gst_element_set_state</code> pauses the playback of the "
 "pipeline and <code>g_object_unref</code> unreferences the pipeline, "
@@ -15524,12 +15654,12 @@ msgstr ""
 "tubería y <code>g_object_unref</code> desreferencia la tubería, la destruye "
 "y libera su memoria."
 
-#: C/guitar-tuner.c.page:213(section/title)
-#: C/guitar-tuner.py.page:197(section/title)
+#: C/guitar-tuner.c.page:218(section/title)
+#: C/guitar-tuner.py.page:207(section/title)
 msgid "Define the tones"
 msgstr "Definir los tonos"
 
-#: C/guitar-tuner.c.page:214(section/p)
+#: C/guitar-tuner.c.page:219(section/p)
 msgid ""
 "We want to play the correct sound when the user clicks a button. First of "
 "all, we need to know the frequencies for the six guitar strings, which are "
@@ -15540,7 +15670,7 @@ msgstr ""
 "guitarra, que están definidas (al principio de <file>main.c</file>) de la "
 "siguiente manera:"
 
-#: C/guitar-tuner.c.page:215(section/code)
+#: C/guitar-tuner.c.page:220(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -15561,7 +15691,7 @@ msgstr ""
 "#define NOTE_B 987.77\n"
 "#define NOTE_e 1318.5"
 
-#: C/guitar-tuner.c.page:223(section/p) C/guitar-tuner.py.page:211(section/p)
+#: C/guitar-tuner.c.page:228(section/p) C/guitar-tuner.py.page:221(section/p)
 msgid ""
 "Now to flesh out the signal handler that we defined earlier, "
 "<code>on_button_clicked</code>. We could have connected every button to a "
@@ -15575,7 +15705,7 @@ msgstr ""
 "código. En su lugar, se puede usar la etiqueta del botón para saber cuál de "
 "ellos se ha pulsado:"
 
-#: C/guitar-tuner.c.page:224(section/code)
+#: C/guitar-tuner.c.page:229(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -15622,7 +15752,7 @@ msgstr ""
 "\t    play_sound (NOTE_e);\n"
 "}\n"
 
-#: C/guitar-tuner.c.page:246(section/p)
+#: C/guitar-tuner.c.page:251(section/p)
 msgid ""
 "A pointer to the <code>GtkButton</code> that was clicked is passed as an "
 "argument (<code>button</code>) to <code>on_button_clicked</code>. We can get "
@@ -15634,7 +15764,7 @@ msgstr ""
 "obtener la etiqueta de este botón usando <code>gtk_bin_get_child</code> y "
 "obteniendo el texto de la etiqueta usando <code>gtk_label_get_label</code>."
 
-#: C/guitar-tuner.c.page:247(section/p)
+#: C/guitar-tuner.c.page:252(section/p)
 msgid ""
 "The label text is then compared to the notes that we have using "
 "<code>g_str_equal</code>, and <code>play_sound</code> is called with the "
@@ -15646,20 +15776,20 @@ msgstr ""
 "frecuencia correspondiente a cada nota. Esto reproduce el tono; el afinador "
 "de guitarra ya está funcionando."
 
-#: C/guitar-tuner.c.page:251(section/title)
-#: C/guitar-tuner.cpp.page:249(section/title)
-#: C/guitar-tuner.vala.page:247(section/title)
-#: C/image-viewer.c.page:216(section/title)
-#: C/image-viewer.cpp.page:204(section/title)
-#: C/image-viewer.vala.page:274(section/title)
-#: C/photo-wall.c.page:371(section/title)
+#: C/guitar-tuner.c.page:256(section/title)
+#: C/guitar-tuner.cpp.page:254(section/title)
+#: C/guitar-tuner.vala.page:252(section/title)
+#: C/image-viewer.c.page:221(section/title)
+#: C/image-viewer.cpp.page:209(section/title)
+#: C/image-viewer.vala.page:279(section/title)
+#: C/photo-wall.c.page:391(section/title)
 msgid "Build and run the application"
 msgstr "Construir y ejecutar la aplicación"
 
-#: C/guitar-tuner.c.page:252(section/p)
-#: C/guitar-tuner.vala.page:248(section/p)
-#: C/image-viewer.c.page:217(section/p) C/image-viewer.cpp.page:205(section/p)
-#: C/image-viewer.vala.page:275(section/p)
+#: C/guitar-tuner.c.page:257(section/p)
+#: C/guitar-tuner.vala.page:253(section/p)
+#: C/image-viewer.c.page:222(section/p) C/image-viewer.cpp.page:210(section/p)
+#: C/image-viewer.vala.page:280(section/p)
 msgid ""
 "All of the code should now be ready to go. Click <guiseq><gui>Build</"
 "gui><gui>Build Project</gui></guiseq> to build everything again, and then "
@@ -15670,8 +15800,8 @@ msgstr ""
 "construir todo otra vez y pulse <guiseq><gui>Ejecutar</gui><gui>Ejecutar</"
 "gui></guiseq> para iniciar la aplicación."
 
-#: C/guitar-tuner.c.page:253(section/p) C/guitar-tuner.cpp.page:251(section/p)
-#: C/guitar-tuner.vala.page:249(section/p)
+#: C/guitar-tuner.c.page:258(section/p) C/guitar-tuner.cpp.page:256(section/p)
+#: C/guitar-tuner.vala.page:254(section/p)
 msgid ""
 "If you haven't already done so, choose the <file>Debug/src/guitar-tuner</"
 "file> application in the dialog that appears. Finally, hit <gui>Run</gui> "
@@ -15681,23 +15811,23 @@ msgstr ""
 "guitarra</file> en el diálogo que aparece. Finalmente, pulse <gui>Ejecutar</"
 "gui> y disfrute."
 
-#: C/guitar-tuner.c.page:257(section/title)
-#: C/guitar-tuner.cpp.page:255(section/title)
-#: C/guitar-tuner.js.page:234(section/title)
-#: C/guitar-tuner.py.page:229(section/title)
-#: C/guitar-tuner.vala.page:253(section/title)
-#: C/image-viewer.c.page:222(section/title)
-#: C/image-viewer.cpp.page:210(section/title)
-#: C/image-viewer.js.page:311(section/title)
-#: C/image-viewer.py.page:225(section/title)
-#: C/image-viewer.vala.page:282(section/title)
-#: C/magic-mirror.vala.page:144(section/title)
-#: C/photo-wall.c.page:379(section/title)
-#: C/record-collection.js.page:291(section/title)
+#: C/guitar-tuner.c.page:262(section/title)
+#: C/guitar-tuner.cpp.page:260(section/title)
+#: C/guitar-tuner.js.page:241(section/title)
+#: C/guitar-tuner.py.page:239(section/title)
+#: C/guitar-tuner.vala.page:258(section/title)
+#: C/image-viewer.c.page:227(section/title)
+#: C/image-viewer.cpp.page:215(section/title)
+#: C/image-viewer.js.page:315(section/title)
+#: C/image-viewer.py.page:229(section/title)
+#: C/image-viewer.vala.page:287(section/title)
+#: C/magic-mirror.vala.page:149(section/title)
+#: C/photo-wall.c.page:399(section/title)
+#: C/record-collection.js.page:296(section/title)
 msgid "Reference Implementation"
 msgstr "Implementación de referencia"
 
-#: C/guitar-tuner.c.page:258(section/p)
+#: C/guitar-tuner.c.page:263(section/p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
 "<link href=\"guitar-tuner/guitar-tuner.c\">reference code</link>."
@@ -15705,42 +15835,42 @@ msgstr ""
 "Si tiene problemas con este tutorial, compare su código con este <link href="
 "\"guitar-tuner/guitar-tuner.c\">código de referencia</link>."
 
-#: C/guitar-tuner.c.page:262(section/title)
-#: C/guitar-tuner.cpp.page:268(section/title)
-#: C/guitar-tuner.py.page:234(section/title)
-#: C/guitar-tuner.vala.page:264(section/title)
-#: C/image-viewer.c.page:227(section/title)
-#: C/image-viewer.cpp.page:215(section/title)
-#: C/image-viewer.js.page:316(section/title)
-#: C/image-viewer.py.page:230(section/title)
-#: C/image-viewer.vala.page:287(section/title)
+#: C/guitar-tuner.c.page:267(section/title)
+#: C/guitar-tuner.cpp.page:273(section/title)
+#: C/guitar-tuner.py.page:244(section/title)
+#: C/guitar-tuner.vala.page:269(section/title)
+#: C/image-viewer.c.page:232(section/title)
+#: C/image-viewer.cpp.page:220(section/title)
+#: C/image-viewer.js.page:320(section/title)
+#: C/image-viewer.py.page:234(section/title)
+#: C/image-viewer.vala.page:292(section/title)
 msgid "Next steps"
 msgstr "Siguientes pasos"
 
-#: C/guitar-tuner.c.page:263(section/p) C/guitar-tuner.cpp.page:269(section/p)
-#: C/guitar-tuner.py.page:235(section/p)
-#: C/guitar-tuner.vala.page:265(section/p)
-#: C/image-viewer.c.page:228(section/p) C/image-viewer.cpp.page:216(section/p)
-#: C/image-viewer.js.page:317(section/p) C/image-viewer.py.page:231(section/p)
-#: C/image-viewer.vala.page:288(section/p)
+#: C/guitar-tuner.c.page:268(section/p) C/guitar-tuner.cpp.page:274(section/p)
+#: C/guitar-tuner.py.page:245(section/p)
+#: C/guitar-tuner.vala.page:270(section/p)
+#: C/image-viewer.c.page:233(section/p) C/image-viewer.cpp.page:221(section/p)
+#: C/image-viewer.js.page:321(section/p) C/image-viewer.py.page:235(section/p)
+#: C/image-viewer.vala.page:293(section/p)
 msgid "Here are some ideas for how you can extend this simple demonstration:"
 msgstr ""
 "Aquí hay algunas ideas sobre cómo puede extender esta sencilla demostración:"
 
-#: C/guitar-tuner.c.page:266(item/p) C/guitar-tuner.cpp.page:272(item/p)
-#: C/guitar-tuner.py.page:238(item/p) C/guitar-tuner.vala.page:268(item/p)
+#: C/guitar-tuner.c.page:271(item/p) C/guitar-tuner.cpp.page:277(item/p)
+#: C/guitar-tuner.py.page:248(item/p) C/guitar-tuner.vala.page:273(item/p)
 msgid "Have the program automatically cycle through the notes."
 msgstr "Hacer que el programa recorra las notas automáticamente."
 
-#: C/guitar-tuner.c.page:269(item/p) C/guitar-tuner.cpp.page:275(item/p)
-#: C/guitar-tuner.py.page:241(item/p) C/guitar-tuner.vala.page:271(item/p)
+#: C/guitar-tuner.c.page:274(item/p) C/guitar-tuner.cpp.page:280(item/p)
+#: C/guitar-tuner.py.page:251(item/p) C/guitar-tuner.vala.page:276(item/p)
 msgid "Make the program play recordings of real guitar strings being plucked."
 msgstr ""
 "Hacer que el programa reproduzca grabaciones de cuerdas de guitarras que se "
 "están afinando."
 
-#: C/guitar-tuner.c.page:270(item/p) C/guitar-tuner.cpp.page:276(item/p)
-#: C/guitar-tuner.py.page:242(item/p) C/guitar-tuner.vala.page:272(item/p)
+#: C/guitar-tuner.c.page:275(item/p) C/guitar-tuner.cpp.page:281(item/p)
+#: C/guitar-tuner.py.page:252(item/p) C/guitar-tuner.vala.page:277(item/p)
 msgid ""
 "To do this, you would need to set up a more complicated GStreamer pipeline "
 "which allows you to load and play back music files. You'll have to choose "
@@ -15756,8 +15886,8 @@ msgstr ""
 "en el formato del archivo de sus sonidos grabados; los MP3 usan elementos "
 "diferentes de los de los archivos Ogg Vorbis, por ejemplo."
 
-#: C/guitar-tuner.c.page:271(item/p) C/guitar-tuner.cpp.page:277(item/p)
-#: C/guitar-tuner.py.page:243(item/p) C/guitar-tuner.vala.page:273(item/p)
+#: C/guitar-tuner.c.page:276(item/p) C/guitar-tuner.cpp.page:282(item/p)
+#: C/guitar-tuner.py.page:253(item/p) C/guitar-tuner.vala.page:278(item/p)
 msgid ""
 "You might need to connect the elements in more complicated ways too. This "
 "could involve using <link href=\"http://gstreamer.freedesktop.org/data/doc/";
@@ -15775,13 +15905,13 @@ msgstr ""
 "section-intro-basics-pads.html\">interfaces</link>. Es posible que encuentre "
 "útil el comando <cmd>gst-inspect</cmd>."
 
-#: C/guitar-tuner.c.page:274(item/p) C/guitar-tuner.cpp.page:280(item/p)
-#: C/guitar-tuner.py.page:246(item/p) C/guitar-tuner.vala.page:276(item/p)
+#: C/guitar-tuner.c.page:279(item/p) C/guitar-tuner.cpp.page:285(item/p)
+#: C/guitar-tuner.py.page:256(item/p) C/guitar-tuner.vala.page:281(item/p)
 msgid "Automatically analyze notes that the user plays."
 msgstr "Analizar automáticamente las notas que toca el músico."
 
-#: C/guitar-tuner.c.page:275(item/p) C/guitar-tuner.cpp.page:281(item/p)
-#: C/guitar-tuner.py.page:247(item/p) C/guitar-tuner.vala.page:277(item/p)
+#: C/guitar-tuner.c.page:280(item/p) C/guitar-tuner.cpp.page:286(item/p)
+#: C/guitar-tuner.py.page:257(item/p) C/guitar-tuner.vala.page:282(item/p)
 msgid ""
 "You could connect a microphone and record sounds from it using an <link href="
 "\"http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-";
@@ -15807,11 +15937,11 @@ msgstr ""
 "Usar GTKmm y GStreamermm para construir un sencillo afinador de guitarra "
 "para GNOME. Muestra cómo usar el diseñador de interfaces."
 
-#: C/guitar-tuner.cpp.page:33(item/p)
+#: C/guitar-tuner.cpp.page:38(item/p)
 msgid "Basic knowledge of the C++ programming language"
 msgstr "Conocimiento básico del lenguaje de programación C++"
 
-#: C/guitar-tuner.cpp.page:47(item/p)
+#: C/guitar-tuner.cpp.page:52(item/p)
 msgid ""
 "Choose <gui>GTKmm (Simple)</gui> from the <gui>C++</gui> tab, click "
 "<gui>Forward</gui>, and fill out your details on the next few pages. Use "
@@ -15821,7 +15951,7 @@ msgstr ""
 "<gui>Adelante</gui> y rellene los detalles en las siguientes páginas. Use "
 "<file>afinador-guitarra</file> como nombre de proyecto y de carpeta."
 
-#: C/guitar-tuner.cpp.page:50(item/p)
+#: C/guitar-tuner.cpp.page:55(item/p)
 msgid ""
 "Make sure that <gui>Configure external packages</gui> is selected. On the "
 "next page, select <em>gstreamermm-0.10</em> from the list to include the "
@@ -15831,7 +15961,7 @@ msgstr ""
 "En la siguiente página, seleccione <em>gstreamermm-0.10</em> de la lista "
 "para incluir la biblioteca GStreamermm en su proyecto."
 
-#: C/guitar-tuner.cpp.page:54(item/p)
+#: C/guitar-tuner.cpp.page:59(item/p)
 msgid ""
 "Click <gui>Finished</gui> and the project will be created for you. Open "
 "<file>src/main.cc</file> from the <gui>Project</gui> or <gui>File</gui> "
@@ -15841,7 +15971,7 @@ msgstr ""
 "file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</gui>. Debería "
 "ver algo de código que comience con las líneas:"
 
-#: C/guitar-tuner.cpp.page:55(item/code)
+#: C/guitar-tuner.cpp.page:60(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -15852,7 +15982,7 @@ msgstr ""
 "#include &lt;gtkmm.h&gt;\n"
 "#include &lt;iostream&gt;"
 
-#: C/guitar-tuner.cpp.page:64(section/p) C/image-viewer.cpp.page:61(section/p)
+#: C/guitar-tuner.cpp.page:69(section/p) C/image-viewer.cpp.page:66(section/p)
 msgid ""
 "This is a very basic C++ code setting up GTKmm. More details are given "
 "below; skip this list if you understand the basics:"
@@ -15860,7 +15990,7 @@ msgstr ""
 "Esto es una configuración de código C++ usando GTKmm. Se ofrecen más "
 "detalles a continuación; omita esta lista si entiende los conceptos básicos:"
 
-#: C/guitar-tuner.cpp.page:68(item/p)
+#: C/guitar-tuner.cpp.page:73(item/p)
 msgid ""
 "The three <code>#include</code> lines at the top include the <code>config</"
 "code> (useful autoconf build defines), <code>gtkmm</code> (user interface) "
@@ -15872,7 +16002,7 @@ msgstr ""
 "autoconf), <code>gtkmm</code> (interfaz de usuario) <code>iostream</code> "
 "(STL). Las funciones de estas bibliotecas se usan en el resto del código."
 
-#: C/guitar-tuner.cpp.page:71(item/p)
+#: C/guitar-tuner.cpp.page:76(item/p)
 msgid ""
 "The <code>main</code> function creates a new window by opening a GtkBuilder "
 "file (<file>src/guitar-tuner.ui</file>, defined a few lines above) and then "
@@ -15886,7 +16016,7 @@ msgstr ""
 "descripción de la interfaz de usuario y de todos sus elementos. Puede usar "
 "el editor Anjuta para diseñar interfaces de usuario con GtkBuilder."
 
-#: C/guitar-tuner.cpp.page:74(item/p)
+#: C/guitar-tuner.cpp.page:79(item/p)
 msgid ""
 "Afterwards it calls a few functions which set up and then run the "
 "application. The <code>kit.run</code> function starts the GTKmm main loop, "
@@ -15898,7 +16028,7 @@ msgstr ""
 "GTKmm, que ejecuta la interfaz de usuario y empieza a escuchar eventos (como "
 "pulsaciones del ratón y del teclado)."
 
-#: C/guitar-tuner.cpp.page:99(item/p)
+#: C/guitar-tuner.cpp.page:104(item/p)
 msgid ""
 "While the button is still selected, change the <gui>Label</gui> property in "
 "the <gui>Widgets</gui> tab to <gui>E</gui>. This will be the low E string. "
@@ -15910,7 +16040,7 @@ msgstr ""
 "grave. Cambie también la propiedad <gui>Nombre</gui> a <gui>button_E</gui>. "
 "Este es el nombre al que se hará referencia más tarde en el código."
 
-#: C/guitar-tuner.cpp.page:103(item/p)
+#: C/guitar-tuner.cpp.page:108(item/p)
 msgid ""
 "Repeat the above steps for the other buttons, adding the next 5 strings with "
 "the labels <em>A</em>, <em>D</em>, <em>G</em>, <em>B</em>, and <em>e</em> "
@@ -15920,7 +16050,7 @@ msgstr ""
 "cuerdas restantes con las etiquetas <em>A</em>, <em>D</em>, <em>G</em>, "
 "<em>B</em>, y <em>e</em> y los nombres <em>boton_A</em>, etc."
 
-#: C/guitar-tuner.cpp.page:106(item/p)
+#: C/guitar-tuner.cpp.page:111(item/p)
 msgid ""
 "Save the UI design (by clicking <guiseq><gui>File</gui><gui>Save</gui></"
 "guiseq>) and close the file."
@@ -15928,7 +16058,7 @@ msgstr ""
 "Guarde el diseño de la IU (pulsando <guiseq><gui>Archivo</gui><gui>Guardar</"
 "gui></guiseq>) y cierre el archivo."
 
-#: C/guitar-tuner.cpp.page:113(section/p)
+#: C/guitar-tuner.cpp.page:118(section/p)
 msgid ""
 "GStreamer is GNOME's multimedia framework — you can use it for playing, "
 "recording, and processing video, audio, webcam streams and the like. Here, "
@@ -15940,11 +16070,11 @@ msgstr ""
 "similares. En este caso, se usará para generar tonos de frecuencia única. "
 "GStreamermm es la implementación de GStreamer en C++ que se usará aquí."
 
-#: C/guitar-tuner.cpp.page:123(section/title)
+#: C/guitar-tuner.cpp.page:128(section/title)
 msgid "Using GStreamermm"
 msgstr "Usar GStreamermm"
 
-#: C/guitar-tuner.cpp.page:124(section/p)
+#: C/guitar-tuner.cpp.page:129(section/p)
 msgid ""
 "To use GStreamermm, it has to be initialised. We do that by adding the "
 "following line of code next to the <code>Gtk::Main kit(argc, argv);</code> "
@@ -15954,12 +16084,12 @@ msgstr ""
 "siguiente línea de código junto a la línea <code>Gtk::Main kit(argc, argv);</"
 "code> en <file>main.cc</file>:"
 
-#: C/guitar-tuner.cpp.page:126(section/code)
+#: C/guitar-tuner.cpp.page:131(section/code)
 #, no-wrap
 msgid "\tGst::init (argc, argv);"
 msgstr "\tGst::init (argc, argv);"
 
-#: C/guitar-tuner.cpp.page:127(section/p)
+#: C/guitar-tuner.cpp.page:132(section/p)
 msgid ""
 "While we are on it, also make sure that the <file>gstreamermm.h</file> is "
 "included in <file>main.cc</file> properly."
@@ -15967,7 +16097,7 @@ msgstr ""
 "Mientras está con esto, asegúrese de que <file>gstreamermm.h</file> se "
 "incluye correctamente en <file>main.cc</file>."
 
-#: C/guitar-tuner.cpp.page:131(section/p)
+#: C/guitar-tuner.cpp.page:136(section/p)
 msgid ""
 "To simplify the handling of the pipeline we will define a helper class "
 "<code>Sound</code>. We do that in <file>main.cc</file> in order to keep this "
@@ -15977,7 +16107,7 @@ msgstr ""
 "code> auxiliar. Esto se hace en <file>main.cc</file> para mantener la "
 "sencillez de este ejemplo, pero puede querer usar un archivo aparte."
 
-#: C/guitar-tuner.cpp.page:134(section/code)
+#: C/guitar-tuner.cpp.page:139(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -16066,11 +16196,11 @@ msgstr ""
 "\treturn false;\n"
 "}\n"
 
-#: C/guitar-tuner.cpp.page:178(section/p)
+#: C/guitar-tuner.cpp.page:183(section/p)
 msgid "The code has the following purpose:"
 msgstr "El código tiene el propósito siguiente:"
 
-#: C/guitar-tuner.cpp.page:181(item/p)
+#: C/guitar-tuner.cpp.page:186(item/p)
 msgid ""
 "In the constructor, source and sink GStreamer elements (<code>Gst::Element</"
 "code>) are created, and a pipeline element (which will be used as a "
@@ -16090,7 +16220,7 @@ msgstr ""
 "predeterminada). Después de añadir los elementos a la tubería y de "
 "enlazarlos unos con otros, la tubería está lista para ejecutarse."
 
-#: C/guitar-tuner.cpp.page:184(item/p)
+#: C/guitar-tuner.cpp.page:189(item/p)
 msgid ""
 "<code>start_playing</code> sets the source element to play a particular "
 "frequency and then starts the pipeline so the sound actually starts playing. "
@@ -16103,7 +16233,7 @@ msgstr ""
 "tiempo, se establece un tiempo de expiración para detener la tubería después "
 "de 200 ms, llamando a <code>stop_playing</code>."
 
-#: C/guitar-tuner.cpp.page:189(item/p)
+#: C/guitar-tuner.cpp.page:194(item/p)
 msgid ""
 "In <code>stop_playing</code> which is called when the timeout has elapsed, "
 "the pipeline is stopped and as such there isn't any sound output anymore. As "
@@ -16117,11 +16247,11 @@ msgstr ""
 "<code>Glib::RefPtr</code>, la memoria se libera automáticamente una vez que "
 "la clase <code>Sound</code> se ha destruido."
 
-#: C/guitar-tuner.cpp.page:197(section/title)
+#: C/guitar-tuner.cpp.page:202(section/title)
 msgid "Connecting the signals"
 msgstr "Conectar las señales"
 
-#: C/guitar-tuner.cpp.page:198(section/p)
+#: C/guitar-tuner.cpp.page:203(section/p)
 msgid ""
 "We want to play the correct sound when the user clicks a button. That means "
 "that we have to connect to the signal that is fired when the user clicks the "
@@ -16135,7 +16265,7 @@ msgstr ""
 "llamada dependiendo del tono que reproducir. GTKmm hace que esto sea fácil "
 "ya que se puede vincular información con la biblioteca <em>sigc</em>."
 
-#: C/guitar-tuner.cpp.page:203(section/p)
+#: C/guitar-tuner.cpp.page:208(section/p)
 msgid ""
 "The function that is called when the user clicks a button can be pretty "
 "simple, as all the interesting stuff is done in the helper class now:"
@@ -16143,7 +16273,7 @@ msgstr ""
 "La función a la que se llama cuando el usuario pulsa un botón puede ser muy "
 "sencilla, ya que todo lo interesante se hace ahora en la clase auxiliar:"
 
-#: C/guitar-tuner.cpp.page:205(section/code)
+#: C/guitar-tuner.cpp.page:210(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -16160,7 +16290,7 @@ msgstr ""
 "\tsound-&gt;start_playing (frequency);\n"
 "}\n"
 
-#: C/guitar-tuner.cpp.page:212(section/p)
+#: C/guitar-tuner.cpp.page:217(section/p)
 msgid ""
 "It only calls the helper class we defined before to play the correct "
 "frequencies. With some more clever code we would also have been able to "
@@ -16172,7 +16302,7 @@ msgstr ""
 "conectado directamente con la clase sin usar la función, pero esto se dejará "
 "como ejercicio."
 
-#: C/guitar-tuner.cpp.page:216(section/p)
+#: C/guitar-tuner.cpp.page:221(section/p)
 msgid ""
 "The code to set up the signals should be added to the <code>main()</code> "
 "function just after the <code>builder-&gt;get_widget(\"main_window\", "
@@ -16182,7 +16312,7 @@ msgstr ""
 "()</code>, justo después de la línea <code>builder-&gt;get_widget"
 "(\"main_window\", main_win);</code>:"
 
-#: C/guitar-tuner.cpp.page:218(section/code)
+#: C/guitar-tuner.cpp.page:223(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -16201,7 +16331,7 @@ msgstr ""
 "button-&gt;signal_clicked().connect (sigc::bind&lt;double, 
Sound*&gt;(sigc::ptr_fun(&amp;on_button_clicked),\n"
 "                                              329.63, &amp;sound));\n"
 
-#: C/guitar-tuner.cpp.page:228(item/p)
+#: C/guitar-tuner.cpp.page:233(item/p)
 msgid ""
 "At first we create an instance of our helper class that we want to use now "
 "and declare a variable for the button we want to connect to."
@@ -16209,7 +16339,7 @@ msgstr ""
 "En primer lugar, se crea una instancia de la clase auxiliar que se quiere "
 "usar ahora y se declara una variable para el botón al que se quiere conectar."
 
-#: C/guitar-tuner.cpp.page:232(item/p)
+#: C/guitar-tuner.cpp.page:237(item/p)
 msgid ""
 "Next, we receive the button object from the user interface that was created "
 "out of the user interface file. Remember that <em>button_E</em> is the name "
@@ -16219,7 +16349,7 @@ msgstr ""
 "creó fuera del archivo de la interfaz de usuario. Recuerde que <em>button_E</"
 "em> es el nombre que se dio al primer botón."
 
-#: C/guitar-tuner.cpp.page:236(item/p)
+#: C/guitar-tuner.cpp.page:241(item/p)
 msgid ""
 "Finally we connect the <em>clicked</em> signal. This isn't fully "
 "straightforward because this is done in a fully type-safe way and we "
@@ -16239,7 +16369,7 @@ msgstr ""
 "adicionales al slot y, en este caso, se pasa la frecuencia (como «double») y "
 "la clase auxiliar."
 
-#: C/guitar-tuner.cpp.page:243(section/p)
+#: C/guitar-tuner.cpp.page:248(section/p)
 msgid ""
 "Now that we have set up the <em>E</em> button we also need to connect the "
 "other buttons according to their frequencies: 440 for A, 587.33 for D, "
@@ -16251,7 +16381,7 @@ msgstr ""
 "para G, 987.77 para B y 1318.5 para E agudo. Esto se hace de la misma "
 "manera, pasando simplemente una frecuencia diferente al manejador."
 
-#: C/guitar-tuner.cpp.page:250(section/p)
+#: C/guitar-tuner.cpp.page:255(section/p)
 msgid ""
 "All of the code should now be ready to go. Click <guiseq><gui>Build</"
 "gui><gui>Build Project</gui></guiseq> to build everything again, and then "
@@ -16262,7 +16392,7 @@ msgstr ""
 "construir todo otra vez y pulse <guiseq><gui>Ejecutar</gui><gui>Ejecutar</"
 "gui></guiseq> para iniciar la aplicación."
 
-#: C/guitar-tuner.cpp.page:256(section/p)
+#: C/guitar-tuner.cpp.page:261(section/p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
 "<link href=\"guitar-tuner/guitar-tuner.cc\">reference code</link>."
@@ -16270,11 +16400,11 @@ msgstr ""
 "Si tiene problemas con este tutorial, compare su código con este <link href="
 "\"guitar-tuner/guitar-tuner.cc\">código de referencia</link>."
 
-#: C/guitar-tuner.cpp.page:260(section/title)
+#: C/guitar-tuner.cpp.page:265(section/title)
 msgid "Further Reading"
 msgstr "Lecturas adicionales"
 
-#: C/guitar-tuner.cpp.page:261(section/p)
+#: C/guitar-tuner.cpp.page:266(section/p)
 msgid ""
 "Many of the things shown above are explained in detail in the <link href="
 "\"http://library.gnome.org/devel/gtkmm-tutorial/stable/\";>GTKmm book</link> "
@@ -16291,21 +16421,16 @@ msgstr ""
 
 #: C/guitar-tuner.js.page:6(info/title)
 msgctxt "text"
-msgid "Guitar Tuner (JavaScript)"
+msgid "Guitar tuner (JavaScript)"
 msgstr "Afinador de guitarra (JavaScript)"
 
 #: C/guitar-tuner.js.page:16(info/desc)
 msgid ""
-"Use Gtk+ and GStreamer to build a simple guitar tuner application for GNOME."
+"Use GTK+ and GStreamer to build a simple guitar tuner application for GNOME."
 msgstr ""
 "Usar GTK+ y GStreamer para construir un sencillo afinador de guitarra para "
 "GNOME."
 
-#: C/guitar-tuner.js.page:19(page/title) C/guitar-tuner.py.page:23(page/title)
-#: C/guitar-tuner.vala.page:26(page/title)
-msgid "2 Guitar Tuner"
-msgstr "2. Afinador de guitarra"
-
 #: C/guitar-tuner.js.page:22(synopsis/p)
 msgid ""
 "In this tutorial we'll construct a small application, Guitar Tuner, using "
@@ -16358,7 +16483,7 @@ msgid "<link xref=\"#terminal\">Running the application form Terminal</link>"
 msgstr ""
 "<link xref=\"#terminal\">Ejecutar la aplicación desde la terminal</link>"
 
-#: C/guitar-tuner.js.page:35(page/p) C/weatherApp.js.page:34(page/p)
+#: C/guitar-tuner.js.page:35(page/p) C/weatherApp.js.page:39(page/p)
 msgid "After reading this tutorial, you should see this in your screen:"
 msgstr "Después de leer este tutorial, debería ver esto en su pantalla:"
 
@@ -16678,25 +16803,25 @@ msgstr ""
 msgid ""
 "The method of connecting button clicks to playSound with the correct tune is "
 "by using the connect method of the button widget. So we choose a button to "
-"be connected and type E.connect(\"clicked\", function(){playSound"
-"(frequencies.E);}); The connect tells that when pushing E, something should "
-"happen. The \"clicked\" tells the type of something happening to E and then "
-"in the function(){}; we the playSound happen with the correct tune that "
-"should be associated to the button."
+"be connected and type <code>E.connect(\"clicked\", function(){playSound"
+"(frequencies.E);});</code> The <code>connect</code> tells that when pushing "
+"E, something should happen. The <code>clicked</code> tells the type of the "
+"signal happening to E and then in the <code>function(){};</code> we call "
+"playSound with the correct note that should be associated with the button."
 msgstr ""
 "La forma de conectar pulsaciones del ratón a «playSound» con la melodía "
-"correcta es usar el método «connect» del widget botón. Por lo que se elije "
-"un botón que conectar y se introduce «E.connect(\"clicked\", function()"
-"{playSound(frequencies.E);});» El «connect» indica que cuando se pulsa «E», "
-"algo debe pasar. El «clicked» indica el tipo de acción que interesa sobre "
-"«E» y después en la «function(){};» se llama a «playSound» con la melodía "
-"correcta que debe asociarse al botón."
-
-#: C/guitar-tuner.js.page:149(section/title)
+"correcta es usar el método «connect» del widget botón. Por lo que se elije un "
+"botón que conectar y se introduce <code>E.connect(\"clicked\", function()"
+"{playSound(frequencies.E);});</code> El <code>connect</code> indica que "
+"cuando se pulsa «E», algo debe pasar. El <code>clicked</code> indica el tipo "
+"de acción sucediendo sobre «E» y después en la <code>function(){};</code> se "
+"llama a «playSound» con la melodía correcta que debe asociarse al botón."
+
+#: C/guitar-tuner.js.page:156(section/title)
 msgid "The whole program"
 msgstr "El programa completo"
 
-#: C/guitar-tuner.js.page:150(section/p)
+#: C/guitar-tuner.js.page:157(section/p)
 msgid ""
 "So this is what all the parts combined looks like. When running this code, "
 "you should be able to tune your guitar(if you have correctly calibrated "
@@ -16706,7 +16831,7 @@ msgstr ""
 "debería poder afinar su guitarra (si tiene sus altavoces calibrados "
 "correctamente)."
 
-#: C/guitar-tuner.js.page:151(section/code)
+#: C/guitar-tuner.js.page:158(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -16861,11 +16986,11 @@ msgstr ""
 "guitarwindow.show();\n"
 "Gtk.main();"
 
-#: C/guitar-tuner.js.page:229(section/title)
+#: C/guitar-tuner.js.page:236(section/title)
 msgid "Running the application form Terminal"
 msgstr "Ejecutar la aplicación desde la terminal"
 
-#: C/guitar-tuner.js.page:230(section/p)
+#: C/guitar-tuner.js.page:237(section/p)
 msgid ""
 "To run this application open Terminal, go to the folder where your "
 "application is stored and then run"
@@ -16873,12 +16998,12 @@ msgstr ""
 "Para ejecutar esta aplicación ,abra una terminal, vaya a la carpeta donde "
 "está la aplicación y ejecute"
 
-#: C/guitar-tuner.js.page:230(section/screen)
+#: C/guitar-tuner.js.page:237(section/screen)
 #, no-wrap
 msgid " <output style=\"prompt\">$ </output><input> GJS_PATH=`pwd` gjs guitarTuner.js</input> "
 msgstr " <output style=\"prompt\">$ </output><input> GJS_PATH=`pwd` gjs guitarTuner.js</input> "
 
-#: C/guitar-tuner.js.page:235(section/p)
+#: C/guitar-tuner.js.page:242(section/p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
 "<link href=\"guitar-tuner/guitar-tuner.js\">reference code</link>."
@@ -16888,14 +17013,14 @@ msgstr ""
 
 #: C/guitar-tuner.py.page:7(info/title)
 msgctxt "text"
-msgid "Guitar Tuner (Python)"
+msgid "Guitar tuner (Python)"
 msgstr "Afinador de guitarra (Python)"
 
-#: C/guitar-tuner.py.page:35(item/p)
+#: C/guitar-tuner.py.page:45(item/p)
 msgid "Basic knowledge of the Python programming language"
 msgstr "Conocimiento básico del lenguaje de programación Python"
 
-#: C/guitar-tuner.py.page:49(item/p)
+#: C/guitar-tuner.py.page:59(item/p)
 msgid ""
 "Choose <gui>PyGTK (automake)</gui> from the <gui>Python</gui> tab, click "
 "<gui>Continue</gui>, and fill out your details on the next few pages. Use "
@@ -16906,7 +17031,7 @@ msgstr ""
 "páginas. Use <file>afinador-guiterra</file> como nombre del proyecto y de la "
 "carpeta."
 
-#: C/guitar-tuner.py.page:52(item/p)
+#: C/guitar-tuner.py.page:62(item/p)
 msgid ""
 "Click <gui>Apply</gui> and the project will be created for you. Open "
 "<file>src/guitar_tuner.py</file> from the <gui>Project</gui> or <gui>File</"
@@ -16916,7 +17041,7 @@ msgstr ""
 "guitarra.py</file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</"
 "gui>. Debería ver algo de código que comience con las líneas:"
 
-#: C/guitar-tuner.py.page:53(item/code)
+#: C/guitar-tuner.py.page:63(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -16927,11 +17052,11 @@ msgstr ""
 "from gi.repository import Gtk, GdkPixbuf, Gdk\n"
 "import os, sys"
 
-#: C/guitar-tuner.py.page:61(section/title)
+#: C/guitar-tuner.py.page:71(section/title)
 msgid "Run the code for the first time"
 msgstr "Ejecutar el código por primera vez"
 
-#: C/guitar-tuner.py.page:62(section/p)
+#: C/guitar-tuner.py.page:72(section/p)
 msgid ""
 "Most of the code in the file is template code. It loads an (empty) window "
 "from the user interface description file and shows it. More details are "
@@ -16942,7 +17067,7 @@ msgstr ""
 "muestra. Se ofrecen más detalles a continuación; omita esta lista si "
 "entiende los conceptos básicos:"
 
-#: C/guitar-tuner.py.page:66(item/p)
+#: C/guitar-tuner.py.page:76(item/p)
 msgid ""
 "The <code>import</code> lines at the top include the tell Python to load the "
 "user interface and system libraries needed."
@@ -16950,7 +17075,7 @@ msgstr ""
 "Las líneas <code>import</code> en la parte superior indican a Python que "
 "cargue la interfaz de usuario y las bibliotecas del sistema necesarias."
 
-#: C/guitar-tuner.py.page:70(item/p)
+#: C/guitar-tuner.py.page:80(item/p)
 msgid ""
 "A class is declared that will be the main class for our application. In the "
 "<code>__init__</code> method the main window is loaded from the GtkBuilder "
@@ -16961,7 +17086,7 @@ msgstr ""
 "archivo de GtkBuilder (<file>src/guitar-tuner.ui</file>) y se conectan las "
 "señales."
 
-#: C/guitar-tuner.py.page:73(item/p)
+#: C/guitar-tuner.py.page:83(item/p)
 msgid ""
 "Connecting signals is how you define what happens when you push a button, or "
 "when some other event happens. Here, the <code>destroy</code> method is "
@@ -16971,7 +17096,7 @@ msgstr ""
 "cuando ocurre algún otro evento. Aquí, se llama al método <code>destroy</"
 "code> (y se sale de la aplicación) cuando cierra la ventana."
 
-#: C/guitar-tuner.py.page:76(item/p)
+#: C/guitar-tuner.py.page:86(item/p)
 msgid ""
 "The <code>main</code> function is run by default when you start a Python "
 "application. It just creates an instance of the main class and starts the "
@@ -16981,7 +17106,7 @@ msgstr ""
 "inicia una aplicación Python. Simplemente crea una instancia de la clase "
 "principal e inicia el bucle principal para mostrar la ventana."
 
-#: C/guitar-tuner.py.page:81(section/p)
+#: C/guitar-tuner.py.page:91(section/p)
 msgid ""
 "This code is ready to be used, so you can run it by clicking "
 "<guiseq><gui>Run</gui><gui>Execute</gui></guiseq>."
@@ -16989,7 +17114,7 @@ msgstr ""
 "Este código está listo para usarse, por lo que puede ejecutarlo pulsando "
 "<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq>."
 
-#: C/guitar-tuner.py.page:86(section/p)
+#: C/guitar-tuner.py.page:96(section/p)
 msgid ""
 "A description of the user interface (UI) is contained in the GtkBuilder "
 "file. To edit the user interface, open <file>src/guitar_tuner.ui</file>. "
@@ -17003,11 +17128,11 @@ msgstr ""
 "en el centro; los widgets y sus propiedades están a la derecha, y la paleta "
 "de los widgets disponibles está a la izquierda."
 
-#: C/guitar-tuner.py.page:116(section/title)
+#: C/guitar-tuner.py.page:126(section/title)
 msgid "Write the signal handler"
 msgstr "Escribir el manejador de señales"
 
-#: C/guitar-tuner.py.page:118(section/p)
+#: C/guitar-tuner.py.page:128(section/p)
 msgid ""
 "To do this, open <file>guitar_tuner.py</file> while the user interface file "
 "is still open. Switch to the <gui>Signals</gui> tab, which you already used "
@@ -17022,7 +17147,7 @@ msgstr ""
 "código fuente, dentro de la clase principal. Se añadirá el siguiente código "
 "a su archivo de código fuente:"
 
-#: C/guitar-tuner.py.page:120(section/code)
+#: C/guitar-tuner.py.page:130(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -17031,7 +17156,7 @@ msgstr ""
 "\n"
 "def on_button_clicked (self, button):\n"
 
-#: C/guitar-tuner.py.page:124(section/p)
+#: C/guitar-tuner.py.page:134(section/p)
 msgid ""
 "This signal handler has two arguments: the usual Python class pointer, and "
 "the <code>Gtk.Button</code> that called the function."
@@ -17039,7 +17164,7 @@ msgstr ""
 "Este manejador de la señal tiene dos argumentos: el puntero de clase Python "
 "habitual y el <code>Gtk.Button</code> que llamó a la función."
 
-#: C/guitar-tuner.py.page:142(section/p)
+#: C/guitar-tuner.py.page:152(section/p)
 msgid ""
 "Change the import line in <file>guitar_tuner.py</file>, just at the "
 "beginning to :"
@@ -17047,12 +17172,12 @@ msgstr ""
 "Cambie la línea de importación en <file>afinador_guitarra.py</file>, justo "
 "al principio, por:"
 
-#: C/guitar-tuner.py.page:143(section/code)
+#: C/guitar-tuner.py.page:153(section/code)
 #, no-wrap
 msgid "from gi.repository import Gtk, Gst, GObject "
 msgstr "from gi.repository import Gtk, Gst, GObject "
 
-#: C/guitar-tuner.py.page:144(section/p)
+#: C/guitar-tuner.py.page:154(section/p)
 msgid ""
 "The <code>Gst</code> includes the GStreamer library. You also need to "
 "initialise GStreamer properly which is done in the <code>main()</code> "
@@ -17063,12 +17188,12 @@ msgstr ""
 "<code>main()</code> con esta llamada añadida encima de la línea <code>app = "
 "GUI()</code>:"
 
-#: C/guitar-tuner.py.page:147(section/code)
+#: C/guitar-tuner.py.page:157(section/code)
 #, no-wrap
 msgid "Gst.init_check(sys.argv)"
 msgstr "Gst.init_check(sys.argv)"
 
-#: C/guitar-tuner.py.page:148(section/p)
+#: C/guitar-tuner.py.page:158(section/p)
 msgid ""
 "Then, copy the following function into the class in <file>guitar_tuner.py</"
 "file> somewhere:"
@@ -17076,7 +17201,7 @@ msgstr ""
 "Después, copie la siguiente función en la de <file>guitar_tuner.py</file>, "
 "en cualquier sitio:"
 
-#: C/guitar-tuner.py.page:149(section/code)
+#: C/guitar-tuner.py.page:159(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -17107,7 +17232,7 @@ msgstr ""
 "\n"
 "\tGObject.timeout_add(self.LENGTH, self.pipeline_stop, pipeline)"
 
-#: C/guitar-tuner.py.page:164(item/p)
+#: C/guitar-tuner.py.page:174(item/p)
 msgid ""
 "The first three lines create source and sink GStreamer elements and a "
 "pipeline element (which will be used as a container for the other two "
@@ -17123,7 +17248,7 @@ msgstr ""
 "sumidero se llama «output» y se asocia con el sumidero <code>autoaudiosink</"
 "code> (la salida de la tarjeta de sonido predeterminada)."
 
-#: C/guitar-tuner.py.page:167(item/p)
+#: C/guitar-tuner.py.page:177(item/p)
 msgid ""
 "The call to <code>source.set_property</code> sets the <code>freq</code> "
 "property of the source element to <code>frequency</code>, which was passed "
@@ -17137,7 +17262,7 @@ msgstr ""
 "frecuencia de la nota en Hercios; más adelante se definirán algunas "
 "frecuencias útiles."
 
-#: C/guitar-tuner.py.page:170(item/p)
+#: C/guitar-tuner.py.page:180(item/p)
 msgid ""
 "The next two lines call <code>pipeline.add</code>, putting the source and "
 "sink into the pipeline. The pipeline can contain multiple other GStreamer "
@@ -17149,7 +17274,7 @@ msgstr ""
 "elementos de GStreamer. En general, puede añadir tantos elementos como "
 "quiera a una tubería llamando al método <code>add</code> repetidamente."
 
-#: C/guitar-tuner.py.page:173(item/p)
+#: C/guitar-tuner.py.page:183(item/p)
 msgid ""
 "Next <code>pipeline.set_state</code> is used to start playback, by setting "
 "the state of the pipeline to playing (<code>Gst.State.PLAYING</code>)."
@@ -17158,7 +17283,7 @@ msgstr ""
 "reproducción, estableciendo el estado de la tubería a «playing» (<code>Gst."
 "State.PLAYING</code>)."
 
-#: C/guitar-tuner.py.page:181(section/p)
+#: C/guitar-tuner.py.page:191(section/p)
 msgid ""
 "We don't want to play an annoying tone forever, so the last thing "
 "<code>play_sound</code> does is to call <code>GObject.timeout_add</code>. "
@@ -17174,7 +17299,7 @@ msgstr ""
 "<code>pipeline_stop</code>, y se queda llamando a <code>pipeline_stop</code> "
 "hasta que devuelve <code>False</code>."
 
-#: C/guitar-tuner.py.page:182(section/p)
+#: C/guitar-tuner.py.page:192(section/p)
 msgid ""
 "Now, we'll write the <code>pipeline_stop</code> function which is called by "
 "<code>GObject.timeout_add</code>. Insert the following code <em>above</em> "
@@ -17184,7 +17309,7 @@ msgstr ""
 "llamada por <code>GObject.timeout_add</code>. Inserte el código siguiente "
 "<em>encima</em> de la función <code>play_sound</code>:"
 
-#: C/guitar-tuner.py.page:183(section/code)
+#: C/guitar-tuner.py.page:193(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -17197,7 +17322,7 @@ msgstr ""
 "\tpipeline.set_state(Gst.State.PAUSED)\n"
 "\treturn False\n"
 
-#: C/guitar-tuner.py.page:188(section/p)
+#: C/guitar-tuner.py.page:198(section/p)
 msgid ""
 "You need to define the <code>LENGTH</code> constant inside the class, so add "
 "this code at the beginning of the main class:"
@@ -17205,7 +17330,7 @@ msgstr ""
 "Necesita definir la constante <code>LENGTH</code> dentro de la clase, por lo "
 "que debe añadir este código al principio de la clase principal:"
 
-#: C/guitar-tuner.py.page:190(section/code)
+#: C/guitar-tuner.py.page:200(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -17214,7 +17339,7 @@ msgstr ""
 "\n"
 "LENGTH = 500\n"
 
-#: C/guitar-tuner.py.page:193(section/p)
+#: C/guitar-tuner.py.page:203(section/p)
 msgid ""
 "The call to <code>pipeline.set_state</code> pauses the playback of the "
 "pipeline."
@@ -17222,7 +17347,7 @@ msgstr ""
 "La llamada a <code>pipeline.set_state</code> pausa la reproducción de la "
 "tubería"
 
-#: C/guitar-tuner.py.page:198(section/p)
+#: C/guitar-tuner.py.page:208(section/p)
 msgid ""
 "We want to play the correct sound when the user clicks a button. First of "
 "all, we need to know the frequencies for the six guitar strings, which are "
@@ -17235,7 +17360,7 @@ msgstr ""
 "un diccionario, por lo que se pueden mapear fácilmente con los nombres de "
 "las cuerdas:"
 
-#: C/guitar-tuner.py.page:200(section/code)
+#: C/guitar-tuner.py.page:210(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -17260,7 +17385,7 @@ msgstr ""
 "\t'e': 1318.5\n"
 "}\n"
 
-#: C/guitar-tuner.py.page:212(section/code)
+#: C/guitar-tuner.py.page:222(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -17277,7 +17402,7 @@ msgstr ""
 "\n"
 "\tself.play_sound (self.frequencies[text])\n"
 
-#: C/guitar-tuner.py.page:219(section/p)
+#: C/guitar-tuner.py.page:229(section/p)
 msgid ""
 "The button that was clicked is passed as an argument (<code>button</code>) "
 "to <code>on_button_clicked</code>. We can get the label of that button by "
@@ -17289,7 +17414,7 @@ msgstr ""
 "usando <code>button.get_child</code>, y obteniendo entonces el texto de esa "
 "etiqueta usando <code>label.get_label</code>."
 
-#: C/guitar-tuner.py.page:220(section/p)
+#: C/guitar-tuner.py.page:230(section/p)
 msgid ""
 "The label text is then used as a key for the dictionary and "
 "<code>play_sound</code> is called with the frequency appropriate for that "
@@ -17299,14 +17424,14 @@ msgstr ""
 "<code>play_sound</code> con la frecuencia correspondiente a esa nota. Esto "
 "reproduce el tono; el afinador de guitarra ya está funcionando."
 
-#: C/guitar-tuner.py.page:224(section/title)
-#: C/image-viewer.js.page:306(section/title)
-#: C/image-viewer.py.page:220(section/title)
-#: C/record-collection.js.page:286(section/title)
+#: C/guitar-tuner.py.page:234(section/title)
+#: C/image-viewer.js.page:310(section/title)
+#: C/image-viewer.py.page:224(section/title)
+#: C/record-collection.js.page:291(section/title)
 msgid "Run the application"
 msgstr "Ejecutar la aplicación"
 
-#: C/guitar-tuner.py.page:225(section/p)
+#: C/guitar-tuner.py.page:235(section/p)
 msgid ""
 "All of the code should now be ready to go. Click <guiseq><gui>Run</"
 "gui><gui>Execute</gui></guiseq> to start the application. Enjoy!"
@@ -17315,7 +17440,7 @@ msgstr ""
 "<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq> para iniciar la "
 "aplicación y disfrute."
 
-#: C/guitar-tuner.py.page:230(section/p)
+#: C/guitar-tuner.py.page:240(section/p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
 "<link href=\"guitar-tuner/guitar-tuner.py\">reference code</link>."
@@ -17324,9 +17449,15 @@ msgstr ""
 "\"guitar-tuner/guitar-tuner.py\">código de referencia</link>."
 
 #: C/guitar-tuner.vala.page:9(info/desc)
+#, fuzzy
+#| msgid ""
+#| "Use <link href=\"http://developer.gnome.org/platform-overview/stable/gtk";
+#| "\">Gtk+</link> and <link href=\"http://developer.gnome.org/platform-";
+#| "overview/stable/gstreamer\">GStreamer</link> to build a simple guitar "
+#| "tuner application for GNOME. Shows off how to use the interface designer."
 msgid ""
 "Use <link href=\"http://developer.gnome.org/platform-overview/stable/gtk";
-"\">Gtk+</link> and <link href=\"http://developer.gnome.org/platform-overview/";
+"\">GTK+</link> and <link href=\"http://developer.gnome.org/platform-overview/";
 "stable/gstreamer\">GStreamer</link> to build a simple guitar tuner "
 "application for GNOME. Shows off how to use the interface designer."
 msgstr ""
@@ -17335,7 +17466,7 @@ msgstr ""
 "stable/gstreamer\">GStreamer</link> para construir un sencillo afinador de "
 "guitarra para GNOME. Muestra cómo usar el diseñador de interfaces."
 
-#: C/guitar-tuner.vala.page:29(synopsis/p)
+#: C/guitar-tuner.vala.page:34(synopsis/p)
 msgid ""
 "In this tutorial you will create an application which plays tones that you "
 "can use to tune a guitar. You will learn how to:"
@@ -17343,7 +17474,7 @@ msgstr ""
 "En este tutorial se va a hacer un programa que reproduce tonos que puede "
 "usar para afinar su guitarra. Aprenderá a:"
 
-#: C/guitar-tuner.vala.page:31(item/p)
+#: C/guitar-tuner.vala.page:36(item/p)
 msgid ""
 "Set up a basic project using the <link xref=\"getting-ready\">Anjuta IDE</"
 "link>."
@@ -17351,11 +17482,11 @@ msgstr ""
 "Configurar un proyecto básico usando el <link xref=\"getting-ready\">EID "
 "Anjuta</link>."
 
-#: C/guitar-tuner.vala.page:32(item/p)
+#: C/guitar-tuner.vala.page:37(item/p)
 msgid "Create a simple GUI with <app>Anjuta</app>'s UI designer."
 msgstr "Crear una IGU sencilla con el diseñador de IU de <app>Anjuta</app>."
 
-#: C/guitar-tuner.vala.page:33(item/p)
+#: C/guitar-tuner.vala.page:38(item/p)
 msgid ""
 "Use the <link href=\"http://developer.gnome.org/platform-overview/stable/";
 "gstreamer\">GStreamer</link> library to play sounds."
@@ -17363,7 +17494,7 @@ msgstr ""
 "Usar la biblioteca <link href=\"http://developer.gnome.org/platform-overview/";
 "stable/gstreamer\">GStreamer</link> para reproducir sonidos."
 
-#: C/guitar-tuner.vala.page:37(item/p) C/image-viewer.vala.page:42(item/p)
+#: C/guitar-tuner.vala.page:42(item/p) C/image-viewer.vala.page:47(item/p)
 msgid ""
 "Basic knowledge of the <link href=\"https://live.gnome.org/Vala/Tutorial";
 "\">Vala</link> programming language."
@@ -17371,15 +17502,15 @@ msgstr ""
 "Conocimiento básico del lenguaje de programación <link href=\"https://live.";
 "gnome.org/Vala/Tutorial\">Vala</link>."
 
-#: C/guitar-tuner.vala.page:38(item/p) C/image-viewer.vala.page:43(item/p)
+#: C/guitar-tuner.vala.page:43(item/p) C/image-viewer.vala.page:48(item/p)
 msgid "An installed copy of <app>Anjuta</app>."
 msgstr "Una copia instalada de <app>Anjuta</app>."
 
-#: C/guitar-tuner.vala.page:45(section/title)
+#: C/guitar-tuner.vala.page:50(section/title)
 msgid "Create a project in <app>Anjuta</app>"
 msgstr "Crear un proyecto en <app>Anjuta</app>"
 
-#: C/guitar-tuner.vala.page:49(item/p) C/image-viewer.vala.page:57(item/p)
+#: C/guitar-tuner.vala.page:54(item/p) C/image-viewer.vala.page:62(item/p)
 msgid ""
 "Start <app>Anjuta</app> and click <gui>Create a new project</gui> or "
 "<guiseq><gui>File</gui><gui>New</gui><gui>Project</gui></guiseq> to open the "
@@ -17389,9 +17520,14 @@ msgstr ""
 "<guiseq><gui>Archivo</gui><gui>Nuevo</gui><gui>Proyecto</gui></guiseq> para "
 "abrir el asistente de proyectos."
 
-#: C/guitar-tuner.vala.page:52(item/p)
+#: C/guitar-tuner.vala.page:57(item/p)
+#, fuzzy
+#| msgid ""
+#| "Click on the <gui>Vala</gui> tab and select <gui>Gtk+ (Simple)</gui>. "
+#| "Click <gui>Continue</gui>, and fill out your details on the next few "
+#| "pages. Use <file>guitar-tuner</file> as project name and directory."
 msgid ""
-"Click on the <gui>Vala</gui> tab and select <gui>Gtk+ (Simple)</gui>. Click "
+"Click on the <gui>Vala</gui> tab and select <gui>GTK+ (Simple)</gui>. Click "
 "<gui>Continue</gui>, and fill out your details on the next few pages. Use "
 "<file>guitar-tuner</file> as project name and directory."
 msgstr ""
@@ -17400,19 +17536,19 @@ msgstr ""
 "páginas. Use <file>afinador-guitarra</file> como nombre del proyecto y de la "
 "carpeta."
 
-#: C/guitar-tuner.vala.page:55(item/p)
+#: C/guitar-tuner.vala.page:60(item/p)
 msgid ""
 "Make sure that <gui>Configure external packages</gui> is switched <gui>ON</"
-"gui>. On the next page, select <link href=\"http://valadoc.org/";
-"gstreamer-0.10/index.htm\"><em>gstreamer-0.10</em></link> from the list to "
-"include the GStreamer library in your project. Click <gui>Continue</gui>"
+"gui>. On the next page, select <link href=\"http://valadoc.org/gstreamer-";
+"0.10/index.htm\"><em>gstreamer-0.10</em></link> from the list to include the "
+"GStreamer library in your project. Click <gui>Continue</gui>"
 msgstr ""
 "Asegúrese de que <gui>Configurar paquetes externos</gui> está <gui>activada</"
 "gui>. En la siguiente página, seleccione <link href=\"http://valadoc.org/";
 "gstreamer-0.10/index.htm\"><em>gstreamer-0.10</em></link> de la lista para "
 "incluir la biblioteca GStreamer en su proyecto. Pulse <gui>Continuar</gui>"
 
-#: C/guitar-tuner.vala.page:59(item/p)
+#: C/guitar-tuner.vala.page:64(item/p)
 msgid ""
 "Click <gui>Apply</gui> and the project will be created for you. From the "
 "<gui>Project</gui> or <gui>Files</gui> tab, open <file>src/guitar_tuner."
@@ -17424,8 +17560,8 @@ msgstr ""
 "<gui>Archivo</gui> pulsando dos veces sobre él. Debería ver algo de código "
 "que comience con las líneas:"
 
-#: C/guitar-tuner.vala.page:60(item/code)
-#: C/magic-mirror.vala.page:64(item/code)
+#: C/guitar-tuner.vala.page:65(item/code)
+#: C/magic-mirror.vala.page:69(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -17436,7 +17572,7 @@ msgstr ""
 "using GLib;\n"
 "using Gtk;"
 
-#: C/guitar-tuner.vala.page:69(section/p)
+#: C/guitar-tuner.vala.page:74(section/p)
 msgid ""
 "The code loads an (empty) window from the user interface description file "
 "and displays it. More details are given below; you may choose to skip this "
@@ -17446,7 +17582,7 @@ msgstr ""
 "interfaz de usuario y la muestra. Se ofrecen más detalles a continuación; "
 "omita esta lista si entiende los conceptos básicos:"
 
-#: C/guitar-tuner.vala.page:73(item/p) C/magic-mirror.vala.page:76(item/p)
+#: C/guitar-tuner.vala.page:78(item/p) C/magic-mirror.vala.page:81(item/p)
 msgid ""
 "The two <code>using</code> lines import namespaces so we don't have to name "
 "them explicitly."
@@ -17454,7 +17590,7 @@ msgstr ""
 "Las dos líneas <code>using</code> importan espacios de nombres, por lo que "
 "no hay que nombrarlas explícitamente."
 
-#: C/guitar-tuner.vala.page:76(item/p)
+#: C/guitar-tuner.vala.page:81(item/p)
 msgid ""
 "The constructor of the <code>Main</code> class creates a new window by "
 "opening a GtkBuilder file (<file>src/guitar-tuner.ui</file>, defined a few "
@@ -17470,7 +17606,7 @@ msgstr ""
 "de usuario y de todos sus elementos. Puede usar el editor Anjuta para "
 "diseñar interfaces de usuario con GtkBuilder."
 
-#: C/guitar-tuner.vala.page:78(note/p)
+#: C/guitar-tuner.vala.page:83(note/p)
 msgid ""
 "Connecting signals is how you define what happens when you push a button, or "
 "when some other event happens. Here, the <code>on_destroy</code> function is "
@@ -17481,7 +17617,7 @@ msgstr ""
 "<code>on_destroy</code> (y se sale de la aplicación) cuando cierra la "
 "ventana."
 
-#: C/guitar-tuner.vala.page:82(item/p)
+#: C/guitar-tuner.vala.page:87(item/p)
 msgid ""
 "The static <code>main</code> function is run by default when you start a "
 "Vala application. It calls a few functions which create the Main class, set "
@@ -17496,7 +17632,7 @@ msgstr ""
 "usuario y empieza a escuchar eventos (como pulsaciones del ratón y del "
 "teclado)."
 
-#: C/guitar-tuner.vala.page:86(section/p)
+#: C/guitar-tuner.vala.page:91(section/p)
 msgid ""
 "This code is ready to be used, so you can compile it by clicking "
 "<guiseq><gui>Build</gui><gui>Build Project</gui></guiseq> (or press "
@@ -17513,7 +17649,7 @@ msgstr ""
 "carpeta de construcción. Sólo tendrá que hacer esto una vez, para la primera "
 "construcción."
 
-#: C/guitar-tuner.vala.page:91(section/p)
+#: C/guitar-tuner.vala.page:96(section/p)
 msgid ""
 "A description of the user interface (UI) is contained in the GtkBuilder file "
 "<file>src/guitar_tuner.ui</file> defined at the top of the class. To edit "
@@ -17532,7 +17668,7 @@ msgstr ""
 "sus propiedades están a la izquierda, y la <gui>Paleta</gui> de los widgets "
 "disponibles está a la derecha."
 
-#: C/guitar-tuner.vala.page:93(section/p)
+#: C/guitar-tuner.vala.page:98(section/p)
 msgid ""
 "The layout of every UI in GTK+ is organized using boxes and tables. Let's "
 "use a vertical GtkButtonBox here to assign six GtkButtons, one for each of "
@@ -17542,7 +17678,7 @@ msgstr ""
 "Aquí se usará una GtkButtonBox vertical para asignar seis GtkButtons, uno "
 "para cada una de las cuerdas de la guitarra."
 
-#: C/guitar-tuner.vala.page:99(item/p)
+#: C/guitar-tuner.vala.page:104(item/p)
 msgid ""
 "In the <gui>Palette</gui> tab, from the <gui>Containers</gui> section, "
 "select a <gui>Button Box</gui> (GtkButtonBox) by clicking on the icon. Then "
@@ -17556,7 +17692,7 @@ msgstr ""
 "ventana. Se mostrará un diálogo donde puede establecer el <gui>Número de "
 "elementos</gui> a <input>6</input>. Luego pulse en <gui>Crear</gui>."
 
-#: C/guitar-tuner.vala.page:100(note/p)
+#: C/guitar-tuner.vala.page:105(note/p)
 msgid ""
 "You can also change the <gui>Number of elements</gui> and the "
 "<gui>Orientation</gui> in the <gui>General</gui> tab on the right."
@@ -17564,7 +17700,7 @@ msgstr ""
 "También puede cambiar el <gui>Número de elementos</gui> y la "
 "<gui>Orientación</gui> en la pestaña <gui>General</gui> a la derecha."
 
-#: C/guitar-tuner.vala.page:104(item/p)
+#: C/guitar-tuner.vala.page:109(item/p)
 msgid ""
 "Now, from the <gui>Control and Display</gui> section of the <gui>Palette</"
 "gui> choose a <gui>Button</gui> (GtkButton) by clicking on it. Place it into "
@@ -17574,7 +17710,7 @@ msgstr ""
 "gui> elija un <gui>Botón</gui> (GtkButton) pulsando sobre él. Sitúelo en la "
 "primera sección de la GtkButtonBox pulsando sobre ella."
 
-#: C/guitar-tuner.vala.page:107(item/p)
+#: C/guitar-tuner.vala.page:112(item/p)
 msgid ""
 "While the button is still selected, scroll down in the <gui>General</gui> "
 "tab on the right to the <gui>Label</gui> property, and change it to <gui>E</"
@@ -17584,7 +17720,7 @@ msgstr ""
 "en la pestaña <gui>General</gui> a <gui>E</gui>. Esta será la cuerda Mi "
 "grave de la guitarra."
 
-#: C/guitar-tuner.vala.page:108(note/p)
+#: C/guitar-tuner.vala.page:113(note/p)
 msgid ""
 "The <gui>General</gui> tab is located in the <gui>Widgets</gui> section on "
 "the right."
@@ -17592,7 +17728,7 @@ msgstr ""
 "La pestaña <gui>General</gui> se encuentra en la sección <gui>Widgets</gui> "
 "de la derecha."
 
-#: C/guitar-tuner.vala.page:113(item/p)
+#: C/guitar-tuner.vala.page:118(item/p)
 msgid ""
 "Click on the <gui>Signals</gui> tab in the <gui>Widgets</gui> section on the "
 "right, and look for the <code>clicked</code> signal of the button. You can "
@@ -17608,7 +17744,7 @@ msgstr ""
 "<code>main_on_button_clicked</code> en la columna <gui>Manejador</gui> y "
 "pulse <key>Intro</key>."
 
-#: C/guitar-tuner.vala.page:126(section/p)
+#: C/guitar-tuner.vala.page:131(section/p)
 msgid ""
 "This section will show you how to create the code to produce sounds. <link "
 "href=\"http://developer.gnome.org/platform-overview/stable/gstreamer";
@@ -17623,7 +17759,7 @@ msgstr ""
 "web y similares. En este caso, se usará para generar tonos de frecuencia "
 "única."
 
-#: C/guitar-tuner.vala.page:127(section/p)
+#: C/guitar-tuner.vala.page:132(section/p)
 msgid ""
 "Conceptually, GStreamer works as follows: You create a <link href=\"http://";
 "gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-intro-"
@@ -17640,7 +17776,7 @@ msgstr ""
 "imagen, un vídeo o un archivo de música, y la salida puede ser un widget o "
 "la tarjeta de sonido."
 
-#: C/guitar-tuner.vala.page:136(section/p)
+#: C/guitar-tuner.vala.page:141(section/p)
 msgid ""
 "In this example we will use a tone generator source called "
 "<code>audiotestsrc</code> and send the output to the default system sound "
@@ -17654,7 +17790,7 @@ msgstr ""
 "frecuencia del generador de tonos; esto es accesible a través de la "
 "propiedad <code>freq</code> de <code>audiotestsrc</code>."
 
-#: C/guitar-tuner.vala.page:138(section/p)
+#: C/guitar-tuner.vala.page:143(section/p)
 msgid ""
 "We need to add a line to initialize GStreamer; put the following code on the "
 "line above the <code>Gtk.init</code> call in the <code>main</code> function:"
@@ -17663,12 +17799,12 @@ msgstr ""
 "código encima de la llamada a <code>Gtk.init</code>, en la función "
 "<code>main</code>:"
 
-#: C/guitar-tuner.vala.page:139(section/code)
+#: C/guitar-tuner.vala.page:144(section/code)
 #, no-wrap
 msgid "Gst.init (ref args);"
 msgstr "Gst.init (ref args);"
 
-#: C/guitar-tuner.vala.page:140(section/p)
+#: C/guitar-tuner.vala.page:145(section/p)
 msgid ""
 "Then, copy the following function into <file>guitar_tuner.vala</file> inside "
 "our <code>Main</code> class:"
@@ -17676,7 +17812,7 @@ msgstr ""
 "Después, copie la siguiente función en <file>guitar_tuner.vala</file> dentro "
 "de la clase <code>Main</code>:"
 
-#: C/guitar-tuner.vala.page:141(section/code)
+#: C/guitar-tuner.vala.page:146(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -17743,7 +17879,7 @@ msgstr ""
 "\ttime.attach(null);\n"
 "}"
 
-#: C/guitar-tuner.vala.page:175(item/p)
+#: C/guitar-tuner.vala.page:180(item/p)
 msgid ""
 "The first three lines create source and sink GStreamer elements (<link href="
 "\"http://valadoc.org/gstreamer-0.10/Gst.Element.html\";><code>Gst.Element</"
@@ -17761,12 +17897,12 @@ msgstr ""
 "gstreamer-0.10/Gst.Pipeline.html\">elemento de tubería</link> (que se usará "
 "como contenedor de los otros dos elementos). Son variables de clase, por lo "
 "que se definen fuera del método. A la tubería se le asigna el nombre «note»; "
-"la fuente se llama «source» y se asocia a la fuente <code>audiotestsrc</"
-"code> y el sumidero se llama «output» y se asocia con el sumidero "
+"la fuente se llama «source» y se asocia a la fuente <code>audiotestsrc</code> "
+"y el sumidero se llama «output» y se asocia con el sumidero "
 "<code>autoaudiosink</code> (la salida de la tarjeta de sonido "
 "predeterminada)."
 
-#: C/guitar-tuner.vala.page:178(item/p)
+#: C/guitar-tuner.vala.page:183(item/p)
 msgid ""
 "The call to <link href=\"http://valadoc.org/gobject-2.0/GLib.Object.set.html";
 "\"><code>source.set</code></link> sets the <code>freq</code> property of the "
@@ -17780,7 +17916,7 @@ msgstr ""
 "la función <code>play_sound</code>. Esto sólo es la frecuencia de la nota en "
 "Hercios; más adelante se definirán algunas frecuencias útiles."
 
-#: C/guitar-tuner.vala.page:181(item/p)
+#: C/guitar-tuner.vala.page:186(item/p)
 msgid ""
 "<link href=\"http://valadoc.org/gstreamer-0.10/Gst.Bin.add.html";
 "\"><code>pipeline.add</code></link> puts the source and sink into the "
@@ -17798,16 +17934,16 @@ msgstr ""
 "tantos elementos como quiera a una tubería añadiendo más argumentos a "
 "<code>pipeline.add</code>."
 
-#: C/guitar-tuner.vala.page:184(item/p)
+#: C/guitar-tuner.vala.page:189(item/p)
 msgid ""
 "Next, <link href=\"http://valadoc.org/gstreamer-0.10/Gst.Element.link.html";
 "\"><code>sink.link</code></link> is used to connect the elements together, "
 "so the output of source (a tone) goes into the input of sink (which is then "
-"output to the sound card). <link href=\"http://www.valadoc.org/";
-"gstreamer-0.10/Gst.Element.set_state.html\"><code>pipeline.set_state</code></"
-"link> is then used to start playback, by setting the <link href=\"http://www.";
-"valadoc.org/gstreamer-0.10/Gst.State.html\">state of the pipeline</link> to "
-"playing (<code>Gst.State.PLAYING</code>)."
+"output to the sound card). <link href=\"http://www.valadoc.org/gstreamer-";
+"0.10/Gst.Element.set_state.html\"><code>pipeline.set_state</code></link> is "
+"then used to start playback, by setting the <link href=\"http://www.valadoc.";
+"org/gstreamer-0.10/Gst.State.html\">state of the pipeline</link> to playing "
+"(<code>Gst.State.PLAYING</code>)."
 msgstr ""
 "Ahora, el código <link href=\"http://valadoc.org/gstreamer-0.10/Gst.Element.";
 "link.html\"><code>sink.link</code></link> se usa para conectar los elementos "
@@ -17818,7 +17954,7 @@ msgstr ""
 "<link href=\"http://www.valadoc.org/gstreamer-0.10/Gst.State.html\";>estado "
 "de la tubería</link> a «playing» (<code>Gst.State.PLAYING</code>)."
 
-#: C/guitar-tuner.vala.page:187(item/p)
+#: C/guitar-tuner.vala.page:192(item/p)
 msgid ""
 "We don't want to play an annoying tone forever, so the last thing "
 "<code>play_sound</code> does is to add a <link href=\"http://www.valadoc.org/";
@@ -17837,7 +17973,7 @@ msgstr ""
 "mismo del tiempo de expiración, ya que de otro modo, seguiría llamándose "
 "cada 200ms,"
 
-#: C/guitar-tuner.vala.page:198(section/p)
+#: C/guitar-tuner.vala.page:203(section/p)
 msgid ""
 "In the UI designer, you made it so that all of the buttons will call the "
 "same function, <gui>on_button_clicked</gui>, when they are clicked. Actually "
@@ -17851,7 +17987,7 @@ msgstr ""
 "interfaces que este método es parte de la función <code>Main</code>. Se debe "
 "añadir esta función al archivo de código fuente."
 
-#: C/guitar-tuner.vala.page:199(section/p)
+#: C/guitar-tuner.vala.page:204(section/p)
 msgid ""
 "To do this, in the user interface file (guitar_tuner.ui) select one of the "
 "buttons by clicking on it, then open <file>guitar_tuner.vala</file> (by "
@@ -17869,7 +18005,7 @@ msgstr ""
 "<gui>clicked</gui> y arrástrela al archivo de código fuente, al principio de "
 "la clase. Se añadirá el siguiente código a su archivo de código fuente:"
 
-#: C/guitar-tuner.vala.page:201(section/code)
+#: C/guitar-tuner.vala.page:206(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -17882,7 +18018,7 @@ msgstr ""
 "\n"
 "}"
 
-#: C/guitar-tuner.vala.page:206(note/p)
+#: C/guitar-tuner.vala.page:211(note/p)
 msgid ""
 "You can also just type the code at the beginning of the class instead of "
 "using the drag and drop."
@@ -17890,7 +18026,7 @@ msgstr ""
 "También puede escribir simplemente el texto al principio de la clase en vez "
 "de arrastrar y soltar."
 
-#: C/guitar-tuner.vala.page:207(section/p)
+#: C/guitar-tuner.vala.page:212(section/p)
 msgid ""
 "This signal handler has only one argument: the <link href=\"http://valadoc.";
 "org/gtk+-3.0/Gtk.Widget.html\"><code>Gtk.Widget</code></link> that called "
@@ -17902,11 +18038,11 @@ msgstr ""
 "llama a la función (en este caso, siempre es un <link href=\"http://valadoc.";
 "org/gtk+-3.0/Gtk.Button.html\"><code>Gtk.Button</code></link>)."
 
-#: C/guitar-tuner.vala.page:213(section/title)
+#: C/guitar-tuner.vala.page:218(section/title)
 msgid "Define the signal handler"
 msgstr "Definir el manejador de señales"
 
-#: C/guitar-tuner.vala.page:214(section/p)
+#: C/guitar-tuner.vala.page:219(section/p)
 msgid ""
 "We want to play the correct sound when the user clicks a button. For this, "
 "we flesh out the signal handler which we defined above, "
@@ -17922,7 +18058,7 @@ msgstr ""
 "código. En su lugar, se puede usar la etiqueta del botón para saber cuál de "
 "ellos se ha pulsado:"
 
-#: C/guitar-tuner.vala.page:215(section/code)
+#: C/guitar-tuner.vala.page:220(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -17979,7 +18115,7 @@ msgstr ""
 "\t}\n"
 "}\n"
 
-#: C/guitar-tuner.vala.page:242(section/p)
+#: C/guitar-tuner.vala.page:247(section/p)
 msgid ""
 "The <code>Gtk.Button</code> that was clicked is passed as an argument "
 "(<code>sender</code>) to <code>on_button_clicked</code>. We can get the "
@@ -17991,7 +18127,7 @@ msgstr ""
 "etiqueta de ese botón usando <code>get_child</code>, y entonces obtener el "
 "texto de esa etiqueta usando <code>get_label</code>."
 
-#: C/guitar-tuner.vala.page:243(section/p)
+#: C/guitar-tuner.vala.page:248(section/p)
 msgid ""
 "The switch statement compares the label text to the notes that we can play, "
 "and <code>play_sound</code> is called with the frequency appropriate for "
@@ -18002,7 +18138,7 @@ msgstr ""
 "correspondiente a esa nota. Esto reproduce el tono; el afinador de guitarra "
 "ya está funcionando."
 
-#: C/guitar-tuner.vala.page:254(section/p)
+#: C/guitar-tuner.vala.page:259(section/p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
 "<link href=\"guitar-tuner/guitar-tuner.vala\">reference code</link>."
@@ -18010,12 +18146,12 @@ msgstr ""
 "Si tiene problemas con este tutorial, compare su código con este <link href="
 "\"guitar-tuner/guitar-tuner.vala\">código de referencia</link>."
 
-#: C/guitar-tuner.vala.page:258(section/title)
-#: C/magic-mirror.vala.page:151(section/title)
+#: C/guitar-tuner.vala.page:263(section/title)
+#: C/magic-mirror.vala.page:156(section/title)
 msgid "Further reading"
 msgstr "Lectura complementaria"
 
-#: C/guitar-tuner.vala.page:259(section/p)
+#: C/guitar-tuner.vala.page:264(section/p)
 msgid ""
 "To find out more about the Vala programming language you might want to check "
 "out the <link href=\"http://live.gnome.org/Vala/Tutorial\";>Vala Tutorial</"
@@ -18354,8 +18490,8 @@ msgstr ""
 "cuando lo pulsa, por ejemplo. Su trabajo es conectar las señales a funciones "
 "que las manejen, y hagan las cosas que quiere que ocurran. Esto se hace "
 "usando el método «connect» de cada objeto, que toma dos argumentos: la señal "
-"que quiere manejar, y la función «Lang.bind», que hay que usar para decirle "
-"a «connect» qué función quiere que maneje la señal."
+"que quiere manejar, y la función «Lang.bind», que hay que usar para decirle a "
+"«connect» qué función quiere que maneje la señal."
 
 #: C/hellognome.js.page:120(section/p)
 msgid ""
@@ -18367,8 +18503,8 @@ msgid ""
 "user interface and is the next part that we will look at."
 msgstr ""
 "En este caso, se quiere que «_onActivate» maneje la señal «activate», y "
-"«_onStartup» la señal «startup». «_onActivate» sólo le dice a la ventana que "
-"se presente; para que, básicamente, cada vez que haga <keyseq><key>Alt</key> "
+"«_onStartup» la señal «startup». «_onActivate» sólo le dice a la ventana que se "
+"presente; para que, básicamente, cada vez que haga <keyseq><key>Alt</key> "
 "<key>Tab</key></keyseq> a la aplicación, aparezca como uno espera. "
 "«_onStartup» llama a «_buildUI», que es la función que crea la interfaz de "
 "usuario y que verá a continuación."
@@ -18469,8 +18605,8 @@ msgid ""
 "the URI that we want it to load when the application starts up."
 msgstr ""
 "¿Recuerda cómo se importó «Webkit» al comienzo? Aquí se está creando una "
-"instancia nueva de la clase «Webkit» llamada «WebView», que es más o menos "
-"una ventana de navegador que puede poner dentro de su aplicación. Después de "
+"instancia nueva de la clase «Webkit» llamada «WebView», que es más o menos una "
+"ventana de navegador que puede poner dentro de su aplicación. Después de "
 "eso, se le da el URI que quiere que cargue cuando la aplicación inicia."
 
 #: C/hellognome.js.page:151(section/p)
@@ -18486,12 +18622,12 @@ msgid ""
 msgstr ""
 "Se <em>podría</em> darle sólo un URI web, como <link href=\"http://gnome.org";
 "\">http://gnome.org</link>. En su lugar, aquí se usan algunas funciones de "
-"ayuda de GLib para decirle a «WebView» dónde está el archivo "
-"<file>hellognome.html</file>. «GLib.get_current_dir» devuelve la carpeta en "
-"la que se está ejecutando la aplicación, y «GLib.filename_to_uri» convierte "
-"la ruta del archivo y su nombre en un URI que la función «load_uri» del "
-"«WebView» entiende (el segundo parámetro de «filename_to_uri» debe ser "
-"«null» a menos que sepa para qué se usa y tenga una razón para cambiarlo)."
+"ayuda de GLib para decirle a «WebView» dónde está el archivo <file>hellognome."
+"html</file>. «GLib.get_current_dir» devuelve la carpeta en la que se está "
+"ejecutando la aplicación, y «GLib.filename_to_uri» convierte la ruta del "
+"archivo y su nombre en un URI que la función «load_uri» del «WebView» entiende "
+"(el segundo parámetro de «filename_to_uri» debe ser «null» a menos que sepa "
+"para qué se usa y tenga una razón para cambiarlo)."
 
 #: C/hellognome.js.page:152(section/code)
 #, no-wrap
@@ -18528,9 +18664,9 @@ msgstr ""
 "Cada ventana puede contener un, y sólo un, widget. Normalmente usaría un "
 "widget contenedor como una <link xref=\"grid.js\">Rejilla</link> para poner "
 "dentro múltiples widgets, y después usar la función «add» de la ventana para "
-"añadírsela. Aquí, sólo se necesita el «WebView», por lo que es todo lo que "
-"se añade. Después de eso, al final de la función «_buildUI» que crea la "
-"ventana, se le dice que se muestre con su contenido."
+"añadírsela. Aquí, sólo se necesita el «WebView», por lo que es todo lo que se "
+"añade. Después de eso, al final de la función «_buildUI» que crea la ventana, "
+"se le dice que se muestre con su contenido."
 
 #: C/hellognome.js.page:163(section/code)
 #, no-wrap
@@ -18550,8 +18686,8 @@ msgid ""
 "Finally, we create a new instance of our HelloGNOME class, and tell GNOME to "
 "run it."
 msgstr ""
-"Finalmente, se crea una instancia nueva de la clase «HelloGNOME» y se le "
-"dice a GNOME que la ejecute."
+"Finalmente, se crea una instancia nueva de la clase «HelloGNOME» y se le dice "
+"a GNOME que la ejecute."
 
 #: C/hellognome.js.page:172(section/title)
 msgid "Running your GNOME application"
@@ -18917,8 +19053,13 @@ msgstr ""
 "});\n"
 
 #: C/helloWorld.js.page:91(section/p)
+#, fuzzy
+#| msgid ""
+#| "GtkApplication initializes Gtk+. It also connects the <gui>x</gui> button "
+#| "that's automatically generated along with the window to the \"destroy\" "
+#| "signal."
 msgid ""
-"GtkApplication initializes Gtk+. It also connects the <gui>x</gui> button "
+"GtkApplication initializes GTK+. It also connects the <gui>x</gui> button "
 "that's automatically generated along with the window to the \"destroy\" "
 "signal."
 msgstr ""
@@ -18931,14 +19072,14 @@ msgid ""
 "called <var>_window</var> and assigning it a new Gtk.ApplicationWindow."
 msgstr ""
 "Se puede empezar a construir la primera ventana. Esto se hace creando una "
-"variable llamada <var>_window</var> y asignándole una «Gtk."
-"ApplicationWindow» nueva."
+"variable llamada <var>_window</var> y asignándole una «Gtk.ApplicationWindow» "
+"nueva."
 
 #: C/helloWorld.js.page:93(section/p)
 msgid ""
 "We give the window a property called <var>title</var>. The title can be any "
-"string you want it to be. To be on the safe side, it's best to stick to "
-"UTF-8 encoding."
+"string you want it to be. To be on the safe side, it's best to stick to UTF-"
+"8 encoding."
 msgstr ""
 "Se le asignara una propiedad llamada <var>title</var>. El título puede ser "
 "la cadena que quiera pero, para estar seguro, es conveniente que tenga una "
@@ -18949,8 +19090,8 @@ msgid ""
 "Now we have a window which has a title and a working \"close\" button. Let's "
 "add the actual \"Hello World\" text."
 msgstr ""
-"Ya tiene una ventana que contiene un título y un botón «cerrar» que "
-"funciona. Ahora, añada el texto «Hola mundo»."
+"Ya tiene una ventana que contiene un título y un botón «cerrar» que funciona. "
+"Ahora, añada el texto «Hola mundo»."
 
 #: C/helloWorld.js.page:97(section/title)
 msgid "Label for the window"
@@ -18980,8 +19121,8 @@ msgstr ""
 "Una etiqueta de texto es uno de los widgets de GTK+ que puede usar si "
 "importó la biblioteca GTK+. Para usarlo, cree una variable nueva llamada "
 "«label» y asígnele una Gtk.Label nueva. Después dele propiedades dentro de "
-"las llaves «{}». En este caso, se está estableciendo el texto que la "
-"etiqueta contendrá. Finalmente, se crea y ejecuta la aplicación:"
+"las llaves «{}». En este caso, se está estableciendo el texto que la etiqueta "
+"contendrá. Finalmente, se crea y ejecuta la aplicación:"
 
 #: C/helloWorld.js.page:105(section/code)
 #, no-wrap
@@ -19198,7 +19339,7 @@ msgstr ""
 msgid "Now let's go through some parts of the <code>.desktop.in</code> file."
 msgstr "Ahora se verán algunas partes del archivo <code>.desktop.in</code>."
 
-#: C/helloWorld.js.page:139(item/title) C/toolbar_builder.py.page:93(td/p)
+#: C/helloWorld.js.page:139(item/title) C/toolbar_builder.py.page:94(td/p)
 #: C/toolbar_builder.vala.page:77(td/p)
 msgid "Name"
 msgstr "Name"
@@ -19266,9 +19407,9 @@ msgid ""
 "icon-theme-spec</link>."
 msgstr ""
 "En este ejemplo se ha usado un icono existente. Para usar un icono "
-"personalizado, necesita un archivo «.svg» con su icono guardado en <file>/"
-"usr/share/icons/hicolor/scalable/apps</file>. Escriba el nombre del archivo "
-"del icono en el archivo «.desktop.in», en la línea 7. Puede obtener más "
+"personalizado, necesita un archivo «.svg» con su icono guardado en <file>/usr/"
+"share/icons/hicolor/scalable/apps</file>. Escriba el nombre del archivo del "
+"icono en el archivo «.desktop.in», en la línea 7. Puede obtener más "
 "información sobre los iconos en <link href=\"http://library.gnome.org/admin/";
 "system-admin-guide/stable/themes-11.html.en\">Instalar iconos para temas</"
 "link>, <link href=\"https://live.gnome.org/GnomeGoals/AppIcon\";>Instalar "
@@ -19524,7 +19665,7 @@ msgstr ""
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
 #: C/image.c.page:21(media) C/image.js.page:20(media)
-#: C/image.py.page:21(media) C/image.vala.page:21(media)
+#: C/image.py.page:23(media) C/image.vala.page:21(media)
 msgctxt "_"
 msgid "external ref='media/image.png' md5='9416aa74d9d6a857783f7a36338e7a02'"
 msgstr "external ref='media/image.png' md5='9416aa74d9d6a857783f7a36338e7a02'"
@@ -19535,17 +19676,17 @@ msgid "Image (C)"
 msgstr "Image (C)"
 
 #: C/image.c.page:17(info/desc) C/image.js.page:16(info/desc)
-#: C/image.py.page:17(info/desc) C/image.vala.page:17(info/desc)
+#: C/image.py.page:19(info/desc) C/image.vala.page:17(info/desc)
 msgid "A widget displaying an image"
 msgstr "Un widget que muestra una imagen"
 
 #: C/image.c.page:20(page/title) C/image.js.page:19(page/title)
-#: C/image.py.page:20(page/title) C/image.vala.page:20(page/title)
+#: C/image.py.page:22(page/title) C/image.vala.page:20(page/title)
 msgid "Image"
 msgstr "Image"
 
 #: C/image.c.page:22(page/p) C/image.js.page:21(page/p)
-#: C/image.py.page:22(page/p) C/image.vala.page:22(page/p)
+#: C/image.py.page:24(page/p) C/image.vala.page:22(page/p)
 msgid "This GtkApplication displays an image file from the current directory."
 msgstr ""
 "Esta GtkApplication muestra una archivo de imagen de la carpeta actual."
@@ -19791,17 +19932,17 @@ msgctxt "text"
 msgid "Image (Python)"
 msgstr "Image (Python)"
 
-#: C/image.py.page:24(note/p)
+#: C/image.py.page:26(note/p)
 msgid ""
 "If the image file is not loaded successfully, the image will contain a "
 "\"broken image\" icon. The <file>filename.png</file> needs to be in the "
 "current directory for this code to work."
 msgstr ""
 "Si el archivo de imagen no se carga correctamente, la imagen tendrá un icono "
-"de «imagen rota». El archivo <file>nombre_archivo.png</file> debe estar en "
-"la carpeta actual para que este código funcione."
+"de «imagen rota». El archivo <file>nombre_archivo.png</file> debe estar en la "
+"carpeta actual para que este código funcione."
 
-#: C/image.py.page:33(section/code)
+#: C/image.py.page:35(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -19866,7 +20007,7 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/image.py.page:35(section/p)
+#: C/image.py.page:37(section/p)
 msgid ""
 "Another way to obtain what we have in the example is to create the image as "
 "an instance of another class and add it to the instance of <code>MyWindow</"
@@ -19876,7 +20017,7 @@ msgstr ""
 "una instancia de otra clase y añadírsela a la instancia de <code>MyWindow</"
 "code> en el método <code>do_activate(self)</code>:"
 
-#: C/image.py.page:36(section/code)
+#: C/image.py.page:38(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -19929,11 +20070,11 @@ msgstr ""
 "        # show the window and everything on it\n"
 "        win.show_all()"
 
-#: C/image.py.page:63(section/title)
+#: C/image.py.page:65(section/title)
 msgid "Useful methods for an Image widget"
 msgstr "Métodos útiles para un widget «Image»"
 
-#: C/image.py.page:66(item/p)
+#: C/image.py.page:68(item/p)
 msgid ""
 "To set a stock icon as image, you can use <code>set_from_stock(stock_id, "
 "size)</code> where <code>stock_id</code> is a stock icon such as <code>Gtk."
@@ -19954,7 +20095,7 @@ msgstr ""
 "IconSize.SMALL_TOOLBAR, Gtk.IconSize.LARGE_TOOLBAR, Gtk.IconSize.BUTTON, Gtk."
 "IconSize.DND, Gtk.IconSize.DIALOG</code>."
 
-#: C/image.py.page:67(item/p)
+#: C/image.py.page:69(item/p)
 msgid ""
 "You can also use <code>set_from_icon_name(icon_name, size)</code>, where "
 "<code>icon_name</code> is a stock icon name such as <code>\"gtk-about\"</"
@@ -19965,7 +20106,7 @@ msgstr ""
 "<code>«gtk-about»</code> (puede encontrar más como se mencionó) y "
 "<code>tamaño</code> es igual que con «set_from_stock»."
 
-#: C/image.py.page:68(item/p)
+#: C/image.py.page:70(item/p)
 msgid ""
 "To load an image over a network use <code>set_from_pixbuf(pixbuf)</code>, "
 "where <code>pixbuf</code> is a <link href=\"http://developer.gnome.org/gdk-";
@@ -19975,7 +20116,7 @@ msgstr ""
 "donde <code>pixbuf</code> es un <link href=\"http://developer.gnome.org/gdk-";
 "pixbuf/unstable//index.html\">GdkPixbuf</link>."
 
-#: C/image.py.page:69(item/code)
+#: C/image.py.page:71(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -20022,7 +20163,7 @@ msgstr ""
 "        # add the image to the window\n"
 "        self.add(image)"
 
-#: C/image.py.page:90(item/p)
+#: C/image.py.page:92(item/p)
 msgid ""
 "If <code>preserve_aspect_ratio=True</code> we can use "
 "<code>new_from_file_at_size(filename, width, height)</code>. If <code>width</"
@@ -20033,7 +20174,7 @@ msgstr ""
 "<code>anchura</code> o <code>altura</code> son <code>-1</code>, no se "
 "restringen."
 
-#: C/image.py.page:91(item/p)
+#: C/image.py.page:93(item/p)
 msgid ""
 "For loading from an input stream, see <code>new_from_stream()</code> and "
 "<code>new_from_stream_at_scale()</code> in the documentation"
@@ -20145,9 +20286,9 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/image-viewer.c.page:33(media) C/image-viewer.cpp.page:31(media)
-#: C/image-viewer.js.page:42(media) C/image-viewer.py.page:41(media)
-#: C/image-viewer.vala.page:48(media)
+#: C/image-viewer.c.page:38(media) C/image-viewer.cpp.page:36(media)
+#: C/image-viewer.js.page:46(media) C/image-viewer.py.page:45(media)
+#: C/image-viewer.vala.page:53(media)
 msgctxt "_"
 msgid ""
 "external ref='media/image-viewer.png' md5='7720360611243b14283b83527be968c2'"
@@ -20155,35 +20296,47 @@ msgstr ""
 "external ref='media/image-viewer.png' md5='7720360611243b14283b83527be968c2'"
 
 #: C/image-viewer.c.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Image Viewer (C)"
 msgctxt "text"
-msgid "Image Viewer (C)"
+msgid "Image viewer (C)"
 msgstr "Visor de imágenes (C)"
 
-#: C/image-viewer.c.page:10(info/desc) C/image-viewer.vala.page:10(info/desc)
+#: C/image-viewer.c.page:10(info/desc)
 msgid "A little bit more than a simple \"Hello world\" Gtk application."
 msgstr "Algo más que una sencilla aplicación «Hola mundo» en GTK."
 
-#: C/image-viewer.c.page:23(page/title) C/image-viewer.cpp.page:21(page/title)
-msgid "Image Viewer"
+#: C/image-viewer.c.page:28(page/title) C/image-viewer.cpp.page:26(page/title)
+#: C/image-viewer.js.page:28(page/title) C/image-viewer.py.page:28(page/title)
+#: C/image-viewer.vala.page:36(page/title)
+#, fuzzy
+#| msgid "Image Viewer"
+msgid "Image viewer"
 msgstr "Visor de imágenes"
 
-#: C/image-viewer.c.page:26(synopsis/p) C/image-viewer.cpp.page:24(synopsis/p)
-#: C/message-board.c.page:24(synopsis/p)
-#: C/record-collection.js.page:26(synopsis/p)
+#: C/image-viewer.c.page:31(synopsis/p) C/image-viewer.cpp.page:29(synopsis/p)
+#: C/message-board.c.page:28(synopsis/p)
+#: C/record-collection.js.page:31(synopsis/p)
 msgid "In this tutorial, you will learn:"
 msgstr "En este tutorial aprenderá:"
 
-#: C/image-viewer.c.page:28(item/p)
+#: C/image-viewer.c.page:33(item/p)
 msgid "Some basic concepts of C/GObject programming"
 msgstr "Algunos conceptos básicos de programación en C/GObject"
 
-#: C/image-viewer.c.page:29(item/p)
+#: C/image-viewer.c.page:34(item/p)
 msgid "How to write a Gtk application in C"
 msgstr "Cómo escribir una aplicación GTK en C"
 
-#: C/image-viewer.c.page:43(item/p)
+#: C/image-viewer.c.page:48(item/p)
+#, fuzzy
+#| msgid ""
+#| "Choose <gui>Gtk+ (Simple)</gui> from the <gui>C</gui> tab, click "
+#| "<gui>Continue</gui>, and fill out your details on the next few pages. Use "
+#| "<file>image-viewer</file> as project name and directory."
 msgid ""
-"Choose <gui>Gtk+ (Simple)</gui> from the <gui>C</gui> tab, click "
+"Choose <gui>GTK+ (Simple)</gui> from the <gui>C</gui> tab, click "
 "<gui>Continue</gui>, and fill out your details on the next few pages. Use "
 "<file>image-viewer</file> as project name and directory."
 msgstr ""
@@ -20191,7 +20344,7 @@ msgstr ""
 "<gui>Continuar</gui>, y rellene los detalles en las siguientes páginas. Use "
 "<file>visor-imagenes</file> como nombre del proyecto y de la carpeta."
 
-#: C/image-viewer.c.page:46(item/p)
+#: C/image-viewer.c.page:51(item/p)
 msgid ""
 "Make sure that <gui>Use GtkBuilder for user interface</gui> is disabled as "
 "we will create the UI manually in this tutorial. Check the <link xref="
@@ -20203,7 +20356,7 @@ msgstr ""
 "Revise el tutorial del <link xref=\"guitar-tuner.c\">afinador de guitarra</"
 "link> si quiere aprender a usar el constructor de interfaces."
 
-#: C/image-viewer.c.page:61(section/p)
+#: C/image-viewer.c.page:66(section/p)
 msgid ""
 "C is a rather verbose language, so don't be surprised that the file contains "
 "quite a lot of code. Most of it is template code. It loads an (empty) window "
@@ -20215,7 +20368,7 @@ msgstr ""
 "Carga una ventana (vacía) y se muestra. A continuación se ofrecen más "
 "detalles; omita esta lista si entiende los conceptos básicos:"
 
-#: C/image-viewer.c.page:68(item/p)
+#: C/image-viewer.c.page:73(item/p)
 msgid ""
 "The <code>create_window</code> function creates a new (empty) window and "
 "connects a signal to exit the application when that window is closed."
@@ -20223,13 +20376,13 @@ msgstr ""
 "La función <code>create_window</code> crea una ventana (vacía) nueva y "
 "conecta una señal para salir de la aplicación cuando se cierra esa ventana."
 
-#: C/image-viewer.c.page:84(section/title)
-#: C/image-viewer.cpp.page:81(section/title)
-#: C/image-viewer.vala.page:133(section/title)
+#: C/image-viewer.c.page:89(section/title)
+#: C/image-viewer.cpp.page:86(section/title)
+#: C/image-viewer.vala.page:138(section/title)
 msgid "Creating the user interface"
 msgstr "Crear la interfaz de usuario"
 
-#: C/image-viewer.c.page:85(section/p)
+#: C/image-viewer.c.page:90(section/p)
 msgid ""
 "Now we will bring life into the empty window. GTK organizes the user "
 "interface with <code>GtkContainer</code>s that can contain other widgets and "
@@ -20241,7 +20394,7 @@ msgstr ""
 "incluso otros contenedores. Aquí se usará el contenedor más sencillo "
 "disponible, una <code>GtkBox</code>:"
 
-#: C/image-viewer.c.page:88(section/code)
+#: C/image-viewer.c.page:93(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -20310,7 +20463,7 @@ msgstr ""
 "\treturn window;\n"
 "}\n"
 
-#: C/image-viewer.c.page:123(item/p)
+#: C/image-viewer.c.page:128(item/p)
 msgid ""
 "The first lines create the widgets we want to use: a button for opening up "
 "an image, the image view widget itself and the box we will use as a "
@@ -20324,7 +20477,7 @@ msgstr ""
 "de tipos dinámicos y conversiones de tipos necesarias, ya que C no soporta "
 "orientación a objetos."
 
-#: C/image-viewer.c.page:128(item/p)
+#: C/image-viewer.c.page:133(item/p)
 msgid ""
 "The calls to <code>gtk_box_pack_start</code> add the two widgets to the box "
 "and define their behaviour. The image will expand into any available space "
@@ -20341,7 +20494,7 @@ msgstr ""
 "tener una distribución que se ve bien con diferentes tamaños de la ventana. "
 "A continuación, se añade la caja a la ventana."
 
-#: C/image-viewer.c.page:134(item/p)
+#: C/image-viewer.c.page:139(item/p)
 msgid ""
 "We need to define what happens when the user clicks on the button. GTK uses "
 "the concept of <em>signals</em>. When the button is clicked, it fires the "
@@ -20359,7 +20512,7 @@ msgstr ""
 "la imagen como un argumento adicional a la función. El <em>retorno de la "
 "llamada</em> se definirá en la siguiente sección."
 
-#: C/image-viewer.c.page:139(item/p)
+#: C/image-viewer.c.page:144(item/p)
 msgid ""
 "The last <code>g_signal_connect()</code> makes sure that the application "
 "exits when the window is closed."
@@ -20367,7 +20520,7 @@ msgstr ""
 "La última <code>g_signal_connect()</code> se asegura de que la aplicación "
 "finaliza al cerrar la ventana."
 
-#: C/image-viewer.c.page:142(item/p)
+#: C/image-viewer.c.page:147(item/p)
 msgid ""
 "As a last step, make sure to replace the <code>gtk_widget_show</code> call "
 "in the <code>main()</code> function by <code>gtk_widget_show_all()</code> to "
@@ -20377,13 +20530,13 @@ msgstr ""
 "code>, en la función <code>main()</code>, por <code>gtk_widget_show_all()</"
 "code>, para mostrar todos los widgets que contiene la ventana."
 
-#: C/image-viewer.c.page:149(section/title)
-#: C/image-viewer.cpp.page:136(section/title)
-#: C/image-viewer.vala.page:204(section/title)
+#: C/image-viewer.c.page:154(section/title)
+#: C/image-viewer.cpp.page:141(section/title)
+#: C/image-viewer.vala.page:209(section/title)
 msgid "Showing the image"
 msgstr "Mostrar la imagen"
 
-#: C/image-viewer.c.page:150(section/p)
+#: C/image-viewer.c.page:155(section/p)
 msgid ""
 "We will now define the signal handler for the <em>clicked</em> signal or the "
 "button we mentioned before. Add this code before the <code>create_window()</"
@@ -20393,7 +20546,7 @@ msgstr ""
 "el botón mencionado anteriormente. Añada este código antes del método "
 "<code>create_window()</code>."
 
-#: C/image-viewer.c.page:153(section/code)
+#: C/image-viewer.c.page:158(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -20462,8 +20615,8 @@ msgstr ""
 "\tgtk_widget_destroy (dialog);\n"
 "}\n"
 
-#: C/image-viewer.c.page:186(section/p) C/image-viewer.cpp.page:172(section/p)
-#: C/image-viewer.js.page:278(section/p) C/image-viewer.py.page:192(section/p)
+#: C/image-viewer.c.page:191(section/p) C/image-viewer.cpp.page:177(section/p)
+#: C/image-viewer.js.page:282(section/p) C/image-viewer.py.page:196(section/p)
 msgid ""
 "This is a bit more complicated than anything we've attempted so far, so "
 "let's break it down:"
@@ -20471,7 +20624,7 @@ msgstr ""
 "Esto es un poco más complicado que todo lo que se ha intentado hasta ahora, "
 "así que se puede desglosar:"
 
-#: C/image-viewer.c.page:188(item/p)
+#: C/image-viewer.c.page:193(item/p)
 msgid ""
 "The first argument of the signal is always the widget that sent the signal. "
 "Sometimes other arguments related to the signal come after that, but "
@@ -20485,7 +20638,7 @@ msgstr ""
 "<code>user_data</code>, que es un puntero a los datos que se han pasado al "
 "conectar la señal. En este caso, es el objeto <code>GtkImage</code>."
 
-#: C/image-viewer.c.page:194(item/p)
+#: C/image-viewer.c.page:199(item/p)
 msgid ""
 "The next interesting line is where the dialog for choosing the file is "
 "created using <code>gtk_file_chooser_dialog_new</code>. The function takes "
@@ -20497,8 +20650,8 @@ msgstr ""
 "el título del diálogo, la ventana padre del diálogo y varias opciones como "
 "el número de botones y sus valores correspondientes."
 
-#: C/image-viewer.c.page:198(item/p) C/image-viewer.cpp.page:180(item/p)
-#: C/image-viewer.js.page:285(item/p) C/image-viewer.py.page:199(item/p)
+#: C/image-viewer.c.page:203(item/p) C/image-viewer.cpp.page:185(item/p)
+#: C/image-viewer.js.page:289(item/p) C/image-viewer.py.page:203(item/p)
 msgid ""
 "Notice that we are using <em>stock</em> button names from Gtk, instead of "
 "manually typing \"Cancel\" or \"Open\". The advantage of using stock names "
@@ -20506,11 +20659,11 @@ msgid ""
 "language."
 msgstr ""
 "Note que se está usando nombres de botones del <em>almacén</em> de GTK, en "
-"lugar de escribir manualmente «Cancelar» o «Abrir». La ventaja de usar "
-"nombres del almacén es que las etiquetas de los botones ya estarán "
-"traducidas en el idioma del usuario."
+"lugar de escribir manualmente «Cancelar» o «Abrir». La ventaja de usar nombres "
+"del almacén es que las etiquetas de los botones ya estarán traducidas en el "
+"idioma del usuario."
 
-#: C/image-viewer.c.page:201(item/p)
+#: C/image-viewer.c.page:206(item/p)
 msgid ""
 "The next two lines restrict the <gui>Open</gui> dialog to only display files "
 "which can be opened by GtkImage. A filter object is created first; we then "
@@ -20525,7 +20678,7 @@ msgstr ""
 "como PNG y JPEG) al filtro. Por último, se establece que este filtro sea el "
 "filtro del diálogo <gui>Abrir</gui>."
 
-#: C/image-viewer.c.page:204(item/p)
+#: C/image-viewer.c.page:209(item/p)
 msgid ""
 "<code>gtk_dialog_run</code> displays the <gui>Open</gui> dialog. The dialog "
 "will wait for the user to choose an image; when they do, "
@@ -20539,7 +20692,7 @@ msgstr ""
 "code> (devolvería <code>GTK_RESPONSE_CANCEL</code> si el usuario pulsara "
 "<gui>Cancelar</gui>). La sentencia <code>switch</code> comprueba esto."
 
-#: C/image-viewer.c.page:206(item/p)
+#: C/image-viewer.c.page:211(item/p)
 msgid ""
 "Assuming that the user did click <gui>Open</gui>, the next line sets the "
 "<code>file</code> property of the GtkImage to the filename of the image "
@@ -20551,7 +20704,7 @@ msgstr ""
 "archivo de imagen seleccionado por el usuario. La «GtkImage» cargará y "
 "mostrará la imagen elegida."
 
-#: C/image-viewer.c.page:209(item/p)
+#: C/image-viewer.c.page:214(item/p)
 msgid ""
 "In the final line of this method, we destroy the <gui>Open</gui> dialog "
 "because we don't need it any more. Destroying automatically hides the dialog."
@@ -20560,7 +20713,7 @@ msgstr ""
 "porque ya no se necesita más. El diálogo se oculta automáticamente al "
 "destruirlo."
 
-#: C/image-viewer.c.page:218(section/p) C/image-viewer.cpp.page:206(section/p)
+#: C/image-viewer.c.page:223(section/p) C/image-viewer.cpp.page:211(section/p)
 msgid ""
 "If you haven't already done so, choose the <file>Debug/src/image-viewer</"
 "file> application in the dialog that appears. Finally, hit <gui>Run</gui> "
@@ -20570,7 +20723,7 @@ msgstr ""
 "imagenes</file> en el diálogo que aparece. Finalmente, pulse <gui>Ejecutar</"
 "gui> y disfrute."
 
-#: C/image-viewer.c.page:223(section/p)
+#: C/image-viewer.c.page:228(section/p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
 "<link href=\"image-viewer/image-viewer.c\">reference code</link>."
@@ -20578,9 +20731,9 @@ msgstr ""
 "Si tiene problemas con este tutorial, compare su código con este <link href="
 "\"image-viewer/image-viewer.c\">código de referencia</link>."
 
-#: C/image-viewer.c.page:231(item/p) C/image-viewer.cpp.page:219(item/p)
-#: C/image-viewer.js.page:320(item/p) C/image-viewer.py.page:234(item/p)
-#: C/image-viewer.vala.page:292(item/p)
+#: C/image-viewer.c.page:236(item/p) C/image-viewer.cpp.page:224(item/p)
+#: C/image-viewer.js.page:324(item/p) C/image-viewer.py.page:238(item/p)
+#: C/image-viewer.vala.page:297(item/p)
 msgid ""
 "Have the user select a directory rather than a file, and provide controls to "
 "cycle through all of the images in a directory."
@@ -20588,9 +20741,9 @@ msgstr ""
 "Haga que el usuario selecciona una carpeta en vez de un archivo, y "
 "proporcione controles para moverse por todas las imágenes de una carpeta."
 
-#: C/image-viewer.c.page:234(item/p) C/image-viewer.cpp.page:222(item/p)
-#: C/image-viewer.js.page:323(item/p) C/image-viewer.py.page:237(item/p)
-#: C/image-viewer.vala.page:295(item/p)
+#: C/image-viewer.c.page:239(item/p) C/image-viewer.cpp.page:227(item/p)
+#: C/image-viewer.js.page:327(item/p) C/image-viewer.py.page:241(item/p)
+#: C/image-viewer.vala.page:300(item/p)
 msgid ""
 "Apply random filters and effects to the image when it is loaded and allow "
 "the user to save the modified image."
@@ -20598,9 +20751,9 @@ msgstr ""
 "Aplicar filtros aleatorios y efectos a la imagen cuando se carga y permitir "
 "al usuario guardar la imagen modificada."
 
-#: C/image-viewer.c.page:235(item/p) C/image-viewer.cpp.page:223(item/p)
-#: C/image-viewer.js.page:324(item/p) C/image-viewer.py.page:238(item/p)
-#: C/image-viewer.vala.page:296(item/p)
+#: C/image-viewer.c.page:240(item/p) C/image-viewer.cpp.page:228(item/p)
+#: C/image-viewer.js.page:328(item/p) C/image-viewer.py.page:242(item/p)
+#: C/image-viewer.vala.page:301(item/p)
 msgid ""
 "<link href=\"http://www.gegl.org/api.html\";>GEGL</link> provides powerful "
 "image manipulation capabilities."
@@ -20608,9 +20761,9 @@ msgstr ""
 "<link href=\"http://www.gegl.org/api.html\";>GEGL</link> proporciona la "
 "capacidad de manipular imágenes de manera potente."
 
-#: C/image-viewer.c.page:238(item/p) C/image-viewer.cpp.page:226(item/p)
-#: C/image-viewer.js.page:327(item/p) C/image-viewer.py.page:241(item/p)
-#: C/image-viewer.vala.page:299(item/p)
+#: C/image-viewer.c.page:243(item/p) C/image-viewer.cpp.page:231(item/p)
+#: C/image-viewer.js.page:331(item/p) C/image-viewer.py.page:245(item/p)
+#: C/image-viewer.vala.page:304(item/p)
 msgid ""
 "Allow the user to load images from network shares, scanners, and other more "
 "complicated sources."
@@ -20618,9 +20771,9 @@ msgstr ""
 "Permitir al usuario cargar imágenes desde recursos de red compartidos, "
 "escáneres y otras fuentes más complicadas."
 
-#: C/image-viewer.c.page:239(item/p) C/image-viewer.cpp.page:227(item/p)
-#: C/image-viewer.js.page:328(item/p) C/image-viewer.py.page:242(item/p)
-#: C/image-viewer.vala.page:300(item/p)
+#: C/image-viewer.c.page:244(item/p) C/image-viewer.cpp.page:232(item/p)
+#: C/image-viewer.js.page:332(item/p) C/image-viewer.py.page:246(item/p)
+#: C/image-viewer.vala.page:305(item/p)
 msgid ""
 "You can use <link href=\"http://library.gnome.org/devel/gio/unstable/\";>GIO</"
 "link> to handle network file tranfers and the like, and <link href=\"http://";
@@ -20636,15 +20789,15 @@ msgstr ""
 msgid "A little bit more than a simple \"Hello world\" GTKmm application."
 msgstr "Algo más que una sencilla aplicación «Hola mundo» en GTKmm."
 
-#: C/image-viewer.cpp.page:26(item/p)
+#: C/image-viewer.cpp.page:31(item/p)
 msgid "Some basic concepts of C++/GObject programming"
 msgstr "Algunos conceptos básicos de programación en C++/GObject"
 
-#: C/image-viewer.cpp.page:27(item/p)
+#: C/image-viewer.cpp.page:32(item/p)
 msgid "How to write a Gtk application in C++"
 msgstr "Cómo escribir una aplicación GTK en C++"
 
-#: C/image-viewer.cpp.page:41(item/p)
+#: C/image-viewer.cpp.page:46(item/p)
 msgid ""
 "Choose <gui>GTKmm (Simple)</gui> from the <gui>C++</gui> tab, click "
 "<gui>Forward</gui>, and fill out your details on the next few pages. Use "
@@ -20654,7 +20807,7 @@ msgstr ""
 "<gui>Adelante</gui> y rellene los detalles en las siguientes páginas. Use "
 "<file>visor-imagenes</file> como nombre de proyecto y de carpeta."
 
-#: C/image-viewer.cpp.page:44(item/p)
+#: C/image-viewer.cpp.page:49(item/p)
 msgid ""
 "Make sure that <gui>Use GtkBuilder for user interface</gui> is disabled as "
 "we will create the UI manually in this tutorial. Check the <link xref="
@@ -20666,7 +20819,7 @@ msgstr ""
 "Revise el tutorial del <link xref=\"guitar-tuner.cpp\">afinador de guitarra</"
 "link> si quiere aprender a usar el constructor de interfaces."
 
-#: C/image-viewer.cpp.page:49(item/p)
+#: C/image-viewer.cpp.page:54(item/p)
 msgid ""
 "Click <gui>Apply</gui> and the project will be created for you. Open "
 "<file>src/main.cc</file> from the <gui>Project</gui> or <gui>File</gui> "
@@ -20676,7 +20829,7 @@ msgstr ""
 "file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</gui>. Debería "
 "ver algo de código que comience con las líneas:"
 
-#: C/image-viewer.cpp.page:50(item/code)
+#: C/image-viewer.cpp.page:55(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -20691,7 +20844,7 @@ msgstr ""
 "\n"
 "#include \"config.h\"&gt;"
 
-#: C/image-viewer.cpp.page:64(item/p)
+#: C/image-viewer.cpp.page:69(item/p)
 msgid ""
 "The three <code>#include</code> lines at the top include the <code>config</"
 "code> (useful autoconf build defines), <code>gtkmm</code> (user interface) "
@@ -20703,7 +20856,7 @@ msgstr ""
 "autoconf), <code>gtkmm</code> (interfaz de usuario) <code>iostream</code> (C+"
 "+-STL). Las funciones de estas bibliotecas se usan en el resto del código."
 
-#: C/image-viewer.cpp.page:67(item/p)
+#: C/image-viewer.cpp.page:72(item/p)
 msgid ""
 "The <code>main</code> function creates a new (empty) window and sets the "
 "window title."
@@ -20711,7 +20864,7 @@ msgstr ""
 "La función <code>main</code> crea una ventana (vacía) nueva y establece el "
 "título de la ventana."
 
-#: C/image-viewer.cpp.page:70(item/p)
+#: C/image-viewer.cpp.page:75(item/p)
 msgid ""
 "The <code>kit::run()</code> call starts the GTKmm main loop, which runs the "
 "user interface and starts listening for events (like clicks and key "
@@ -20724,7 +20877,7 @@ msgstr ""
 "argumento a esta función, la aplicación se cerrará automáticamente cuando se "
 "cierre la ventana."
 
-#: C/image-viewer.cpp.page:82(section/p)
+#: C/image-viewer.cpp.page:87(section/p)
 msgid ""
 "Now we will bring life into the empty window. GTKmm organizes the user "
 "interface with <code>Gtk::Container</code>s that can contain other widgets "
@@ -20736,7 +20889,7 @@ msgstr ""
 "incluso otros contenedores. Aquí se usará el contenedor más sencillo "
 "disponible, una <code>Gtk::Box</code>:"
 
-#: C/image-viewer.cpp.page:85(section/code)
+#: C/image-viewer.cpp.page:90(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -20795,7 +20948,7 @@ msgstr ""
 "\treturn 0;\n"
 "}\n"
 
-#: C/image-viewer.cpp.page:115(item/p)
+#: C/image-viewer.cpp.page:120(item/p)
 msgid ""
 "The first lines create the widgets we want to use: a button for opening up "
 "an image, the image view widget itself and the box we will use as a "
@@ -20805,7 +20958,7 @@ msgstr ""
 "una imagen, el widget del visor de imágenes en sí y la caja que se usará "
 "como contenedor."
 
-#: C/image-viewer.cpp.page:118(item/p)
+#: C/image-viewer.cpp.page:123(item/p)
 msgid ""
 "The calls to <code>pack_start</code> add the two widgets to the box and "
 "define their behaviour. The image will expand into any available space while "
@@ -20822,7 +20975,7 @@ msgstr ""
 "tener una distribución que se ve bien con diferentes tamaños de la ventana. "
 "A continuación, se añade la caja a la ventana."
 
-#: C/image-viewer.cpp.page:124(item/p)
+#: C/image-viewer.cpp.page:129(item/p)
 msgid ""
 "We need to define what happens when the user clicks on the button. GTKmm "
 "uses the concept of <em>signals</em>. When the button is clicked, it fires "
@@ -20839,7 +20992,7 @@ msgstr ""
 "que pase la imagen como un argumento adicional a la función. El <em>retorno "
 "de la llamada</em> se definirá en la siguiente sección."
 
-#: C/image-viewer.cpp.page:128(item/p)
+#: C/image-viewer.cpp.page:133(item/p)
 msgid ""
 "The last step is to show all widgets in the window using "
 "<code>show_all_children()</code>. This is equivalent to using the <code>show"
@@ -20849,7 +21002,7 @@ msgstr ""
 "<code>show_all_children()</code>. Esto es equivalente a usar el método "
 "<code>show()</code> en cada uno de los widgets."
 
-#: C/image-viewer.cpp.page:137(section/p)
+#: C/image-viewer.cpp.page:142(section/p)
 msgid ""
 "We will now define the signal handler for the <em>clicked</em> signal or the "
 "button we mentioned before. Add this code before the <code>main</code> "
@@ -20859,7 +21012,7 @@ msgstr ""
 "mencionado anteriormente. Añada este código antes del método <code>main</"
 "code>."
 
-#: C/image-viewer.cpp.page:140(section/code)
+#: C/image-viewer.cpp.page:145(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -20926,7 +21079,7 @@ msgstr ""
 "\t}\n"
 "}\n"
 
-#: C/image-viewer.cpp.page:175(item/p)
+#: C/image-viewer.cpp.page:180(item/p)
 msgid ""
 "The dialog for choosing the file is created using the <code>Gtk::"
 "FileChooserDialog</code> constructor. This takes the title and type of the "
@@ -20936,7 +21089,7 @@ msgstr ""
 "<code>Gtk::FileChooserDialog</code>. La función toma el título y el tipo del "
 "diálogo. En este caso, es un diálogo de tipo <em>Open</em>."
 
-#: C/image-viewer.cpp.page:179(item/p)
+#: C/image-viewer.cpp.page:184(item/p)
 msgid ""
 "The next two lines add an <em>Open</em> and a <em>Close</em> button to the "
 "dialog."
@@ -20944,7 +21097,7 @@ msgstr ""
 "Las siguientes dos líneas añaden un botón <em>Abrir</em> y <em>Cerrar</em> "
 "en el diálogo."
 
-#: C/image-viewer.cpp.page:181(item/p)
+#: C/image-viewer.cpp.page:186(item/p)
 msgid ""
 "The second argument to the <code>add_button()</code> method is a value to "
 "identify the clicked button. We use predefined values provided by GTKmm "
@@ -20954,7 +21107,7 @@ msgstr ""
 "identificar el botón pulsado. Aquí también se usan valores predefinidos "
 "proporcionados por GTKmm."
 
-#: C/image-viewer.cpp.page:186(item/p)
+#: C/image-viewer.cpp.page:191(item/p)
 msgid ""
 "The next two lines restrict the <gui>Open</gui> dialog to only display files "
 "which can be opened by <code>Gtk::Image</code>. A filter object is created "
@@ -20969,7 +21122,7 @@ msgstr ""
 "formatos de imagen como PNG y JPEG) al filtro. Por último, se establece que "
 "este filtro sea el filtro del diálogo <gui>Abrir</gui>."
 
-#: C/image-viewer.cpp.page:187(item/p)
+#: C/image-viewer.cpp.page:192(item/p)
 msgid ""
 "<code>Glib::RefPtr</code> is a smart pointer used here, that makes sure that "
 "the filter is destroyed when there is no reference to it anymore."
@@ -20978,7 +21131,7 @@ msgstr ""
 "asegura de que el filtro se destruye cuando ya no se hace ninguna referencia "
 "a él."
 
-#: C/image-viewer.cpp.page:191(item/p)
+#: C/image-viewer.cpp.page:196(item/p)
 msgid ""
 "<code>dialog.run</code> displays the <gui>Open</gui> dialog. The dialog will "
 "wait for the user to choose an image; when they do, <code>dialog.run</code> "
@@ -20992,7 +21145,7 @@ msgstr ""
 "(devolvería <code>Gtk::RESPONSE_CANCEL</code> si el usuario pulsara "
 "<gui>Cancel</gui>). La sentencia <code>switch</code> comprueba esto."
 
-#: C/image-viewer.cpp.page:194(item/p)
+#: C/image-viewer.cpp.page:199(item/p)
 msgid ""
 "We hide the <gui>Open</gui> dialog because we don't need it any more. The "
 "dialog would be hidden later anyway, as it is only a local variable and is "
@@ -21002,7 +21155,7 @@ msgstr ""
 "diálogo se ocultará de todos modos, ya que sólo es una variable local, y se "
 "destruye (y por lo tanto se oculta) cuando el ámbito termina."
 
-#: C/image-viewer.cpp.page:197(item/p)
+#: C/image-viewer.cpp.page:202(item/p)
 msgid ""
 "Assuming that the user did click <gui>Open</gui>, the next line loads the "
 "file into the <code>Gtk::Image</code> so that it is displayed."
@@ -21010,7 +21163,7 @@ msgstr ""
 "Asumiendo que el usuario pulsó <gui>Abrir</gui>, la siguiente línea carga el "
 "archivo en la <code>Gtk::Image</code>, por lo que se muestra."
 
-#: C/image-viewer.cpp.page:211(section/p)
+#: C/image-viewer.cpp.page:216(section/p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
 "<link href=\"image-viewer/image-viewer.cc\">reference code</link>."
@@ -21019,14 +21172,21 @@ msgstr ""
 "\"image-viewer/image-viewer.cc\">código de referencia</link>."
 
 #: C/image-viewer.js.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Image Viewer (JavaScript)"
 msgctxt "text"
-msgid "Image Viewer (JavaScript)"
+msgid "Image viewer (JavaScript)"
 msgstr "Visor de imágenes (JavaScript)"
 
 #: C/image-viewer.js.page:10(info/desc)
+#, fuzzy
+#| msgid ""
+#| "A little bit more than a simple \"Hello world\" application - write an "
+#| "image viewer in GTK. Includes an introduction to the JavaScript language."
 msgid ""
 "A little bit more than a simple \"Hello world\" application - write an image "
-"viewer in GTK. Includes an introduction to the JavaScript language."
+"viewer in GTK+. Includes an introduction to the JavaScript language."
 msgstr ""
 "Algo más que una sencilla aplicación «Hola mundo»; escribir un visor de "
 "imágenes en GTK. Incluye una introducción al lenguaje JavaScript."
@@ -21036,12 +21196,7 @@ msgstr ""
 msgid "Jonh Wendell"
 msgstr "Jonh Wendell"
 
-#: C/image-viewer.js.page:24(page/title) C/image-viewer.py.page:24(page/title)
-#: C/image-viewer.vala.page:31(page/title)
-msgid "1 Image Viewer"
-msgstr "1. Visor de imágenes"
-
-#: C/image-viewer.js.page:27(synopsis/p) C/image-viewer.py.page:27(synopsis/p)
+#: C/image-viewer.js.page:31(synopsis/p) C/image-viewer.py.page:31(synopsis/p)
 msgid ""
 "In this tutorial, we're going to write a very simple GTK application that "
 "loads and displays an image file. You will learn how to:"
@@ -21049,32 +21204,32 @@ msgstr ""
 "En este tutorial se va a escribir una aplicación GTK+ muy sencilla que carga "
 "un archivo e imagen y lo muestra. Aprenderá a:"
 
-#: C/image-viewer.js.page:29(item/p)
+#: C/image-viewer.js.page:33(item/p)
 msgid "Write a basic GTK user interface in JavaScript"
 msgstr "Escribir una interfaz GTK+ de usuario básica usando JavaScript"
 
-#: C/image-viewer.js.page:30(item/p) C/image-viewer.py.page:30(item/p)
+#: C/image-viewer.js.page:34(item/p) C/image-viewer.py.page:34(item/p)
 msgid "Deal with events by connecting signals to signal handlers"
 msgstr "Trabajar con eventos conectando señales a manejadores de señales"
 
-#: C/image-viewer.js.page:31(item/p) C/image-viewer.py.page:31(item/p)
+#: C/image-viewer.js.page:35(item/p) C/image-viewer.py.page:35(item/p)
 msgid "Lay out GTK user interfaces using containers"
 msgstr "La disposición de las interfaces de usuario usando contenedores"
 
-#: C/image-viewer.js.page:32(item/p) C/image-viewer.py.page:32(item/p)
+#: C/image-viewer.js.page:36(item/p) C/image-viewer.py.page:36(item/p)
 msgid "Load and display image files"
 msgstr "Cargar y mostrar archivos de imagen"
 
-#: C/image-viewer.js.page:37(item/p)
+#: C/image-viewer.js.page:41(item/p)
 msgid "An installed copy of the <em>gjs</em> interpreter"
 msgstr "Una copia instalada del intérprete <em>gjs</em>"
 
-#: C/image-viewer.js.page:38(item/p)
+#: C/image-viewer.js.page:42(item/p)
 msgid "Basic knowledge of any object-orientated programming language"
 msgstr ""
 "Conocimiento básico de cualquier lenguaje de programación orientado a objetos"
 
-#: C/image-viewer.js.page:52(item/p)
+#: C/image-viewer.js.page:56(item/p)
 msgid ""
 "Choose <gui>Generic Javascript</gui> from the <gui>JS</gui> tab, click "
 "<gui>Forward</gui>, and fill out your details on the next few pages. Use "
@@ -21084,7 +21239,7 @@ msgstr ""
 "<gui>Adelante</gui> y rellene los detalles en las siguientes páginas. Use "
 "<file>visor-imágenes</file> como nombre de proyecto y de carpeta."
 
-#: C/image-viewer.js.page:55(item/p)
+#: C/image-viewer.js.page:59(item/p)
 msgid ""
 "Click <gui>Apply</gui> and the project will be created for you. Open "
 "<file>src/main.js</file> from the <gui>Project</gui> or <gui>File</gui> "
@@ -21094,11 +21249,11 @@ msgstr ""
 "file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</gui>. Contiene "
 "un ejemplo de código muy básico:"
 
-#: C/image-viewer.js.page:62(section/title)
+#: C/image-viewer.js.page:66(section/title)
 msgid "JavaScript basics: Hello World"
 msgstr "JavaScript básico: hola mundo"
 
-#: C/image-viewer.js.page:63(section/p)
+#: C/image-viewer.js.page:67(section/p)
 msgid ""
 "Before we start writing the image viewer, let's find out more about the way "
 "JavaScript is used in GNOME. Of course, your very first contact with any "
@@ -21110,12 +21265,12 @@ msgstr ""
 "lenguaje de programación debe ser el programa «Hola mundo», que se puede "
 "encontrar en el archivo <file>main.js</file>:"
 
-#: C/image-viewer.js.page:64(section/code)
+#: C/image-viewer.js.page:68(section/code)
 #, no-wrap
 msgid "print (\"Hello world!\");"
 msgstr "print (\"¡Hola mundo!\");"
 
-#: C/image-viewer.js.page:65(section/p)
+#: C/image-viewer.js.page:69(section/p)
 msgid ""
 "This should look quite natural if you're familiar with almost any other "
 "programming language. The function <code>print</code> is called with the "
@@ -21127,15 +21282,15 @@ msgstr ""
 "con el argumento <code>\"¡Hola mundo!\"</code>, que se mostrará en la "
 "pantalla. Tenga en cuenta que cada línea de código termina en «;»."
 
-#: C/image-viewer.js.page:69(section/title)
+#: C/image-viewer.js.page:73(section/title)
 msgid "Classes in JavaScript"
 msgstr "Clases en JavaScript"
 
-#: C/image-viewer.js.page:70(section/p)
+#: C/image-viewer.js.page:74(section/p)
 msgid "This is the standard way to define a class in JavaScript:"
 msgstr "Esta es la manera estándar de definir una clase en JavaScript:"
 
-#: C/image-viewer.js.page:71(section/code)
+#: C/image-viewer.js.page:75(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -21184,7 +21339,7 @@ msgstr ""
 "\n"
 "}"
 
-#: C/image-viewer.js.page:93(section/p)
+#: C/image-viewer.js.page:97(section/p)
 msgid ""
 "This defines a class called <code>MyClass</code>. Let's go through each part "
 "of the class definition:"
@@ -21192,7 +21347,7 @@ msgstr ""
 "Esto define una clase llamada <code>MyClass</code>. Vea cada una de las "
 "partes de la definición de la clase:"
 
-#: C/image-viewer.js.page:96(item/p)
+#: C/image-viewer.js.page:100(item/p)
 msgid ""
 "<code>function MyClass</code> is the constructor of the class — its name "
 "must match the class's name. You can access any member of the class by using "
@@ -21204,7 +21359,7 @@ msgstr ""
 "usando el objeto <code>this</code>; aquí, el constructor llama al método "
 "<code>_init</code> de la clase."
 
-#: C/image-viewer.js.page:99(item/p)
+#: C/image-viewer.js.page:103(item/p)
 msgid ""
 "The <code>MyClass.prototype</code> block is where you define the "
 "<em>structure</em> of the class. Each class is made up of methods "
@@ -21215,7 +21370,7 @@ msgstr ""
 "em> de la clase. Cada clase se compone de métodos (funciones) y campos "
 "(variables); en este ejemplo, hay tres métodos y dos campos."
 
-#: C/image-viewer.js.page:102(item/p)
+#: C/image-viewer.js.page:106(item/p)
 msgid ""
 "The first method defined here is called <code>_init</code>, and we specify "
 "that it is a function with no arguments:"
@@ -21223,12 +21378,12 @@ msgstr ""
 "El primer método definido se llama <code>_init</code>, y se especifica que "
 "es una función sin argumentos:"
 
-#: C/image-viewer.js.page:103(item/code)
+#: C/image-viewer.js.page:107(item/code)
 #, no-wrap
 msgid "_init: function ()"
 msgstr "_init: function ()"
 
-#: C/image-viewer.js.page:104(item/p)
+#: C/image-viewer.js.page:108(item/p)
 msgid ""
 "We write the function inside some curly braces. Two fields are defined here, "
 "<code>propertyA</code> and <code>propertyB</code>. The first is set to a "
@@ -21240,7 +21395,7 @@ msgstr ""
 "como una cadena, y la segunda se establece como un entero (10). La función "
 "no retorna ningún valor."
 
-#: C/image-viewer.js.page:107(item/p)
+#: C/image-viewer.js.page:111(item/p)
 msgid ""
 "The next method is called <code>aMethod</code> and has two arguments, which "
 "it prints out when you call it. The final method is <code>dumpProperties</"
@@ -21251,7 +21406,7 @@ msgstr ""
 "imprime cuando se invoca. El último método es <code>dumpProperties</code>, "
 "que imprime los campos <code>propertyA</code> y <code>propertyB</code>."
 
-#: C/image-viewer.js.page:110(item/p)
+#: C/image-viewer.js.page:114(item/p)
 msgid ""
 "Note how the class definition (prototype) is arranged; each function "
 "definition is separated by a comma."
@@ -21259,11 +21414,11 @@ msgstr ""
 "Tenga en cuenta cómo se ordena la definición de la clase (prototipo); cada "
 "definición de función se separa con una coma."
 
-#: C/image-viewer.js.page:114(section/p)
+#: C/image-viewer.js.page:118(section/p)
 msgid "Now that MyClass has been defined, we can play with it:"
 msgstr "Ahora que «MyClass» se ha definido, se puede jugar con ella:"
 
-#: C/image-viewer.js.page:115(section/code)
+#: C/image-viewer.js.page:119(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -21278,7 +21433,7 @@ msgstr ""
 "o.propertyA = \"Just changed its value!\";\n"
 "o.dumpProperties ();"
 
-#: C/image-viewer.js.page:120(section/p)
+#: C/image-viewer.js.page:124(section/p)
 msgid ""
 "This code creates a new instance of the class called <code>o</code>, runs "
 "<code>aMethod</code>, changes <code>propertyA</code> to a different string, "
@@ -21289,7 +21444,7 @@ msgstr ""
 "diferente y entonces llama a <code>dumpProperties</code> (que muestra los "
 "campos)."
 
-#: C/image-viewer.js.page:121(section/p)
+#: C/image-viewer.js.page:125(section/p)
 msgid ""
 "Save the code in the <file>main.js</file> and then run it by using "
 "<guiseq><gui>Run</gui><gui>Execute</gui></guiseq> from the menu or using the "
@@ -21299,16 +21454,16 @@ msgstr ""
 "<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq> desde el menú o "
 "usando la barra de herramientas."
 
-#: C/image-viewer.js.page:126(section/title)
-#: C/image-viewer.py.page:65(section/title)
+#: C/image-viewer.js.page:130(section/title)
+#: C/image-viewer.py.page:69(section/title)
 msgid "A first Gtk application"
 msgstr "Una primera aplicación en GTK"
 
-#: C/image-viewer.js.page:127(section/p)
+#: C/image-viewer.js.page:131(section/p)
 msgid "Let's see what a very basic Gtk application looks like in JavaScript:"
 msgstr "Vea como queda una aplicación GTK+ muy básica en JavaScript:"
 
-#: C/image-viewer.js.page:128(section/code)
+#: C/image-viewer.js.page:132(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -21331,11 +21486,11 @@ msgstr ""
 "\n"
 "Gtk.main ();"
 
-#: C/image-viewer.js.page:137(section/p) C/image-viewer.py.page:90(section/p)
+#: C/image-viewer.js.page:141(section/p) C/image-viewer.py.page:94(section/p)
 msgid "Let's take a look at what's happening:"
 msgstr "Eche un vistazo a lo que está pasando:"
 
-#: C/image-viewer.js.page:140(item/p) C/image-viewer.py.page:93(item/p)
+#: C/image-viewer.js.page:144(item/p) C/image-viewer.py.page:97(item/p)
 msgid ""
 "The first line imports the Gtk namespace (that is, it includes the Gtk "
 "library). The libraries are provided by GObject Introspection (gi), which "
@@ -21346,7 +21501,7 @@ msgstr ""
 "(gi)», que implementa asociaciones de lenguajes para la mayoría de las "
 "bilbiotecas de GNOME."
 
-#: C/image-viewer.js.page:143(item/p)
+#: C/image-viewer.js.page:147(item/p)
 msgid ""
 "<code>Gtk.init</code> initializes the Gtk library; this statement is "
 "mandatory for all Gtk programs."
@@ -21354,7 +21509,7 @@ msgstr ""
 "<code>Gtk.init</code> inicializa la biblioteca GTK; esta sentencia es "
 "obligatoria para todos los programas GTK."
 
-#: C/image-viewer.js.page:146(item/p)
+#: C/image-viewer.js.page:150(item/p)
 msgid ""
 "The next line creates the main window by creating a new <code>Gtk.Window</"
 "code> object. You can pass several properties to the window's constructor by "
@@ -21366,7 +21521,7 @@ msgstr ""
 "usando la sintaxis <code>{property: value, property: value, ...}</code>. En "
 "este caso, se está estableciendo el título de la ventana."
 
-#: C/image-viewer.js.page:147(item/p)
+#: C/image-viewer.js.page:151(item/p)
 msgid ""
 "The next line explicitly shows the window. In Gtk, every widget is hidden by "
 "default."
@@ -21374,7 +21529,7 @@ msgstr ""
 "La siguiente línea muestra explícitamente la ventana. En GTK+, cada widget "
 "está oculto de manera predeterminada."
 
-#: C/image-viewer.js.page:148(item/p)
+#: C/image-viewer.js.page:152(item/p)
 msgid ""
 "Finally, <code>Gtk.main</code> runs the main loop — in other words, it "
 "executes the program. The main loop listens for events (signals) from the "
@@ -21386,7 +21541,7 @@ msgstr ""
 "(señales) de la interfaz del usuario y llama a un manejador de la señal que "
 "hará algo útil. En breve aprenderá más cosas sobre las señales."
 
-#: C/image-viewer.js.page:151(section/p)
+#: C/image-viewer.js.page:155(section/p)
 msgid ""
 "Save the code in <file>main.js</file> and run it. You will notice that the "
 "application does not quit when you close the window. This is because we "
@@ -21402,11 +21557,11 @@ msgstr ""
 "puede pulsar <keyseq><key>Ctrl</key><key>C</key></keyseq> en la ventana de "
 "la terminal para salir del programa."
 
-#: C/image-viewer.js.page:156(section/title)
+#: C/image-viewer.js.page:160(section/title)
 msgid "Adding classes"
 msgstr "Añadir clases"
 
-#: C/image-viewer.js.page:157(section/p)
+#: C/image-viewer.js.page:161(section/p)
 msgid ""
 "The proper way of doing Gtk programming is by using classes. Let's rewrite "
 "the simple code you just wrote using classes:"
@@ -21414,7 +21569,7 @@ msgstr ""
 "La manera correcta de programar en GTK+ es usando clases. Reescriba el "
 "código que acaba de escribir usando clases:"
 
-#: C/image-viewer.js.page:158(section/code)
+#: C/image-viewer.js.page:162(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -21453,7 +21608,7 @@ msgstr ""
 "var iv = new ImageViewer ();\n"
 "Gtk.main ();"
 
-#: C/image-viewer.js.page:176(section/p)
+#: C/image-viewer.js.page:180(section/p)
 msgid ""
 "Notice that the program is the same; we just moved the window creation code "
 "to our own <code>ImageViewer</code> class. The class's constructor calls the "
@@ -21467,7 +21622,7 @@ msgstr ""
 "muestra la ventana. Se crea entonces una instancia de la clase antes de "
 "ejecutar el bucle principal (<code>Gtk.main</code>)."
 
-#: C/image-viewer.js.page:177(section/p)
+#: C/image-viewer.js.page:181(section/p)
 msgid ""
 "This code is modular and can be split into multiple files easily. This makes "
 "it cleaner and easier to read."
@@ -21475,12 +21630,12 @@ msgstr ""
 "El código es modular y se puede dividir el varios archivos fácilmente. Esto "
 "hace que sea más limpio y fácil de leer."
 
-#: C/image-viewer.js.page:181(section/title)
-#: C/image-viewer.py.page:114(section/title)
+#: C/image-viewer.js.page:185(section/title)
+#: C/image-viewer.py.page:118(section/title)
 msgid "Signals"
 msgstr "Señales"
 
-#: C/image-viewer.js.page:182(section/p) C/image-viewer.py.page:115(section/p)
+#: C/image-viewer.js.page:186(section/p) C/image-viewer.py.page:119(section/p)
 msgid ""
 "Signals are one of the key concepts in Gtk programming. Whenever something "
 "happens to an object, it emits a signal; for example, when a button is "
@@ -21494,7 +21649,7 @@ msgstr ""
 "cuando ocurre ese evento, debe conectar una función (un «manejador de la "
 "señal») a esa señal. Aquí hay un ejemplo:"
 
-#: C/image-viewer.js.page:183(section/code)
+#: C/image-viewer.js.page:187(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -21511,7 +21666,7 @@ msgstr ""
 "var b = new Gtk.Button ({label:\"Click me\"});\n"
 "b.connect (\"clicked\", button_clicked);"
 
-#: C/image-viewer.js.page:189(section/p) C/image-viewer.py.page:122(section/p)
+#: C/image-viewer.js.page:193(section/p) C/image-viewer.py.page:126(section/p)
 msgid ""
 "The last two lines create a <code>Gtk.Button</code> called <code>b</code> "
 "and connect its <code>clicked</code> signal to the <code>button_clicked</"
@@ -21525,11 +21680,11 @@ msgstr ""
 "se pulsa un botón, se ejecuta el código de la función <code>button_clicked</"
 "code>. Esto sólo imprime un mensaje aquí."
 
-#: C/image-viewer.js.page:190(section/p)
+#: C/image-viewer.js.page:194(section/p)
 msgid "The syntax for connecting any signal to a function is:"
 msgstr "La sintaxis para conectar cualquier señal a una función es:"
 
-#: C/image-viewer.js.page:191(section/code)
+#: C/image-viewer.js.page:195(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -21538,7 +21693,7 @@ msgstr ""
 "\n"
 "object.connect (&lt;signal_name&gt;, &lt;function_to_be_called&gt;);"
 
-#: C/image-viewer.js.page:193(section/p)
+#: C/image-viewer.js.page:197(section/p)
 msgid ""
 "You can find signal definitions for any object in the <link href=\"http://";
 "library.gnome.org/devel/gtk/stable/ch01.html\">GTK class reference</link>."
@@ -21547,12 +21702,12 @@ msgstr ""
 "href=\"http://library.gnome.org/devel/gtk/stable/ch01.html\";>referencia de "
 "clases de GTK+</link>."
 
-#: C/image-viewer.js.page:196(note/p)
+#: C/image-viewer.js.page:200(note/p)
 msgid ""
 "You can simplify the code by making use of an inline function definition:"
 msgstr "Puede simplificar el código usando una definición de función en línea:"
 
-#: C/image-viewer.js.page:197(note/code)
+#: C/image-viewer.js.page:201(note/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -21561,11 +21716,11 @@ msgstr ""
 "\n"
 "b.connect (\"clicked\", function () { print (\"you clicked me!\"); });"
 
-#: C/image-viewer.js.page:204(section/title)
+#: C/image-viewer.js.page:208(section/title)
 msgid "Closing the window"
 msgstr "Cerrar la ventana"
 
-#: C/image-viewer.js.page:205(section/p)
+#: C/image-viewer.js.page:209(section/p)
 msgid ""
 "When you close a Gtk window it's not really closed, it's hidden. This allows "
 "you to keep the window around (which is useful if you want to ask the user "
@@ -21575,7 +21730,7 @@ msgstr ""
 "permite mantener la ventana (lo que es útil si quiere preguntar al usuario "
 "si realmente quiere cerrar la ventana, por ejemplo)."
 
-#: C/image-viewer.js.page:206(section/p)
+#: C/image-viewer.js.page:210(section/p)
 msgid ""
 "In our case, we really do just want to close the window. The simplest way of "
 "doing this is by connecting the <code>hide</code> signal of the GtkWindow "
@@ -21589,12 +21744,12 @@ msgstr ""
 "<file>image-viewer.js</file> y añada el siguiente código al método "
 "<code>_init</code>, en la línea anterior a <code>this.window.show</code>:"
 
-#: C/image-viewer.js.page:207(section/code)
+#: C/image-viewer.js.page:211(section/code)
 #, no-wrap
 msgid "this.window.connect (\"hide\", Gtk.main_quit);"
 msgstr "this.window.connect (\"hide\", Gtk.main_quit);"
 
-#: C/image-viewer.js.page:208(section/p)
+#: C/image-viewer.js.page:212(section/p)
 msgid ""
 "This connects the <code>hide</code> signal of the window to Gtk's "
 "<code>main_quit</code> function, which ends the execution of the Gtk main "
@@ -21610,12 +21765,12 @@ msgstr ""
 "haya después de la línea <code>Gtk.main ();</code>, pero como no hay ningún "
 "código después de ese punto, el programa simplemente termina."
 
-#: C/image-viewer.js.page:212(section/title)
-#: C/image-viewer.py.page:126(section/title)
+#: C/image-viewer.js.page:216(section/title)
+#: C/image-viewer.py.page:130(section/title)
 msgid "Containers: Laying-out the user interface"
 msgstr "Contenedores: diseñar la interfaz de usuario"
 
-#: C/image-viewer.js.page:213(section/p) C/image-viewer.py.page:127(section/p)
+#: C/image-viewer.js.page:217(section/p) C/image-viewer.py.page:131(section/p)
 msgid ""
 "Widgets (controls, such as buttons and labels) can be arranged in the window "
 "by making use of <em>containers</em>. You can organize the layout by mixing "
@@ -21625,7 +21780,7 @@ msgstr ""
 "ventana usando <em>contenedores</em>. Puede organizar el diseño mezclando "
 "diferentes tipos de contenedores, como cajas y rejillas."
 
-#: C/image-viewer.js.page:214(section/p) C/image-viewer.py.page:128(section/p)
+#: C/image-viewer.js.page:218(section/p) C/image-viewer.py.page:132(section/p)
 msgid ""
 "A <code>Gtk.Window</code> is itself a type of container, but you can only "
 "put one widget directly into it. We would like to have two widgets, an image "
@@ -21647,7 +21802,7 @@ msgstr ""
 "widgets, organizados horizontal o verticalmente. Se pueden hacer diseños más "
 "complejos poniendo varias cajas dentro de otras, y así sucesivamente."
 
-#: C/image-viewer.js.page:216(note/p) C/image-viewer.py.page:130(note/p)
+#: C/image-viewer.js.page:220(note/p) C/image-viewer.py.page:134(note/p)
 msgid ""
 "There is a graphical user interface designer called <app>Glade</app> "
 "integrated in <app>Anjuta</app> which makes UI design really easy. For this "
@@ -21657,7 +21812,7 @@ msgstr ""
 "en <app>Anjuta</app> que hace que el diseño de IU sea realmente fácil. Sin "
 "embargo, para este ejemplo, se va a codificar todo manualmente."
 
-#: C/image-viewer.js.page:218(section/p)
+#: C/image-viewer.js.page:222(section/p)
 msgid ""
 "Let's add the box and widgets to the window. Insert the following code into "
 "the <code>_init</code> method, immediately above the <code>this.window.show</"
@@ -21667,7 +21822,7 @@ msgstr ""
 "método <code>_init</code>, justo debajo de la línea <code>this.window.show</"
 "code>:"
 
-#: C/image-viewer.js.page:219(section/code)
+#: C/image-viewer.js.page:223(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -21678,7 +21833,7 @@ msgstr ""
 "var main_box = new Gtk.Box ({orientation: Gtk.Orientation.VERTICAL, spacing: 0});\n"
 "this.window.add (main_box);"
 
-#: C/image-viewer.js.page:222(section/p)
+#: C/image-viewer.js.page:226(section/p)
 msgid ""
 "The first line creates a <code>Gtk.Box</code> called <code>main_box</code> "
 "and sets two of its properties: the <code>orientation</code> is set to "
@@ -21692,7 +21847,7 @@ msgstr ""
 "<code>spacing</code> entre los widgets, que se establece a 0 píxeles. La "
 "siguiente línea añade la <code>Gtk.Box</code> recién creada a la ventana."
 
-#: C/image-viewer.js.page:223(section/p) C/image-viewer.py.page:141(section/p)
+#: C/image-viewer.js.page:227(section/p) C/image-viewer.py.page:145(section/p)
 msgid ""
 "So far the window only contains an empty <code>Gtk.Box</code>, and if you "
 "run the program now you will see no changes at all (the <code>Gtk.Box</code> "
@@ -21702,12 +21857,12 @@ msgstr ""
 "ejecuta el programa ahora no verá ningún cambio (la <code>Gtk.Box</code> es "
 "un contenedor transparente, por lo que no puede que está ahí)."
 
-#: C/image-viewer.js.page:227(section/title)
-#: C/image-viewer.py.page:145(section/title)
+#: C/image-viewer.js.page:231(section/title)
+#: C/image-viewer.py.page:149(section/title)
 msgid "Packing: Adding widgets to the container"
 msgstr "Empaquetado: añadir widgets al contenedor"
 
-#: C/image-viewer.js.page:228(section/p)
+#: C/image-viewer.js.page:232(section/p)
 msgid ""
 "To add some widgets to the <code>Gtk.Box</code>, insert the following code "
 "directly below the <code>this.window.add (main_box)</code> line:"
@@ -21715,7 +21870,7 @@ msgstr ""
 "Para añadir algunos widgets a la <code>Gtk.Box</code>, inserte el siguiente "
 "código justo debajo de la línea <code>this.window.add (main_box)</code>:"
 
-#: C/image-viewer.js.page:229(section/code)
+#: C/image-viewer.js.page:233(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -21726,7 +21881,7 @@ msgstr ""
 "this.image = new Gtk.Image ();\n"
 "main_box.pack_start (this.image, true, true, 0);"
 
-#: C/image-viewer.js.page:232(section/p)
+#: C/image-viewer.js.page:236(section/p)
 msgid ""
 "The first line creates a new <code>Gtk.Image</code> called <code>image</"
 "code>, which will be used to display an image file. Then, the image widget "
@@ -21742,7 +21897,7 @@ msgstr ""
 "GtkBox.html#gtk-box-pack-start\"><code>pack_start</code></link> de <code>Gtk."
 "Box</code>."
 
-#: C/image-viewer.js.page:233(section/p)
+#: C/image-viewer.js.page:237(section/p)
 msgid ""
 "<code>pack_start</code> takes 4 arguments: the widget that is to be added to "
 "the <code>Gtk.Box</code> (<code>child</code>); whether the <code>Gtk.Box</"
@@ -21760,7 +21915,7 @@ msgstr ""
 "cuánto espacio debe haber, en píxeles, entre el widget y los demás widgets "
 "dentro de la <code>Gtk.Box</code> (<code>padding</code>)."
 
-#: C/image-viewer.js.page:234(section/p) C/image-viewer.py.page:153(section/p)
+#: C/image-viewer.js.page:238(section/p) C/image-viewer.py.page:157(section/p)
 msgid ""
 "Gtk containers (and widgets) dynamically expand to fill the available space, "
 "if you let them. You don't position widgets by giving them a precise x,y-"
@@ -21775,7 +21930,7 @@ msgstr ""
 "sea más fácil, y que los widgets tengan un tamaño sensible automática en la "
 "mayoría de las situaciones."
 
-#: C/image-viewer.js.page:235(section/p) C/image-viewer.py.page:154(section/p)
+#: C/image-viewer.js.page:239(section/p) C/image-viewer.py.page:158(section/p)
 msgid ""
 "Also note how the widgets are organized in a hierarchy. Once packed in the "
 "<code>Gtk.Box</code>, the <code>Gtk.Image</code> is considered a <em>child</"
@@ -21790,12 +21945,12 @@ msgstr ""
 "ocultar la <code>Gtk.Box</code>, lo que haría que también se ocultaran todos "
 "sus hijos a la vez."
 
-#: C/image-viewer.js.page:236(section/p) C/image-viewer.py.page:155(section/p)
+#: C/image-viewer.js.page:240(section/p) C/image-viewer.py.page:159(section/p)
 msgid "Now insert these two lines, below the two you just added:"
 msgstr ""
 "Ahora inserte estas dos líneas, justo debajo de las dos que acaba de añadir."
 
-#: C/image-viewer.js.page:237(section/code)
+#: C/image-viewer.js.page:241(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -21806,7 +21961,7 @@ msgstr ""
 "var open_button = new Gtk.Button ({label: \"Open a picture...\"});\n"
 "main_box.pack_start (open_button, false, false, 0);"
 
-#: C/image-viewer.js.page:240(section/p)
+#: C/image-viewer.js.page:244(section/p)
 msgid ""
 "These lines are similar to the first two, but this time they create a "
 "<code>Gtk.Button</code> and add it to <code>main_box</code>. Notice that we "
@@ -21826,19 +21981,19 @@ msgstr ""
 "se maximiza la ventana, el tamaño del botón será el mismo, pero el tamaño de "
 "la imagen aumentará junto con el resto de la ventana."
 
-#: C/image-viewer.js.page:241(section/p)
+#: C/image-viewer.js.page:245(section/p)
 msgid ""
 "Finally, we must change the <code>this.window.show ();</code> line to read:"
 msgstr ""
 "Finalmente, se debe cambiar la línea <code>this.window.show ();</code> para "
 "leer:"
 
-#: C/image-viewer.js.page:242(section/code)
+#: C/image-viewer.js.page:246(section/code)
 #, no-wrap
 msgid "this.window.show_all ();"
 msgstr "this.window.show_all ();"
 
-#: C/image-viewer.js.page:243(section/p)
+#: C/image-viewer.js.page:247(section/p)
 msgid ""
 "This will show the child of the Gtk window, and all of its children, and its "
 "children's children, and so on. (Remember that Gtk widgets are all hidden by "
@@ -21848,13 +22003,13 @@ msgstr ""
 "de sus hijos, etcétera. (Recuerde que los widgets de GTK están ocultos de "
 "manera predeterminada.)"
 
-#: C/image-viewer.js.page:247(section/title)
-#: C/image-viewer.py.page:164(section/title)
+#: C/image-viewer.js.page:251(section/title)
+#: C/image-viewer.py.page:168(section/title)
 msgid ""
 "Loading the image: Connecting to the button's <code>clicked</code> signal"
 msgstr "Cargar la imagen: conectar con la señal <code>clicked</code> del botón"
 
-#: C/image-viewer.js.page:248(section/p)
+#: C/image-viewer.js.page:252(section/p)
 msgid ""
 "When the user clicks on the <gui>Open</gui> button, a dialog should appear "
 "so that the user can choose a picture. Once chosen, the picture should be "
@@ -21864,7 +22019,7 @@ msgstr ""
 "diálogo en el que el usuario pueda elegir una imagen. una vez elegida, la "
 "imagen se debe cargar y mostrar en el widget de imagen."
 
-#: C/image-viewer.js.page:249(section/p)
+#: C/image-viewer.js.page:253(section/p)
 msgid ""
 "The first step is to connect the <code>clicked</code> signal of the button "
 "to a signal handler function, which we call <code>_openClicked</code>. Put "
@@ -21876,7 +22031,7 @@ msgstr ""
 "este código inmediatamente después de la línea <code>var open_button = new "
 "Gtk.Button</code> en la que se creó el botón:"
 
-#: C/image-viewer.js.page:250(section/code)
+#: C/image-viewer.js.page:254(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -21885,7 +22040,7 @@ msgstr ""
 "\n"
 "open_button.connect (\"clicked\", Lang.bind (this, this._openClicked));"
 
-#: C/image-viewer.js.page:252(section/p)
+#: C/image-viewer.js.page:256(section/p)
 msgid ""
 "We are using the <em>Lang</em> JavaScript helper here. It allows us to "
 "connect a <em>class method</em> to the signal, rather than a plain function "
@@ -21901,17 +22056,17 @@ msgstr ""
 "funcione, debe poner también la siguiente línea en la parte superior del "
 "archivo:"
 
-#: C/image-viewer.js.page:253(section/code)
+#: C/image-viewer.js.page:257(section/code)
 #, no-wrap
 msgid "const Lang = imports.lang;"
 msgstr "const Lang = imports.lang;"
 
-#: C/image-viewer.js.page:257(section/title)
-#: C/image-viewer.py.page:175(section/title)
+#: C/image-viewer.js.page:261(section/title)
+#: C/image-viewer.py.page:179(section/title)
 msgid "Loading the image: Writing the signal's callback"
 msgstr "Cargar la imagen: escribir la llamada de retorno de la señal"
 
-#: C/image-viewer.js.page:258(section/p)
+#: C/image-viewer.js.page:262(section/p)
 msgid ""
 "Now we can create the <code>_openClicked()</code> method. Insert the "
 "following into the <code>ImageViewer.prototype</code> code block, after the "
@@ -21921,7 +22076,7 @@ msgstr ""
 "siguiente código en el bloque de código de <code>ImageViewer.prototype</"
 "code>, después del método <code>_init</code> (y no olvide la coma):"
 
-#: C/image-viewer.js.page:259(section/code)
+#: C/image-viewer.js.page:263(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -21964,7 +22119,7 @@ msgstr ""
 "    chooser.destroy ();\n"
 "  }"
 
-#: C/image-viewer.js.page:281(item/p)
+#: C/image-viewer.js.page:285(item/p)
 msgid ""
 "The line beginning with <code>var chooser</code> creates an <gui>Open</gui> "
 "dialog, which the user can use to choose files. We set four properties: the "
@@ -21984,7 +22139,7 @@ msgstr ""
 "establecer a <code>true</code> evita que el usuario pueda pulsar en otra "
 "área de la aplicación hasta que no se cierre el diálogo."
 
-#: C/image-viewer.js.page:284(item/p) C/image-viewer.py.page:198(item/p)
+#: C/image-viewer.js.page:288(item/p) C/image-viewer.py.page:202(item/p)
 msgid ""
 "The next two lines add <gui>Cancel</gui> and <gui>Open</gui> buttons to the "
 "dialog. The second argument of the <code>add_button</code> method is the "
@@ -21996,7 +22151,7 @@ msgstr ""
 "<code>add_button</code> es el valor (entero) que se devuelve cuando se pulsa "
 "el botón: 0 para <gui>Cancelar</gui> y 1 para <gui>Abrir</gui>."
 
-#: C/image-viewer.js.page:288(item/p) C/image-viewer.py.page:202(item/p)
+#: C/image-viewer.js.page:292(item/p) C/image-viewer.py.page:206(item/p)
 msgid ""
 "<code>set_default_response</code> determines the button that will be "
 "activated if the user double-clicks a file or presses <key>Enter</key>. In "
@@ -22005,10 +22160,9 @@ msgid ""
 msgstr ""
 "<code>set_default_response</code> determina qué botón se activará si el "
 "usuario hace una doble pulsación o presiona <key>Intro</key>. En este caso, "
-"se usa el botón <gui>Abrir</gui> como predeterminado (que tiene el valor "
-"«1»)."
+"se usa el botón <gui>Abrir</gui> como predeterminado (que tiene el valor «1»)."
 
-#: C/image-viewer.js.page:291(item/p) C/image-viewer.py.page:205(item/p)
+#: C/image-viewer.js.page:295(item/p) C/image-viewer.py.page:209(item/p)
 msgid ""
 "The next three lines restrict the <gui>Open</gui> dialog to only display "
 "files which can be opened by <code>Gtk.Image</code>. A filter object is "
@@ -22023,7 +22177,7 @@ msgstr ""
 "formatos de imagen como PNG y JPEG) al filtro. Por último, se establece que "
 "este filtro sea el filtro del diálogo <gui>Abrir</gui>."
 
-#: C/image-viewer.js.page:294(item/p)
+#: C/image-viewer.js.page:298(item/p)
 msgid ""
 "<code>chooser.run</code> displays the <gui>Open</gui> dialog. The dialog "
 "will wait for the user to choose an image; when they do, <code>chooser.run</"
@@ -22037,7 +22191,7 @@ msgstr ""
 "output> si el usuario pulsara <gui>Cancelar</gui>). La sentencia <code>if</"
 "code> comprueba esto."
 
-#: C/image-viewer.js.page:296(item/p) C/image-viewer.py.page:210(item/p)
+#: C/image-viewer.js.page:300(item/p) C/image-viewer.py.page:214(item/p)
 msgid ""
 "Assuming that the user did click <gui>Open</gui>, the next line sets the "
 "<code>file</code> property of the <code>Gtk.Image</code> to the filename of "
@@ -22049,8 +22203,8 @@ msgstr ""
 "nombre del archivo de imagen seleccionada por el usuario. La <code>Gtk."
 "Image</code> cargará y mostrará la imagen elegida."
 
-#: C/image-viewer.js.page:299(item/p) C/image-viewer.py.page:213(item/p)
-#: C/image-viewer.vala.page:267(item/p)
+#: C/image-viewer.js.page:303(item/p) C/image-viewer.py.page:217(item/p)
+#: C/image-viewer.vala.page:272(item/p)
 msgid ""
 "In the final line of this method, we destroy the <gui>Open</gui> dialog "
 "because we don't need it any more."
@@ -22058,7 +22212,7 @@ msgstr ""
 "En la última línea de este método se destruye el diálogo <gui>Abrir</gui> "
 "porque ya no se necesita."
 
-#: C/image-viewer.js.page:307(section/p)
+#: C/image-viewer.js.page:311(section/p)
 msgid ""
 "All of the code you need should now be in place, so try running the code. "
 "That should be it; a fully-functioning image viewer (and a whistlestop tour "
@@ -22069,7 +22223,7 @@ msgstr ""
 "completamente funcional (y un completo tour sobre JavaScript y GTK+) en poco "
 "tiempo."
 
-#: C/image-viewer.js.page:312(section/p)
+#: C/image-viewer.js.page:316(section/p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
 "<link href=\"image-viewer/image-viewer.js\">reference code</link>."
@@ -22078,8 +22232,11 @@ msgstr ""
 "\"image-viewer/image-viewer.js\">código de referencia</link>."
 
 #: C/image-viewer.py.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Image Viewer (Python)"
 msgctxt "text"
-msgid "Image Viewer (Python)"
+msgid "Image viewer (Python)"
 msgstr "Visor de imágenes (Python)"
 
 #: C/image-viewer.py.page:10(info/desc)
@@ -22090,15 +22247,15 @@ msgstr ""
 "Algo más que una sencilla aplicación «Hola mundo»; escribir un visor de "
 "imágenes en GTK."
 
-#: C/image-viewer.py.page:29(item/p)
+#: C/image-viewer.py.page:33(item/p)
 msgid "Write a basic GTK user interface in Python"
 msgstr "Escribir una interfaz de usuario básica en Python"
 
-#: C/image-viewer.py.page:37(item/p)
+#: C/image-viewer.py.page:41(item/p)
 msgid "Basic knowledge of the python programming language"
 msgstr "Conocimiento básico del lenguaje de programación Python"
 
-#: C/image-viewer.py.page:51(item/p)
+#: C/image-viewer.py.page:55(item/p)
 msgid ""
 "Choose <gui>PyGTK (automake)</gui> from the <gui>Python</gui> tab, click "
 "<gui>Continue</gui>, and fill out your details on the next few pages. Use "
@@ -22109,7 +22266,7 @@ msgstr ""
 "páginas. Use <file>visor-imagenes</file> como nombre del proyecto y de la "
 "carpeta."
 
-#: C/image-viewer.py.page:54(item/p)
+#: C/image-viewer.py.page:58(item/p)
 msgid ""
 "Be sure to disable <gui>Use GtkBuilder for user interface</gui> as we will "
 "build the user interface manually in this example. For an example of using "
@@ -22122,7 +22279,7 @@ msgstr ""
 "revise la <link xref=\"guitar-tuner.py\">demostración de afinador de "
 "guitarra</link>."
 
-#: C/image-viewer.py.page:59(item/p)
+#: C/image-viewer.py.page:63(item/p)
 msgid ""
 "Click <gui>Apply</gui> and the project will be created for you. Open "
 "<file>src/image_viewer.py</file> from the <gui>Project</gui> or <gui>File</"
@@ -22132,11 +22289,11 @@ msgstr ""
 "imagenes.py</file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</"
 "gui>. Contiene un ejemplo de código muy básico:"
 
-#: C/image-viewer.py.page:66(section/p)
+#: C/image-viewer.py.page:70(section/p)
 msgid "Let's see what a very basic Gtk application looks like in Python:"
 msgstr "Vea como queda una aplicación GTK+ muy básica en Python:"
 
-#: C/image-viewer.py.page:67(section/code)
+#: C/image-viewer.py.page:71(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -22187,7 +22344,7 @@ msgstr ""
 "\n"
 "  "
 
-#: C/image-viewer.py.page:96(item/p)
+#: C/image-viewer.py.page:100(item/p)
 msgid ""
 "In the <code>__init__</code> method of the <code>GUI</code> class creates an "
 "(empty) <code>Gtk.Window</code>, sets its title and then connects a signal "
@@ -22199,7 +22356,7 @@ msgstr ""
 "señal para salir de la aplicación una vez que se cierra la ventana. Es "
 "bastante simple, más acerca de señales en adelante."
 
-#: C/image-viewer.py.page:101(item/p)
+#: C/image-viewer.py.page:105(item/p)
 msgid ""
 "Next, <code>destroy</code> is defined which just quits the application. It "
 "is called by the <code>destroy</code> signal connected above."
@@ -22208,12 +22365,12 @@ msgstr ""
 "aplicación. Se le llama a través de la señal <code>destroy</code> conectada "
 "anteriormente."
 
-#: C/image-viewer.py.page:105(item/p)
+#: C/image-viewer.py.page:109(item/p)
 msgid "The rest of the file does initialisation for Gtk and displays the GUI."
 msgstr ""
 "El resto del archivo realiza la inicialización de GTK+ y muestra la IGU."
 
-#: C/image-viewer.py.page:109(section/p)
+#: C/image-viewer.py.page:113(section/p)
 msgid ""
 "This code is ready to run, so try it using <guiseq><gui>Run</"
 "gui><gui>Execute</gui></guiseq>. It should show you an empty window."
@@ -22222,7 +22379,7 @@ msgstr ""
 "<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq>. Debería mostrar una "
 "ventana vacía."
 
-#: C/image-viewer.py.page:116(section/code)
+#: C/image-viewer.py.page:120(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -22239,7 +22396,7 @@ msgstr ""
 "b = new Gtk.Button (\"Click me\")\n"
 "b.connect_after ('clicked', button_clicked)"
 
-#: C/image-viewer.py.page:132(section/p)
+#: C/image-viewer.py.page:136(section/p)
 msgid ""
 "Let's add the box and widgets to the window. Insert the following code into "
 "the <code>__init__</code> method, immediately after the <code>window."
@@ -22249,7 +22406,7 @@ msgstr ""
 "método <code>__init__</code>, justo debajo de la línea <code>window."
 "connect_after</code>:"
 
-#: C/image-viewer.py.page:133(section/code)
+#: C/image-viewer.py.page:137(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -22266,7 +22423,7 @@ msgstr ""
 "window.add (box)\n"
 "\n"
 
-#: C/image-viewer.py.page:140(section/p)
+#: C/image-viewer.py.page:144(section/p)
 msgid ""
 "The first line creates a <code>Gtk.Box</code> called <code>box</code> and "
 "the following lines set two of its properties: the <code>orientation</code> "
@@ -22281,7 +22438,7 @@ msgstr ""
 "widgets se establece a 5 píxeles. La siguiente línea añade la <code>Gtk.Box</"
 "code> recién creada a la ventana."
 
-#: C/image-viewer.py.page:146(section/p)
+#: C/image-viewer.py.page:150(section/p)
 msgid ""
 "To add some widgets to the <code>Gtk.Box</code>, insert the following code "
 "directly below the <code>window.add (box)</code> line:"
@@ -22289,7 +22446,7 @@ msgstr ""
 "Para añadir algunos widgets a la <code>Gtk.Box</code>, inserte el siguiente "
 "código justo debajo de la línea <code>window.add (box)</code>:"
 
-#: C/image-viewer.py.page:147(section/code)
+#: C/image-viewer.py.page:151(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -22300,7 +22457,7 @@ msgstr ""
 "self.image = Gtk.Image()\n"
 "box.pack_start (self.image, False, False, 0)"
 
-#: C/image-viewer.py.page:150(section/p)
+#: C/image-viewer.py.page:154(section/p)
 msgid ""
 "The first line creates a new <code>Gtk.Image</code> called <code>image</"
 "code>, which will be used to display an image file. As we need that later on "
@@ -22320,7 +22477,7 @@ msgstr ""
 "gnome.org/devel/gtk/stable/GtkBox.html#gtk-box-pack-start"
 "\"><code>pack_start</code></link> de GtkBox."
 
-#: C/image-viewer.py.page:152(section/p)
+#: C/image-viewer.py.page:156(section/p)
 msgid ""
 "<code>pack_start</code> takes 4 arguments: the widget that is to be added to "
 "the GtkBox (<code>child</code>); whether the <code>Gtk.Box</code> should "
@@ -22337,7 +22494,7 @@ msgstr ""
 "code>); y cuánto espacio debe haber, en píxeles, entre el widget y sus "
 "vecinos dentro de la <code>Gtk.Box</code> (<code>padding</code>)."
 
-#: C/image-viewer.py.page:156(section/code)
+#: C/image-viewer.py.page:160(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -22348,7 +22505,7 @@ msgstr ""
 "button = Gtk.Button (\"Open a picture...\")\n"
 "box.pack_start (button, False, False, 0)\n"
 
-#: C/image-viewer.py.page:160(section/p)
+#: C/image-viewer.py.page:164(section/p)
 msgid ""
 "These lines are similar to the first two, but this time they create a "
 "<code>Gtk.Button</code> and add it to <code>box</code>. Notice that we are "
@@ -22368,7 +22525,7 @@ msgstr ""
 "maximiza la ventana, el tamaño del botón será el mismo, pero el tamaño de la "
 "imagen aumentará junto con el resto de la ventana."
 
-#: C/image-viewer.py.page:165(section/p)
+#: C/image-viewer.py.page:169(section/p)
 msgid ""
 "When the user clicks on the <gui>Open Image...</gui> button, a dialog should "
 "appear so that the user can choose a picture. Once chosen, the picture "
@@ -22378,7 +22535,7 @@ msgstr ""
 "aparece un diálogo en el que el usuario pueda elegir una imagen. una vez "
 "elegida, la imagen debería cargarse y mostrarse en el widget de imagen."
 
-#: C/image-viewer.py.page:166(section/p)
+#: C/image-viewer.py.page:170(section/p)
 msgid ""
 "The first step is to connect the <code>clicked</code> signal of the button "
 "to a signal handler function, which we call <code>on_open_clicked</code>. "
@@ -22390,7 +22547,7 @@ msgstr ""
 "este código inmediatamente después de la línea <code>button = Gtk.Button()</"
 "code> en la que se creó el botón:"
 
-#: C/image-viewer.py.page:167(section/code)
+#: C/image-viewer.py.page:171(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -22399,7 +22556,7 @@ msgstr ""
 "\n"
 "button.connect_after('clicked', self.on_open_clicked)\n"
 
-#: C/image-viewer.py.page:170(section/p)
+#: C/image-viewer.py.page:174(section/p)
 msgid ""
 "This will connect the <code>clicked</code> signal to <code>on_open_clicked</"
 "code> method that we will define below."
@@ -22407,7 +22564,7 @@ msgstr ""
 "Esto conectará la señal <code>clicked</code> al método "
 "<code>on_open_clicked</code> que se definirá más adelante."
 
-#: C/image-viewer.py.page:176(section/p)
+#: C/image-viewer.py.page:180(section/p)
 msgid ""
 "Now we can create the <code>on_open_clicked</code> method. Insert the "
 "following into the <code>GUI</code> class code block, after the "
@@ -22417,7 +22574,7 @@ msgstr ""
 "siguente dentro del bloque de clase <code>GUI</code>, después del método "
 "<code>__init__</code>:"
 
-#: C/image-viewer.py.page:177(section/code)
+#: C/image-viewer.py.page:181(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -22452,7 +22609,7 @@ msgstr ""
 "\n"
 "\tdialog.destroy()"
 
-#: C/image-viewer.py.page:195(item/p)
+#: C/image-viewer.py.page:199(item/p)
 msgid ""
 "The line beginning with <code>dialog</code> creates an <gui>Open</gui> "
 "dialog, which the user can use to choose files. We set three properties: the "
@@ -22468,7 +22625,7 @@ msgstr ""
 "guardar un archivo; y <code>transient_for</code>, que establecer la ventana "
 "padre del diálogo."
 
-#: C/image-viewer.py.page:208(item/p)
+#: C/image-viewer.py.page:212(item/p)
 msgid ""
 "<code>dialog.run</code> displays the <gui>Open</gui> dialog. The dialog will "
 "wait for the user to choose an image; when they do, <code>dialog.run</code> "
@@ -22482,7 +22639,7 @@ msgstr ""
 "output> si el usuario pulsara <gui>Cancelar</gui>). La sentencia <code>if</"
 "code> comprueba esto."
 
-#: C/image-viewer.py.page:221(section/p)
+#: C/image-viewer.py.page:225(section/p)
 msgid ""
 "All of the code you need should now be in place, so try running the code. "
 "That should be it; a fully-functioning image viewer (and a whistlestop tour "
@@ -22493,7 +22650,7 @@ msgstr ""
 "completamente funcional (y un completo tour sobre Python y GTK+) en poco "
 "tiempo."
 
-#: C/image-viewer.py.page:226(section/p)
+#: C/image-viewer.py.page:230(section/p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
 "<link href=\"image-viewer/image-viewer.py\">reference code</link>."
@@ -22502,15 +22659,24 @@ msgstr ""
 "\"image-viewer/image-viewer.py\">código de referencia</link>."
 
 #: C/image-viewer.vala.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Image Viewer (Vala)"
 msgctxt "text"
-msgid "Image Viewer (Vala)"
+msgid "Image viewer (Vala)"
 msgstr "Visor de imágenes (Vala)"
 
+#: C/image-viewer.vala.page:10(info/desc)
+#, fuzzy
+#| msgid "A little bit more than a simple \"Hello world\" GTKmm application."
+msgid "A little bit more than a simple \"Hello world\" GTK+ application."
+msgstr "Algo más que una sencilla aplicación «Hola mundo» en GTKmm."
+
 #: C/image-viewer.vala.page:22(credit/name)
 msgid "Philip Chimento"
 msgstr "Philip Chimento"
 
-#: C/image-viewer.vala.page:33(synopsis/p)
+#: C/image-viewer.vala.page:38(synopsis/p)
 msgid ""
 "In this tutorial you will create an application which opens and displays an "
 "image file. You will learn:"
@@ -22518,7 +22684,7 @@ msgstr ""
 "En este tutorial se va a crear un programa que abre un archivo de imagen y "
 "lo muestra. Aprenderá a:"
 
-#: C/image-viewer.vala.page:35(item/p)
+#: C/image-viewer.vala.page:40(item/p)
 msgid ""
 "How to set up a basic project using the <link xref=\"getting-ready\">Anjuta "
 "IDE</link>."
@@ -22526,7 +22692,7 @@ msgstr ""
 "Cómo configurar un proyecto básico usando el <link xref=\"getting-ready"
 "\">EID Anjuta</link>."
 
-#: C/image-viewer.vala.page:36(item/p)
+#: C/image-viewer.vala.page:41(item/p)
 msgid ""
 "How to write a <link href=\"http://developer.gnome.org/platform-overview/";
 "stable/gtk\">Gtk application</link> in Vala"
@@ -22534,7 +22700,7 @@ msgstr ""
 "Cómo escribir una <link href=\"http://developer.gnome.org/platform-overview/";
 "stable/gtk\">aplicación de GTK+</link> en Vala"
 
-#: C/image-viewer.vala.page:37(item/p)
+#: C/image-viewer.vala.page:42(item/p)
 msgid ""
 "Some basic concepts of <link href=\"http://developer.gnome.org/gobject/";
 "stable/\">GObject</link> programming"
@@ -22542,18 +22708,23 @@ msgstr ""
 "Algunos conceptos básicos de programación en <link href=\"http://developer.";
 "gnome.org/gobject/stable/\">GObject</link>"
 
-#: C/image-viewer.vala.page:44(item/p)
+#: C/image-viewer.vala.page:49(item/p)
 msgid ""
 "You may find the <link href=\"http://valadoc.org/gtk+-3.0/\";>gtk+-3.0</link> "
 "API Reference useful, although it is not necessary to follow the tutorial."
 msgstr ""
-"Puede que la referencia de la API de <link href=\"http://valadoc.org/gtk";
-"+-3.0/\">gtk+-3.0</link> le resulte útil, aunque no es necesaria para seguir "
+"Puede que la referencia de la API de <link href=\"http://valadoc.org/gtk+-";
+"3.0/\">gtk+-3.0</link> le resulte útil, aunque no es necesaria para seguir "
 "el tutorial."
 
-#: C/image-viewer.vala.page:60(item/p)
+#: C/image-viewer.vala.page:65(item/p)
+#, fuzzy
+#| msgid ""
+#| "From the <gui>Vala</gui> tab choose <gui>Gtk+ (Simple)</gui>, click "
+#| "<gui>Continue</gui>, and fill out your details on the next page. Use "
+#| "<file>image-viewer</file> as project name and directory."
 msgid ""
-"From the <gui>Vala</gui> tab choose <gui>Gtk+ (Simple)</gui>, click "
+"From the <gui>Vala</gui> tab choose <gui>GTK+ (Simple)</gui>, click "
 "<gui>Continue</gui>, and fill out your details on the next page. Use "
 "<file>image-viewer</file> as project name and directory."
 msgstr ""
@@ -22561,7 +22732,7 @@ msgstr ""
 "<gui>Continuar</gui>, y rellene los detalles en las siguientes páginas. Use "
 "<file>visor-imagenes</file> como nombre del proyecto y de la carpeta."
 
-#: C/image-viewer.vala.page:64(item/p)
+#: C/image-viewer.vala.page:69(item/p)
 msgid ""
 "Make sure that <gui>Use GtkBuilder for user interface</gui> is unchecked as "
 "we will create the UI manually in this tutorial."
@@ -22569,7 +22740,7 @@ msgstr ""
 "Asegúrese de que <gui>Usar GtkBuilder para la interfaz del usuario</gui> "
 "está desactivado, ya que, en este tutorial, la IU se creará manualmente."
 
-#: C/image-viewer.vala.page:65(note/p)
+#: C/image-viewer.vala.page:70(note/p)
 msgid ""
 "You will learn how to use the interface builder in the <link xref=\"guitar-"
 "tuner.vala\">Guitar-Tuner</link> tutorial."
@@ -22577,7 +22748,7 @@ msgstr ""
 "Aprenderá a usar el constructor de interfaces en el tutorial del <link xref="
 "\"guitar-tuner.vala\">afinador de guitarra</link>."
 
-#: C/image-viewer.vala.page:69(item/p)
+#: C/image-viewer.vala.page:74(item/p)
 msgid ""
 "Click <gui>Continue</gui> then <gui>Apply</gui> and the project will be "
 "created for you. Open <file>src/image_viewer.vala</file> from the "
@@ -22587,7 +22758,7 @@ msgstr ""
 "proyecto. Abra <file>src/visor-imagenes.vala</file> desde las pestañas "
 "<gui>Proyecto</gui> o <gui>Archivo</gui>. Verá el siguiente código:"
 
-#: C/image-viewer.vala.page:72(item/code)
+#: C/image-viewer.vala.page:77(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -22652,7 +22823,7 @@ msgstr ""
 "\t}\n"
 "}"
 
-#: C/image-viewer.vala.page:108(section/p)
+#: C/image-viewer.vala.page:113(section/p)
 msgid ""
 "The code loads an (empty) window from the user interface description file "
 "and shows it. More details are given below; skip this list if you understand "
@@ -22662,7 +22833,7 @@ msgstr ""
 "interfaz de usuario y la muestra. Se ofrecen más detalles a continuación; "
 "omita esta lista si entiende los conceptos básicos:"
 
-#: C/image-viewer.vala.page:113(item/p)
+#: C/image-viewer.vala.page:118(item/p)
 msgid ""
 "The two <code>using</code> lines at the top import namespaces so we don't "
 "have to name them explicitly."
@@ -22670,7 +22841,7 @@ msgstr ""
 "Las dos líneas <code>using</code> importan espacios de nombres, por lo que "
 "no hay que nombrarlas explícitamente."
 
-#: C/image-viewer.vala.page:116(item/p)
+#: C/image-viewer.vala.page:121(item/p)
 msgid ""
 "The constructor of the <code>Main</code> class creates a new (empty) window "
 "and connects a <link href=\"https://live.gnome.org/Vala/SignalsAndCallbacks";
@@ -22680,7 +22851,7 @@ msgstr ""
 "y conecta una <link href=\"https://live.gnome.org/Vala/SignalsAndCallbacks";
 "\">señal</link> para salir de la aplicación cuando se cierra esa ventana."
 
-#: C/image-viewer.vala.page:121(item/p)
+#: C/image-viewer.vala.page:126(item/p)
 msgid ""
 "The <code>static main</code> function is run by default when you start a "
 "Vala application. It calls a few functions which create the <code>Main</"
@@ -22698,8 +22869,8 @@ msgstr ""
 "\">bucle principal</link> de GTK+, que ejecuta la interfaz de usuario y "
 "empieza a escuchar eventos (como pulsaciones del ratón y del teclado)."
 
-#: C/image-viewer.vala.page:128(section/p)
-#: C/magic-mirror.vala.page:88(section/p)
+#: C/image-viewer.vala.page:133(section/p)
+#: C/magic-mirror.vala.page:93(section/p)
 msgid ""
 "Change the <gui>Configuration</gui> to <gui>Default</gui> and then press "
 "<gui>Execute</gui> to configure the build directory. You only need to do "
@@ -22709,7 +22880,7 @@ msgstr ""
 "<gui>Ejecutar</gui> para configurar la carpeta de construcción. Sólo "
 "necesita hacer esto una vez, para la primera construcción."
 
-#: C/image-viewer.vala.page:134(section/p)
+#: C/image-viewer.vala.page:139(section/p)
 msgid ""
 "Now we will bring life into the empty window. GTK organizes the user "
 "interface with <link href=\"http://www.valadoc.org/gtk+-2.0/Gtk.Container.";
@@ -22725,13 +22896,13 @@ msgstr ""
 "disponible, una <link href=\"http://unstable.valadoc.org/gtk+-2.0/Gtk.Box.";
 "html\"><code>Gtk.Box</code></link>."
 
-#: C/image-viewer.vala.page:138(section/p)
+#: C/image-viewer.vala.page:143(section/p)
 msgid "Add the following lines to the top of the <code>Main</code> class:"
 msgstr ""
 "Añada las siguientes líneas a la parte superior de la clase <code>Main</"
 "code>:"
 
-#: C/image-viewer.vala.page:139(section/code)
+#: C/image-viewer.vala.page:144(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -22742,11 +22913,11 @@ msgstr ""
 "private Window window;\n"
 "private Image image;\n"
 
-#: C/image-viewer.vala.page:144(section/p)
+#: C/image-viewer.vala.page:149(section/p)
 msgid "Now replace the current constructor with the one below:"
 msgstr "Ahora reemplace el constructor actual con el siguiente:"
 
-#: C/image-viewer.vala.page:145(section/code)
+#: C/image-viewer.vala.page:150(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -22795,7 +22966,7 @@ msgstr ""
 "\twindow.destroy.connect (main_quit);\n"
 "}\n"
 
-#: C/image-viewer.vala.page:170(item/p)
+#: C/image-viewer.vala.page:175(item/p)
 msgid ""
 "The first two lines are the parts of the GUI that we will need to access "
 "from more than one method. We declare them up here so that they are "
@@ -22806,7 +22977,7 @@ msgstr ""
 "más de un método. Se declaran aquí, por lo que son accesibles mediante la "
 "clase en vez de serlo solamente en el método en el que se crearon."
 
-#: C/image-viewer.vala.page:174(item/p)
+#: C/image-viewer.vala.page:179(item/p)
 msgid ""
 "The first lines of the constructor create the empty window. The next lines "
 "create the widgets we want to use: a button for opening up an image, the "
@@ -22817,7 +22988,7 @@ msgstr ""
 "imagen, el widget de la vista de la imagen en sí y la caja que se usará como "
 "contenedor."
 
-#: C/image-viewer.vala.page:178(item/p)
+#: C/image-viewer.vala.page:183(item/p)
 msgid ""
 "The calls to <link href=\"http://unstable.valadoc.org/gtk+-2.0/Gtk.Box.";
 "pack_start.html\"><code>pack_start</code></link> add the two widgets to the "
@@ -22836,7 +23007,7 @@ msgstr ""
 "tener una distribución que se ve bien con diferentes tamaños de la ventana. "
 "A continuación, se añade la caja a la ventana."
 
-#: C/image-viewer.vala.page:185(item/p)
+#: C/image-viewer.vala.page:190(item/p)
 msgid ""
 "We need to define what happens when the user clicks on the button. GTK uses "
 "the concept of <em>signals</em>."
@@ -22844,7 +23015,7 @@ msgstr ""
 "Se debe definir qué pasa cuando el usuario pulsa en el botón. GTK+ usa el "
 "concepto de <em>señales</em>."
 
-#: C/image-viewer.vala.page:186(item/p)
+#: C/image-viewer.vala.page:191(item/p)
 msgid ""
 "When the <link href=\"http://valadoc.org/gtk+-3.0/Gtk.Button.html\";>button</"
 "link> is clicked, it fires the <link href=\"http://valadoc.org/gtk+-3.0/Gtk.";
@@ -22858,7 +23029,7 @@ msgstr ""
 "a alguna acción (definida en un método de un <link href=\"https://live.gnome.";
 "org/Vala/SignalsAndCallbacks\">retorno de la llamada</link>)."
 
-#: C/image-viewer.vala.page:189(item/p)
+#: C/image-viewer.vala.page:194(item/p)
 msgid ""
 "This is done using the <code>connect</code> method of the button's "
 "<code>clicked</code> signal, which in this case tells GTK to call the (yet "
@@ -22871,7 +23042,7 @@ msgstr ""
 "(todavía no definida) cuando se pulsa el botón. El <em>retorno de la "
 "llamada</em> se definirá en la siguiente sección."
 
-#: C/image-viewer.vala.page:193(item/p)
+#: C/image-viewer.vala.page:198(item/p)
 msgid ""
 "In the callback, we need to access the <code>window</code> and <code>image</"
 "code> widgets, which is why we defined them as private members at the top of "
@@ -22881,7 +23052,7 @@ msgstr ""
 "code> y <code>image</code> que es por lo que se definen como miembros "
 "privados en la parte superior de la clase."
 
-#: C/image-viewer.vala.page:197(item/p)
+#: C/image-viewer.vala.page:202(item/p)
 msgid ""
 "The last <code>connect</code> call makes sure that the application exits "
 "when the window is closed. The code generated by Anjuta called an "
@@ -22897,7 +23068,7 @@ msgstr ""
 "simplemente conectando la señal <code>main_quit</code> directamente es más "
 "fácil. Puede eliminar el método <code>on_destroy</code>."
 
-#: C/image-viewer.vala.page:205(section/p)
+#: C/image-viewer.vala.page:210(section/p)
 msgid ""
 "We will now define the signal handler for the <code>clicked</code> signal "
 "for the button we mentioned before. Add this code after the constructor:"
@@ -22905,7 +23076,7 @@ msgstr ""
 "Ahora se definirá el manejador de la señal <em>clicked</em> para el botón "
 "mencionado anteriormente. Añada este código después del constructor."
 
-#: C/image-viewer.vala.page:208(section/code)
+#: C/image-viewer.vala.page:213(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -22954,11 +23125,11 @@ msgstr ""
 "\tdialog.destroy ();\n"
 "}\n"
 
-#: C/image-viewer.vala.page:231(section/p)
+#: C/image-viewer.vala.page:236(section/p)
 msgid "This is a bit complicated, so let's break it down:"
 msgstr "Esto es un poco más complicado, así que se puede desglosar:"
 
-#: C/image-viewer.vala.page:232(note/p)
+#: C/image-viewer.vala.page:237(note/p)
 msgid ""
 "A signal handler is a type of callback method that is called when a signal "
 "is emitted. Here the terms are used interchangeably."
@@ -22966,7 +23137,7 @@ msgstr ""
 "Un manejador de señal es un tipo de método de retorno de la llamada al que "
 "se llama cuando se emite la señal. Aquí se usan los términos intercambiados."
 
-#: C/image-viewer.vala.page:235(item/p)
+#: C/image-viewer.vala.page:240(item/p)
 msgid ""
 "The first argument of the callback method is always the widget that sent the "
 "signal. Sometimes other arguments related to the signal come after that, but "
@@ -22976,7 +23147,7 @@ msgstr ""
 "widget que envía la señal. A veces hay otros argumentos relativos a la señal "
 "que vienen después, pero <em>clicked</em> no tiene ninguno."
 
-#: C/image-viewer.vala.page:237(item/p)
+#: C/image-viewer.vala.page:242(item/p)
 msgid ""
 "In this case the <code>button</code> sent the <code>clicked</code> signal, "
 "which is connected to the <code>on_open_image</code> callback method:"
@@ -22985,7 +23156,7 @@ msgstr ""
 "que se conecta al método del retorno de la llamada <code>on_open_image</"
 "code>:"
 
-#: C/image-viewer.vala.page:238(item/code)
+#: C/image-viewer.vala.page:243(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -22994,7 +23165,7 @@ msgstr ""
 "\n"
 "        button.clicked.connect (on_open_image);\n"
 
-#: C/image-viewer.vala.page:242(item/p)
+#: C/image-viewer.vala.page:247(item/p)
 msgid ""
 "The <code>on_open_image</code> method takes the button that emitted the "
 "signal as an argument:"
@@ -23002,7 +23173,7 @@ msgstr ""
 "El método <code>on_open_image</code> toma como argumento el botón que ha "
 "emitido la señal:"
 
-#: C/image-viewer.vala.page:243(item/code)
+#: C/image-viewer.vala.page:248(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -23011,7 +23182,7 @@ msgstr ""
 "\n"
 "        public void on_open_image (Button self)\n"
 
-#: C/image-viewer.vala.page:248(item/p)
+#: C/image-viewer.vala.page:253(item/p)
 msgid ""
 "The next interesting line is where the dialog for choosing the file is "
 "created. <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.FileChooserDialog.";
@@ -23025,7 +23196,7 @@ msgstr ""
 "título del diálogo, la ventana padre del diálogo y varias opciones como el "
 "número de botones y sus valores correspondientes."
 
-#: C/image-viewer.vala.page:250(item/p)
+#: C/image-viewer.vala.page:255(item/p)
 msgid ""
 "Notice that we are using <link href=\"http://unstable.valadoc.org/gtk+-3.0/";
 "Gtk.Stock.html\"><em>stock</em></link> button names from Gtk, instead of "
@@ -23039,7 +23210,7 @@ msgstr ""
 "ventaja de usar nombres del almacén es que las etiquetas de los botones ya "
 "estarán traducidas en el idioma del usuario."
 
-#: C/image-viewer.vala.page:254(item/p)
+#: C/image-viewer.vala.page:259(item/p)
 msgid ""
 "The next two lines restrict the <gui>Open</gui> dialog to only display files "
 "which can be opened by <em>GtkImage</em>. GtkImage is a widget which "
@@ -23058,7 +23229,7 @@ msgstr ""
 "filtro. Por último, se establece que este filtro sea el filtro del diálogo "
 "<gui>Abrir</gui>."
 
-#: C/image-viewer.vala.page:259(item/p)
+#: C/image-viewer.vala.page:264(item/p)
 msgid ""
 "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.run.html";
 "\"><code>dialog.run</code></link> displays the <gui>Open</gui> dialog. The "
@@ -23077,7 +23248,7 @@ msgstr ""
 "usuario pulsara <gui>Cancel</gui>). La sentencia <code>switch</code> "
 "comprueba esto."
 
-#: C/image-viewer.vala.page:264(item/p)
+#: C/image-viewer.vala.page:269(item/p)
 msgid ""
 "Assuming that the user did click <gui>Open</gui>, the next lines get the "
 "filename of the image selected by the user, and tell the <code>GtkImage</"
@@ -23088,11 +23259,11 @@ msgstr ""
 "indican al widget <code>GtkImage</code> que cargue y muestre la imagen "
 "elegida."
 
-#: C/image-viewer.vala.page:268(item/p)
+#: C/image-viewer.vala.page:273(item/p)
 msgid "Destroying automatically hides the dialog."
 msgstr "Al destruir se oculta el diálogo automáticamente."
 
-#: C/image-viewer.vala.page:277(section/p)
+#: C/image-viewer.vala.page:282(section/p)
 msgid ""
 "If you haven't already done so, choose the <file>src/image-viewer</file> "
 "application in the dialog that appears. Finally, hit <gui>Run</gui> and "
@@ -23102,7 +23273,7 @@ msgstr ""
 "file> en el diálogo que aparece. Finalmente, pulse <gui>Ejecutar</gui> y "
 "disfrute."
 
-#: C/image-viewer.vala.page:283(section/p)
+#: C/image-viewer.vala.page:288(section/p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
 "<link href=\"image-viewer/image-viewer.vala\">reference code</link>."
@@ -23110,7 +23281,7 @@ msgstr ""
 "Si tiene problemas con este tutorial, compare su código con este <link href="
 "\"image-viewer/image-viewer.vala\">código de referencia</link>."
 
-#: C/image-viewer.vala.page:290(item/p)
+#: C/image-viewer.vala.page:295(item/p)
 msgid ""
 "Set it up so that when the window opens it is of a specific size to start "
 "off with. For example, 200 X 200 pixels."
@@ -23123,12 +23294,22 @@ msgctxt "link"
 msgid "JavaScript"
 msgstr "JavaScript"
 
-#: C/js.page:16(page/title)
+#: C/js.page:20(credit/name)
+msgid "Ekaterina Gerasimova"
+msgstr "Ekaterina Gerasimova"
+
+#: C/js.page:25(page/title)
 msgid "Tutorials, code samples and platform demos in JavaScript"
 msgstr ""
 "Tutoriales, ejemplos de código y demostraciones de la plataforma en "
 "JavaScript"
 
+#: C/js.page:30(section/title)
+#, fuzzy
+#| msgid "Gtk Widget Sample Code and Tutorials"
+msgid "Code samples and tutorials"
+msgstr "Código de ejemplo de widget de GTK+ y tutoriales"
+
 #. This is a reference to an external file such as an image or video. When
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
@@ -23149,7 +23330,7 @@ msgstr ""
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
 #: C/label.c.page:25(media) C/label.js.page:21(media)
-#: C/label.py.page:27(media) C/label.vala.page:21(media)
+#: C/label.py.page:29(media) C/label.vala.page:21(media)
 msgctxt "_"
 msgid "external ref='media/label.png' md5='734975c18653d88379f983e4501c3fc0'"
 msgstr "external ref='media/label.png' md5='734975c18653d88379f983e4501c3fc0'"
@@ -23164,12 +23345,12 @@ msgid "A widget which displays text"
 msgstr "Un widget que muestra un texto"
 
 #: C/label.c.page:21(page/title) C/label.js.page:20(page/title)
-#: C/label.py.page:26(page/title) C/label.vala.page:20(page/title)
-#: C/toolbar_builder.py.page:96(td/p) C/toolbar_builder.vala.page:80(td/p)
+#: C/label.py.page:28(page/title) C/label.vala.page:20(page/title)
+#: C/toolbar_builder.py.page:97(td/p) C/toolbar_builder.vala.page:80(td/p)
 msgid "Label"
 msgstr "Etiqueta"
 
-#: C/label.c.page:26(td/p) C/label.py.page:28(page/p)
+#: C/label.c.page:26(td/p) C/label.py.page:30(page/p)
 #: C/label.vala.page:22(page/p)
 msgid "A simple label"
 msgstr "Una etiqueta sencilla"
@@ -23424,11 +23605,11 @@ msgctxt "text"
 msgid "Label (Python)"
 msgstr "Label (Python)"
 
-#: C/label.py.page:23(info/desc)
+#: C/label.py.page:25(info/desc)
 msgid "A widget that displays a small to medium amount of text"
 msgstr "Un widget que muestra una cantidad pequeña o mediana de texto"
 
-#: C/label.py.page:35(section/code)
+#: C/label.py.page:37(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -23493,7 +23674,7 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/label.py.page:37(section/p)
+#: C/label.py.page:39(section/p)
 msgid ""
 "Another way to obtain what we have in the example is to create the label as "
 "an instance of another class and add it to the instance of <code>MyWindow</"
@@ -23503,7 +23684,7 @@ msgstr ""
 "como una instancia de otra clase y añadirle la instancia de <code>MyWindow</"
 "code> en el método <code>do_activate(self)</code>:"
 
-#: C/label.py.page:38(section/code)
+#: C/label.py.page:40(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -23560,31 +23741,25 @@ msgstr ""
 "        # show the window and everything on it\n"
 "        win.show_all()"
 
-#: C/label.py.page:68(section/title)
+#: C/label.py.page:70(section/title)
 msgid "Useful methods for a Label widget"
 msgstr "Métodos útiles para un widget «Label»"
 
-#: C/label.py.page:69(section/p) C/textview.py.page:49(section/p)
+#: C/label.py.page:71(section/p)
+#, fuzzy
+#| msgid ""
+#| "An explanation of how to deal with strings and Unicode (and a recap of "
+#| "what these things are) can be found <link xref=\"strings.py.page\">here</"
+#| "link>."
 msgid ""
-"An explanation of how to deal with strings and Unicode (and a recap of what "
-"these things are) can be found <link xref=\"strings.py.page\">here</link>."
+"An explanation of how to deal with strings in GTK+ can be found in <link "
+"xref=\"strings.py\"/>."
 msgstr ""
 "Una explicación de cómo manejarse con cadenas y Unicode (y un resumen de qué "
 "son estas cosas) se puede encontrar <link xref=\"strings.py.page\">aquí</"
 "link>."
 
-#: C/label.py.page:70(section/p)
-msgid ""
-"<code>label = Gtk.Label(label=\"Hello GNOME!\")</code> could also be used to "
-"create a label and set the text directly. For a general discussion of this, "
-"see <link xref=\"properties.py\">here</link>."
-msgstr ""
-"<code>label = Gtk.Label(label=\"Hello GNOME!\")</code> también podría usarse "
-"para crear una etiqueta y establecer el texto directamente. Para más "
-"información general sobre esto, consulte <link xref=\"properties.py\">aquí</"
-"link>."
-
-#: C/label.py.page:72(item/p)
+#: C/label.py.page:73(item/p)
 msgid ""
 "<code>set_line_wrap(True)</code> breaks lines if the text of the label "
 "exceeds the size of the widget."
@@ -23592,7 +23767,7 @@ msgstr ""
 "<code>set_line_wrap(True)</code> rompe líneas si el texto de la etiqueta "
 "excede el tamaño del widget."
 
-#: C/label.py.page:73(item/p)
+#: C/label.py.page:74(item/p)
 msgid ""
 "<code>set_justify(Gtk.Justification.LEFT)</code> (or <code>Gtk.Justification."
 "RIGHT, Gtk.Justification.CENTER, Gtk.Justification.FILL</code>) sets the "
@@ -23604,7 +23779,7 @@ msgstr ""
 "alineación de las líneas en el texto de la etiqueta respecto de sí. El "
 "método no tiene efecto en una etiqueta de una sola línea."
 
-#: C/label.py.page:74(item/p)
+#: C/label.py.page:75(item/p)
 msgid ""
 "For decorated text we can use <code>set_markup(\"text\")</code>, where <code>"
 "\"text\"</code> is a text in the <link href=\"http://developer.gnome.org/";
@@ -23616,7 +23791,7 @@ msgstr ""
 "gnome.org/pango/stable/PangoMarkupFormat.html\">lenguaje de marcación Pango</"
 "link>. Un ejemplo:"
 
-#: C/label.py.page:75(item/code)
+#: C/label.py.page:76(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -24137,9 +24312,9 @@ msgid ""
 "<code>False</code>) of the URI where the LinkButton points. The button "
 "becomes visited when it is clicked."
 msgstr ""
-"<code>get_visited()</code> devuelve el estado «visitado» (<code>True</code> "
-"o <code>False</code>) del URI al que el «LinkButton» apunta. El botón se "
-"vuelve «visitado» cuando se pulsa."
+"<code>get_visited()</code> devuelve el estado «visitado» (<code>True</code> o "
+"<code>False</code>) del URI al que el «LinkButton» apunta. El botón se vuelve "
+"«visitado» cuando se pulsa."
 
 #: C/linkbutton.py.page:38(item/p)
 msgid ""
@@ -24151,10 +24326,15 @@ msgstr ""
 "code>)."
 
 #: C/linkbutton.py.page:39(item/p)
+#, fuzzy
+#| msgid ""
+#| "Each time the button is clicked, the signal <code>\"activate-link\"</"
+#| "code> is emitted. For an explanation of signals and callback functions, "
+#| "see <link xref=\"signals-callbacks.py\">this page</link>."
 msgid ""
 "Each time the button is clicked, the signal <code>\"activate-link\"</code> "
 "is emitted. For an explanation of signals and callback functions, see <link "
-"xref=\"signals-callbacks.py\">this page</link>."
+"xref=\"signals-callbacks.py\"/>."
 msgstr ""
 "Cada vez que se pulsa un botón, se emite la señal <code>«activate-link»</"
 "code>. Para una explicación de señales y funciones de retorno de llamada, "
@@ -24236,7 +24416,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/magic-mirror.vala.page:41(media)
+#: C/magic-mirror.vala.page:46(media)
 msgctxt "_"
 msgid ""
 "external ref='media/magic-mirror.png' md5='8171faea6ed3b6ddac0da084c29e4e22'"
@@ -24244,12 +24424,17 @@ msgstr ""
 "external ref='media/magic-mirror.png' md5='8171faea6ed3b6ddac0da084c29e4e22'"
 
 #: C/magic-mirror.vala.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Magic Mirror (Vala)"
 msgctxt "text"
-msgid "Magic Mirror (Vala)"
+msgid "Magic mirror (Vala)"
 msgstr "Espejo mágico (Vala)"
 
 #: C/magic-mirror.vala.page:10(info/desc)
-msgid "Use your webcam as a mirror using the GStreamer framework and Gtk+"
+#, fuzzy
+#| msgid "Use your webcam as a mirror using the GStreamer framework and Gtk+"
+msgid "Use your webcam as a mirror using the GStreamer framework and GTK+"
 msgstr ""
 "Usar su cámara web como un espejo usando el entorno de trabajo GStreamer y "
 "GTK+"
@@ -24258,11 +24443,13 @@ msgstr ""
 msgid "Daniel G. Siegel"
 msgstr "Daniel G. Siegel"
 
-#: C/magic-mirror.vala.page:23(page/title)
-msgid "4 Magic Mirror"
+#: C/magic-mirror.vala.page:28(page/title)
+#, fuzzy
+#| msgid "4 Magic Mirror"
+msgid "Magic mirror"
 msgstr "4. Espejo mágico"
 
-#: C/magic-mirror.vala.page:26(synopsis/p)
+#: C/magic-mirror.vala.page:31(synopsis/p)
 msgid ""
 "<em>Your mirror just fell off the wall and broke into a thousand pieces — "
 "but you need a mirror to shave your beard off or add some makeup! You only "
@@ -24273,7 +24460,7 @@ msgstr ""
 "necesita un espejo para afeitarse o para maquillarse. Solo tiene 15 minutos "
 "antes de coger el autobús para ir al trabajo. ¿Qué puede hacer?</em>"
 
-#: C/magic-mirror.vala.page:27(synopsis/p)
+#: C/magic-mirror.vala.page:32(synopsis/p)
 msgid ""
 "In this tutorial, we're going to make a program which lets you use your "
 "webcam as a mirror. You will learn how to:"
@@ -24281,32 +24468,37 @@ msgstr ""
 "En este tutorial se va a hacer un programa que le permite usar su cámara web "
 "como un espejo. Aprenderá a:"
 
-#: C/magic-mirror.vala.page:29(item/p)
+#: C/magic-mirror.vala.page:34(item/p)
 msgid "Create a GTK+ application"
 msgstr "Crear una aplicación GTK+"
 
-#: C/magic-mirror.vala.page:30(item/p)
+#: C/magic-mirror.vala.page:35(item/p)
 msgid "Access your webcam using GStreamer and embed the result into a window"
 msgstr ""
 "Acceder a su cámara web usando GStreamer y empotrar el resultado en una "
 "ventana"
 
-#: C/magic-mirror.vala.page:31(item/p)
+#: C/magic-mirror.vala.page:36(item/p)
 msgid "Grab photos off your webcam"
 msgstr "Obtener las fotos de su cámara web"
 
-#: C/magic-mirror.vala.page:36(item/p)
+#: C/magic-mirror.vala.page:41(item/p)
 msgid "Installed copies of GTK, GStreamer, and a Vala compiler"
 msgstr "Copias instaladas de GTK, GStreamer y de un compilador de Vala"
 
-#: C/magic-mirror.vala.page:37(item/p)
+#: C/magic-mirror.vala.page:42(item/p)
 msgid "Basic knowledge of an object-oriented programming language"
 msgstr ""
 "Conocimientos básico de un lenguaje de programación orientado a objetos"
 
-#: C/magic-mirror.vala.page:51(item/p)
+#: C/magic-mirror.vala.page:56(item/p)
+#, fuzzy
+#| msgid ""
+#| "Choose <gui>Gtk+ (simple)</gui> from the <gui>Vala</gui> tab, click "
+#| "<gui>Forward</gui>, and fill out your details on the next few pages. Use "
+#| "<file>guitar-tuner</file> as project name and directory."
 msgid ""
-"Choose <gui>Gtk+ (simple)</gui> from the <gui>Vala</gui> tab, click "
+"Choose <gui>GTK+ (simple)</gui> from the <gui>Vala</gui> tab, click "
 "<gui>Forward</gui>, and fill out your details on the next few pages. Use "
 "<file>guitar-tuner</file> as project name and directory."
 msgstr ""
@@ -24314,7 +24506,7 @@ msgstr ""
 "<gui>Adelante</gui> y rellene los detalles en las siguientes páginas. Use "
 "<file>afinador-guitarra</file> como nombre de proyecto y de carpeta."
 
-#: C/magic-mirror.vala.page:54(item/p)
+#: C/magic-mirror.vala.page:59(item/p)
 msgid ""
 "Disable <gui>Use GtkBuilder for user interface</gui> as we will create the "
 "UI manually in this tutorial. Check the <link xref=\"guitar-tuner.vala"
@@ -24325,7 +24517,7 @@ msgstr ""
 "Revise el tutorial <link xref=\"guitar-tuner.vala\">afinador-guitarra</link> "
 "usando el constructor de interfaces."
 
-#: C/magic-mirror.vala.page:59(item/p)
+#: C/magic-mirror.vala.page:64(item/p)
 msgid ""
 "Make sure that <gui>Configure external packages</gui> is selected. On the "
 "next page, select <em>gstreamer-0.10</em> from the list to include the "
@@ -24335,7 +24527,7 @@ msgstr ""
 "En la siguiente página, seleccione <em>gstreamermm-0.10</em> de la lista "
 "para incluir la biblioteca <app>GStreamer</app> en su proyecto."
 
-#: C/magic-mirror.vala.page:63(item/p)
+#: C/magic-mirror.vala.page:68(item/p)
 msgid ""
 "Click <gui>Apply</gui> and the project will be created for you. Open "
 "<file>src/magic_mirror.vala</file> from the <gui>Project</gui> or <gui>File</"
@@ -24345,7 +24537,7 @@ msgstr ""
 "magico.vala</file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</"
 "gui>. Debería ver algo de código que comience con las líneas:"
 
-#: C/magic-mirror.vala.page:73(section/p)
+#: C/magic-mirror.vala.page:78(section/p)
 msgid ""
 "The code loads an (empty) window and shows it. More details are given below; "
 "skip this list if you understand the basics:"
@@ -24353,7 +24545,7 @@ msgstr ""
 "El código carga una ventana (vacía) y la muestra. A continuación hay más "
 "detalles; omita esta lista si entiende los conceptos básicos:"
 
-#: C/magic-mirror.vala.page:79(item/p)
+#: C/magic-mirror.vala.page:84(item/p)
 msgid ""
 "The constructor of the <code>Main</code> class creates a new window and sets "
 "its title. Afterwards the window is shown and a signal is connected which "
@@ -24364,7 +24556,7 @@ msgstr ""
 "que cierra la aplicación si se cierra la ventana. Se verán más señales más "
 "adelante."
 
-#: C/magic-mirror.vala.page:83(item/p)
+#: C/magic-mirror.vala.page:88(item/p)
 msgid ""
 "The static <code>main</code> function is run by default when you start a "
 "Vala application. It calls a few functions which create the Main class, set "
@@ -24374,16 +24566,16 @@ msgid ""
 msgstr ""
 "La función estática <code>main</code> se ejecuta de manera predeterminada "
 "cuando inicia una aplicación en Vala. Llama a unas pocas funciones que crean "
-"la clase «Main», la configuran y ejecutan la aplicación. La función "
-"<code>Gtk.Main</code> inicia el bucle principal de GTK+, que ejecuta la "
-"interfaz de usuario y empieza a escuchar eventos (como pulsaciones del ratón "
-"y del teclado)."
+"la clase «Main», la configuran y ejecutan la aplicación. La función <code>Gtk."
+"Main</code> inicia el bucle principal de GTK+, que ejecuta la interfaz de "
+"usuario y empieza a escuchar eventos (como pulsaciones del ratón y del "
+"teclado)."
 
-#: C/magic-mirror.vala.page:92(section/title)
+#: C/magic-mirror.vala.page:97(section/title)
 msgid "Access the webcam video stream with GStreamer"
 msgstr "Acceder al flujo de vídeo de la cámara web con GStreamer"
 
-#: C/magic-mirror.vala.page:93(section/p)
+#: C/magic-mirror.vala.page:98(section/p)
 msgid ""
 "The GStreamer multimedia framework is able to handle video from webcams. "
 "Let's add GStreamer to our application and so we can access the video stream."
@@ -24392,7 +24584,7 @@ msgstr ""
 "cámaras web. Añada GStreamer a su aplicación y podrá acceder al flujo de "
 "vídeo."
 
-#: C/magic-mirror.vala.page:95(section/code)
+#: C/magic-mirror.vala.page:100(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -24443,7 +24635,7 @@ msgstr ""
 "\t}\n"
 "}\n"
 
-#: C/magic-mirror.vala.page:120(item/p)
+#: C/magic-mirror.vala.page:125(item/p)
 msgid ""
 "First we remove the window we created before because GStreamer will take "
 "care of showing the picture on screen."
@@ -24451,7 +24643,7 @@ msgstr ""
 "Primero se quita la ventana creada anteriormente, ya que GStreamer se "
 "encargará de mostrar la imagen en la pantalla."
 
-#: C/magic-mirror.vala.page:124(item/p)
+#: C/magic-mirror.vala.page:129(item/p)
 msgid ""
 "Now we are creating a GStreamer element which accesses our webcam. We are "
 "using the Camerabin element, which is an all-in-one camera element and is "
@@ -24467,7 +24659,7 @@ msgstr ""
 "code> se indica a la tubería de GStreamer que se acaba de crear que empiece "
 "a reproducir. Fácil, ¿no?"
 
-#: C/magic-mirror.vala.page:131(item/p)
+#: C/magic-mirror.vala.page:136(item/p)
 msgid ""
 "Of course it is also possible to integrate the video more tighly into other "
 "windows but that is an advanced topic that includes some details of the X "
@@ -24477,7 +24669,7 @@ msgstr ""
 "otras ventanas, pero esto es un tema avanzado que incluye algunos detalles "
 "sobre el sistema «X-Window» que aquí se omiten."
 
-#: C/magic-mirror.vala.page:135(item/p)
+#: C/magic-mirror.vala.page:140(item/p)
 msgid ""
 "Compile and run it again. You will end up with two windows. In the next step "
 "we will integrate the video into the GTK+ window."
@@ -24485,7 +24677,7 @@ msgstr ""
 "Compile y ejecute de nuevo. Acabará teniendo dos ventanas. En el siguiente "
 "paso, se integrará el vídeo en una ventana de GTK+."
 
-#: C/magic-mirror.vala.page:145(section/p)
+#: C/magic-mirror.vala.page:150(section/p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
 "<link href=\"magic-mirror/magic-mirror.vala\">reference code</link>. There "
@@ -24501,7 +24693,7 @@ msgstr ""
 "implica algunas técnicas avanzadas, y añade botones para iniciar/parar la "
 "imagen."
 
-#: C/magic-mirror.vala.page:152(section/p)
+#: C/magic-mirror.vala.page:157(section/p)
 msgid ""
 "To find out more about the Vala programming language you might want to check "
 "out the <link href=\"http://live.gnome.org/Vala/Tutorial\";>Vala Tutorial</"
@@ -24511,11 +24703,11 @@ msgstr ""
 "querer revisar el <link href=\"http://live.gnome.org/Vala/Tutorial";
 "\">tutorial de Vala</link>."
 
-#: C/magic-mirror.vala.page:157(section/title)
+#: C/magic-mirror.vala.page:162(section/title)
 msgid "Conclusion"
 msgstr "Conclusión"
 
-#: C/magic-mirror.vala.page:158(section/p)
+#: C/magic-mirror.vala.page:163(section/p)
 msgid ""
 "That's it, you have managed to create a full-featured webcam photo "
 "application in 15 minutes. Now you can shave your beard off or add some "
@@ -24538,12 +24730,714 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/menubar.py.page:28(media) C/menubar.vala.page:23(media)
+#.
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/menubar.c.page:24(media) C/menubar.py.page:28(media)
+#: C/menubar.vala.page:23(media)
 msgctxt "_"
 msgid "external ref='media/menubar.png' md5='7b642aaa1628d5e43ab85ac230ac1c78'"
 msgstr ""
 "external ref='media/menubar.png' md5='7b642aaa1628d5e43ab85ac230ac1c78'"
 
+#: C/menubar.c.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "MenuBar (Vala)"
+msgctxt "text"
+msgid "MenuBar (C)"
+msgstr "MenuBar (Vala)"
+
+#: C/menubar.c.page:19(info/desc) C/menubar.py.page:24(info/desc)
+#: C/menubar.vala.page:19(info/desc)
+msgid "A widget which holds GtkMenuItem widgets"
+msgstr "Un widget que contiene widgets «GtkMenuItem»"
+
+#: C/menubar.c.page:22(page/title) C/menubar.vala.page:22(page/title)
+msgid "MenuBar"
+msgstr "MenuBar"
+
+#: C/menubar.c.page:25(page/p) C/menubar.py.page:29(page/p)
+#: C/menubar.vala.page:24(page/p)
+msgid "A MenuBar created using XML and GtkBuilder."
+msgstr "Una barra de menú usando XML y GtkBuilder."
+
+#: C/menubar.c.page:26(note/p)
+msgid ""
+"For a more in-depth look at this sample, please do not hesitate to check out "
+"the <link xref=\"menubar.vala\">Vala MenuBar</link> and/or <link xref="
+"\"menubar.py\">Python MenuBar</link> tutorials."
+msgstr ""
+
+#: C/menubar.c.page:30(page/code)
+#, no-wrap
+msgid ""
+"\n"
+"#include &lt;gtk/gtk.h&gt;\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"copy\" action */\n"
+"static void\n"
+"copy_callback (GSimpleAction *simple,\n"
+"            GVariant      *parameter,\n"
+"            gpointer       user_data)\n"
+"{\n"
+"   g_print (\"\\\"Copy\\\" activated\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"paste\" action */\n"
+"static void\n"
+"paste_callback (GSimpleAction *simple,\n"
+"            GVariant      *parameter,\n"
+"            gpointer       user_data)\n"
+"{\n"
+"   g_print (\"\\\"Paste\\\" activated\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"shape\" action */\n"
+"static void\n"
+"shape_callback (GSimpleAction *simple,\n"
+"            GVariant      *parameter,\n"
+"            gpointer       user_data)\n"
+"{\n"
+"   /* We first gather the value of the GVariant instance with a string type.\n"
+"    * The overall goal here is to see if shape is set to line, triangle, etc,\n"
+"    * and put that value within the variable \"answer\".\n"
+"    */\n"
+"   const gchar *answer = g_variant_get_string (parameter, NULL);\n"
+"   g_printf (\"Shape is set to %s.\\n\", answer);\n"
+"   /* Note that we set the state of the action */\n"
+"   g_simple_action_set_state (simple, parameter);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function in which closes the about_dialog created below */\n"
+"static void\n"
+"on_close (GtkDialog *dialog,\n"
+"          gint       response_id,\n"
+"          gpointer   user_data)\n"
+"{\n"
+"  gtk_widget_destroy (GTK_WIDGET (dialog));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the about action (see aboutdialog.c example) */\n"
+"static void\n"
+"about_callback (GSimpleAction *simple,\n"
+"            GVariant      *parameter,\n"
+"            gpointer       user_data)\n"
+"{\n"
+"   GtkWidget *about_dialog;\n"
+"\n"
+"   about_dialog = gtk_about_dialog_new ();\n"
+"\n"
+"   const gchar *authors[] = {\"GNOME Documentation Team\", NULL};\n"
+"   const gchar *documenters[] = {\"GNOME Documentation Team\", NULL};\n"
+"\n"
+"   /* Fill in the about_dialog with the desired information */\n"
+"   gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (about_dialog), \"AboutDialog Example\");\n"
+"   gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about_dialog), \"Copyright \\xc2\\xa9 2012 GNOME 
Documentation Team\");\n"
+"   gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about_dialog), authors);\n"
+"   gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (about_dialog), documenters);\n"
+"   gtk_about_dialog_set_website_label (GTK_ABOUT_DIALOG (about_dialog), \"GNOME Developer Website\");\n"
+"   gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about_dialog), \"http://developer.gnome.org\";);\n"
+"\n"
+"   /* The \"response\" signal is emitted when the dialog receives a delete event,\n"
+"    * therefore we connect that signal to the on_close callback function\n"
+"    * created above.\n"
+"    */\n"
+"   g_signal_connect (GTK_DIALOG (about_dialog), \"response\",\n"
+"                    G_CALLBACK (on_close), NULL);\n"
+"\n"
+"   /* Show the about dialog */\n"
+"   gtk_widget_show (about_dialog);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+"          gpointer        user_data)\n"
+"{\n"
+"  GtkWidget *window;\n"
+"\n"
+"  GSimpleAction *copy_action;\n"
+"  GSimpleAction *paste_action;\n"
+"  GSimpleAction *shape_action;\n"
+"  GSimpleAction *about_action;\n"
+"\n"
+"  /* Create a window with a title and a default size */\n"
+"  window = gtk_application_window_new (app);\n"
+"  gtk_window_set_title (GTK_WINDOW (window), \"MenuBar Example\");\n"
+"  gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n"
+"\n"
+"  /* Begin creating the \"copy\" action.\n"
+"   * Note that it is an action without a state.\n"
+"   */\n"
+"  copy_action = g_simple_action_new (\"copy\", NULL);\n"
+"  /* Connected to a callback function */\n"
+"  g_signal_connect (copy_action, \"activate\", G_CALLBACK (copy_callback),\n"
+"                    GTK_WINDOW (window));\n"
+"  /* Added to the window */\n"
+"  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (copy_action));\n"
+"\n"
+"  /* Begin creating the \"paste\" action.\n"
+"   * Note that it is an action without a state.\n"
+"   */\n"
+"  paste_action = g_simple_action_new (\"paste\", NULL);\n"
+"  /* Connect the action to a callback function */\n"
+"  g_signal_connect (paste_action, \"activate\", G_CALLBACK (paste_callback),\n"
+"                    GTK_WINDOW (window));\n"
+"  /* Add it to the window */\n"
+"  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (paste_action));\n"
+"\n"
+"  /* Begin creating the \"shape\" action.\n"
+"   * Note that it is an action with a state.\n"
+"   * First we state that the parameter type of the simple action is a string.\n"
+"   * When using g_variant_type_new, it is appropriate to free the return value\n"
+"   * once you're done with it.\n"
+"   */\n"
+"  GVariantType *type_string = g_variant_type_new (\"s\");\n"
+"  /* parameters for the g_simple_action_new_stateful are: (name, parameter type,\n"
+"   * initial state).\n"
+"   */\n"
+"  shape_action = g_simple_action_new_stateful (\"shape\", type_string,\n"
+"                                               g_variant_new_string (\"line\"));\n"
+"  /* Connect the action to a callback function */\n"
+"  g_signal_connect (shape_action, \"activate\", G_CALLBACK (shape_callback),\n"
+"                    GTK_WINDOW (window));\n"
+"  /* Add it to the window */\n"
+"  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (shape_action));\n"
+"  g_variant_type_free (type_string);\n"
+"\n"
+"  /* Begin creating the \"about\" action.\n"
+"   * Note that it is an action without a state.\n"
+"   */\n"
+"  about_action = g_simple_action_new (\"about\", NULL);\n"
+"  /* Connect the action to a callback function */\n"
+"  g_signal_connect (about_action, \"activate\", G_CALLBACK (about_callback),\n"
+"                    GTK_WINDOW (window));\n"
+"  /* Add it to the window */\n"
+"  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n"
+"\n"
+"  gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"new\" action */\n"
+"static void\n"
+"new_callback (GSimpleAction *simple,\n"
+"         GVariant      *parameter,\n"
+"         gpointer       user_data)\n"
+"{\n"
+"  g_print (\"You clicked \\\"New\\\"\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"quit\" action */\n"
+"static void\n"
+"quit_callback (GSimpleAction *simple,\n"
+"         GVariant      *parameter,\n"
+"         gpointer       user_data)\n"
+"{\n"
+"  GApplication *application = user_data;\n"
+"\n"
+"  g_print (\"You clicked \\\"Quit\\\"\\n\");\n"
+"  g_application_quit (application);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"state\" action */\n"
+"static void\n"
+"state_callback (GSimpleAction *simple,\n"
+"         GVariant      *parameter,\n"
+"         gpointer       user_data)\n"
+"{\n"
+"   /* The two possibilies in this case for the \"answer\" variable are either\n"
+"    * \"on\" or \"off\".\n"
+"    */\n"
+"   const gchar *answer = g_variant_get_string (parameter, NULL);\n"
+"   /* We print the information to the user */\n"
+"   g_printf (\"State is set to %s.\\n\", answer);\n"
+"   /* Note that we set the state of the action */\n"
+"   g_simple_action_set_state (simple, parameter);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"awesome\" action */\n"
+"static void\n"
+"awesome_callback (GSimpleAction *simple,\n"
+"         GVariant      *parameter,\n"
+"         gpointer       user_data)\n"
+"{\n"
+"  GVariant *action_state = g_action_get_state (G_ACTION (simple));\n"
+"  gboolean active = g_variant_get_boolean (action_state);\n"
+"  GVariant *new_state = g_variant_new_boolean (!active);\n"
+"  /* Set the new state for the action.\n"
+"   * (Keeps track of whether it was last checked or unchecked).\n"
+"   */\n"
+"  g_simple_action_set_state (simple, new_state);\n"
+"\n"
+"  if (active)\n"
+"     g_print (\"You unchecked \\\"Awesome\\\"\\n\");\n"
+"  else\n"
+"     g_print (\"You checked \\\"Awesome\\\"\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the menu we are creating in this sample */\n"
+"static void\n"
+"startup (GApplication *app,\n"
+"         gpointer      user_data)\n"
+"{\n"
+"  /* Initialize variables */\n"
+"  GSimpleAction *new_action;\n"
+"  GSimpleAction *quit_action;\n"
+"  GSimpleAction *state_action;\n"
+"  GSimpleAction *awesome_action;\n"
+"\n"
+"  GtkBuilder *builder;\n"
+"\n"
+"  GError **error;\n"
+"\n"
+"  /* Begin creating the \"new\" action.\n"
+"   * Note that it is an action without a state.\n"
+"   */\n"
+"  new_action = g_simple_action_new (\"new\", NULL);\n"
+"  g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
+"  /* It is added to the overall application */\n"
+"  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
+"\n"
+"  /* Begin creating the \"quit\" action.\n"
+"   * Note that it is an action without a state.\n"
+"   */\n"
+"  quit_action = g_simple_action_new (\"quit\", NULL);\n"
+"  g_signal_connect (quit_action, \"activate\", G_CALLBACK (quit_callback), app);\n"
+"  /* It is added to the overall application */\n"
+"  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
+"\n"
+"  /* Begin creating the \"state\" action.\n"
+"   * Note that it is an action with a state.\n"
+"   */\n"
+"  GVariantType *type_string2 = g_variant_type_new (\"s\");\n"
+"  state_action = g_simple_action_new_stateful (\"state\", type_string2,\n"
+"                                               g_variant_new_string (\"off\"));\n"
+"  g_signal_connect (state_action, \"activate\", G_CALLBACK (state_callback), app);\n"
+"  /* It is added to the overall application */\n"
+"  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (state_action));\n"
+"  g_variant_type_free (type_string2);\n"
+"\n"
+"  /* Begin creating the \"awesome\" action.\n"
+"   * Note that it is an action with a state.\n"
+"   */\n"
+"  awesome_action = g_simple_action_new_stateful (\"awesome\", NULL, g_variant_new_boolean (FALSE));\n"
+"  g_signal_connect (awesome_action, \"activate\", G_CALLBACK (awesome_callback), app);\n"
+"  /* It is added to the overall application */\n"
+"  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (awesome_action));\n"
+"\n"
+"  /* A builder to add the User Interface designed with GLADE to the grid: */\n"
+"  builder = gtk_builder_new ();\n"
+"  /* Get the file (if it is there):\n"
+"   * Note: you must make sure that the file is in the current directory for\n"
+"   * this to work. The function used here returns a value within our variable\n"
+"   * \"error\", and it is equal to zero if an error is indeed found.\n"
+"   */\n"
+"  gtk_builder_add_from_file (builder, \"menubar.ui\", error);\n"
+"  if (error == 0) {\n"
+"     g_print (\"File not found.\\n\");\n"
+"  }\n"
+"\n"
+"  /* Extract the menubar */\n"
+"  GObject *menubar = gtk_builder_get_object (builder, \"menubar\");\n"
+"  gtk_application_set_menubar (GTK_APPLICATION (app), G_MENU_MODEL (menubar));\n"
+"\n"
+"  /* Extract the appmenu */\n"
+"  GObject *appmenu = gtk_builder_get_object (builder, \"appmenu\");\n"
+"  gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (appmenu));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the application */\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+"  GtkApplication *app;\n"
+"  int status;\n"
+"\n"
+"  app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+"  g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+"  g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+"  status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+"  g_object_unref (app);\n"
+"\n"
+"  return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include &lt;gtk/gtk.h&gt;\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"copy\" action */\n"
+"static void\n"
+"copy_callback (GSimpleAction *simple,\n"
+"            GVariant      *parameter,\n"
+"            gpointer       user_data)\n"
+"{\n"
+"   g_print (\"\\\"Copy\\\" activated\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"paste\" action */\n"
+"static void\n"
+"paste_callback (GSimpleAction *simple,\n"
+"            GVariant      *parameter,\n"
+"            gpointer       user_data)\n"
+"{\n"
+"   g_print (\"\\\"Paste\\\" activated\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"shape\" action */\n"
+"static void\n"
+"shape_callback (GSimpleAction *simple,\n"
+"            GVariant      *parameter,\n"
+"            gpointer       user_data)\n"
+"{\n"
+"   /* We first gather the value of the GVariant instance with a string type.\n"
+"    * The overall goal here is to see if shape is set to line, triangle, etc,\n"
+"    * and put that value within the variable \"answer\".\n"
+"    */\n"
+"   const gchar *answer = g_variant_get_string (parameter, NULL);\n"
+"   g_printf (\"Shape is set to %s.\\n\", answer);\n"
+"   /* Note that we set the state of the action */\n"
+"   g_simple_action_set_state (simple, parameter);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function in which closes the about_dialog created below */\n"
+"static void\n"
+"on_close (GtkDialog *dialog,\n"
+"          gint       response_id,\n"
+"          gpointer   user_data)\n"
+"{\n"
+"  gtk_widget_destroy (GTK_WIDGET (dialog));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the about action (see aboutdialog.c example) */\n"
+"static void\n"
+"about_callback (GSimpleAction *simple,\n"
+"            GVariant      *parameter,\n"
+"            gpointer       user_data)\n"
+"{\n"
+"   GtkWidget *about_dialog;\n"
+"\n"
+"   about_dialog = gtk_about_dialog_new ();\n"
+"\n"
+"   const gchar *authors[] = {\"GNOME Documentation Team\", NULL};\n"
+"   const gchar *documenters[] = {\"GNOME Documentation Team\", NULL};\n"
+"\n"
+"   /* Fill in the about_dialog with the desired information */\n"
+"   gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (about_dialog), \"AboutDialog Example\");\n"
+"   gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about_dialog), \"Copyright \\xc2\\xa9 2012 GNOME 
Documentation Team\");\n"
+"   gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about_dialog), authors);\n"
+"   gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (about_dialog), documenters);\n"
+"   gtk_about_dialog_set_website_label (GTK_ABOUT_DIALOG (about_dialog), \"GNOME Developer Website\");\n"
+"   gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about_dialog), \"http://developer.gnome.org\";);\n"
+"\n"
+"   /* The \"response\" signal is emitted when the dialog receives a delete event,\n"
+"    * therefore we connect that signal to the on_close callback function\n"
+"    * created above.\n"
+"    */\n"
+"   g_signal_connect (GTK_DIALOG (about_dialog), \"response\",\n"
+"                    G_CALLBACK (on_close), NULL);\n"
+"\n"
+"   /* Show the about dialog */\n"
+"   gtk_widget_show (about_dialog);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+"          gpointer        user_data)\n"
+"{\n"
+"  GtkWidget *window;\n"
+"\n"
+"  GSimpleAction *copy_action;\n"
+"  GSimpleAction *paste_action;\n"
+"  GSimpleAction *shape_action;\n"
+"  GSimpleAction *about_action;\n"
+"\n"
+"  /* Create a window with a title and a default size */\n"
+"  window = gtk_application_window_new (app);\n"
+"  gtk_window_set_title (GTK_WINDOW (window), \"MenuBar Example\");\n"
+"  gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n"
+"\n"
+"  /* Begin creating the \"copy\" action.\n"
+"   * Note that it is an action without a state.\n"
+"   */\n"
+"  copy_action = g_simple_action_new (\"copy\", NULL);\n"
+"  /* Connected to a callback function */\n"
+"  g_signal_connect (copy_action, \"activate\", G_CALLBACK (copy_callback),\n"
+"                    GTK_WINDOW (window));\n"
+"  /* Added to the window */\n"
+"  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (copy_action));\n"
+"\n"
+"  /* Begin creating the \"paste\" action.\n"
+"   * Note that it is an action without a state.\n"
+"   */\n"
+"  paste_action = g_simple_action_new (\"paste\", NULL);\n"
+"  /* Connect the action to a callback function */\n"
+"  g_signal_connect (paste_action, \"activate\", G_CALLBACK (paste_callback),\n"
+"                    GTK_WINDOW (window));\n"
+"  /* Add it to the window */\n"
+"  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (paste_action));\n"
+"\n"
+"  /* Begin creating the \"shape\" action.\n"
+"   * Note that it is an action with a state.\n"
+"   * First we state that the parameter type of the simple action is a string.\n"
+"   * When using g_variant_type_new, it is appropriate to free the return value\n"
+"   * once you're done with it.\n"
+"   */\n"
+"  GVariantType *type_string = g_variant_type_new (\"s\");\n"
+"  /* parameters for the g_simple_action_new_stateful are: (name, parameter type,\n"
+"   * initial state).\n"
+"   */\n"
+"  shape_action = g_simple_action_new_stateful (\"shape\", type_string,\n"
+"                                               g_variant_new_string (\"line\"));\n"
+"  /* Connect the action to a callback function */\n"
+"  g_signal_connect (shape_action, \"activate\", G_CALLBACK (shape_callback),\n"
+"                    GTK_WINDOW (window));\n"
+"  /* Add it to the window */\n"
+"  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (shape_action));\n"
+"  g_variant_type_free (type_string);\n"
+"\n"
+"  /* Begin creating the \"about\" action.\n"
+"   * Note that it is an action without a state.\n"
+"   */\n"
+"  about_action = g_simple_action_new (\"about\", NULL);\n"
+"  /* Connect the action to a callback function */\n"
+"  g_signal_connect (about_action, \"activate\", G_CALLBACK (about_callback),\n"
+"                    GTK_WINDOW (window));\n"
+"  /* Add it to the window */\n"
+"  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n"
+"\n"
+"  gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"new\" action */\n"
+"static void\n"
+"new_callback (GSimpleAction *simple,\n"
+"         GVariant      *parameter,\n"
+"         gpointer       user_data)\n"
+"{\n"
+"  g_print (\"You clicked \\\"New\\\"\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"quit\" action */\n"
+"static void\n"
+"quit_callback (GSimpleAction *simple,\n"
+"         GVariant      *parameter,\n"
+"         gpointer       user_data)\n"
+"{\n"
+"  GApplication *application = user_data;\n"
+"\n"
+"  g_print (\"You clicked \\\"Quit\\\"\\n\");\n"
+"  g_application_quit (application);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"state\" action */\n"
+"static void\n"
+"state_callback (GSimpleAction *simple,\n"
+"         GVariant      *parameter,\n"
+"         gpointer       user_data)\n"
+"{\n"
+"   /* The two possibilies in this case for the \"answer\" variable are either\n"
+"    * \"on\" or \"off\".\n"
+"    */\n"
+"   const gchar *answer = g_variant_get_string (parameter, NULL);\n"
+"   /* We print the information to the user */\n"
+"   g_printf (\"State is set to %s.\\n\", answer);\n"
+"   /* Note that we set the state of the action */\n"
+"   g_simple_action_set_state (simple, parameter);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"awesome\" action */\n"
+"static void\n"
+"awesome_callback (GSimpleAction *simple,\n"
+"         GVariant      *parameter,\n"
+"         gpointer       user_data)\n"
+"{\n"
+"  GVariant *action_state = g_action_get_state (G_ACTION (simple));\n"
+"  gboolean active = g_variant_get_boolean (action_state);\n"
+"  GVariant *new_state = g_variant_new_boolean (!active);\n"
+"  /* Set the new state for the action.\n"
+"   * (Keeps track of whether it was last checked or unchecked).\n"
+"   */\n"
+"  g_simple_action_set_state (simple, new_state);\n"
+"\n"
+"  if (active)\n"
+"     g_print (\"You unchecked \\\"Awesome\\\"\\n\");\n"
+"  else\n"
+"     g_print (\"You checked \\\"Awesome\\\"\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the menu we are creating in this sample */\n"
+"static void\n"
+"startup (GApplication *app,\n"
+"         gpointer      user_data)\n"
+"{\n"
+"  /* Initialize variables */\n"
+"  GSimpleAction *new_action;\n"
+"  GSimpleAction *quit_action;\n"
+"  GSimpleAction *state_action;\n"
+"  GSimpleAction *awesome_action;\n"
+"\n"
+"  GtkBuilder *builder;\n"
+"\n"
+"  GError **error;\n"
+"\n"
+"  /* Begin creating the \"new\" action.\n"
+"   * Note that it is an action without a state.\n"
+"   */\n"
+"  new_action = g_simple_action_new (\"new\", NULL);\n"
+"  g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
+"  /* It is added to the overall application */\n"
+"  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
+"\n"
+"  /* Begin creating the \"quit\" action.\n"
+"   * Note that it is an action without a state.\n"
+"   */\n"
+"  quit_action = g_simple_action_new (\"quit\", NULL);\n"
+"  g_signal_connect (quit_action, \"activate\", G_CALLBACK (quit_callback), app);\n"
+"  /* It is added to the overall application */\n"
+"  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
+"\n"
+"  /* Begin creating the \"state\" action.\n"
+"   * Note that it is an action with a state.\n"
+"   */\n"
+"  GVariantType *type_string2 = g_variant_type_new (\"s\");\n"
+"  state_action = g_simple_action_new_stateful (\"state\", type_string2,\n"
+"                                               g_variant_new_string (\"off\"));\n"
+"  g_signal_connect (state_action, \"activate\", G_CALLBACK (state_callback), app);\n"
+"  /* It is added to the overall application */\n"
+"  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (state_action));\n"
+"  g_variant_type_free (type_string2);\n"
+"\n"
+"  /* Begin creating the \"awesome\" action.\n"
+"   * Note that it is an action with a state.\n"
+"   */\n"
+"  awesome_action = g_simple_action_new_stateful (\"awesome\", NULL, g_variant_new_boolean (FALSE));\n"
+"  g_signal_connect (awesome_action, \"activate\", G_CALLBACK (awesome_callback), app);\n"
+"  /* It is added to the overall application */\n"
+"  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (awesome_action));\n"
+"\n"
+"  /* A builder to add the User Interface designed with GLADE to the grid: */\n"
+"  builder = gtk_builder_new ();\n"
+"  /* Get the file (if it is there):\n"
+"   * Note: you must make sure that the file is in the current directory for\n"
+"   * this to work. The function used here returns a value within our variable\n"
+"   * \"error\", and it is equal to zero if an error is indeed found.\n"
+"   */\n"
+"  gtk_builder_add_from_file (builder, \"menubar.ui\", error);\n"
+"  if (error == 0) {\n"
+"     g_print (\"File not found.\\n\");\n"
+"  }\n"
+"\n"
+"  /* Extract the menubar */\n"
+"  GObject *menubar = gtk_builder_get_object (builder, \"menubar\");\n"
+"  gtk_application_set_menubar (GTK_APPLICATION (app), G_MENU_MODEL (menubar));\n"
+"\n"
+"  /* Extract the appmenu */\n"
+"  GObject *appmenu = gtk_builder_get_object (builder, \"appmenu\");\n"
+"  gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (appmenu));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the application */\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+"  GtkApplication *app;\n"
+"  int status;\n"
+"\n"
+"  app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+"  g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+"  g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+"  status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+"  g_object_unref (app);\n"
+"\n"
+"  return status;\n"
+"}\n"
+
+#: C/menubar.c.page:36(item/p) C/scrolledwindow.c.page:33(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkApplication.html";
+#| "\">GtkApplication</link>"
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkApplication.html";
+"\">GtkApplication</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkApplication.html";
+"\">GtkApplication</link>"
+
+#: C/menubar.c.page:39(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://developer.gnome.org/gtk3/stable/GtkAboutDialog.html";
+#| "\">GtkAboutDialog</link>"
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk/stable/GtkAboutDialog.html";
+"\">GtkAboutDialog</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkAboutDialog.html";
+"\">GtkAboutDialog</link>"
+
+#: C/menubar.c.page:40(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://developer.gnome.org/glib/unstable/glib-GVariantType.";
+#| "html\">GVariantType</link>"
+msgid ""
+"<link href=\"http://developer.gnome.org/glib/stable/glib-GVariantType.html";
+"\">GtkVariantType</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/glib/unstable/glib-GVariantType.html";
+"\">GVariantType</link>"
+
 #. This is a reference to an external file such as an image or video. When
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
@@ -24553,7 +25447,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/menubar.py.page:129(media) C/menubar.vala.page:133(media)
+#: C/menubar.py.page:131(media) C/menubar.vala.page:133(media)
 msgctxt "_"
 msgid ""
 "external ref='media/menubar_choices.png' "
@@ -24567,16 +25461,10 @@ msgctxt "text"
 msgid "MenuBar (Python)"
 msgstr "MenuBar (Python)"
 
-#: C/menubar.py.page:24(info/desc) C/menubar.vala.page:19(info/desc)
-msgid "A widget which holds GtkMenuItem widgets"
-msgstr "Un widget que contiene widgets «GtkMenuItem»"
-
-#: C/menubar.py.page:27(page/title) C/menubar.vala.page:22(page/title)
-msgid "MenuBar"
-msgstr "MenuBar"
-
-#: C/menubar.py.page:29(page/p) C/menubar.vala.page:24(page/p)
-msgid "A MenuBar created using XML and GtkBuilder."
+#: C/menubar.py.page:27(page/title)
+#, fuzzy
+#| msgid "A MenuBar created using XML and GtkBuilder."
+msgid "MenuBar created using XML and GtkBuilder"
 msgstr "Una barra de menú usando XML y GtkBuilder."
 
 #: C/menubar.py.page:33(section/title) C/menubar.vala.page:28(section/title)
@@ -24928,11 +25816,17 @@ msgstr ""
 "\n"
 "self.add_action(new_action)"
 
-#: C/menubar.py.page:119(section/title) C/menubar.vala.page:138(section/title)
+#: C/menubar.py.page:117(section/p)
+msgid ""
+"See <link xref=\"signals-callbacks.py\"/> for a more detailed explanation of "
+"signals and callbacks."
+msgstr ""
+
+#: C/menubar.py.page:121(section/title) C/menubar.vala.page:138(section/title)
 msgid "Actions: Application or Window?"
 msgstr "Acciones: ¿aplicación o ventana?"
 
-#: C/menubar.py.page:120(section/p) C/menubar.vala.page:139(section/p)
+#: C/menubar.py.page:122(section/p) C/menubar.vala.page:139(section/p)
 msgid ""
 "Above, we created the \"new\" and \"open\" actions as part of the "
 "MyApplication class. Actions which control the application itself, such as "
@@ -24942,7 +25836,7 @@ msgstr ""
 "«MyApplication». Las acciones que controlan la aplicación en sí, como «quit» "
 "deben crearse de manera similar."
 
-#: C/menubar.py.page:122(section/p) C/menubar.vala.page:142(section/p)
+#: C/menubar.py.page:124(section/p) C/menubar.vala.page:142(section/p)
 msgid ""
 "Some actions, such as \"copy\" and \"paste\" deal with the window, not the "
 "application. Window actions should be created as part of the window class."
@@ -24951,7 +25845,7 @@ msgstr ""
 "aplicación. Las acciones de ventanas deben crearse como parte de la clase de "
 "la ventana."
 
-#: C/menubar.py.page:124(section/p)
+#: C/menubar.py.page:126(section/p)
 msgid ""
 "The complete example files contain both application actions and window "
 "actions. The window actions are the ones usually included in the <link xref="
@@ -24971,11 +25865,11 @@ msgstr ""
 "«Open», y estos están vinculados a las mismas acciones que los elementos de "
 "la barra de menú del mismo nombre."
 
-#: C/menubar.py.page:128(section/title) C/menubar.vala.page:132(section/title)
+#: C/menubar.py.page:130(section/title) C/menubar.vala.page:132(section/title)
 msgid "Choices submenu and items with state"
 msgstr "Submenú «choices» y elementos con estado"
 
-#: C/menubar.py.page:130(section/p)
+#: C/menubar.py.page:132(section/p)
 msgid ""
 "Lines 30 to 80 inclusive of the <link xref=\"menubar.py#xml-code\"/> "
 "demonstrate the XML code used to create the UI for <gui>Choices</gui> menu."
@@ -24983,7 +25877,7 @@ msgstr ""
 "Las líneas 30 a 80 inclusive del <link xref=\"menubar.py#xml-code\"/> "
 "demuestran el código XML usado para crear la IU del menú <gui>Choices</gui>."
 
-#: C/menubar.py.page:132(section/p)
+#: C/menubar.py.page:134(section/p)
 msgid ""
 "The actions created so far are <em>stateless</em>, that is they do not "
 "retain or depend on a state given by the action itself. The actions we need "
@@ -24995,7 +25889,7 @@ msgstr ""
 "acciones que necesita crear para el submenú «Choices», por otro lado, "
 "<em>tienen estado</em>. Un ejemplo de creación de una acción con estado es:"
 
-#: C/menubar.py.page:133(section/code)
+#: C/menubar.py.page:135(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -25004,7 +25898,7 @@ msgstr ""
 "\n"
 "shape_action = Gio.SimpleAction.new_stateful(\"shape\", GLib.VariantType.new('s'), 
GLib.Variant.new_string('line'))"
 
-#: C/menubar.py.page:136(section/p)
+#: C/menubar.py.page:138(section/p)
 msgid ""
 "where the variables of the method are: name, parameter type (in this case, a "
 "string - see <link href=\"http://developer.gnome.org/glib/unstable/glib-";
@@ -25022,7 +25916,7 @@ msgstr ""
 "code>, y así sucesivamente, consulte <link href=\"http://developer.gnome.org/";
 "glib/unstable/glib-GVariant.html\">aquí</link> para ver una lista completa)."
 
-#: C/menubar.py.page:138(section/p)
+#: C/menubar.py.page:140(section/p)
 msgid ""
 "After creating the stateful SimpleAction we connect it to the callback "
 "function and we add it to the window (or the application, if it is the "
@@ -25032,7 +25926,7 @@ msgstr ""
 "de retorno de llamada y se añade a la ventana (o la aplicación, si es el "
 "caso), como antes:"
 
-#: C/menubar.py.page:140(section/code)
+#: C/menubar.py.page:142(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -25043,11 +25937,11 @@ msgstr ""
 "shape_action.connect(\"activate\", self.shape_callback)\n"
 "self.add_action(shape_action)"
 
-#: C/menubar.py.page:147(section/title) C/menubar.vala.page:153(section/title)
+#: C/menubar.py.page:149(section/title) C/menubar.vala.page:153(section/title)
 msgid "Complete XML UI file for this example"
 msgstr "Archivo de IU XML completo de este ejemplo"
 
-#: C/menubar.py.page:148(section/code) C/menubar.vala.page:154(section/code)
+#: C/menubar.py.page:150(section/code) C/menubar.vala.page:154(section/code)
 #, no-wrap
 msgid ""
 "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
@@ -25258,11 +26152,11 @@ msgstr ""
 "  &lt;/menu&gt;\n"
 "&lt;/interface&gt;\n"
 
-#: C/menubar.py.page:152(section/title)
+#: C/menubar.py.page:154(section/title)
 msgid "Complete Python file for this example"
 msgstr "Archivo de Python completo de este ejemplo"
 
-#: C/menubar.py.page:153(section/code)
+#: C/menubar.py.page:155(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -25585,11 +26479,11 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/menubar.py.page:156(section/title)
+#: C/menubar.py.page:158(section/title)
 msgid "Mnemonics and Accelerators"
 msgstr "Atajos y aceleradores"
 
-#: C/menubar.py.page:157(section/p) C/menubar.vala.page:161(section/p)
+#: C/menubar.py.page:159(section/p) C/menubar.vala.page:161(section/p)
 msgid ""
 "Labels may contain mnemonics. Mnemonics are underlined characters in the "
 "label, used for keyboard navigation. Mnemonics are created by placing an "
@@ -25601,7 +26495,7 @@ msgstr ""
 "guión bajo antes del carácter de atajo. Por ejemplo «_Archivo» en lugar de "
 "solo «Archivo» en el atributo «label» del «menubar.ui»."
 
-#: C/menubar.py.page:158(section/p) C/menubar.vala.page:162(section/p)
+#: C/menubar.py.page:160(section/p) C/menubar.vala.page:162(section/p)
 msgid ""
 "The mnemonics are visible when you press the <key>Alt</key> key. Pressing "
 "<keyseq><key>Alt</key><key>F</key></keyseq> will open the <gui>File</gui> "
@@ -25611,7 +26505,7 @@ msgstr ""
 "<keyseq><key>Alt</key><key>A</key></keyseq> abrirá el menú <gui>Archivo</"
 "gui>."
 
-#: C/menubar.py.page:160(section/p) C/menubar.vala.page:167(section/p)
+#: C/menubar.py.page:162(section/p) C/menubar.vala.page:167(section/p)
 msgid ""
 "Accelerators can be explicitly added in the UI definitions. For example, it "
 "is common to be able to quit an application by pressing <keyseq><key>Ctrl</"
@@ -25626,7 +26520,7 @@ msgstr ""
 "acelerador a la definición de IU, simplemente añádale un atributo «accel» al "
 "elemento."
 
-#: C/menubar.py.page:161(section/p) C/menubar.vala.page:168(section/p)
+#: C/menubar.py.page:163(section/p) C/menubar.vala.page:168(section/p)
 msgid ""
 "<code mime=\"application/xml\">&lt;attribute name=\"accel\"&gt;&amp;lt;"
 "Primary&amp;gt;q&lt;/attribute&gt;</code> will create the <keyseq><key>Ctrl</"
@@ -25640,7 +26534,7 @@ msgstr ""
 "la etiqueta <code>Quit</code>. Aquí, «Primary» se refiere a la tecla "
 "<key>Ctrl</key> en una PC o <key>⌘</key> en una Mac."
 
-#: C/menubar.py.page:163(section/code) C/menubar.vala.page:170(section/code)
+#: C/menubar.py.page:165(section/code) C/menubar.vala.page:170(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -25657,11 +26551,11 @@ msgstr ""
 "  &lt;attribute name=\"accel\"&gt;&amp;lt;Primary&amp;gt;q&lt;/attribute&gt;\n"
 "&lt;/item&gt;"
 
-#: C/menubar.py.page:171(section/title) C/menubar.vala.page:178(section/title)
+#: C/menubar.py.page:173(section/title) C/menubar.vala.page:178(section/title)
 msgid "Translatable strings"
 msgstr "Cadenas traducibles"
 
-#: C/menubar.py.page:172(section/p) C/menubar.vala.page:179(section/p)
+#: C/menubar.py.page:174(section/p) C/menubar.vala.page:179(section/p)
 msgid ""
 "Since GNOME applications are being translated into <link href=\"http://l10n.";
 "gnome.org/languages/\">many languages</link>, it is important that the "
@@ -25673,12 +26567,12 @@ msgstr ""
 "en su aplicación puedan traducirse. Para hacer una etiqueta traducible, "
 "simplemente añada <code>translatable=\"yes\"</code>:"
 
-#: C/menubar.py.page:176(section/code)
+#: C/menubar.py.page:178(section/code)
 #, no-wrap
 msgid "&lt;attribute name=\"label\" translatable=\"yes\"&gt;Quit&lt;/attribute&gt;"
 msgstr "&lt;attribute name=\"label\" translatable=\"yes\"&gt;Quit&lt;/attribute&gt;"
 
-#: C/menubar.py.page:183(item/p)
+#: C/menubar.py.page:185(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gio/unstable/GSimpleAction.html";
 "\">GSimpleAction</link>"
@@ -25686,7 +26580,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gio/unstable/GSimpleAction.html";
 "\">GSimpleAction</link>"
 
-#: C/menubar.py.page:184(item/p) C/toolbar_builder.py.page:194(item/p)
+#: C/menubar.py.page:186(item/p) C/toolbar_builder.py.page:196(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkBuilder.html";
 "\">GtkBuilder</link>"
@@ -26207,7 +27101,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/menubutton.js.page:21(media) C/menubutton.py.page:27(media)
+#: C/menubutton.js.page:21(media) C/menubutton.py.page:28(media)
 #: C/menubutton.vala.page:21(media)
 msgctxt "_"
 msgid ""
@@ -26224,17 +27118,17 @@ msgstr "MenuButton (JavaScript)"
 msgid "Anna Zacchi"
 msgstr "Anna Zacchi"
 
-#: C/menubutton.js.page:17(info/desc) C/menubutton.py.page:23(info/desc)
+#: C/menubutton.js.page:17(info/desc) C/menubutton.py.page:24(info/desc)
 #: C/menubutton.vala.page:17(info/desc)
 msgid "A widget that shows a menu when clicked on"
 msgstr "Un widget que muestra un menú cuando se pulsa"
 
-#: C/menubutton.js.page:20(page/title) C/menubutton.py.page:26(page/title)
+#: C/menubutton.js.page:20(page/title) C/menubutton.py.page:27(page/title)
 #: C/menubutton.vala.page:20(page/title)
 msgid "MenuButton"
 msgstr "MenuButton"
 
-#: C/menubutton.js.page:22(page/p) C/menubutton.py.page:28(page/p)
+#: C/menubutton.js.page:22(page/p) C/menubutton.py.page:29(page/p)
 #: C/menubutton.vala.page:22(page/p)
 msgid ""
 "The GtkMenuButton widget is used to display a menu when clicked on. This "
@@ -26249,7 +27143,7 @@ msgstr ""
 "casi cualquier «GtkWidget» estándar. El hijo más comúnmente usado es el "
 "«GtkArrow» proporcionado."
 
-#: C/menubutton.js.page:26(note/p) C/menubutton.py.page:30(note/p)
+#: C/menubutton.js.page:26(note/p) C/menubutton.py.page:31(note/p)
 #: C/menubutton.vala.page:26(note/p)
 msgid "You need to be running GNOME 3.6 for the MenuButton to work."
 msgstr "Necesita ejecutar GNOME 3.6 para que el «MenuButton» funcione."
@@ -26479,12 +27373,12 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/3.5/gtk3-GtkMenuButton.html";
 "\">MenuButton</link>"
 
-#: C/menubutton.py.page:7(info/title) C/tooltip.py.page:7(info/title)
+#: C/menubutton.py.page:7(info/title)
 msgctxt "text"
 msgid "MenuButton"
 msgstr "MenuButton"
 
-#: C/menubutton.py.page:36(section/code)
+#: C/menubutton.py.page:37(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -26633,11 +27527,20 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/menubutton.py.page:40(section/title)
+#: C/menubutton.py.page:41(section/title)
 msgid "Useful methods for a MenuButton widget"
 msgstr "Métodos útiles para un widget «MenuButton»"
 
-#: C/menubutton.py.page:41(section/p)
+#: C/menubutton.py.page:42(section/p)
+msgid ""
+"In line 33 the signal <code>\"activate\"</code> from the action "
+"<code>about_action</code> is connected to the callback function "
+"<code>about_callback()</code> using <code><var>action</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+
+#: C/menubutton.py.page:44(section/p)
 msgid ""
 "The positioning of the menu is determined by the \"direction\" property of "
 "the menu button and the \"halign\" or \"valign\" properties of the menu. For "
@@ -26652,15 +27555,15 @@ msgid ""
 msgstr ""
 "La posición del menú está determinada por la propiedad «direction» del botón "
 "de menú y las propiedades «halign» o «valign» del menú. Por ejemplo, cuando "
-"«direction» es <code>Gtk.ArrowType.DOWN</code> (otra opción: <code>UP</"
-"code>) y la alineación horizontal es <code>Gtk.Align.START</code> (otras "
-"opciones: <code>CENTER</code> y <code>END</code>), el menú se posiciona bajo "
-"el botón, con su borde inicial (dependiendo de la dirección del texto) "
-"alineado con el borde inicial del botón. Si no hay suficiente espacio bajo "
-"el botón, el menú, en cambio, se abre sobre él. Si la alineación mueve parte "
-"del menú fuera de la pantalla, se «empuja hacia adentro»."
+"«direction» es <code>Gtk.ArrowType.DOWN</code> (otra opción: <code>UP</code>) "
+"y la alineación horizontal es <code>Gtk.Align.START</code> (otras opciones: "
+"<code>CENTER</code> y <code>END</code>), el menú se posiciona bajo el botón, "
+"con su borde inicial (dependiendo de la dirección del texto) alineado con el "
+"borde inicial del botón. Si no hay suficiente espacio bajo el botón, el "
+"menú, en cambio, se abre sobre él. Si la alineación mueve parte del menú "
+"fuera de la pantalla, se «empuja hacia adentro»."
 
-#: C/menubutton.py.page:43(section/p)
+#: C/menubutton.py.page:46(section/p)
 msgid ""
 "In the case of vertical alignment, the possible ArrowType directions are "
 "<code>LEFT</code> and <code>RIGHT</code> and the vertical alignment is again "
@@ -26670,7 +27573,7 @@ msgstr ""
 "son <code>LEFT</code> y <code>RIGHT</code>, y la alineación vertical es, "
 "nuevamente, <code>START</code>, <code>CENTER</code> o <code>END</code>."
 
-#: C/menubutton.py.page:45(section/p)
+#: C/menubutton.py.page:48(section/p)
 msgid ""
 "<code>set_align_widget(alignment)</code> and <code>set_direction(direction)</"
 "code> can be used to set these properties."
@@ -26678,7 +27581,7 @@ msgstr ""
 "<code>set_align_widget(alineación)</code> y <code>set_direction(dirección)</"
 "code> pueden usarse para establecer estas propiedades."
 
-#: C/menubutton.py.page:52(item/p)
+#: C/menubutton.py.page:55(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMenuButton.html";
 "\">MenuButton</link>"
@@ -26830,7 +27733,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/message-board.c.page:36(media)
+#: C/message-board.c.page:40(media)
 msgctxt "_"
 msgid ""
 "external ref='media/message-board.ogv' md5='beb80c4538776dc2cdd26c95abea5027'"
@@ -26838,30 +27741,35 @@ msgstr ""
 "external ref='media/message-board.ogv' md5='beb80c4538776dc2cdd26c95abea5027'"
 
 #: C/message-board.c.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Message Board (C)"
 msgctxt "text"
-msgid "Message Board (C)"
+msgid "Message board (C)"
 msgstr "Cuadro de mensajes (C)"
 
 #: C/message-board.c.page:10(info/desc)
 msgid "A simple program using WebKitGTK+ and the DOM."
 msgstr "Un programa sencillo usando WebKitGTK+ y el DOM."
 
-#: C/message-board.c.page:21(page/title)
-msgid "Message Board"
+#: C/message-board.c.page:25(page/title)
+#, fuzzy
+#| msgid "Message Board"
+msgid "Message board"
 msgstr "Cuadro de mensajes"
 
-#: C/message-board.c.page:26(item/p)
+#: C/message-board.c.page:30(item/p)
 msgid "How to display a web page with WebKit."
 msgstr "Cómo mostrar una página web con WebKit"
 
-#: C/message-board.c.page:27(item/p)
+#: C/message-board.c.page:31(item/p)
 msgid ""
 "How to manipulate the contents of a web page using WebKit's DOM functions."
 msgstr ""
 "Como manipular el contenido de una página web usando las funciones del DOM "
 "del WebKit."
 
-#: C/message-board.c.page:30(synopsis/p)
+#: C/message-board.c.page:34(synopsis/p)
 msgid ""
 "This tutorial assumes you are familiar with the C programming language and "
 "have a basic understanding of GTK+, including how to create and place "
@@ -26874,7 +27782,7 @@ msgstr ""
 "la llamadas a señales. Consulte la <link xref=\"image-viewer.c\"/> para "
 "aprender las nociones básicas de GTK+."
 
-#: C/message-board.c.page:43(section/p)
+#: C/message-board.c.page:47(section/p)
 msgid ""
 "The GNOME platform includes WebKitGTK+, built on top of the powerful WebKit "
 "HTML framework. WebKit is used throughout GNOME, not just to view web pages "
@@ -26886,7 +27794,7 @@ msgstr ""
 "en Internet, sino también para crear interfaces de usuario enriquecidas a "
 "las que se pueden añadir estilos fácilmente con CSS."
 
-#: C/message-board.c.page:48(section/p)
+#: C/message-board.c.page:52(section/p)
 msgid ""
 "In this tutorial, you will create a simple message board using WebKit. The "
 "message board will allow you to enter some text and have it added to a list "
@@ -26898,7 +27806,7 @@ msgstr ""
 "lista de mensajes en HTML. Antes de empezar, deberá configurar un proyecto "
 "en Anjuta."
 
-#: C/message-board.c.page:54(item/p)
+#: C/message-board.c.page:58(item/p)
 msgid ""
 "In Anjuta, click <guiseq><gui>File</gui><gui>New</gui> <gui>Project</gui></"
 "guiseq> to open the new project assistant."
@@ -26906,7 +27814,7 @@ msgstr ""
 "En Anjuta, pulse <guiseq><gui>Archivo</gui><gui>Nuevo</gui> <gui>Proyecto</"
 "gui></guiseq> para abrir el asistente para proyecto nuevo."
 
-#: C/message-board.c.page:56(item/p)
+#: C/message-board.c.page:60(item/p)
 msgid ""
 "Select <gui>GTK+ (simple)</gui> on the <gui>C</gui> tab, and click "
 "<gui>Continue</gui>."
@@ -26914,7 +27822,7 @@ msgstr ""
 "Seleccione <gui>GTK+ (simple)</gui> en la pestaña <gui>C</gui> y pulse "
 "<gui>Continuar</gui>."
 
-#: C/message-board.c.page:58(item/p)
+#: C/message-board.c.page:62(item/p)
 msgid ""
 "Fill out your details on the <gui>Basic information</gui> page. Use "
 "<input>message-board</input> for the project name. Click <gui>Continue</gui>."
@@ -26923,7 +27831,7 @@ msgstr ""
 "<input>cuadro-mensajes</input> para el nombre del proyecto. Pulse "
 "<gui>Continuar</gui>."
 
-#: C/message-board.c.page:61(item/p)
+#: C/message-board.c.page:65(item/p)
 msgid ""
 "Disable the <gui>Use GtkBuilder for user interface</gui> option as this "
 "tutorial builds the user-interface manually."
@@ -26931,7 +27839,7 @@ msgstr ""
 "Desactive la opción <gui>Usar GtkBuilder para la interfaz del usuario</gui>, "
 "ya que, en este tutorial, la interfaz de usuario se construye manualmente."
 
-#: C/message-board.c.page:64(item/p)
+#: C/message-board.c.page:68(item/p)
 msgid ""
 "You need to tell Anjuta you're using WebKitGTK+ on this project. On the "
 "<gui>Project options</gui> page, select <gui>Configure external packages</"
@@ -26943,7 +27851,7 @@ msgstr ""
 "externos</gui>. Pulse <gui>Continuar</gui>. En la página <gui>Configurar "
 "paquetes externos</gui> seleccione <gui>webkitgtk-3.0</gui>."
 
-#: C/message-board.c.page:70(section/p)
+#: C/message-board.c.page:74(section/p)
 msgid ""
 "After you finish the new project assistant, open the file <file>src/main.c</"
 "file> from either the <gui>Project</gui> or the <gui>File</gui> tab. Anjuta "
@@ -26959,12 +27867,12 @@ msgstr ""
 "incluir las cabeceras de WebKit. Después de la línea que incluye <code>gtk/"
 "gtk.h</code>, añada la siguiente línea:"
 
-#: C/message-board.c.page:77(section/code)
+#: C/message-board.c.page:81(section/code)
 #, no-wrap
 msgid "#include &lt;webkit/webkit.h&gt;"
 msgstr "#include &lt;webkit/webkit.h&gt;"
 
-#: C/message-board.c.page:79(section/p)
+#: C/message-board.c.page:83(section/p)
 msgid ""
 "Verify that everything works by building what you have so far. Click "
 "<guiseq><gui>Build</gui><gui>Build Project</gui></guiseq> or just press "
@@ -26978,7 +27886,7 @@ msgstr ""
 "vez que construya, se le pedirán algunas opciones de configuración. "
 "Simplemente acepte los valores predeterminados y pulse <gui>Ejecutar</gui>."
 
-#: C/message-board.c.page:85(section/p)
+#: C/message-board.c.page:89(section/p)
 msgid ""
 "You should now be able to run the program. Click <guiseq> <gui>Run</"
 "gui><gui>Execute</gui></guiseq> or just press <key>F3</key>. You should see "
@@ -26988,11 +27896,11 @@ msgstr ""
 "gui><gui>Ejecutar</gui></guiseq> o simplemente pulse <key>F3</key>. Debería "
 "ver aparecer una ventana vacía."
 
-#: C/message-board.c.page:91(section/title)
+#: C/message-board.c.page:95(section/title)
 msgid "Lay out your window and web view"
 msgstr "La disposición de la ventana y la vista web"
 
-#: C/message-board.c.page:93(section/p)
+#: C/message-board.c.page:97(section/p)
 msgid ""
 "Now that you can show a window, it's time to start working with WebKit. For "
 "this tutorial, you'll create a text entry and a web view and pack them both "
@@ -27004,7 +27912,7 @@ msgstr ""
 "ambas se empaquetarán en una ventana. Busque la función <code>create_window</"
 "code> y reemplácela con lo siguiente"
 
-#: C/message-board.c.page:98(section/code)
+#: C/message-board.c.page:102(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -27075,7 +27983,7 @@ msgstr ""
 "    return window;\n"
 "}\n"
 
-#: C/message-board.c.page:133(section/p)
+#: C/message-board.c.page:137(section/p)
 msgid ""
 "You first create a <code>GtkWindow</code> object and set its title and "
 "default size. You also connect the <code>gtk_main_quit</code> function to "
@@ -27089,7 +27997,7 @@ msgstr ""
 "<code>delete-event</code> se emite cuando se cierra la ventana. La función "
 "<code>gtk_main_quit</code> es parte de GTK+, y sale de la aplicación."
 
-#: C/message-board.c.page:139(section/p)
+#: C/message-board.c.page:143(section/p)
 msgid ""
 "You then create a vertical box and add it to the window. A window can only "
 "hold a single child widget, so you need to use a box to add multiple "
@@ -27103,7 +28011,7 @@ msgstr ""
 "cantidad de espacio (en píxeles) entre cada hijo, y la siguiente línea añade "
 "un borde de seis píxeles alrededor de la cosa completa."
 
-#: C/message-board.c.page:145(section/p)
+#: C/message-board.c.page:149(section/p)
 msgid ""
 "You next create a <code>GtkEntry</code> object and pack it into the box. The "
 "third and fourth arguments to <code>gtk_box_pack_start</code> specify that "
@@ -27119,7 +28027,7 @@ msgstr ""
 "este caso, se establece el relleno a cero, ya que se está permitiendo que la "
 "caja maneje todo el relleno."
 
-#: C/message-board.c.page:152(section/p)
+#: C/message-board.c.page:156(section/p)
 msgid ""
 "Before you add a web view, you have to create a scrolled window to put it "
 "inside of. The scrolled window will place scrollbars on the right and bottom "
@@ -27136,7 +28044,7 @@ msgstr ""
 "desplazada (y por lo tanto, la vista web) usen el espacio adicional "
 "disponible en la caja."
 
-#: C/message-board.c.page:159(section/p)
+#: C/message-board.c.page:163(section/p)
 msgid ""
 "Finally, you create a <code>WebKitWebView</code> and add it to the scrolled "
 "window. Then load a very basic HTML page into the web view by calling "
@@ -27147,11 +28055,11 @@ msgstr ""
 "llamando a <code>webkit_web_view_load_string</code> con los siguientes "
 "argumentos:"
 
-#: C/message-board.c.page:165(item/title)
+#: C/message-board.c.page:169(item/title)
 msgid "<code>WEBKIT_WEB_VIEW (view)</code>"
 msgstr "<code>WEBKIT_WEB_VIEW (view)</code>"
 
-#: C/message-board.c.page:166(item/p)
+#: C/message-board.c.page:170(item/p)
 msgid ""
 "The view itself. Because <code>view</code> is typed as a <code>GtkWidget*</"
 "code>, you have to use <code>WEBKIT_WEB_VIEW</code> to safely cast the "
@@ -27161,19 +28069,19 @@ msgstr ""
 "debe usar <code>WEBKIT_WEB_VIEW</code> para convertir el tipo del objeto con "
 "seguridad."
 
-#: C/message-board.c.page:171(item/title)
+#: C/message-board.c.page:175(item/title)
 msgid "<code>\"&lt;html&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;\"</code>"
 msgstr "<code>\"&lt;html&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;\"</code>"
 
-#: C/message-board.c.page:172(item/p)
+#: C/message-board.c.page:176(item/p)
 msgid "The simplest HTML file you could possibly write."
 msgstr "El archivo HTML más simple que pueda escribir."
 
-#: C/message-board.c.page:175(item/title)
+#: C/message-board.c.page:179(item/title)
 msgid "<code>\"text/html\"</code>"
 msgstr "<code>\"text/html\"</code>"
 
-#: C/message-board.c.page:176(item/p)
+#: C/message-board.c.page:180(item/p)
 msgid ""
 "The MIME type of the content you provided. In this case, you're using plain "
 "HTML."
@@ -27181,11 +28089,11 @@ msgstr ""
 "El tipo MIME del contenido que ha proporcionado. En este caso, está usando "
 "HTML plano."
 
-#: C/message-board.c.page:180(item/title)
+#: C/message-board.c.page:184(item/title)
 msgid "<code>\"UTF-8\"</code>"
 msgstr "<code>\"UTF-8\"</code>"
 
-#: C/message-board.c.page:181(item/p)
+#: C/message-board.c.page:185(item/p)
 msgid ""
 "The character encoding of the content you provided. Although you only used "
 "ASCII characters, it's a good idea to specify UTF-8. UTF-8 is used as the "
@@ -27195,11 +28103,11 @@ msgstr ""
 "sólo use caracteres ASCII, es una buena idea especificar UTF-8, ya que es la "
 "codificación que se usa de manera predeterminada en toda la plataforma GNOME."
 
-#: C/message-board.c.page:186(item/title)
+#: C/message-board.c.page:190(item/title)
 msgid "<code>NULL</code>"
 msgstr "<code>NULL</code>"
 
-#: C/message-board.c.page:187(item/p)
+#: C/message-board.c.page:191(item/p)
 msgid ""
 "The base URI. You don't need it in this simple example, but you might want "
 "to provide a <sys>file:</sys> URI if you add images or other features where "
@@ -27209,7 +28117,7 @@ msgstr ""
 "un URI <sys>file:</sys> si añade imágenes u otras características cuando "
 "quiera usar referencias a URI relativos."
 
-#: C/message-board.c.page:194(note/p)
+#: C/message-board.c.page:198(note/p)
 msgid ""
 "Every time you add a widget, you have to call <code>gtk_widget_show</code> "
 "on it for it to be visible. If you call <code>gtk_widget_show_all</code> on "
@@ -27226,7 +28134,7 @@ msgstr ""
 "<code>gtk_widget_show_all</code>, como cuando se quieren ocultar o mostrar "
 "dinámicamente algunos objetos en respuesta a determinados eventos."
 
-#: C/message-board.c.page:202(section/p)
+#: C/message-board.c.page:206(section/p)
 msgid ""
 "Finally, you have to call <code>gtk_widget_show_all</code> on the box. "
 "Otherwise, none of the widgets you created will be visible. (The window is "
@@ -27237,7 +28145,7 @@ msgstr ""
 "(La ventana se muestra en la función <code>main</code> con "
 "<code>gtk_widget_show</code>.)"
 
-#: C/message-board.c.page:206(section/p)
+#: C/message-board.c.page:210(section/p)
 msgid ""
 "Build and run the message board again. You should see a window with a text "
 "entry and a web view. It doesn't do anything yet because the text entry and "
@@ -27247,11 +28155,11 @@ msgstr ""
 "con una entrada de texto y una vista web. Todavía no hace nada porque la "
 "entrada de texto y la vista web no saben nada la una acerca de la otra."
 
-#: C/message-board.c.page:212(section/title)
+#: C/message-board.c.page:216(section/title)
 msgid "Hook up signals"
 msgstr "Conectar señales"
 
-#: C/message-board.c.page:214(section/p)
+#: C/message-board.c.page:218(section/p)
 msgid ""
 "Now you want to make the message board actually <em>do</em> something when "
 "you enter text into the text entry. To do this, connect a callback function "
@@ -27268,7 +28176,7 @@ msgstr ""
 "code>, en cualquier lugar después de que <code>entry</code> y <code>view</"
 "code> se hayan definido:"
 
-#: C/message-board.c.page:221(section/code)
+#: C/message-board.c.page:225(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -27277,7 +28185,7 @@ msgstr ""
 "\n"
 "g_signal_connect (entry, \"activate\", G_CALLBACK (entry_activate_cb), view);\n"
 
-#: C/message-board.c.page:225(section/p)
+#: C/message-board.c.page:229(section/p)
 msgid ""
 "You then have to actually define <code>entry_activate_cb</code>. Define it "
 "as follows, anywhere above <code>create_window</code>:"
@@ -27285,7 +28193,7 @@ msgstr ""
 "Entonces se debe definir <code>entry_activate_cb</code>. Defínalo como "
 "quiera, en cualquier lugar por encima de <code>create_window</code>:"
 
-#: C/message-board.c.page:228(section/code)
+#: C/message-board.c.page:232(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -27326,7 +28234,7 @@ msgstr ""
 "    gtk_entry_set_text (entry, \"\");\n"
 "}\n"
 
-#: C/message-board.c.page:248(section/p)
+#: C/message-board.c.page:252(section/p)
 msgid ""
 "The first thing you do is get a <code>WebKitDOMDocument</code> object that "
 "represents the HTML document displayed in <code>view</code>. The DOM classes "
@@ -27340,7 +28248,7 @@ msgstr ""
 "documento HTML, y trabajar de manera similar a las API DOM que ya debería "
 "conocer de JavaScript."
 
-#: C/message-board.c.page:254(section/p)
+#: C/message-board.c.page:258(section/p)
 msgid ""
 "Once you have the document, you want to get the <code>body</code> element so "
 "that you can add <code>div</code> elements to it. The "
@@ -27354,7 +28262,7 @@ msgstr ""
 "elemento en el documento usando selectores CSS. Esto le evita tener que "
 "escribir bucles tediosos para recorrer el documento."
 
-#: C/message-board.c.page:265(section/p)
+#: C/message-board.c.page:269(section/p)
 msgid ""
 "Next, you create a new <code>div</code> element to hold the message. Every "
 "element you create has to be attached to a document, so the function to "
@@ -27371,7 +28279,7 @@ msgstr ""
 "code> devuelve un <code>const gchar*</code>, no tiene que liberar el "
 "resultado."
 
-#: C/message-board.c.page:278(section/p)
+#: C/message-board.c.page:282(section/p)
 msgid ""
 "Finally, you append the new <code>div</code> element to the body and clear "
 "out the text entry so you can type something new. Build and run the program "
@@ -27381,11 +28289,11 @@ msgstr ""
 "salida de texto para poder escribir algo nuevo. Construya y ejecute el "
 "programa otra vez y pruébelo por su cuenta."
 
-#: C/message-board.c.page:285(section/title)
+#: C/message-board.c.page:289(section/title)
 msgid "Make it look better with CSS"
 msgstr "Mejorar el aspecto con CSS"
 
-#: C/message-board.c.page:287(section/p)
+#: C/message-board.c.page:291(section/p)
 msgid ""
 "At this point, your program is completely functional, but not very pretty. "
 "You can style the message display with CSS, just like you can with any other "
@@ -27401,7 +28309,7 @@ msgstr ""
 "línea usando el atributo <code>style</code> de los elementos <code>div</"
 "code> o puede incluso construirlo con programación usando las API DOM."
 
-#: C/message-board.c.page:294(section/p)
+#: C/message-board.c.page:298(section/p)
 msgid ""
 "In this tutorial, you'll attach the CSS using the <code>user-stylesheet-uri</"
 "code> property of the <code>WebKitWebSetting</code> object attached to your "
@@ -27424,7 +28332,7 @@ msgstr ""
 "primer lugar, se define el CSS como una cadena estática cerca del principio "
 "del archivo."
 
-#: C/message-board.c.page:303(section/code)
+#: C/message-board.c.page:307(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -27451,7 +28359,7 @@ msgstr ""
 "\" margin: 12px; padding: 6px;\"\n"
 "\"}\";\n"
 
-#: C/message-board.c.page:316(section/p)
+#: C/message-board.c.page:320(section/p)
 msgid ""
 "All you have in this example are <code>div</code> elements inside a "
 "<code>body</code> element. If you created more complicated HTML, you could "
@@ -27463,7 +28371,7 @@ msgstr ""
 "cualquier CSS que sea necesario. Si se siente cómodo usando CSS debería "
 "intentar cambiar esto por algo que le guste más."
 
-#: C/message-board.c.page:321(section/p)
+#: C/message-board.c.page:325(section/p)
 msgid ""
 "To apply the CSS, you set the <code>user-stylesheet-uri</code> in the "
 "<code>create_window</code> function, anywhere after <code>view</code> has "
@@ -27473,7 +28381,7 @@ msgstr ""
 "función <code>create_window</code>, en cualquier lugar después de que "
 "<code>view</code> se haya definido."
 
-#: C/message-board.c.page:327(section/code)
+#: C/message-board.c.page:331(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -27494,7 +28402,7 @@ msgstr ""
 "g_free (css);\n"
 "g_free (tmp);\n"
 
-#: C/message-board.c.page:337(section/p)
+#: C/message-board.c.page:341(section/p)
 msgid ""
 "Also, make sure to add variable declarations for <code>tmp</code> and "
 "<code>css</code> to the top of <code>create_window</code>."
@@ -27502,7 +28410,7 @@ msgstr ""
 "Asegúrese de añadir declaraciones de variables para <code>tmp</code> y "
 "<code>css</code> a la parte superior de <code>create_window</code>."
 
-#: C/message-board.c.page:340(section/code)
+#: C/message-board.c.page:344(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -27511,7 +28419,7 @@ msgstr ""
 "\n"
 "gchar *tmp, *css;\n"
 
-#: C/message-board.c.page:344(section/p)
+#: C/message-board.c.page:348(section/p)
 msgid ""
 "A data URI starts with <sys>data:</sys> and some information about the "
 "content type and how the data is encoded. The actual data follows after a "
@@ -27528,7 +28436,7 @@ msgstr ""
 "un archivo que cargar. En vez de eso, ofrece el contenido completo del "
 "archivo."
 
-#: C/message-board.c.page:351(section/p)
+#: C/message-board.c.page:355(section/p)
 msgid ""
 "The code above first encodes your CSS definitions in Base64, then combines "
 "that with a fixed string to create a data URI. The <code>g_strconcat</code> "
@@ -27544,7 +28452,7 @@ msgstr ""
 "code> como argumento final para que sepa dónde parar. No olvide liberar esas "
 "cadenas temporales después de establecer la propiedad de la hoja de estilos."
 
-#: C/message-board.c.page:358(section/p)
+#: C/message-board.c.page:362(section/p)
 msgid ""
 "Build and run the program again. It should now work exactly the same as at "
 "the end of the last section, except the messages will be nicely styled with "
@@ -27554,11 +28462,11 @@ msgstr ""
 "igual que al final de la última sección, excepto que los mensajes tendrán "
 "estilos con un borde y un degradado de fondo sutil."
 
-#: C/message-board.c.page:364(section/title)
+#: C/message-board.c.page:368(section/title)
 msgid "Learn more"
 msgstr "Aprender más"
 
-#: C/message-board.c.page:366(section/p)
+#: C/message-board.c.page:370(section/p)
 msgid ""
 "This tutorial showed you how to create a basic application using GTK+ and "
 "WebKit, including showing a document and manipulating its contents. To "
@@ -27570,7 +28478,7 @@ msgstr ""
 "Para crear una aplicación real, probablemente quiera hacer algo más. Pruebe "
 "a añadir características usted mismo. Aquí hay algunas ideas:"
 
-#: C/message-board.c.page:372(item/p)
+#: C/message-board.c.page:376(item/p)
 msgid ""
 "If you're comfortable with CSS, try changing the style of the message "
 "display. CSS is easy to get started with, but increasingly more powerful. "
@@ -27582,7 +28490,7 @@ msgstr ""
 "una gran cantidad de tutoriales de CSS en Internet, y casi todo lo que se "
 "puede hacer en una página web, se puede hacer en esta aplicación."
 
-#: C/message-board.c.page:378(item/p)
+#: C/message-board.c.page:382(item/p)
 msgid ""
 "Right now, you lose all your messages whenever you close the message board. "
 "Try saving the HTML contents after each post, and loading the saved file (if "
@@ -27592,7 +28500,7 @@ msgstr ""
 "Pruebe a guardar el contenido HTML después de cada envío, y a cargar el "
 "archivo guardado (si existe) al inicio."
 
-#: C/message-board.c.page:386(item/p)
+#: C/message-board.c.page:390(item/p)
 msgid ""
 "If you keep your messages around for a long time, you'll start wondering "
 "when you posted them. Add a timestamp to each message when it's posted. "
@@ -27604,7 +28512,7 @@ msgstr ""
 "Probablemente quiera crear algún elemento <code>div</code> hijo adicional "
 "con diferentes clases que puede modelar en el CSS."
 
-#: C/message-board.c.page:393(item/p)
+#: C/message-board.c.page:397(item/p)
 msgid ""
 "This program keeps messages around forever. Think about ways you could allow "
 "the user to delete messages. Perhaps you want messages to disappear "
@@ -28083,10 +28991,9 @@ msgid ""
 "make popups appear with a basic message and buttons."
 msgstr ""
 "La diferencia entre un «MessageDialog» y un <link xref=\"dialog.js\">Dialog</"
-"link> es que un «Dialog» puede contener cualquier widget y tener el "
-"contenido que quiera, mientras que un «MessageDialog» es sólo una manera "
-"cómoda de hacer que aparezca un diálogo emergente con un mensaje básico y "
-"botones."
+"link> es que un «Dialog» puede contener cualquier widget y tener el contenido "
+"que quiera, mientras que un «MessageDialog» es sólo una manera cómoda de "
+"hacer que aparezca un diálogo emergente con un mensaje básico y botones."
 
 #: C/messagedialog.js.page:43(section/code)
 #, no-wrap
@@ -28273,8 +29180,8 @@ msgid ""
 "has two options in it: Message, and Quit."
 msgstr ""
 "Aquí, se construye el <link xref=\"gmenu.js\">GMenu</link> donde se pondrá "
-"el botón «Message» que acciona el «MessageDialog» emergente. El «GMenu» es "
-"el menú que aparece cuando pulsa el nombre de la aplicación en la esquina "
+"el botón «Message» que acciona el «MessageDialog» emergente. El «GMenu» es el "
+"menú que aparece cuando pulsa el nombre de la aplicación en la esquina "
 "superior izquierda de la pantalla, junto al menú «Actividades». Este menú "
 "sólo tiene dos opciones: «Message» y «Quit»."
 
@@ -28410,9 +29317,9 @@ msgid ""
 "of clicking OK or Cancel. Whatever you select, the popup is destroyed "
 "afterwards."
 msgstr ""
-"Esta función toma dos parámetros, el «MessageDialog» y su «response_id», "
-"ambos proporcionados automáticamente (no tiene que pasarlos manualmente para "
-"que funcione). Aquí se usa un interruptor simple para cambiar el texto de la "
+"Esta función toma dos parámetros, el «MessageDialog» y su «response_id», ambos "
+"proporcionados automáticamente (no tiene que pasarlos manualmente para que "
+"funcione). Aquí se usa un interruptor simple para cambiar el texto de la "
 "«etiqueta de advertencia», dependiendo de qué opción elija. «DELETE_EVENT» "
 "ocurre su presiona «Escape» para cancelar el «MessageDialog», en lugar de "
 "presionar «OK» o «Cancel». Elija lo que elija, el diálogo emergente de "
@@ -28870,6 +29777,14 @@ msgstr ""
 msgid "Useful methods for a MessageDialog widget"
 msgstr "Métodos útiles para un widget «MessageDialog»"
 
+#: C/messagedialog.py.page:36(section/p)
+msgid ""
+"In line 18 the signal <code>\"activate\"</code> is connected to the callback "
+"function <code>message_cb()</code> using <code><var>widget</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+
 #: C/messagedialog.py.page:38(item/p)
 msgid ""
 "In the constructor of MessageDialog we could set flags as <code>Gtk."
@@ -29166,18 +30081,18 @@ msgctxt "text"
 msgid "The Model/View/Controller design (Python)"
 msgstr "El diseño modelo/vista/controlador (Python)"
 
-#: C/model-view-controller.py.page:12(info/desc)
-#: C/model-view-controller.py.page:25(page/title)
+#: C/model-view-controller.py.page:13(info/desc)
+#: C/model-view-controller.py.page:26(page/title)
 msgid "The Model/View/Controller design"
 msgstr "El diseño modelo/vista/controlador"
 
-#: C/model-view-controller.py.page:30(section/title)
-#: C/properties.py.page:30(section/title)
-#: C/signals-callbacks.py.page:30(section/title)
+#: C/model-view-controller.py.page:31(section/title)
+#: C/properties.py.page:31(section/title)
+#: C/signals-callbacks.py.page:31(section/title)
 msgid "Overview"
 msgstr "Visión general"
 
-#: C/model-view-controller.py.page:32(section/p)
+#: C/model-view-controller.py.page:33(section/p)
 msgid ""
 "Both the <link xref=\"treeview_simple_liststore.py\">TreeView</link> and the "
 "<link xref=\"combobox.py\">ComboBox</link> widgets are built on the "
@@ -29204,11 +30119,11 @@ msgstr ""
 "code>) y le notifica a la vista de estos cambios (a través de señales como "
 "<code>«changed»</code>)."
 
-#: C/model-view-controller.py.page:37(section/title)
+#: C/model-view-controller.py.page:38(section/title)
 msgid "The Model"
 msgstr "El modelo"
 
-#: C/model-view-controller.py.page:39(section/p)
+#: C/model-view-controller.py.page:40(section/p)
 msgid ""
 "The main difference between the two main implementations of <code>Gtk."
 "TreeModel</code> is that <code>Gtk.ListStore</code> contains simple rows of "
@@ -29222,7 +30137,7 @@ msgstr ""
 "contiene filas de datos, pero cada fila puede tener filas hijas (que a su "
 "vez pueden tener filas hijas, y así sucesivamente)."
 
-#: C/model-view-controller.py.page:41(section/p)
+#: C/model-view-controller.py.page:42(section/p)
 msgid ""
 "The data in the Model can be retrieved or modified using the tree iter and "
 "column index, or <code>Gtk.TreeIter</code>, or <code>Gtk.TreePath</code>."
@@ -29231,7 +30146,7 @@ msgstr ""
 "árbol y el índice de columna, <code>Gtk.TreeIter</code>, o <code>Gtk."
 "TreePath</code>."
 
-#: C/model-view-controller.py.page:43(section/p)
+#: C/model-view-controller.py.page:44(section/p)
 msgid ""
 "As with Python's built-in list object you can use <code>len()</code> to get "
 "the number of rows and use slices to retrieve or set values. Otherwise, the "
@@ -29246,7 +30161,7 @@ msgstr ""
 "insertada recientemente. También puede obtener un <code>Gtk.TreeIter</code> "
 "llamando a <code>get_iter()</code>."
 
-#: C/model-view-controller.py.page:45(section/p)
+#: C/model-view-controller.py.page:46(section/p)
 msgid ""
 "As <code>Gtk.ListStore</code> contains only one level, i.e. nodes do not "
 "have any child nodes, a path is essentially the index of the row you want to "
@@ -29264,11 +30179,11 @@ msgstr ""
 "nivel. Entonces, la ruta <code>«0»</code> se refiere al nodo raíz y la ruta "
 "<code>«2:4»</code> al quinto hijo del tercer nodo."
 
-#: C/model-view-controller.py.page:47(section/p)
+#: C/model-view-controller.py.page:48(section/p)
 msgid "Useful methods for a <code>Gtk.TreeModel</code>:"
 msgstr "Métodos útiles para un <code>Gtk.TreeModel</code>:"
 
-#: C/model-view-controller.py.page:49(item/p)
+#: C/model-view-controller.py.page:50(item/p)
 msgid ""
 "<code>get_iter(path)</code> returns a <code>Gtk.TreeIter</code> instance "
 "pointing to <code>path</code>. This is expected to be a colon-separated list "
@@ -29284,7 +30199,7 @@ msgstr ""
 "ruta de profundidad 3 apuntando al 11º hijo del nodo raíz, el 5º hijo de ese "
 "11º hijo, y el 1er hijo de ese 5º hijo."
 
-#: C/model-view-controller.py.page:50(item/p)
+#: C/model-view-controller.py.page:51(item/p)
 msgid ""
 "<code>iter_next(treeiter)</code> returns a <code>Gtk.TreeIter</code> "
 "instance pointing the node following treeiter at the current level or "
@@ -29294,7 +30209,7 @@ msgstr ""
 "TreeIter</code> apuntando siguiendo el «treeiter» en el nivel actual o "
 "<code>None</code> si no hay un «iter» siguiente."
 
-#: C/model-view-controller.py.page:51(item/p)
+#: C/model-view-controller.py.page:52(item/p)
 msgid ""
 "<code>iter_has_child(treeiter)</code> returns <code>True</code> if "
 "<code>treeiter</code> has children, <code>False</code> otherwise."
@@ -29302,7 +30217,7 @@ msgstr ""
 "<code>iter_has_child(treeiter)</code> devuelve <code>True</code> si "
 "<code>treeiter</code> tiene hijos, <code>False</code> de lo contrario."
 
-#: C/model-view-controller.py.page:52(item/p)
+#: C/model-view-controller.py.page:53(item/p)
 msgid ""
 "<code>iter_children(treeiter)</code> returns a <code>Gtk.TreeIter</code> "
 "instance pointing to the first child of <code>treeiter</code> or <code>None</"
@@ -29312,7 +30227,7 @@ msgstr ""
 "TreeIter</code> apuntando al primer hijo de <code>treeiter</code> o "
 "<code>None</code> si <code>treeiter</code> no tiene hijos."
 
-#: C/model-view-controller.py.page:53(item/p)
+#: C/model-view-controller.py.page:54(item/p)
 msgid ""
 "<code>get_iter_first()</code> returns a <code>Gtk.TreeIter</code> instance "
 "pointing to the first iterator in the tree (the one at the path <code>\"0\"</"
@@ -29322,11 +30237,11 @@ msgstr ""
 "code> apuntando al primer iterador en el árbol (el que está en la ruta "
 "<code>«0»</code>) o <code>None</code> si el árbol está vacío."
 
-#: C/model-view-controller.py.page:56(section/p)
+#: C/model-view-controller.py.page:57(section/p)
 msgid "Useful methods for a <code>Gtk.ListStore</code>:"
 msgstr "Métodos útiles para un <code>Gtk.ListStore</code>:"
 
-#: C/model-view-controller.py.page:58(item/p)
+#: C/model-view-controller.py.page:59(item/p)
 msgid ""
 "<code>append(row)</code> appends a new row to this list store, where "
 "<code>row</code> can be a list of values for each column; <code>row</code> "
@@ -29340,8 +30255,8 @@ msgstr ""
 "caso se añade una fila vacía. El método devuelve un <code>Gtk.TreeIter</"
 "code> apuntando a la fila añadida."
 
-#: C/model-view-controller.py.page:59(item/p)
-#: C/model-view-controller.py.page:65(item/p)
+#: C/model-view-controller.py.page:60(item/p)
+#: C/model-view-controller.py.page:66(item/p)
 msgid ""
 "<code>remove(iter)</code> removes <code>iter</code> from the <code>Gtk."
 "ListStore</code>, and returns <code>True</code> if the iter is valid, and "
@@ -29353,11 +30268,11 @@ msgstr ""
 "code> si no lo es. Después de eliminarse, <code>iter</code> se establece a "
 "la siguiente fila válida."
 
-#: C/model-view-controller.py.page:62(section/p)
+#: C/model-view-controller.py.page:63(section/p)
 msgid "Useful methods for a <code>Gtk.TreeStore</code>:"
 msgstr "Métodos útiles para un <code>Gtk.TreeStore</code>:"
 
-#: C/model-view-controller.py.page:64(item/p)
+#: C/model-view-controller.py.page:65(item/p)
 msgid ""
 "<code>append(parent, row)</code> appends a new row to this tree store; "
 "<code>parent</code> must be a valid Gtk.TreeIter. If parent is not "
@@ -29375,11 +30290,11 @@ msgstr ""
 "ser <code>None</code>; en este último caso se añadirá una fila vacía. El "
 "método devuelve un <code>Gtk.TreeIter</code> apuntando a la fila añadida."
 
-#: C/model-view-controller.py.page:71(section/title)
+#: C/model-view-controller.py.page:72(section/title)
 msgid "The View: the TreeView case"
 msgstr "La vista: el caso de «TreeView»"
 
-#: C/model-view-controller.py.page:73(section/p)
+#: C/model-view-controller.py.page:74(section/p)
 msgid ""
 "A Treeview shows the structure of children and parent items as a tree. See "
 "for instance <link xref=\"treeview_treestore.py\">this example</link>."
@@ -29387,18 +30302,18 @@ msgstr ""
 "Una vista de árbol muestra la estructura de elementos padres e hijos como un "
 "árbol. Consulte <link xref=\"treeview_treestore.py\">este ejemplo</link>."
 
-#: C/model-view-controller.py.page:75(section/p)
+#: C/model-view-controller.py.page:76(section/p)
 msgid ""
 "The <code>Gtk.TreeViewColumn</code> is used to organize the vertical columns."
 msgstr ""
 "La <code>Gtk.TreeViewColumn</code> se usa para organizar las columnas "
 "verticales."
 
-#: C/model-view-controller.py.page:77(section/p)
+#: C/model-view-controller.py.page:78(section/p)
 msgid "Useful methods for a <code>Gtk.TreeView</code>:"
 msgstr "Métodos útiles para un <code>Gtk.TreeView</code>:"
 
-#: C/model-view-controller.py.page:79(item/p)
+#: C/model-view-controller.py.page:80(item/p)
 msgid ""
 "<code>set_model(model)</code> sets the model for this tree view. If this "
 "tree view already has a model set, it will remove it before setting the new "
@@ -29408,7 +30323,7 @@ msgstr ""
 "Si ya tiene un modelo, lo eliminará antes de establecer el nuevo. Si el "
 "modelo es <code>None</code>, entonces quitará el modelo viejo. "
 
-#: C/model-view-controller.py.page:80(item/p)
+#: C/model-view-controller.py.page:81(item/p)
 msgid ""
 "<code>get_model()</code> returns the model this tree view is based on, "
 "<code>None</code> if the model is unset."
@@ -29416,7 +30331,7 @@ msgstr ""
 "<code>get_model()</code> devuelve el modelo en el que está basada esta vista "
 "de árbol, <code>None</code> si no tiene modelo."
 
-#: C/model-view-controller.py.page:81(item/p)
+#: C/model-view-controller.py.page:82(item/p)
 msgid ""
 "<code>append_column(column)</code> appends <code>column</code> to the list "
 "of columns."
@@ -29424,7 +30339,7 @@ msgstr ""
 "<code>append_column(columna)</code> añade la <code>columna</code> a la lista "
 "de columnas."
 
-#: C/model-view-controller.py.page:82(item/p)
+#: C/model-view-controller.py.page:83(item/p)
 msgid ""
 "<code>get_selection()</code> gets the <code>Gtk.TreeSelection</code> "
 "associated with this tree view."
@@ -29432,11 +30347,11 @@ msgstr ""
 "<code>get_selection()</code> obtiene la <code>Gtk.TreeSelection</code> "
 "asociada a esta vista de árbol."
 
-#: C/model-view-controller.py.page:85(section/p)
+#: C/model-view-controller.py.page:86(section/p)
 msgid "Useful methods for a <code>Gtk.TreeViewColumn</code>:"
 msgstr "Métodos útiles para un <code>Gtk.TreeViewColumn</code>:"
 
-#: C/model-view-controller.py.page:87(item/p)
+#: C/model-view-controller.py.page:88(item/p)
 msgid ""
 "<code>add_attribute(renderer, attribute, value)</code> adds an attribute "
 "mapping to this column. <code>attribute</code> is the parameter on "
@@ -29446,7 +30361,7 @@ msgstr ""
 "atributo a esta columna. <code>atributo</code> es el parámetro en "
 "<code>renderizador</code> al que se le asigna el <code>valor</code>."
 
-#: C/model-view-controller.py.page:88(item/p)
+#: C/model-view-controller.py.page:89(item/p)
 msgid ""
 "<code>pack_start(renderer, expand)</code> packs <code>renderer</code> into "
 "the beginning of this column. If <code>expand</code> is <code>False</code>, "
@@ -29458,10 +30373,10 @@ msgstr ""
 "<code>renderizador</code> en el principio de esta columna. Si "
 "<code>expandir</code> es <code>False</code>, entonces no se le asigna a "
 "<code>renderizador</code> más espacio del que necesita. Cualquier espacio "
-"sin utilizar se divide equitativamente entre las celdas en las que "
-"«expandir» es <code>True</code>."
+"sin utilizar se divide equitativamente entre las celdas en las que «expandir» "
+"es <code>True</code>."
 
-#: C/model-view-controller.py.page:89(item/p)
+#: C/model-view-controller.py.page:90(item/p)
 msgid ""
 "<code>pack_end(renderer, expand)</code> adds <code>renderer</code> to end of "
 "this column. If <code>expand</code> is <code>False</code>, then "
@@ -29475,7 +30390,7 @@ msgstr ""
 "que necesita. Cualquier espacio sin utilizar se divide equitativamente entre "
 "celdas en las que <code>expandir</code> es <code>True</code>."
 
-#: C/model-view-controller.py.page:90(item/p)
+#: C/model-view-controller.py.page:91(item/p)
 msgid ""
 "<code>set_sort_column_id(sort_column_id)</code> sets the column of the model "
 "by which this column (of the view) should be sorted. This also makes the "
@@ -29485,7 +30400,7 @@ msgstr ""
 "del modelo por la que debe ordenarse la vista. Esto también hace que se "
 "pueda pulsar la cabecera de la columna."
 
-#: C/model-view-controller.py.page:91(item/p)
+#: C/model-view-controller.py.page:92(item/p)
 msgid ""
 "<code>set_sort_indicator(setting)</code> sets whether a little arrow is "
 "displayed in the column header; <code>setting</code> can either be "
@@ -29495,7 +30410,7 @@ msgstr ""
 "flecha en la cabecera de la columna; <code>opción</code> puede ser "
 "<code>True</code> (se muestra el indicador) o <code>False</code>."
 
-#: C/model-view-controller.py.page:92(item/p)
+#: C/model-view-controller.py.page:93(item/p)
 msgid ""
 "<code>set_sort_order(order)</code> changes the order by which the column is "
 "sorted; <code>order</code> can either be <code>Gtk.SortType.ASCENDING</code> "
@@ -29505,11 +30420,11 @@ msgstr ""
 "columna; <code>orden</code> puede ser <code>Gtk.SortType.ASCENDING</code> o "
 "<code>Gtk.SortType.DESCENDING</code>."
 
-#: C/model-view-controller.py.page:98(section/title)
+#: C/model-view-controller.py.page:99(section/title)
 msgid "The View: the ComboBox case"
 msgstr "La vista: el caso de la «ComboBox»"
 
-#: C/model-view-controller.py.page:100(section/p)
+#: C/model-view-controller.py.page:101(section/p)
 msgid ""
 "A <code>Gtk.ComboBox</code> allows for the selection of an item from a "
 "dropdown menu, see for instance <link xref=\"combobox.py\">this example</"
@@ -29523,11 +30438,11 @@ msgstr ""
 "ComboBoxText</code>, que es más simple. Tanto <code>Gtk.ComboBox</code> como "
 "<code>Gtk.ComboBoxText</code> pueden contener una entrada."
 
-#: C/model-view-controller.py.page:102(section/p)
+#: C/model-view-controller.py.page:103(section/p)
 msgid "Useful methods for a <code>Gtk.ComboBox</code>:"
 msgstr "Métodos útiles para un <code>Gtk.ComboBox</code>:"
 
-#: C/model-view-controller.py.page:104(item/p)
+#: C/model-view-controller.py.page:105(item/p)
 msgid ""
 "The static method <code>new_with_entry()</code> creates a new empty "
 "<code>Gtk.ComboBox</code> with an entry; the static method "
@@ -29541,7 +30456,7 @@ msgstr ""
 "<code>modelo</code> nueva; y el método estático "
 "<code>new_with_model_and_entry(modelo)</code> es una combinación de los dos."
 
-#: C/model-view-controller.py.page:105(item/p)
+#: C/model-view-controller.py.page:106(item/p)
 msgid ""
 "<code>get_active_iter()</code> returns a <code>Gtk.TreeIter</code> pointing "
 "to the current active item. If no active item exists, <code>None</code> is "
@@ -29550,7 +30465,7 @@ msgstr ""
 "<code>get_active_iter()</code> devuelve un <code>Gtk.TreeIter</code> que "
 "apunta al elemento activo actual. Si no existe, devuelve <code>None</code>."
 
-#: C/model-view-controller.py.page:106(item/p)
+#: C/model-view-controller.py.page:107(item/p)
 msgid ""
 "<code>set_model(model)</code> sets the model used by this combo box to be "
 "<code>model</code>, and it will unset a previously set model (if there is "
@@ -29562,7 +30477,7 @@ msgstr ""
 "<code>modelo</code> es <code>None</code>, entonces lo quitará. Tenga en "
 "cuenta que esta función no limpia los renderizadores de celda."
 
-#: C/model-view-controller.py.page:107(item/p)
+#: C/model-view-controller.py.page:108(item/p)
 msgid ""
 "<code>set_entry_text_column(text_column)</code> sets the model column which "
 "this combo box should use to get strings from to be <code>text_column</"
@@ -29577,7 +30492,7 @@ msgstr ""
 "es relevante si esta caja combinada se creó con la propiedad «has-entry» "
 "establecida a «True»)."
 
-#: C/model-view-controller.py.page:108(item/p)
+#: C/model-view-controller.py.page:109(item/p)
 msgid ""
 "<code>set_wrap_width(width)</code> sets the wrap width of this combo box to "
 "be <code>width</code>. The wrap width is basically the preferred number of "
@@ -29588,11 +30503,11 @@ msgstr ""
 "línea es básicamente el número preferido de columnas en el que quiere que el "
 "diálogo emergente se distribuya en una rejilla."
 
-#: C/model-view-controller.py.page:111(section/p)
+#: C/model-view-controller.py.page:112(section/p)
 msgid "Useful methods for a <code>Gtk.ComboBoxText</code>:"
 msgstr "Métodos útiles para un <code>Gtk.ComboBoxText</code>:"
 
-#: C/model-view-controller.py.page:113(item/p)
+#: C/model-view-controller.py.page:114(item/p)
 msgid ""
 "The static method <code>new_with_entry()</code> creates a new empty "
 "<code>Gtk.ComboBoxText</code> with an entry."
@@ -29600,7 +30515,7 @@ msgstr ""
 "El método estático <code>new_with_entry()</code> crea una <code>Gtk."
 "ComboBoxText</code> nueva vacía con una entrada."
 
-#: C/model-view-controller.py.page:114(item/p)
+#: C/model-view-controller.py.page:115(item/p)
 msgid ""
 "<code>append_text(text)</code> appends <code>text</code> to the list of "
 "strings stored in this combo box."
@@ -29608,7 +30523,7 @@ msgstr ""
 "<code>append_text(texto)</code> añade <code>texto</code> a la lista de "
 "cadenas almacenadas en esta caja combinada."
 
-#: C/model-view-controller.py.page:115(item/p)
+#: C/model-view-controller.py.page:116(item/p)
 msgid ""
 "<code>get_active_text()</code> returns the currently active string in this "
 "combo box, or <code>None</code> if none is selected. If this combo box "
@@ -29620,11 +30535,11 @@ msgstr ""
 "caja combinada contiene una entrada, esta función devolverá su contenido "
 "(que no será necesariamente un elemento de la lista)."
 
-#: C/model-view-controller.py.page:121(section/title)
+#: C/model-view-controller.py.page:122(section/title)
 msgid "The View: the Cellrenderers"
 msgstr "La vista: los «CellRenderer»"
 
-#: C/model-view-controller.py.page:123(section/p)
+#: C/model-view-controller.py.page:124(section/p)
 msgid ""
 "The View makes use of <code>Gtk.CellRenderer</code>s of various types to "
 "draw the data."
@@ -29632,15 +30547,15 @@ msgstr ""
 "La vista hace uso de <code>Gtk.CellRenderer</code> de varios tipos para "
 "dibujar los datos."
 
-#: C/model-view-controller.py.page:125(section/p)
+#: C/model-view-controller.py.page:126(section/p)
 msgid "Implementations of <code>Gtk.CellRenderer</code> and useful methods:"
 msgstr "Implementaciones de <code>Gtk.CellRenderer</code> y métodos útiles:"
 
-#: C/model-view-controller.py.page:127(item/p)
+#: C/model-view-controller.py.page:128(item/p)
 msgid "<code>Gtk.CellRendererText</code> - renders text in a cell"
 msgstr "<code>Gtk.CellRendererText</code>: muestra texto en una celda"
 
-#: C/model-view-controller.py.page:128(item/p)
+#: C/model-view-controller.py.page:129(item/p)
 msgid ""
 "<code>Gtk.CellRendererToggle</code> - renders a toggle or radio button in a "
 "cell. Useful methods:"
@@ -29648,18 +30563,18 @@ msgstr ""
 "<code>Gtk.CellRendererToggle</code>: muestra un interruptor o botón de radio "
 "en una celda. Métodos útiles:"
 
-#: C/model-view-controller.py.page:130(item/p)
+#: C/model-view-controller.py.page:131(item/p)
 msgid ""
 "<code>set_active(setting)</code> - activates or deactivates a cell renderer"
 msgstr ""
 "<code>set_active(opción)</code>: activa o desactiva un renderizador de celda"
 
-#: C/model-view-controller.py.page:131(item/p)
+#: C/model-view-controller.py.page:132(item/p)
 msgid "<code>get_active()</code> - returns whether the cell renderer is active"
 msgstr ""
 "<code>get_active()</code>: devuelve si el renderizador de celda está activado"
 
-#: C/model-view-controller.py.page:132(item/p)
+#: C/model-view-controller.py.page:133(item/p)
 msgid ""
 "<code>set_radio(radio)</code> - if radio is <code>True</code>, the cell "
 "renderer renders a radio toggle (i.e. a toggle in a group of mutually-"
@@ -29671,7 +30586,7 @@ msgstr ""
 "interruptor en un grupo mutuamente exclusivo); si es <code>False</code>, "
 "muestra una casilla de verificación (una opción booleana independiente)"
 
-#: C/model-view-controller.py.page:133(item/p)
+#: C/model-view-controller.py.page:134(item/p)
 msgid ""
 "<code>get_radio()</code> - returns whether we are rendering radio toggles "
 "rather than checkboxes."
@@ -29679,11 +30594,11 @@ msgstr ""
 "<code>get_radio()</code>: devuelve si se están mostrando botones de radio en "
 "lugar de casillas de verificación."
 
-#: C/model-view-controller.py.page:136(item/p)
+#: C/model-view-controller.py.page:137(item/p)
 msgid "<code>Gtk.CellRendererPixbuf</code> - renders an image in a cell"
 msgstr "<code>Gtk.CellRendererPixbuf</code>: muestra una imagen en una celda"
 
-#: C/model-view-controller.py.page:137(item/p)
+#: C/model-view-controller.py.page:138(item/p)
 msgid ""
 "<code>Gtk.CellRendererCombo</code> - renders text in a cell; but while "
 "<code>Gtk.CellRendererText</code> offers a simple entry to edit the text, "
@@ -29697,7 +30612,7 @@ msgstr ""
 "<code>Gtk.ComboBox</code> para editarlo. Puede usarse con o sin un widget "
 "«Gtk.Entry» asociado, dependiendo del valor de la propiedad «has-entry»."
 
-#: C/model-view-controller.py.page:138(item/p)
+#: C/model-view-controller.py.page:139(item/p)
 msgid ""
 "<code>Gtk.CellRendererProgress</code> - renders a numeric value as a "
 "progress bar in a cell; it can display a text on top of the progress bar"
@@ -29705,30 +30620,30 @@ msgstr ""
 "<code>Gtk.CellRendererProgress</code>: muestra un valor numérico en forma de "
 "barra de progreso en una celda; puede mostrar un texto sobre ella"
 
-#: C/model-view-controller.py.page:139(item/p)
+#: C/model-view-controller.py.page:140(item/p)
 msgid ""
 "<code>Gtk.CellRendererSpinner</code> - renders a spinning animation in a cell"
 msgstr ""
 "<code>Gtk.CellRendererSpinner</code>: muestra una animación giratoria en una "
 "celda"
 
-#: C/model-view-controller.py.page:140(item/p)
+#: C/model-view-controller.py.page:141(item/p)
 msgid "<code>Gtk.CellRendererSpin</code> - renders a spin button in a cell"
 msgstr ""
 "<code>Gtk.CellRendererSpin</code>: muestra un botón incremental en una celda"
 
-#: C/model-view-controller.py.page:141(item/p)
+#: C/model-view-controller.py.page:142(item/p)
 msgid ""
 "<code>Gtk.CellRendererAccel</code> - renders a keyboard accelerator in a cell"
 msgstr ""
 "<code>Gtk.CellRendererAccel</code>: muestra un acelerador de teclado en una "
 "celda"
 
-#: C/model-view-controller.py.page:147(section/title)
+#: C/model-view-controller.py.page:148(section/title)
 msgid "The Controller: the Selection"
 msgstr "El controlador: la selección"
 
-#: C/model-view-controller.py.page:149(section/p)
+#: C/model-view-controller.py.page:150(section/p)
 msgid ""
 "Most applications will need to not only deal with displaying data, but also "
 "receiving input events from users. To do this, simply get a reference to a "
@@ -29739,7 +30654,7 @@ msgstr ""
 "simplemente obtenga una referencia a un objeto de selección y conéctela a la "
 "señal <code>«changed»</code>."
 
-#: C/model-view-controller.py.page:151(section/code)
+#: C/model-view-controller.py.page:152(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -29750,11 +30665,11 @@ msgstr ""
 "select = tree.get_selection()\n"
 "select.connect(\"changed\", on_tree_selection_changed)\n"
 
-#: C/model-view-controller.py.page:156(section/p)
+#: C/model-view-controller.py.page:157(section/p)
 msgid "Then to retrieve data for the row selected:"
 msgstr "Después, para obtener datos de la fila seleccionada:"
 
-#: C/model-view-controller.py.page:158(section/code)
+#: C/model-view-controller.py.page:159(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -29769,29 +30684,29 @@ msgstr ""
 "    if treeiter != None:\n"
 "        print \"You selected\", model[treeiter][0]\n"
 
-#: C/model-view-controller.py.page:165(section/p)
+#: C/model-view-controller.py.page:166(section/p)
 msgid "Useful methods for a <code>Gtk.TreeSelection</code>:"
 msgstr "Métodos útiles para un <code>Gtk.TreeSelection</code>:"
 
-#: C/model-view-controller.py.page:168(item/p)
+#: C/model-view-controller.py.page:169(item/p)
 msgid ""
 "<code>set_mode(type)</code> sets the type of selection, where type is one of"
 msgstr ""
 "<code>set_mode(tipo)</code> establece el tipo de la selección, donde «tipo» "
 "puede ser"
 
-#: C/model-view-controller.py.page:170(item/p)
+#: C/model-view-controller.py.page:171(item/p)
 msgid "<code>Gtk.SelectionMode.NONE</code> - no selection is possible"
 msgstr "<code>Gtk.SelectionMode.NONE</code>: la selección no es posible"
 
-#: C/model-view-controller.py.page:171(item/p)
+#: C/model-view-controller.py.page:172(item/p)
 msgid ""
 "<code>Gtk.SelectionMode.SINGLE</code> - zero or one element may be selected"
 msgstr ""
 "<code>Gtk.SelectionMode.SINGLE</code>: se puede seleccionar uno o ningún "
 "elemento"
 
-#: C/model-view-controller.py.page:172(item/p)
+#: C/model-view-controller.py.page:173(item/p)
 msgid ""
 "<code>Gtk.SelectionMode.BROWSE</code> - exactly one element is selected. In "
 "some circumstances, such as initially or during a search operation, it’s "
@@ -29805,7 +30720,7 @@ msgstr ""
 "que realmente se prohíbe es que el usuario deseleccione un elemento "
 "actualmente seleccionado excepto si selecciona otro."
 
-#: C/model-view-controller.py.page:173(item/p)
+#: C/model-view-controller.py.page:174(item/p)
 msgid ""
 "<code>Gtk.SelectionMode.MULTIPLE</code> -any number of elements may be "
 "selected. Clicks toggle the state of an item. The Ctrl key may be used to "
@@ -29819,7 +30734,7 @@ msgstr ""
 "seleccionar entre el foco y el hijo al que apunta. Algunos widgets también "
 "pueden permitir arrastrar y soltar para seleccionar un rango de elementos."
 
-#: C/model-view-controller.py.page:176(item/p)
+#: C/model-view-controller.py.page:177(item/p)
 msgid ""
 "<code>get_selected()</code> returns a tuple <code>(model, treeiter)</code>, "
 "where <code>model</code> is the current model and <code>treeiter</code> a "
@@ -29837,18 +30752,18 @@ msgstr ""
 "<code>get_selected_rows()</code> en su lugar, que devuelve una lista de "
 "instancias <code>Gtk.TreePath</code> de todas las filas seleccionadas."
 
-#: C/model-view-controller.py.page:182(section/title)
-#: C/properties.py.page:49(section/title)
-#: C/signals-callbacks.py.page:44(section/title)
-#: C/strings.py.page:124(section/title)
+#: C/model-view-controller.py.page:183(section/title)
+#: C/properties.py.page:50(section/title)
+#: C/signals-callbacks.py.page:45(section/title)
+#: C/strings.py.page:111(section/title)
 msgid "References"
 msgstr "Referencias"
 
-#: C/model-view-controller.py.page:185(item/p)
-#: C/treeview_advanced_liststore.py.page:46(item/p)
-#: C/treeview_cellrenderertoggle.py.page:42(item/p)
-#: C/treeview_simple_liststore.py.page:44(item/p)
-#: C/treeview_treestore.py.page:42(item/p)
+#: C/model-view-controller.py.page:186(item/p)
+#: C/treeview_advanced_liststore.py.page:44(item/p)
+#: C/treeview_cellrenderertoggle.py.page:44(item/p)
+#: C/treeview_simple_liststore.py.page:45(item/p)
+#: C/treeview_treestore.py.page:44(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeModel.html";
 "\">GtkTreeModel</link>"
@@ -29856,11 +30771,11 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeModel.html";
 "\">GtkTreeModel</link>"
 
-#: C/model-view-controller.py.page:186(item/p)
-#: C/treeview_advanced_liststore.py.page:45(item/p)
-#: C/treeview_cellrenderertoggle.py.page:41(item/p)
-#: C/treeview_simple_liststore.py.page:43(item/p)
-#: C/treeview_treestore.py.page:41(item/p)
+#: C/model-view-controller.py.page:187(item/p)
+#: C/treeview_advanced_liststore.py.page:43(item/p)
+#: C/treeview_cellrenderertoggle.py.page:43(item/p)
+#: C/treeview_simple_liststore.py.page:44(item/p)
+#: C/treeview_treestore.py.page:43(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeView.html";
 "\">GtkTreeView</link>"
@@ -29868,11 +30783,11 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeView.html";
 "\">GtkTreeView</link>"
 
-#: C/model-view-controller.py.page:187(item/p)
-#: C/treeview_advanced_liststore.py.page:49(item/p)
-#: C/treeview_cellrenderertoggle.py.page:46(item/p)
-#: C/treeview_simple_liststore.py.page:47(item/p)
-#: C/treeview_treestore.py.page:45(item/p)
+#: C/model-view-controller.py.page:188(item/p)
+#: C/treeview_advanced_liststore.py.page:47(item/p)
+#: C/treeview_cellrenderertoggle.py.page:48(item/p)
+#: C/treeview_simple_liststore.py.page:48(item/p)
+#: C/treeview_treestore.py.page:47(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeViewColumn.html";
 "\">GtkTreeViewColumn</link>"
@@ -29880,7 +30795,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeViewColumn.html";
 "\">GtkTreeViewColumn</link>"
 
-#: C/model-view-controller.py.page:189(item/p)
+#: C/model-view-controller.py.page:190(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRenderer.html";
 "\">GtkCellRenderer</link>"
@@ -29888,35 +30803,11 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRenderer.html";
 "\">GtkCellRenderer</link>"
 
-#: C/model-view-controller.py.page:190(item/p)
-msgid ""
-"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/treeview.";
-"html\">The Python Gtk+ 3 Tutorial - Tree and List Widgets</link>"
-msgstr ""
-"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/treeview.";
-"html\">El tutorial de GTK+ 3 en Python: widgets de árbol y lista</link>"
-
-#: C/model-view-controller.py.page:191(item/p)
-msgid ""
-"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/";
-"cellrenderers.html\">The Python Gtk+ 3 Tutorial - CellRenderers</link>"
-msgstr ""
-"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/";
-"cellrenderers.html\">El tutorial de GTK+ 3 en Python: «CellRenderer»</link>"
-
-#: C/model-view-controller.py.page:192(item/p)
-msgid ""
-"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/combobox.";
-"html\">The Python Gtk+ 3 Tutorial - ComboBox</link>"
-msgstr ""
-"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/combobox.";
-"html\">El tutorial de GTK+ 3 en Python: «ComboBox»</link>"
-
 #. This is a reference to an external file such as an image or video. When
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/paned.py.page:21(media)
+#: C/paned.py.page:22(media)
 msgctxt "_"
 msgid "external ref='media/paned.png' md5='01e36d8a51ee18313616d63d2e15d993'"
 msgstr "external ref='media/paned.png' md5='01e36d8a51ee18313616d63d2e15d993'"
@@ -29926,19 +30817,19 @@ msgctxt "text"
 msgid "Paned (Python)"
 msgstr "Paned (Python)"
 
-#: C/paned.py.page:17(info/desc)
+#: C/paned.py.page:18(info/desc)
 msgid "A widget with two adjustable panes"
 msgstr "Un widget con dos paneles ajustables"
 
-#: C/paned.py.page:20(page/title)
+#: C/paned.py.page:21(page/title)
 msgid "Paned"
 msgstr "Paned"
 
-#: C/paned.py.page:22(page/p)
+#: C/paned.py.page:23(page/p)
 msgid "Two images in two adjustable panes, horizontally aligned."
 msgstr "Dos imágenes en dos paneles ajustables, alineados horizontalmente."
 
-#: C/paned.py.page:28(section/code)
+#: C/paned.py.page:29(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -30023,11 +30914,11 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/paned.py.page:32(section/title)
+#: C/paned.py.page:33(section/title)
 msgid "Useful methods for a Paned widget"
 msgstr "Métodos útiles para un widget «Paned»"
 
-#: C/paned.py.page:33(section/p)
+#: C/paned.py.page:34(section/p)
 msgid ""
 "To have two vertically aligned panes, use <code>Gtk.Orientation.VERTICAL</"
 "code> instead of <code>Gtk.Orientation.HORIZONTAL</code>. The method "
@@ -30041,7 +30932,7 @@ msgstr ""
 "superior, y <code>add2(widget2)</code> añadirá el <code>widget2</code> al "
 "panel inferior."
 
-#: C/paned.py.page:40(item/p)
+#: C/paned.py.page:41(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkPaned.html";
 "\">GtkPaned</link>"
@@ -30049,7 +30940,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkPaned.html";
 "\">GtkPaned</link>"
 
-#: C/paned.py.page:41(item/p)
+#: C/paned.py.page:42(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Standard-";
 "Enumerations.html#GtkOrientation\">Standard Enumerations</link>"
@@ -30061,7 +30952,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/photo-wall.c.page:78(media)
+#: C/photo-wall.c.page:83(media)
 msgctxt "_"
 msgid ""
 "external ref='media/photo-wall.png' md5='f19590d97e8ec029cda3c44b769c11cd'"
@@ -30072,7 +30963,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/photo-wall.c.page:81(media)
+#: C/photo-wall.c.page:86(media)
 msgctxt "_"
 msgid ""
 "external ref='media/photo-wall-focused.png' "
@@ -30082,8 +30973,11 @@ msgstr ""
 "md5='9f1ceecf3a28c1e468597b093a10cbae'"
 
 #: C/photo-wall.c.page:6(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Photo Wall (C)"
 msgctxt "text"
-msgid "Photo Wall (C)"
+msgid "Photo wall (C)"
 msgstr "Mural de fotos (C)"
 
 #: C/photo-wall.c.page:9(info/desc)
@@ -30094,11 +30988,13 @@ msgstr "Un visor de imágenes Clutter"
 msgid "Chris Kühl"
 msgstr "Chris Kühl"
 
-#: C/photo-wall.c.page:22(page/title)
-msgid "Photo Wall"
+#: C/photo-wall.c.page:27(page/title)
+#, fuzzy
+#| msgid "Photo Wall"
+msgid "Photo wall"
 msgstr "Mural de fotos"
 
-#: C/photo-wall.c.page:25(synopsis/p)
+#: C/photo-wall.c.page:30(synopsis/p)
 msgid ""
 "For this example we will build a simple image viewer using Clutter. You will "
 "learn:"
@@ -30106,35 +31002,35 @@ msgstr ""
 "Para este ejemplo se construirá un sencillo visor de imágenes usando "
 "Clutter. Aprenderá:"
 
-#: C/photo-wall.c.page:27(item/p)
+#: C/photo-wall.c.page:32(item/p)
 msgid "How to size and position <code>ClutterActor</code>s"
 msgstr "Cómo dimensionar y posicionar varios <code>ClutterActor</code>"
 
-#: C/photo-wall.c.page:28(item/p)
+#: C/photo-wall.c.page:33(item/p)
 msgid "How to place an image in a <code>ClutterActor</code>"
 msgstr "Cómo situar una imagen en un <code>ClutterActor</code>"
 
-#: C/photo-wall.c.page:29(item/p)
+#: C/photo-wall.c.page:34(item/p)
 msgid "How to do simple transitions using Clutter's animation framework"
 msgstr ""
 "Cómo hacer transiciones sencillas usando el entorno de trabajo de "
 "animaciones de Clutter"
 
-#: C/photo-wall.c.page:30(item/p)
+#: C/photo-wall.c.page:35(item/p)
 msgid "How to make <code>ClutterActor</code>s respond to mouse events"
 msgstr ""
 "Cómo hacer que un <code>ClutterActor</code> responda a los eventos del ratón"
 
-#: C/photo-wall.c.page:31(item/p)
+#: C/photo-wall.c.page:36(item/p)
 msgid "How to get file names from a directory"
 msgstr "Cómo obtener nombres de archivos de una carpeta"
 
-#: C/photo-wall.c.page:36(section/title)
-#: C/record-collection.js.page:34(section/title)
+#: C/photo-wall.c.page:41(section/title)
+#: C/record-collection.js.page:39(section/title)
 msgid "Introduction"
 msgstr "Introducción"
 
-#: C/photo-wall.c.page:37(section/p)
+#: C/photo-wall.c.page:42(section/p)
 msgid ""
 "Clutter is a library for creating dynamic user interfaces using OpenGL for "
 "hardware acceleration. This example demonstates a small, but central, part "
@@ -30146,13 +31042,21 @@ msgstr ""
 "importante parte de la biblioteca Clutter para crear un sencillo pero "
 "atractivo programa para ver imágenes."
 
-#: C/photo-wall.c.page:40(section/p)
+#: C/photo-wall.c.page:45(section/p)
+#, fuzzy
+#| msgid ""
+#| "To help us reach our goal we will be utilising a few other common pieces "
+#| "of GLib as well. Most importantly, we'll use one <code>GSList</code>, a "
+#| "singly-linked list, to hold our <code>ClutterActor</code>s and another "
+#| "one for file path names. We will also use <code>GDir</code>, a utility "
+#| "for working with directories, to access our image directory and gather "
+#| "file paths."
 msgid ""
 "To help us reach our goal we will be utilising a few other common pieces of "
-"GLib as well. Most importantly, we'll use one <code>GSList</code>, a singly-"
-"linked list, to hold our <code>ClutterActor</code>s and another one for file "
-"path names. We will also use <code>GDir</code>, a utility for working with "
-"directories, to access our image directory and gather file paths."
+"GLib as well. Most importantly, we'll use one <code>GPtrArray</code>, a "
+"dynamic aray of pointers, to hold the file path names. We will also use "
+"<code>GDir</code>, a utility for working with directories, to access our "
+"image directory and gather file paths."
 msgstr ""
 "Para ayudarle a conseguir su objetivo, también se utilizarán algunos "
 "fragmentos comunes de GLib. Más importante es que se usará una <code>GSList</"
@@ -30161,9 +31065,14 @@ msgstr ""
 "<code>GDir</code>, una utilidad para trabajar con carpetas, acceder a "
 "nuestra carpeta de imágenes y obtener rutas de archivos."
 
-#: C/photo-wall.c.page:53(item/p)
+#: C/photo-wall.c.page:58(item/p)
+#, fuzzy
+#| msgid ""
+#| "Choose <gui>Gtk+ (simple)</gui> from the <gui>C</gui> tab, click "
+#| "<gui>Continue</gui>, and fill out your details on the next few pages. Use "
+#| "<file>photo-wall</file> as project name and directory."
 msgid ""
-"Choose <gui>Gtk+ (simple)</gui> from the <gui>C</gui> tab, click "
+"Choose <gui>GTK+ (simple)</gui> from the <gui>C</gui> tab, click "
 "<gui>Continue</gui>, and fill out your details on the next few pages. Use "
 "<file>photo-wall</file> as project name and directory."
 msgstr ""
@@ -30171,7 +31080,7 @@ msgstr ""
 "<gui>Continuar</gui>, y rellene los detalles en las siguientes páginas. Use "
 "<file>mural-de-fotos</file> como nombre del proyecto y de la carpeta."
 
-#: C/photo-wall.c.page:56(item/p)
+#: C/photo-wall.c.page:61(item/p)
 msgid ""
 "Make sure that <gui>Use GtkBuilder for user interface</gui> is disabled as "
 "we will create the UI manually in this tutorial. Check the <link xref="
@@ -30182,7 +31091,7 @@ msgstr ""
 "Revise el tutorial del <link xref=\"guitar-tuner.c\">afinador de guitarra</"
 "link> usando el constructor de interfaces."
 
-#: C/photo-wall.c.page:61(item/p)
+#: C/photo-wall.c.page:66(item/p)
 msgid ""
 "Enable <gui>Configure external packages</gui>. On the next page, select "
 "<em>clutter-1.0</em> from the list to include the Clutter library in your "
@@ -30192,15 +31101,15 @@ msgstr ""
 "seleccione <em>clutter-1.0</em> de la lista para incluir la biblioteca "
 "Clutter en su proyecto."
 
-#: C/photo-wall.c.page:74(section/title)
+#: C/photo-wall.c.page:79(section/title)
 msgid "A look at Photo Wall"
 msgstr "Un vistazo al mural de fotos"
 
-#: C/photo-wall.c.page:75(section/p)
+#: C/photo-wall.c.page:80(section/p)
 msgid "Our image viewer presents the user with a wall of images."
 msgstr "El visor de imágenes muestra al usuario un mural de imágenes."
 
-#: C/photo-wall.c.page:79(section/p)
+#: C/photo-wall.c.page:84(section/p)
 msgid ""
 "When an image is clicked, it is animated to fill the viewing area. When the "
 "image having focus is clicked it is returned to its original position using "
@@ -30210,11 +31119,11 @@ msgstr ""
 "visualización. Cuando se pulsa la imagen que tiene el foco, vuelve a su "
 "tamaño original usando una animación que dura 500 milisegundos."
 
-#: C/photo-wall.c.page:85(section/title)
+#: C/photo-wall.c.page:90(section/title)
 msgid "Initial setup"
 msgstr "Configuración inicial"
 
-#: C/photo-wall.c.page:86(section/p)
+#: C/photo-wall.c.page:91(section/p)
 msgid ""
 "The following code segment contains many of the defines and variables we "
 "will be using in the following sections. Use this as a reference for later "
@@ -30225,10 +31134,42 @@ msgstr ""
 "próximas secciones. Copie este código al principio de <file>src/main.c</"
 "file>:"
 
-#: C/photo-wall.c.page:89(section/code)
-#, no-wrap
-msgid ""
-"\n"
+#: C/photo-wall.c.page:94(section/code)
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "#include &lt;clutter/clutter.h&gt;\n"
+#| "\n"
+#| "#define STAGE_WIDTH  800\n"
+#| "#define STAGE_HEIGHT 600\n"
+#| "\n"
+#| "#define THUMBNAIL_SIZE 200\n"
+#| "#define ROW_COUNT (STAGE_HEIGHT / THUMBNAIL_SIZE)\n"
+#| "#define COL_COUNT (STAGE_WIDTH  / THUMBNAIL_SIZE)\n"
+#| "#define THUMBNAIL_COUNT (ROW_COUNT * COL_COUNT)\n"
+#| "\n"
+#| "#define ANIMATION_DURATION_MS 500\n"
+#| "\n"
+#| "#define FOCUS_DEPTH 100.0\n"
+#| "#define UNFOCUS_DEPTH 0.0\n"
+#| "\n"
+#| "#define IMAGE_DIR_PATH \"./berlin_images/\"\n"
+#| "\n"
+#| "static GSList *actor_list = NULL;\n"
+#| "static GSList *img_path_list = NULL;\n"
+#| "\n"
+#| "typedef struct Position\n"
+#| "{\n"
+#| "    float x;\n"
+#| "    float y;\n"
+#| "}\n"
+#| "Position;\n"
+#| "\n"
+#| "static Position origin = {0, 0};\n"
+#| "\n"
+msgid ""
+"\n"
+"#include &lt;gdk-pixbuf/gdk-pixbuf.h&gt;\n"
 "#include &lt;clutter/clutter.h&gt;\n"
 "\n"
 "#define STAGE_WIDTH  800\n"
@@ -30241,25 +31182,15 @@ msgid ""
 "\n"
 "#define ANIMATION_DURATION_MS 500\n"
 "\n"
-"#define FOCUS_DEPTH 100.0\n"
-"#define UNFOCUS_DEPTH 0.0\n"
-"\n"
 "#define IMAGE_DIR_PATH \"./berlin_images/\"\n"
 "\n"
-"static GSList *actor_list = NULL;\n"
-"static GSList *img_path_list = NULL;\n"
+"static GPtrArray *img_paths;\n"
 "\n"
-"typedef struct Position\n"
-"{\n"
-"    float x;\n"
-"    float y;\n"
-"}\n"
-"Position;\n"
-"\n"
-"static Position origin = {0, 0};\n"
+"static ClutterPoint unfocused_pos;\n"
 "\n"
 msgstr ""
 "\n"
+"#include &lt;gdk-pixbuf/gdk-pixbuf.h&gt;\n"
 "#include &lt;clutter/clutter.h&gt;\n"
 "\n"
 "#define STAGE_WIDTH  800\n"
@@ -30272,29 +31203,18 @@ msgstr ""
 "\n"
 "#define ANIMATION_DURATION_MS 500\n"
 "\n"
-"#define FOCUS_DEPTH 100.0\n"
-"#define UNFOCUS_DEPTH 0.0\n"
-"\n"
 "#define IMAGE_DIR_PATH \"./berlin_images/\"\n"
 "\n"
-"static GSList *actor_list = NULL;\n"
-"static GSList *img_path_list = NULL;\n"
-"\n"
-"typedef struct Position\n"
-"{\n"
-"    float x;\n"
-"    float y;\n"
-"}\n"
-"Position;\n"
+"static GPtrArray *img_paths;\n"
 "\n"
-"static Position origin = {0, 0};\n"
+"static ClutterPoint unfocused_pos;\n"
 "\n"
 
-#: C/photo-wall.c.page:123(section/title)
+#: C/photo-wall.c.page:118(section/title)
 msgid "Jumping into the code"
 msgstr "Saltar dentro del código"
 
-#: C/photo-wall.c.page:124(section/p)
+#: C/photo-wall.c.page:119(section/p)
 msgid ""
 "We will start by taking a look at the <code>main()</code> function as a "
 "whole. Then we'll discuss the other code sections in detail. Change the "
@@ -30308,7 +31228,7 @@ msgstr ""
 "Puede eliminar la función <code>create_window()</code>, ya que no se usa en "
 "este ejemplo."
 
-#: C/photo-wall.c.page:127(section/code)
+#: C/photo-wall.c.page:122(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -30318,11 +31238,14 @@ msgid ""
 "    ClutterColor stage_color = { 16, 16, 16, 255 };\n"
 "    ClutterActor *stage = NULL;\n"
 "\n"
-"    clutter_init(&amp;argc, &amp;argv);\n"
+"    if (clutter_init (&amp;argc, &amp;argv) != CLUTTER_INIT_SUCCESS)\n"
+"        return 1;\n"
 "\n"
-"    stage = clutter_stage_get_default();\n"
+"    stage = clutter_stage_new();\n"
 "    clutter_actor_set_size(stage, STAGE_WIDTH, STAGE_HEIGHT);\n"
-"    clutter_stage_set_color(CLUTTER_STAGE (stage), &amp;stage_color);\n"
+"    clutter_actor_set_background_color(stage, &amp;stage_color);\n"
+"    clutter_stage_set_title(CLUTTER_STAGE (stage), \"Photo Wall\");\n"
+"    g_signal_connect(stage, \"destroy\", G_CALLBACK(clutter_main_quit), NULL);\n"
 "\n"
 "    load_image_path_names();\n"
 "\n"
@@ -30332,11 +31255,30 @@ msgid ""
 "    {\n"
 "        for(col=0; col &lt; COL_COUNT; ++col)\n"
 "        {\n"
-"            GSList *img_path_node = g_slist_nth(img_path_list, (row * COL_COUNT) + col);\n"
-"            ClutterActor *actor = clutter_texture_new_from_file((gchar *)(img_path_node-&gt;data), NULL);\n"
+"            const char *img_path = g_ptr_array_index(img_paths, (row * COL_COUNT) + col);\n"
+"            GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(img_path, STAGE_HEIGHT, STAGE_HEIGHT, 
NULL);\n"
+"            ClutterContent *image = clutter_image_new ();\n"
+"            ClutterActor *actor = clutter_actor_new ();\n"
+"\n"
+"            if (pixbuf != NULL)\n"
+"            {\n"
+"                clutter_image_set_data(CLUTTER_IMAGE(image),\n"
+"                                       gdk_pixbuf_get_pixels(pixbuf),\n"
+"                                       gdk_pixbuf_get_has_alpha(pixbuf)\n"
+"                                           ? COGL_PIXEL_FORMAT_RGBA_8888\n"
+"                                           : COGL_PIXEL_FORMAT_RGB_888,\n"
+"                                       gdk_pixbuf_get_width(pixbuf),\n"
+"                                       gdk_pixbuf_get_height(pixbuf),\n"
+"                                       gdk_pixbuf_get_rowstride(pixbuf),\n"
+"                                       NULL);\n"
+"            }\n"
+"\n"
+"            clutter_actor_set_content(actor, image);\n"
+"            g_object_unref(image);\n"
+"            g_object_unref(pixbuf);\n"
+"\n"
 "            initialize_actor(actor, row, col);\n"
-"            clutter_container_add_actor(CLUTTER_CONTAINER(stage), actor);\n"
-"            actor_list = g_slist_prepend(actor_list, actor);\n"
+"            clutter_actor_add_child(stage, actor);\n"
 "        }\n"
 "    }\n"
 "\n"
@@ -30346,6 +31288,8 @@ msgid ""
 "    /* Start the clutter main loop. */\n"
 "    clutter_main();\n"
 "\n"
+"    g_ptr_array_unref(img_paths);\n"
+"\n"
 "    return 0;\n"
 "}"
 msgstr ""
@@ -30356,11 +31300,14 @@ msgstr ""
 "    ClutterColor stage_color = { 16, 16, 16, 255 };\n"
 "    ClutterActor *stage = NULL;\n"
 "\n"
-"    clutter_init(&amp;argc, &amp;argv);\n"
+"    if (clutter_init (&amp;argc, &amp;argv) != CLUTTER_INIT_SUCCESS)\n"
+"        return 1;\n"
 "\n"
-"    stage = clutter_stage_get_default();\n"
+"    stage = clutter_stage_new();\n"
 "    clutter_actor_set_size(stage, STAGE_WIDTH, STAGE_HEIGHT);\n"
-"    clutter_stage_set_color(CLUTTER_STAGE (stage), &amp;stage_color);\n"
+"    clutter_actor_set_background_color(stage, &amp;stage_color);\n"
+"    clutter_stage_set_title(CLUTTER_STAGE (stage), \"Photo Wall\");\n"
+"    g_signal_connect(stage, \"destroy\", G_CALLBACK(clutter_main_quit), NULL);\n"
 "\n"
 "    load_image_path_names();\n"
 "\n"
@@ -30370,11 +31317,30 @@ msgstr ""
 "    {\n"
 "        for(col=0; col &lt; COL_COUNT; ++col)\n"
 "        {\n"
-"            GSList *img_path_node = g_slist_nth(img_path_list, (row * COL_COUNT) + col);\n"
-"            ClutterActor *actor = clutter_texture_new_from_file((gchar *)(img_path_node-&gt;data), NULL);\n"
+"            const char *img_path = g_ptr_array_index(img_paths, (row * COL_COUNT) + col);\n"
+"            GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(img_path, STAGE_HEIGHT, STAGE_HEIGHT, 
NULL);\n"
+"            ClutterContent *image = clutter_image_new ();\n"
+"            ClutterActor *actor = clutter_actor_new ();\n"
+"\n"
+"            if (pixbuf != NULL)\n"
+"            {\n"
+"                clutter_image_set_data(CLUTTER_IMAGE(image),\n"
+"                                       gdk_pixbuf_get_pixels(pixbuf),\n"
+"                                       gdk_pixbuf_get_has_alpha(pixbuf)\n"
+"                                           ? COGL_PIXEL_FORMAT_RGBA_8888\n"
+"                                           : COGL_PIXEL_FORMAT_RGB_888,\n"
+"                                       gdk_pixbuf_get_width(pixbuf),\n"
+"                                       gdk_pixbuf_get_height(pixbuf),\n"
+"                                       gdk_pixbuf_get_rowstride(pixbuf),\n"
+"                                       NULL);\n"
+"            }\n"
+"\n"
+"            clutter_actor_set_content(actor, image);\n"
+"            g_object_unref(image);\n"
+"            g_object_unref(pixbuf);\n"
+"\n"
 "            initialize_actor(actor, row, col);\n"
-"            clutter_container_add_actor(CLUTTER_CONTAINER(stage), actor);\n"
-"            actor_list = g_slist_prepend(actor_list, actor);\n"
+"            clutter_actor_add_child(stage, actor);\n"
 "        }\n"
 "    }\n"
 "\n"
@@ -30384,10 +31350,12 @@ msgstr ""
 "    /* Start the clutter main loop. */\n"
 "    clutter_main();\n"
 "\n"
+"    g_ptr_array_unref(img_paths);\n"
+"\n"
 "    return 0;\n"
 "}"
 
-#: C/photo-wall.c.page:165(item/p)
+#: C/photo-wall.c.page:184(item/p)
 msgid ""
 "Line 4: <code>ClutterColor</code> is defined by setting the red, green, blue "
 "and transparency (alpha) values. The values range from 0-255. For "
@@ -30397,7 +31365,7 @@ msgstr ""
 "rojo, verde, azul y de transparencia (alfa). Los valores van de 0 a 255. "
 "Para la transparencia, el valor 255 es opaco."
 
-#: C/photo-wall.c.page:166(item/p)
+#: C/photo-wall.c.page:185(item/p)
 msgid ""
 "Line 7: You must initialize Clutter. If you forget to do this, you will get "
 "very strange errors. Be warned."
@@ -30405,19 +31373,24 @@ msgstr ""
 "Línea 7: debe inicializar Clutter. Si olvida hacerlo, obtendrá mensajes muy "
 "extraños. Queda advertido."
 
-#: C/photo-wall.c.page:167(item/p)
+#: C/photo-wall.c.page:186(item/p)
+#, fuzzy
+#| msgid ""
+#| "Lines 9‒11: Here we get the default <code>ClutterStage</code> that was "
+#| "provided by <code>clutter_init</code>. We then set the size using the "
+#| "defines from the previous section and the address of the "
+#| "<code>ClutterColor</code> we just defined."
 msgid ""
-"Lines 9‒11: Here we get the default <code>ClutterStage</code> that was "
-"provided by <code>clutter_init</code>. We then set the size using the "
-"defines from the previous section and the address of the <code>ClutterColor</"
-"code> we just defined."
+"Lines 10‒14: Here we create a new <code>ClutterStage</code> . We then set "
+"the size using the defines from the previous section and the address of the "
+"<code>ClutterColor</code> we just defined."
 msgstr ""
 "Líneas 9‒11: aquí es donde se obtiene el <code>ClutterStage</code> "
 "predeterminado que <code>clutter_init</code> proporcionó. Entonces se "
 "establece el tamaño usando el definido en la sección anterior y las "
 "direcciones del <code>ClutterColor</code> que ya están definidas."
 
-#: C/photo-wall.c.page:168(note/p)
+#: C/photo-wall.c.page:187(note/p)
 msgid ""
 "A <code>ClutterStage</code> is the top-level <code>ClutterActor</code> onto "
 "which other <code>ClutterActor</code>s are placed."
@@ -30425,17 +31398,26 @@ msgstr ""
 "Un <code>ClutterStage</code> es el nivel superior de un <code>ClutterActor</"
 "code> en el que se ubican otros <code>ClutterActor</code>."
 
-#: C/photo-wall.c.page:170(item/p)
+#: C/photo-wall.c.page:189(item/p)
+#, fuzzy
+#| msgid ""
+#| "Line 12: Here we call our function for getting the image file paths. "
+#| "We'll look at this in a bit."
 msgid ""
-"Line 12: Here we call our function for getting the image file paths. We'll "
+"Line 16: Here we call our function for getting the image file paths. We'll "
 "look at this in a bit."
 msgstr ""
 "Línea 12: aquí se llama a la función para obtener las rutas de las imágenes. "
 "Esto se verá en breve."
 
-#: C/photo-wall.c.page:171(item/p)
+#: C/photo-wall.c.page:190(item/p)
+#, fuzzy
+#| msgid ""
+#| "Lines 14‒26: This is where we set up the <code>ClutterActor</code>s, load "
+#| "the images and place them into their spot in the image wall. We will look "
+#| "at this in detail in the next section."
 msgid ""
-"Lines 14‒26: This is where we set up the <code>ClutterActor</code>s, load "
+"Lines 18‒49: This is where we set up the <code>ClutterActor</code>s, load "
 "the images and place them into their spot in the image wall. We will look at "
 "this in detail in the next section."
 msgstr ""
@@ -30443,22 +31425,27 @@ msgstr ""
 "cargan las imágenes y se colocan en su sitio en el mural de imágenes. Esto "
 "se verá con más detalle en la siguiente sección."
 
-#: C/photo-wall.c.page:172(item/p)
+#: C/photo-wall.c.page:191(item/p)
+#, fuzzy
+#| msgid ""
+#| "Line 29: Show the stage and <em>all its children</em>, meaning our images."
 msgid ""
-"Line 29: Show the stage and <em>all its children</em>, meaning our images."
+"Line 52: Show the stage and <em>all its children</em>, meaning our images."
 msgstr ""
 "Línea 29: mostrar el escenario y <em>todos sus hijos</em>, es decir, las "
 "imágenes."
 
-#: C/photo-wall.c.page:173(item/p)
-msgid "Line 32: Start the Clutter main loop."
+#: C/photo-wall.c.page:192(item/p)
+#, fuzzy
+#| msgid "Line 32: Start the Clutter main loop."
+msgid "Line 55: Start the Clutter main loop."
 msgstr "Línea 32: iniciar el bucle principal de Clutter."
 
-#: C/photo-wall.c.page:178(section/title)
+#: C/photo-wall.c.page:197(section/title)
 msgid "Setting up our image actors"
 msgstr "Configurar los actores de imagen"
 
-#: C/photo-wall.c.page:179(note/p)
+#: C/photo-wall.c.page:198(note/p)
 msgid ""
 "In Clutter, an actor is the most basic visual element. Basically, everything "
 "you see is an actor."
@@ -30466,7 +31453,7 @@ msgstr ""
 "En Clutter, un actor es el elemento visual más simple. Básicamente, todo lo "
 "que ve es un actor."
 
-#: C/photo-wall.c.page:180(section/p)
+#: C/photo-wall.c.page:199(section/p)
 msgid ""
 "In this section, we are going to take a closer look at the loop used for "
 "setting up the <code>ClutterActor</code>s that will display our images."
@@ -30474,45 +31461,92 @@ msgstr ""
 "En esta sección, se va a mirar más detenidamente el bucle usado para "
 "configurar los <code>ClutterActor</code> que mostrarán las imágenes."
 
-#: C/photo-wall.c.page:183(section/code)
+#: C/photo-wall.c.page:202(section/code)
 #, no-wrap
 msgid ""
 "\n"
+"guint row = 0;\n"
+"guint col = 0;\n"
 "for(row=0; row &lt; ROW_COUNT; ++row)\n"
 "{\n"
 "    for(col=0; col &lt; COL_COUNT; ++col)\n"
 "    {\n"
-"        GSList *img_path_node = g_slist_nth(img_path_list, (row * COL_COUNT) + col);\n"
-"        ClutterActor *actor = clutter_texture_new_from_file((gchar *)(img_path_node-&gt;data), NULL);\n"
+"        const char *img_path = g_ptr_array_index(img_paths, (row * COL_COUNT) + col);\n"
+"        GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(img_path, STAGE_HEIGHT, STAGE_HEIGHT, NULL);\n"
+"        ClutterContent *image = clutter_image_new ();\n"
+"        ClutterActor *actor = clutter_actor_new ();\n"
+"\n"
+"        if (pixbuf != NULL)\n"
+"        {\n"
+"            clutter_image_set_data(CLUTTER_IMAGE(image),\n"
+"                                   gdk_pixbuf_get_pixels(pixbuf),\n"
+"                                   gdk_pixbuf_get_has_alpha(pixbuf)\n"
+"                                       ? COGL_PIXEL_FORMAT_RGBA_8888\n"
+"                                       : COGL_PIXEL_FORMAT_RGB_888,\n"
+"                                   gdk_pixbuf_get_width(pixbuf),\n"
+"                                   gdk_pixbuf_get_height(pixbuf),\n"
+"                                   gdk_pixbuf_get_rowstride(pixbuf),\n"
+"                                   NULL);\n"
+"        }\n"
+"\n"
+"        clutter_actor_set_content(actor, image);\n"
+"        g_object_unref(image);\n"
+"        g_object_unref(pixbuf);\n"
+"\n"
 "        initialize_actor(actor, row, col);\n"
-"        clutter_container_add_actor(CLUTTER_CONTAINER(stage), actor);\n"
-"        actor_list = g_slist_prepend(actor_list, actor);\n"
+"        clutter_actor_add_child(stage, actor);\n"
 "    }\n"
 "}\n"
 "\n"
 msgstr ""
 "\n"
+"guint row = 0;\n"
+"guint col = 0;\n"
 "for(row=0; row &lt; ROW_COUNT; ++row)\n"
 "{\n"
 "    for(col=0; col &lt; COL_COUNT; ++col)\n"
 "    {\n"
-"        GSList *img_path_node = g_slist_nth(img_path_list, (row * COL_COUNT) + col);\n"
-"        ClutterActor *actor = clutter_texture_new_from_file((gchar *)(img_path_node-&gt;data), NULL);\n"
+"        const char *img_path = g_ptr_array_index(img_paths, (row * COL_COUNT) + col);\n"
+"        GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(img_path, STAGE_HEIGHT, STAGE_HEIGHT, NULL);\n"
+"        ClutterContent *image = clutter_image_new ();\n"
+"        ClutterActor *actor = clutter_actor_new ();\n"
+"\n"
+"        if (pixbuf != NULL)\n"
+"        {\n"
+"            clutter_image_set_data(CLUTTER_IMAGE(image),\n"
+"                                   gdk_pixbuf_get_pixels(pixbuf),\n"
+"                                   gdk_pixbuf_get_has_alpha(pixbuf)\n"
+"                                       ? COGL_PIXEL_FORMAT_RGBA_8888\n"
+"                                       : COGL_PIXEL_FORMAT_RGB_888,\n"
+"                                   gdk_pixbuf_get_width(pixbuf),\n"
+"                                   gdk_pixbuf_get_height(pixbuf),\n"
+"                                   gdk_pixbuf_get_rowstride(pixbuf),\n"
+"                                   NULL);\n"
+"        }\n"
+"\n"
+"        clutter_actor_set_content(actor, image);\n"
+"        g_object_unref(image);\n"
+"        g_object_unref(pixbuf);\n"
+"\n"
 "        initialize_actor(actor, row, col);\n"
-"        clutter_container_add_actor(CLUTTER_CONTAINER(stage), actor);\n"
-"        actor_list = g_slist_prepend(actor_list, actor);\n"
+"        clutter_actor_add_child(stage, actor);\n"
 "    }\n"
 "}\n"
 "\n"
 
-#: C/photo-wall.c.page:198(item/p)
+#: C/photo-wall.c.page:238(item/p)
+#, fuzzy
+#| msgid ""
+#| "Line 5: Here we want to get the path at the <var>n</var>th location in "
+#| "the <code>GSList</code> that is holding our image path names. The <var>n</"
+#| "var>th position is calculated based on <code>row</code> and <code>col</"
+#| "code>. The return value is a pointer to a <code>GSList</code> which is "
+#| "just a node in the list. We will use this to get the actual path in the "
+#| "next line. The first parameter is a pointer to the head of the list."
 msgid ""
-"Line 5: Here we want to get the path at the <var>n</var>th location in the "
-"<code>GSList</code> that is holding our image path names. The <var>n</var>th "
-"position is calculated based on <code>row</code> and <code>col</code>. The "
-"return value is a pointer to a <code>GSList</code> which is just a node in "
-"the list. We will use this to get the actual path in the next line. The "
-"first parameter is a pointer to the head of the list."
+"Line 7: Here we want to get the path at the <var>n</var>th location in the "
+"<code>GPtrArray</code> that is holding our image path names. The <var>n</"
+"var>th position is calculated based on <code>row</code> and <code>col</code>."
 msgstr ""
 "Línea 5: aquí se quiere obtener la ruta a la ubicación <var>n</var>-ésima en "
 "la <code>GSList</code> que contiene los nombres de las rutas de las "
@@ -30522,10 +31556,16 @@ msgstr ""
 "ruta actual en la siguiente línea. El primer parámetro es un puntero a la "
 "cabecera de la lista."
 
-#: C/photo-wall.c.page:200(item/p)
+#: C/photo-wall.c.page:240(item/p)
+#, fuzzy
+#| msgid ""
+#| "Line 6: This is where we actually create the <code>ClutterActor</code> "
+#| "and place the image into the actor. The first argument is the path which "
+#| "we access through our <code>GSList</code> node. The second argument is "
+#| "for error reporting but we are ignoring that to keep things short."
 msgid ""
-"Line 6: This is where we actually create the <code>ClutterActor</code> and "
-"place the image into the actor. The first argument is the path which we "
+"Line 8‒23: This is where we actually create the <code>ClutterActor</code> "
+"and place the image into the actor. The first argument is the path which we "
 "access through our <code>GSList</code> node. The second argument is for "
 "error reporting but we are ignoring that to keep things short."
 msgstr ""
@@ -30534,13 +31574,17 @@ msgstr ""
 "acceder al nodo de la <code>GSList</code>. El segundo argumento es para "
 "informar de un error, pero se ignora para simplificar."
 
-#: C/photo-wall.c.page:202(item/p)
-msgid "Line 7: We'll look at this function in a later section."
-msgstr "Línea 7: está función se verá en una sección posterior."
-
-#: C/photo-wall.c.page:204(item/p)
-msgid ""
-"Line 8: This adds the <code>ClutterActor</code> to the stage, which is a "
+#: C/photo-wall.c.page:242(item/p)
+#, fuzzy
+#| msgid ""
+#| "Line 8: This adds the <code>ClutterActor</code> to the stage, which is a "
+#| "container. It also assumes ownership of the <code>ClutterActor</code> "
+#| "which is something you'll want to look into as you get deeper into GNOME "
+#| "development. See the <link href=\"http://library.gnome.org/devel/gobject/";
+#| "stable/gobject-memory.html\"><code>GObject</code> documentation</link> "
+#| "for the gory details."
+msgid ""
+"Line 47: This adds the <code>ClutterActor</code> to the stage, which is a "
 "container. It also assumes ownership of the <code>ClutterActor</code> which "
 "is something you'll want to look into as you get deeper into GNOME "
 "development. See the <link href=\"http://library.gnome.org/devel/gobject/";
@@ -30553,33 +31597,11 @@ msgstr ""
 "detalles, consulte la <link href=\"http://library.gnome.org/devel/gobject/";
 "stable/gobject-memory.html\">documentación de <code>GObject</code></link>."
 
-#: C/photo-wall.c.page:206(item/p)
-msgid ""
-"Line 9: This adds our <code>ClutterActor</code> to a <code>GSList</code> so "
-"that we can later iterate over the <code>ClutterActor</code>s."
-msgstr ""
-"Línea 9: esto añade el <code>ClutterActor</code> a una <code>GSList</code> "
-"por lo que luego se podrá iterar sobre los <code>ClutterActor</code>."
-
-#: C/photo-wall.c.page:207(note/p)
-msgid ""
-"Interesting to note is that we want to prepend the <code>ClutterActor</"
-"code>s rather than append so that we avoid traversing the list upon each "
-"insertion. You will often see <code>g_slist_prepend</code> followed by "
-"<code>g_slist_reverse</code> because it faster than inserting many objects "
-"at the end of the list."
-msgstr ""
-"Es interesante tener en cuenta que se prefiere anteponer los "
-"<code>ClutterActor</code> en lugar de adjuntarlos, lo que evita atravesar la "
-"lista en cada inserción. A menudo vera <code>g_slist_prepend</code> seguido "
-"de <code>g_slist_reverse</code>, ya que es más rápido que insertar varios "
-"objetos al final de la lista."
-
-#: C/photo-wall.c.page:213(section/title)
+#: C/photo-wall.c.page:248(section/title)
 msgid "Loading the images"
 msgstr "Cargar las imágenes"
 
-#: C/photo-wall.c.page:214(section/p)
+#: C/photo-wall.c.page:249(section/p)
 msgid ""
 "Let's take a short break from Clutter to see how we can get the file names "
 "from our image directory."
@@ -30587,8 +31609,34 @@ msgstr ""
 "Tómese un pequeño descanso de Clutter para ver cómo se pueden obtener los "
 "nombres de archivos desde la carpeta de imágenes."
 
-#: C/photo-wall.c.page:215(section/code)
-#, no-wrap
+#: C/photo-wall.c.page:250(section/code)
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "static void\n"
+#| "load_image_path_names()\n"
+#| "{\n"
+#| "    /* Ensure we can access the directory. */\n"
+#| "    GError *error = NULL;\n"
+#| "    GDir *dir = g_dir_open(IMAGE_DIR_PATH, 0, &amp;error);\n"
+#| "    if(error)\n"
+#| "    {\n"
+#| "        g_warning(\"g_dir_open() failed with error: %s\\n\", error-&gt;message);\n"
+#| "        g_clear_error(&amp;error);\n"
+#| "        return;\n"
+#| "    }\n"
+#| "\n"
+#| "    const gchar *filename = g_dir_read_name(dir);\n"
+#| "    while(filename)\n"
+#| "    {\n"
+#| "        if(g_str_has_suffix(filename, \".jpg\") || g_str_has_suffix(filename, \".png\"))\n"
+#| "        {\n"
+#| "            gchar *path = g_build_filename(IMAGE_DIR_PATH, filename, NULL);\n"
+#| "            img_path_list = g_slist_prepend(img_path_list, path);\n"
+#| "        }\n"
+#| "        filename = g_dir_read_name(dir);\n"
+#| "    }\n"
+#| "}"
 msgid ""
 "\n"
 "static void\n"
@@ -30604,13 +31652,15 @@ msgid ""
 "        return;\n"
 "    }\n"
 "\n"
+"    img_paths = g_ptr_array_new_with_free_func (g_free);\n"
+"\n"
 "    const gchar *filename = g_dir_read_name(dir);\n"
 "    while(filename)\n"
 "    {\n"
 "        if(g_str_has_suffix(filename, \".jpg\") || g_str_has_suffix(filename, \".png\"))\n"
 "        {\n"
 "            gchar *path = g_build_filename(IMAGE_DIR_PATH, filename, NULL);\n"
-"            img_path_list = g_slist_prepend(img_path_list, path);\n"
+"            g_ptr_array_add (img_paths, path);\n"
 "        }\n"
 "        filename = g_dir_read_name(dir);\n"
 "    }\n"
@@ -30630,19 +31680,21 @@ msgstr ""
 "        return;\n"
 "    }\n"
 "\n"
+"    img_paths = g_ptr_array_new_with_free_func (g_free);\n"
+"\n"
 "    const gchar *filename = g_dir_read_name(dir);\n"
 "    while(filename)\n"
 "    {\n"
 "        if(g_str_has_suffix(filename, \".jpg\") || g_str_has_suffix(filename, \".png\"))\n"
 "        {\n"
 "            gchar *path = g_build_filename(IMAGE_DIR_PATH, filename, NULL);\n"
-"            img_path_list = g_slist_prepend(img_path_list, path);\n"
+"            g_ptr_array_add (img_paths, path);\n"
 "        }\n"
 "        filename = g_dir_read_name(dir);\n"
 "    }\n"
 "}"
 
-#: C/photo-wall.c.page:241(item/p)
+#: C/photo-wall.c.page:278(item/p)
 msgid ""
 "Lines 5 and 12: This opens our directory or, if an error occured, returns "
 "after printing an error message."
@@ -30650,9 +31702,17 @@ msgstr ""
 "Líneas 5 y 12: esto abre la carpeta o, si ocurre un error, termina después "
 "de mostrar un mensaje de error."
 
-#: C/photo-wall.c.page:242(item/p)
-msgid ""
-"Lines 14‒23: The first line gets another file name from the <code>GDir</"
+#: C/photo-wall.c.page:279(item/p)
+#, fuzzy
+#| msgid ""
+#| "Lines 14‒23: The first line gets another file name from the <code>GDir</"
+#| "code> we opened earlier. If there was an image file (which we check by "
+#| "looking at its extension, \".png\" or \".jpg\") in the directory we "
+#| "proceed to prepend the image directory path to the filename and prepend "
+#| "that to the list we set up earlier. Lastly we attempt to get the next "
+#| "path name and reenter the loop if another file was found."
+msgid ""
+"Lines 16‒25: The first line gets another file name from the <code>GDir</"
 "code> we opened earlier. If there was an image file (which we check by "
 "looking at its extension, \".png\" or \".jpg\") in the directory we proceed "
 "to prepend the image directory path to the filename and prepend that to the "
@@ -30667,11 +31727,11 @@ msgstr ""
 "obtener la siguiente ruta y se vuelve a entrar en el bucle si se encuentra "
 "otro archivo."
 
-#: C/photo-wall.c.page:247(section/title)
+#: C/photo-wall.c.page:284(section/title)
 msgid "Set up the actors"
 msgstr "Configurar los actores"
 
-#: C/photo-wall.c.page:248(section/p)
+#: C/photo-wall.c.page:285(section/p)
 msgid ""
 "We now take a look at the sizing and positioning of <code>ClutterActor</"
 "code>s and also readying the <code>ClutterActor</code> for user interaction."
@@ -30680,7 +31740,7 @@ msgstr ""
 "code> y a cómo se deja listo el <code>ClutterActor</code> para la "
 "interacción del usuario."
 
-#: C/photo-wall.c.page:251(section/code)
+#: C/photo-wall.c.page:288(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -30713,7 +31773,7 @@ msgstr ""
 "                     NULL);\n"
 "}"
 
-#: C/photo-wall.c.page:267(item/p)
+#: C/photo-wall.c.page:304(item/p)
 msgid ""
 "Line 7: Setting an actor reactive means that it reacts to events, such as "
 "<code>button-press-event</code> in our case. For Photo Wall, all "
@@ -30724,7 +31784,7 @@ msgstr ""
 "mural de fotos, todos los <code>ClutterActor</code> del mural deben ser "
 "inicialmente reactivos."
 
-#: C/photo-wall.c.page:270(item/p)
+#: C/photo-wall.c.page:307(item/p)
 msgid ""
 "Line 9‒12: Now we connect the <code>button-press-event</code> to the "
 "<code>actor_clicked_cb</code> callback which we will look at next."
@@ -30732,15 +31792,15 @@ msgstr ""
 "Líneas 9‒12: ahora se conecta el evento <code>button-press-event</code> al "
 "retorno de la llamada <code>actor_clicked_cb</code> que veremos más adelante."
 
-#: C/photo-wall.c.page:273(section/p)
+#: C/photo-wall.c.page:310(section/p)
 msgid "At this point we've got a wall of images that are ready to be viewed."
 msgstr "En este punto tiene un mural de fotos que está listo para verse."
 
-#: C/photo-wall.c.page:277(section/title)
+#: C/photo-wall.c.page:314(section/title)
 msgid "Reacting to the clicks"
 msgstr "Reaccionar a las pulsaciones"
 
-#: C/photo-wall.c.page:281(section/code)
+#: C/photo-wall.c.page:318(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -30751,33 +31811,39 @@ msgid ""
 "{\n"
 "    /* Flag to keep track of our state. */\n"
 "    static gboolean is_focused = FALSE;\n"
+"    ClutterActorIter iter;\n"
+"    ClutterActor *child;\n"
 "\n"
-"    g_slist_foreach(actor_list, foreach_set_focus_state, &amp;is_focused);\n"
+"    /* Reset the focus state on all the images */\n"
+"    clutter_actor_iter_init (&amp;iter, clutter_actor_get_parent(actor));\n"
+"    while (clutter_actor_iter_next(&amp;iter, &amp;child))\n"
+"      clutter_actor_set_reactive(child, is_focused);\n"
+"\n"
+"    clutter_actor_save_easing_state(actor);\n"
+"    clutter_actor_set_easing_duration(actor, ANIMATION_DURATION_MS);\n"
 "\n"
 "    if(is_focused)\n"
 "    {\n"
-"        clutter_actor_animate(actor, CLUTTER_LINEAR, ANIMATION_DURATION_MS,\n"
-"                              \"x\",      origin.x,\n"
-"                              \"y\",      origin.y,\n"
-"                              \"depth\",  UNFOCUS_DEPTH,\n"
-"                              \"width\",  (float) THUMBNAIL_SIZE,\n"
-"                              \"height\", (float) THUMBNAIL_SIZE,\n"
-"                              NULL);\n"
+"        /* Restore the old location and size. */\n"
+"        clutter_actor_set_position(actor, unfocused_pos.x, unfocused_pos.y);\n"
+"        clutter_actor_set_size(actor, THUMBNAIL_SIZE, THUMBNAIL_SIZE);\n"
 "    }\n"
 "    else\n"
 "    {\n"
-"        /*Save the current location before animating. */\n"
-"        clutter_actor_get_position(actor, &amp;origin.x, &amp;origin.y);\n"
+"        /* Save the current location before animating. */\n"
+"        clutter_actor_get_position(actor, &amp;unfocused_pos.x, &amp;unfocused_pos.y);\n"
+"        /* Only the currently focused image should receive events. */\n"
 "        clutter_actor_set_reactive(actor, TRUE);\n"
-"        clutter_actor_animate(actor, CLUTTER_LINEAR, ANIMATION_DURATION_MS,\n"
-"                              \"x\",      (STAGE_WIDTH - STAGE_HEIGHT) / 2.0,\n"
-"                              \"y\",      0.0,\n"
-"                              \"depth\",  FOCUS_DEPTH,\n"
-"                              \"width\",  (float) STAGE_HEIGHT,\n"
-"                              \"height\", (float) STAGE_HEIGHT,\n"
-"                              NULL);\n"
+"\n"
+"        /* Put the focused image on top. */\n"
+"        clutter_actor_set_child_above_sibling(clutter_actor_get_parent(actor), actor, NULL);\n"
+"\n"
+"        clutter_actor_set_position(actor, (STAGE_WIDTH - STAGE_HEIGHT) / 2.0, 0);\n"
+"        clutter_actor_set_size(actor, STAGE_HEIGHT, STAGE_HEIGHT);\n"
 "    }\n"
 "\n"
+"    clutter_actor_restore_easing_state(actor);\n"
+"\n"
 "    /* Toggle our flag. */\n"
 "    is_focused = !is_focused;\n"
 "\n"
@@ -30792,40 +31858,46 @@ msgstr ""
 "{\n"
 "    /* Flag to keep track of our state. */\n"
 "    static gboolean is_focused = FALSE;\n"
+"    ClutterActorIter iter;\n"
+"    ClutterActor *child;\n"
+"\n"
+"    /* Reset the focus state on all the images */\n"
+"    clutter_actor_iter_init (&amp;iter, clutter_actor_get_parent(actor));\n"
+"    while (clutter_actor_iter_next(&amp;iter, &amp;child))\n"
+"      clutter_actor_set_reactive(child, is_focused);\n"
 "\n"
-"    g_slist_foreach(actor_list, foreach_set_focus_state, &amp;is_focused);\n"
+"    clutter_actor_save_easing_state(actor);\n"
+"    clutter_actor_set_easing_duration(actor, ANIMATION_DURATION_MS);\n"
 "\n"
 "    if(is_focused)\n"
 "    {\n"
-"        clutter_actor_animate(actor, CLUTTER_LINEAR, ANIMATION_DURATION_MS,\n"
-"                              \"x\",      origin.x,\n"
-"                              \"y\",      origin.y,\n"
-"                              \"depth\",  UNFOCUS_DEPTH,\n"
-"                              \"width\",  (float) THUMBNAIL_SIZE,\n"
-"                              \"height\", (float) THUMBNAIL_SIZE,\n"
-"                              NULL);\n"
+"        /* Restore the old location and size. */\n"
+"        clutter_actor_set_position(actor, unfocused_pos.x, unfocused_pos.y);\n"
+"        clutter_actor_set_size(actor, THUMBNAIL_SIZE, THUMBNAIL_SIZE);\n"
 "    }\n"
 "    else\n"
 "    {\n"
-"        /*Save the current location before animating. */\n"
-"        clutter_actor_get_position(actor, &amp;origin.x, &amp;origin.y);\n"
+"        /* Save the current location before animating. */\n"
+"        clutter_actor_get_position(actor, &amp;unfocused_pos.x, &amp;unfocused_pos.y);\n"
+"        /* Only the currently focused image should receive events. */\n"
 "        clutter_actor_set_reactive(actor, TRUE);\n"
-"        clutter_actor_animate(actor, CLUTTER_LINEAR, ANIMATION_DURATION_MS,\n"
-"                              \"x\",      (STAGE_WIDTH - STAGE_HEIGHT) / 2.0,\n"
-"                              \"y\",      0.0,\n"
-"                              \"depth\",  FOCUS_DEPTH,\n"
-"                              \"width\",  (float) STAGE_HEIGHT,\n"
-"                              \"height\", (float) STAGE_HEIGHT,\n"
-"                              NULL);\n"
+"\n"
+"        /* Put the focused image on top. */\n"
+"        clutter_actor_set_child_above_sibling(clutter_actor_get_parent(actor), actor, NULL);\n"
+"\n"
+"        clutter_actor_set_position(actor, (STAGE_WIDTH - STAGE_HEIGHT) / 2.0, 0);\n"
+"        clutter_actor_set_size(actor, STAGE_HEIGHT, STAGE_HEIGHT);\n"
 "    }\n"
 "\n"
+"    clutter_actor_restore_easing_state(actor);\n"
+"\n"
 "    /* Toggle our flag. */\n"
 "    is_focused = !is_focused;\n"
 "\n"
 "    return TRUE;\n"
 "}"
 
-#: C/photo-wall.c.page:322(item/p)
+#: C/photo-wall.c.page:365(item/p)
 msgid ""
 "Lines 1‒4: We have to make sure our callback function matches the signature "
 "required for the <code>button_clicked_event</code> signal. For our example, "
@@ -30837,7 +31909,7 @@ msgstr ""
 "code>. En este ejemplo, sólo se usará el primer argumento, el "
 "<code>ClutterActor</code> pulsado actualmente."
 
-#: C/photo-wall.c.page:324(note/p)
+#: C/photo-wall.c.page:367(note/p)
 msgid ""
 "A few words on the arguments we are not using in this example. The "
 "<code>ClutterEvent</code> is different depending on what event is being "
@@ -30856,19 +31928,25 @@ msgstr ""
 "<code>x</code> e <code>y</code>. Consulte la documentación de Clutter para "
 "obtener información sobre otros tipos de <code>ClutterEvent</code>."
 
-#: C/photo-wall.c.page:325(note/p)
+#: C/photo-wall.c.page:368(note/p)
+#, fuzzy
+#| msgid ""
+#| "The <code>user_data</code> is what one uses to pass data into the the "
+#| "function. A pointer to any data type can be passed in. If you need "
+#| "multiple data to be passed into the callback, you can place the data into "
+#| "a struct and pass its address in."
 msgid ""
-"The <code>user_data</code> is what one uses to pass data into the the "
-"function. A pointer to any data type can be passed in. If you need multiple "
-"data to be passed into the callback, you can place the data into a struct "
-"and pass its address in."
+"The <code>user_data</code> is what one uses to pass data into the function. "
+"A pointer to any data type can be passed in. If you need multiple data to be "
+"passed into the callback, you can place the data into a struct and pass its "
+"address in."
 msgstr ""
 "El <code>user_data</code> es lo que se usa para pasar datos a una función. "
 "Se puede pasar un puntero a cualquier tipo de estructura de datos. Si "
 "necesita pasar varios datos al retorno de la llamada, puede colocar los "
 "datos en una estructura y pasar un puntero a su dirección."
 
-#: C/photo-wall.c.page:329(item/p)
+#: C/photo-wall.c.page:372(item/p)
 msgid ""
 "Line 7: We set up a static flag to track which state we are in: wall mode or "
 "focus mode. We start out in wall mode so no image has focus. Thus, we set "
@@ -30879,27 +31957,33 @@ msgstr ""
 "ninguna imagen tiene el foco. Por ello, el indicador se establece "
 "inicialmente a <code>FALSE</code>."
 
-#: C/photo-wall.c.page:330(item/p)
+#: C/photo-wall.c.page:373(item/p)
 msgid ""
-"Line 9: This line of code runs a custom function, "
-"<code>foreach_set_focus_state</code>, for each element in our "
-"<code>actor_list</code>, passing it the address to the <code>is_focused</"
-"code> flag. We'll see the definition of the <code>foreach_set_focus_state</"
-"code> function in the next section."
+"Line 12‒14: These set the image actors to receive events if they are foxused."
 msgstr ""
-"Línea 9: esta línea de código ejecuta una función personalizada, "
-"<code>foreach_set_focus_state</code>, para cada elemento de la "
-"<code>actor_list</code>, pasando la dirección al indicador <code>is_focused</"
-"code>. La definición de la función <code>foreach_set_focus_state</code> se "
-"verá en la siguiente sección."
 
-#: C/photo-wall.c.page:331(item/p)
+#: C/photo-wall.c.page:374(item/p)
+#, fuzzy
+#| msgid ""
+#| "Line 37: Here we toggle the <code>is_focused</code> flag to the current "
+#| "state."
 msgid ""
-"Lines 13‒19: Reaching this code means that one image currently has focus and "
-"we want to return to wall mode. The <code>clutter_actor_animate</code> "
-"function is used to animate a <code>ClutterActor</code>'s property or "
-"properties from the current state(s) to the specified state(s). The "
-"arguments are as follows:"
+"Line 16‒17: Here we set the animation duration and save the current state."
+msgstr ""
+"Línea 37: aquí se cambia la opción <code>is_focused</code> al estado actual."
+
+#: C/photo-wall.c.page:375(item/p)
+#, fuzzy
+#| msgid ""
+#| "Lines 13‒19: Reaching this code means that one image currently has focus "
+#| "and we want to return to wall mode. The <code>clutter_actor_animate</"
+#| "code> function is used to animate a <code>ClutterActor</code>'s property "
+#| "or properties from the current state(s) to the specified state(s). The "
+#| "arguments are as follows:"
+msgid ""
+"Lines 21‒23: Reaching this code means that one image currently has focus and "
+"we want to return to wall mode. Setting a position on a <code>ClutterActor</"
+"code> begins an animation with the duration that we set in line 17."
 msgstr ""
 "Líneas 13‒19: llegar a este código significa que actualmente sólo una imagen "
 "tiene el foco, y se quiere volver al modo mural. La función "
@@ -30907,70 +31991,7 @@ msgstr ""
 "propiedades de un <code>ClutterActor</code> desde su estado actual al estado "
 "especificado. Los argumentos son como sigue:"
 
-#: C/photo-wall.c.page:333(item/p)
-msgid "The address of the <code>ClutterActor</code> to animate"
-msgstr "La dirección del <code>ClutterActor</code> que animar"
-
-#: C/photo-wall.c.page:334(item/p)
-msgid ""
-"The animation mode to use. Here we use <code>CLUTTER_LINEAR</code> so that "
-"we have a constant speed for animation."
-msgstr ""
-"El modo de animación que usar. Aquí se ha usado <code>CLUTTER_LINEAR</code> "
-"por lo que se tiene una velocidad constante en la animación."
-
-#: C/photo-wall.c.page:335(item/p)
-msgid ""
-"The duration of the animation in milliseconds. I've chosen 500 ms for this "
-"example."
-msgstr ""
-"La duración de la animación, en milisegundos. Se ha escogido 500 ms para "
-"este ejemplo."
-
-#: C/photo-wall.c.page:336(item/p)
-msgid ""
-"The remaining arguments are property/value pairs. Here we want to set the "
-"<code>x</code> value to the starting <code>x</code> value this "
-"<code>ClutterActor</code> was at before being brought into focus."
-msgstr ""
-"El resto de argumentos son parejas propiedad/valor. Aquí se quiere "
-"establecer el valor <code>x</code> al valor <code>x</code> inicial en el que "
-"estaba el <code>ClutterActor</code> antes de darle el foco."
-
-#: C/photo-wall.c.page:337(item/p)
-msgid ""
-"The last argument must always be <code>NULL</code> to indicate that there "
-"are no more properties to be set."
-msgstr ""
-"El último argumento debe ser siempre <code>NULL</code> para indicar que no "
-"hay más propiedades que configurar."
-
-#: C/photo-wall.c.page:339(note/p)
-msgid ""
-"The <code>depth</code> property needs a little more explaining. We need to "
-"raise the focused image so that it doesn't slide behind other "
-"<code>ClutterActor</code>s. In this section we are returning it to the same "
-"depth as the others on the wall."
-msgstr ""
-"La propiedad <code>depth</code> necesita un poco más de explicación. Se debe "
-"elevar la imagen que tiene el foco para que no se deslice por debajo de "
-"otros <code>ClutterActor</code>. En esta sección se está devolviendo a la "
-"misma profundidad que las otras en el mural."
-
-#: C/photo-wall.c.page:340(note/p)
-msgid ""
-"Depth also determines which <code>ClutterActor</code>s receive events. A "
-"<code>ClutterActor</code> with a higher depth value receives the click "
-"events and can choose whether the event gets sent to <code>ClutterActor</"
-"code>s under it. We'll see how that works in a few steps."
-msgstr ""
-"La profundidad también determina qué <code>ClutterActor</code> recibe "
-"eventos. Un <code>ClutterActor</code> con una profundidad alta recibe los "
-"eventos de las pulsaciones y puede elegir si el evento se envía a un "
-"<code>ClutterActor</code> que esté debajo de él. Se verá cómo funciona esto "
-"en pocos pasos."
-
-#: C/photo-wall.c.page:342(item/p)
+#: C/photo-wall.c.page:377(item/p)
 msgid ""
 "Line 24: Reaching this line of code means we are currently in the wall state "
 "and are about to give a <code>ClutterActor</code> focus. Here we save the "
@@ -30980,7 +32001,7 @@ msgstr ""
 "el modo mural y se va a dar el foco a un <code>ClutterActor</code>. Aquí se "
 "guarda la posición inicial, por lo que se puede volver a ella más adelante."
 
-#: C/photo-wall.c.page:343(item/p)
+#: C/photo-wall.c.page:378(item/p)
 msgid ""
 "Line 25: Setting the <code>ClutterActor</code>'s <code>reactive</code> "
 "property to <code>TRUE</code> makes this <code>ClutterActor</code> react to "
@@ -30996,23 +32017,31 @@ msgstr ""
 "<code>ClutterActor</code> que se está viendo. Al pulsar sobre el "
 "<code>ClutterActor</code> volverá a su posición inicial."
 
-#: C/photo-wall.c.page:344(item/p)
+#: C/photo-wall.c.page:379(item/p)
 msgid ""
-"Lines 27‒33: This is similar to the above block of code. Notice that we are "
-"setting the the depth to raise it above the other images."
+"Lines 27‒36: This is where we save the current position of the image, set it "
+"to receive events and then make it appear above the other images and start "
+"animating it to fill the stage."
 msgstr ""
-"Líneas 27‒33: esto es similar al bloque de código anterior. Tenga en cuenta "
-"que se está estableciendo la profundidad para elevarlo por encima del resto "
-"de imágenes."
 
-#: C/photo-wall.c.page:345(item/p)
+#: C/photo-wall.c.page:380(item/p)
 msgid ""
-"Line 37: Here we toggle the <code>is_focused</code> flag to the current "
+"Line 39: Here we restore the easing state to what was set before we changed "
+"it in line 16."
+msgstr ""
+
+#: C/photo-wall.c.page:381(item/p)
+#, fuzzy
+#| msgid ""
+#| "Line 37: Here we toggle the <code>is_focused</code> flag to the current "
+#| "state."
+msgid ""
+"Line 42: Here we toggle the <code>is_focused</code> flag to the current "
 "state."
 msgstr ""
 "Línea 37: aquí se cambia la opción <code>is_focused</code> al estado actual."
 
-#: C/photo-wall.c.page:346(item/p)
+#: C/photo-wall.c.page:382(item/p)
 msgid ""
 "As mentioned previously, the <code>ClutterActor</code>s with higher "
 "<code>depth</code> values receive events but can allow <code>ClutterActor</"
@@ -31027,7 +32056,7 @@ msgstr ""
 "eventos havia abajo, mientras que <code>FALSE</code> hará que los eventos "
 "pasen hacia abajo."
 
-#: C/photo-wall.c.page:348(note/p)
+#: C/photo-wall.c.page:384(note/p)
 msgid ""
 "Remember, however, that to receive events the <code>ClutterActor</code>s "
 "must be set <code>reactive</code>."
@@ -31035,60 +32064,7 @@ msgstr ""
 "Recuerde, sin embargo, que para que los <code>ClutterActor</code> reciban "
 "eventos deben establecerse como <code>reactive</code>."
 
-#: C/photo-wall.c.page:352(section/p)
-msgid ""
-"The following is the convenience function passed to <code>g_slist_foreach</"
-"code>."
-msgstr ""
-"Lo siguiente es la función de conveniencia pasada a <code>g_slist_foreach</"
-"code>."
-
-#: C/photo-wall.c.page:355(section/code)
-#, no-wrap
-msgid ""
-"\n"
-"static void\n"
-"foreach_set_focus_state(gpointer data, gpointer user_data)\n"
-"{\n"
-"    ClutterActor *actor = CLUTTER_ACTOR(data);\n"
-"    gboolean is_reactive = *((gboolean*)user_data);\n"
-"\n"
-"    clutter_actor_set_reactive(actor, is_reactive);\n"
-"}"
-msgstr ""
-"\n"
-"static void\n"
-"foreach_set_focus_state(gpointer data, gpointer user_data)\n"
-"{\n"
-"    ClutterActor *actor = CLUTTER_ACTOR(data);\n"
-"    gboolean is_reactive = *((gboolean*)user_data);\n"
-"\n"
-"    clutter_actor_set_reactive(actor, is_reactive);\n"
-"}"
-
-#: C/photo-wall.c.page:365(item/p)
-msgid ""
-"Lines 2‒5: The signature of this function requires two <code>gpointer</"
-"code>s. The first is a pointer to the <code>ClutterActor</code> that our "
-"<code>GSList</code> holds and the other is the <code>is_focused</code> flag "
-"that we've passed in the previous section. We want to cast these and store "
-"them for easy use."
-msgstr ""
-"Líneas 2‒5: la firma de esta función requiere dos <code>gpointer</code>. El "
-"primero es un puntero al <code>ClutterActor</code> contenido en la "
-"<code>GSList</code> y el otro es el indicador <code>is_focused</code> que se "
-"ha pasado en la sección anterior. Se quiere convertir su tipo («cast») y "
-"almacenarlos para que sea fácil usarlos."
-
-#: C/photo-wall.c.page:366(item/p)
-msgid ""
-"Line 7: Depending on which boolean value is passed in, the "
-"<code>ClutterActor</code> will be set to respond to events or not."
-msgstr ""
-"Línea 7: dependiendo de qué valor booleano se pasa, el <code>ClutterActor</"
-"code> se establecerá para que responda o no a eventos."
-
-#: C/photo-wall.c.page:372(section/p)
+#: C/photo-wall.c.page:392(section/p)
 msgid ""
 "All of the code should now be ready to go. All you need now is some pictures "
 "to load. By default, the pictures are loaded from a <file>berlin_images</"
@@ -31110,7 +32086,7 @@ msgstr ""
 "la carpeta <file>mural-fotos</file>. Asegúrese de poner al menos doce "
 "imágenes en la carpeta."
 
-#: C/photo-wall.c.page:374(section/p)
+#: C/photo-wall.c.page:394(section/p)
 msgid ""
 "When you have done that, click <guiseq><gui>Build</gui><gui>Build Project</"
 "gui></guiseq> to build everything again, then <guiseq><gui>Run</"
@@ -31121,7 +32097,7 @@ msgstr ""
 "<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq> para iniciar la "
 "aplicación."
 
-#: C/photo-wall.c.page:375(section/p)
+#: C/photo-wall.c.page:395(section/p)
 msgid ""
 "If you haven't already done so, choose the <file>Debug/src/photo-wall</file> "
 "application in the dialog that appears. Finally, hit <gui>Run</gui> and "
@@ -31131,7 +32107,7 @@ msgstr ""
 "file> en el diálogo que aparece. Finalmente, pulse <gui>Ejecutar</gui> y "
 "disfrute."
 
-#: C/photo-wall.c.page:380(section/p)
+#: C/photo-wall.c.page:400(section/p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
 "<link href=\"photo-wall/photo-wall.c\">reference code</link>."
@@ -31167,7 +32143,7 @@ msgid "A widget which indicates progress visually"
 msgstr "Un widget que indica el progreso de manera visual"
 
 #: C/progressbar.c.page:21(page/title) C/progressbar.js.page:19(page/title)
-#: C/progressbar.py.page:20(page/title) C/progressbar.vala.page:20(page/title)
+#: C/progressbar.py.page:21(page/title) C/progressbar.vala.page:20(page/title)
 msgid "ProgressBar"
 msgstr "ProgressBar"
 
@@ -31338,7 +32314,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/progressbar.js.page:20(media) C/progressbar.py.page:21(media)
+#: C/progressbar.js.page:20(media) C/progressbar.py.page:22(media)
 msgctxt "_"
 msgid ""
 "external ref='media/progressbar.ogv' md5='36deab3dd4b5be968828fa2ef416d612'"
@@ -31354,11 +32330,11 @@ msgstr "ProgressBar (JavaScript)"
 msgid "A bar which animates to indicate progress"
 msgstr "Una barra que indica el progreso de manera visual"
 
-#: C/progressbar.js.page:24(div/p) C/progressbar.py.page:25(div/p)
+#: C/progressbar.js.page:24(div/p) C/progressbar.py.page:26(div/p)
 msgid "Pressing any key stops and starts this ProgressBar."
 msgstr "Pulsar cualquier tecla detiene e inicia esta ProgressBar."
 
-#: C/progressbar.js.page:31(page/p) C/progressbar.py.page:32(page/p)
+#: C/progressbar.js.page:31(page/p) C/progressbar.py.page:33(page/p)
 msgid "This ProgressBar is stopped and started by pressing any key."
 msgstr "La ProgressBar se detiene y se inicia pulsando una tecla."
 
@@ -31542,11 +32518,11 @@ msgctxt "text"
 msgid "ProgressBar (Python)"
 msgstr "ProgressBar (Python)"
 
-#: C/progressbar.py.page:17(info/desc)
+#: C/progressbar.py.page:18(info/desc)
 msgid "A widget which indicates progress visually."
 msgstr "Un widget que indica el progreso de manera visual."
 
-#: C/progressbar.py.page:39(section/code)
+#: C/progressbar.py.page:40(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import GLib\n"
@@ -31663,11 +32639,11 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/progressbar.py.page:44(section/title)
+#: C/progressbar.py.page:45(section/title)
 msgid "Useful methods for a ProgressBar widget"
 msgstr "Métodos útiles para un widget «ProgressBar»"
 
-#: C/progressbar.py.page:46(item/p)
+#: C/progressbar.py.page:47(item/p)
 msgid ""
 "Instead of <code>pulse()</code>, that makes the bar go back and forth, if we "
 "want the ProgressBar to \"fill in\" a fraction (a <code>float</code> between "
@@ -31679,19 +32655,25 @@ msgstr ""
 "code> entre <code>0.0</code> y <code>1.0</code> inclusive) de la barra que "
 "se ha completado, use <code>set_fraction(fracción)</code>."
 
-#: C/progressbar.py.page:47(item/p)
+#: C/progressbar.py.page:48(item/p)
+#, fuzzy
+#| msgid ""
+#| "To set a text and show it (superimposed over the bar) use <code>set_text"
+#| "(\"some text\")</code> and <code>set_show_text(True)</code>. If a text is "
+#| "not set and <code>set_show_text(True)</code> the text will be the "
+#| "percentage of the work that has been completed."
 msgid ""
 "To set a text and show it (superimposed over the bar) use <code>set_text"
-"(\"some text\")</code> and <code>set_show_text(True)</code>. If a text is "
-"not set and <code>set_show_text(True)</code> the text will be the percentage "
-"of the work that has been completed."
+"(<var>\"text\"</var>)</code> and <code>set_show_text(True)</code>. If a text "
+"is not set and <code>set_show_text(True)</code> the text will be the "
+"percentage of the work that has been completed."
 msgstr ""
 "Para establecer un texto y mostrarlo (superpuesto a la barra) use "
 "<code>set_text(\"texto\")</code> y <code>set_show_text(True)</code>. Si no "
 "se establece un texto y <code>set_show_text(True)</code>, el texto será el "
 "porcentaje del trabajo que se ha completado."
 
-#: C/progressbar.py.page:55(item/p)
+#: C/progressbar.py.page:56(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkProgressBar.html";
 "\">GtkProgressBar</link>"
@@ -31699,7 +32681,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkProgressBar.html";
 "\">GtkProgressBar</link>"
 
-#: C/progressbar.py.page:56(item/p)
+#: C/progressbar.py.page:57(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.";
 "html\">GLib - The Main Event Loop</link>"
@@ -31707,7 +32689,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.";
 "html\">GLib: el bucle de eventos principal</link>"
 
-#: C/progressbar.py.page:57(item/p)
+#: C/progressbar.py.page:58(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling";
 "\">Gdk - Key Values</link>"
@@ -31818,23 +32800,32 @@ msgctxt "text"
 msgid "Properties (Python)"
 msgstr "Properties (Python)"
 
-#: C/properties.py.page:12(info/desc)
+#: C/properties.py.page:13(info/desc)
 msgid "An explanation of properties, getters and setters."
 msgstr "Una explicación de propiedades, funciones de obtención y asignación."
 
-#: C/properties.py.page:25(page/title)
+#: C/properties.py.page:26(page/title)
 msgid "Properties"
 msgstr "Propiedades"
 
-#: C/properties.py.page:32(section/p)
+#: C/properties.py.page:33(section/p)
+#, fuzzy
+#| msgid ""
+#| "<em>Properties</em> describe the configuration and state of widgets, and "
+#| "each widget has its own particular set of properties. For example, a "
+#| "widget such as a button or a label has the property \"label\" which "
+#| "contains the text of the widget. You can specify the name and value of "
+#| "any number of properties as keyword arguments when creating an instance "
+#| "of a widget: for example, to create a label aligned to the right with the "
+#| "text “Hello World” and an angle of 25 degrees, you can use:"
 msgid ""
 "<em>Properties</em> describe the configuration and state of widgets, and "
 "each widget has its own particular set of properties. For example, a widget "
-"such as a button or a label has the property \"label\" which contains the "
-"text of the widget. You can specify the name and value of any number of "
-"properties as keyword arguments when creating an instance of a widget: for "
-"example, to create a label aligned to the right with the text “Hello World” "
-"and an angle of 25 degrees, you can use:"
+"such as a button or a label has the property <code>label</code> which "
+"contains the text of the widget. You can specify the name and value of any "
+"number of properties as keyword arguments when creating an instance of a "
+"widget: for example, to create a label with the text “Hello World”, an angle "
+"of 25 degrees, and aligned to the right, you can use:"
 msgstr ""
 "Las <em>propiedades</em> describen la configuración y el estado de los "
 "widgets, y cada widget tiene su conjunto particular de propiedades. Por "
@@ -31845,7 +32836,7 @@ msgstr ""
 "alineada a la derecha con el texto «Hello World» y un ángulo de 25 grados, "
 "puede usar:"
 
-#: C/properties.py.page:33(section/code)
+#: C/properties.py.page:34(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -31854,11 +32845,13 @@ msgstr ""
 "\n"
 "label = Gtk.Label(label=\"Hello World\", angle=25, halign=Gtk.Align.END)"
 
-#: C/properties.py.page:36(section/p)
-msgid "This is equivalent to:"
+#: C/properties.py.page:37(section/p)
+#, fuzzy
+#| msgid "This is equivalent to:"
+msgid "which is equivalent to using:"
 msgstr "Esto es equivalente a:"
 
-#: C/properties.py.page:37(section/code)
+#: C/properties.py.page:38(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -31873,28 +32866,42 @@ msgstr ""
 "label.set_angle(25)\n"
 "label.set_halign(Gtk.Align.END)"
 
-#: C/properties.py.page:43(section/p)
+#: C/properties.py.page:44(section/p)
+#, fuzzy
+#| msgid ""
+#| "Once you have created such a label, you can get the text with the getter "
+#| "<code>label.get_label()</code>."
 msgid ""
-"Once you have created such a label, you can get the text with the getter "
-"<code>label.get_label()</code>."
+"Once you have created such a label, you can get the text of the label with "
+"<code>label.get_label()</code>, and analogously for the other properties."
 msgstr ""
-"Una vez que haya creado esta etiqueta, puede obtener el texto con el "
-"«getter» <code>label.get_label()</code>."
+"Una vez que haya creado esta etiqueta, puede obtener el texto con el «getter» "
+"<code>label.get_label()</code>."
 
-#: C/properties.py.page:45(section/p)
+#: C/properties.py.page:46(section/p)
+#, fuzzy
+#| msgid ""
+#| "Instead of using getters and setters you can also get and set the "
+#| "properties with <code>get_property(\"prop-name\")</code> and "
+#| "<code>set_property(\"prop-name\", value)</code>, respectively."
 msgid ""
 "Instead of using getters and setters you can also get and set the properties "
-"with <code>get_property(\"prop-name\")</code> and <code>set_property(\"prop-"
-"name\", value)</code>, respectively."
+"with <code>get_property(<var>\"prop-name\"</var>)</code> and "
+"<code>set_property(<var>\"prop-name\"</var>, <var>value</var>)</code>, "
+"respectively."
 msgstr ""
 "En lugar de usar funciones de obtención y asignación, también puede obtener "
 "y establecer las propiedades con <code>get_property(\"nombre-propiedad\")</"
 "code> y <code>set_property(\"nombre-propiedad\")</code>, respectivamente."
 
-#: C/properties.py.page:51(section/p)
+#: C/properties.py.page:52(section/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/";
+#| "basics.html\">Basics - Properties</link> in Python Gtk+ 3 Tutorial"
 msgid ""
 "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/basics.";
-"html\">Basics - Properties</link> in Python Gtk+ 3 Tutorial"
+"html\">Basics - Properties</link> in Python GTK+ 3 Tutorial"
 msgstr ""
 "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/basics.";
 "html\">Conceptos básicos sobre propiedades</link> en el tutorial de Gtk+3 "
@@ -31905,11 +32912,15 @@ msgctxt "link"
 msgid "Python"
 msgstr "Python"
 
-#: C/py.page:15(page/title)
+#: C/py.page:20(page/title)
 msgid "Tutorials, code samples and platform demos in Python"
 msgstr ""
 "Tutoriales, ejemplos de código y demostraciones de la plataforma en Python"
 
+#: C/py.page:25(section/title) C/tutorial.py.page:30(page/title)
+msgid "Tutorial for beginners"
+msgstr ""
+
 #. This is a reference to an external file such as an image or video. When
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
@@ -31924,7 +32935,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/radiobutton.c.page:24(media) C/radiobutton.py.page:25(media)
+#: C/radiobutton.c.page:24(media) C/radiobutton.py.page:23(media)
 #: C/radiobutton.vala.page:24(media)
 msgctxt "_"
 msgid ""
@@ -31942,7 +32953,7 @@ msgid "A choice from multiple checkbuttons"
 msgstr "Una elección desde varios «CheckButton»."
 
 #: C/radiobutton.c.page:22(page/title) C/radiobutton.js.page:20(page/title)
-#: C/radiobutton.py.page:24(page/title) C/radiobutton.vala.page:23(page/title)
+#: C/radiobutton.py.page:22(page/title) C/radiobutton.vala.page:23(page/title)
 msgid "RadioButton"
 msgstr "RadioButton"
 
@@ -32364,10 +33375,10 @@ msgstr ""
 "Aquí hay tres maneras diferentes de crear botones de radio. La primera es la "
 "manera común, donde se crea un «Gtk.RadioButton» nuevo y se le asignan sus "
 "propiedades al mismo tiempo. La segunda y la tercera usan funciones que "
-"manejan algunas de sus propiedades automáticamente; «new_from_widget» toma "
-"un solo argumento, un botón de radio del mismo grupo en el que quiere poner "
-"el nuevo. «new_with_label_from_widget», además, toma eso y la etiqueta del "
-"botón de radio al mismo tiempo."
+"manejan algunas de sus propiedades automáticamente; «new_from_widget» toma un "
+"solo argumento, un botón de radio del mismo grupo en el que quiere poner el "
+"nuevo. «new_with_label_from_widget», además, toma eso y la etiqueta del botón "
+"de radio al mismo tiempo."
 
 #: C/radiobutton.js.page:102(section/p)
 msgid ""
@@ -33189,16 +34200,16 @@ msgctxt "text"
 msgid "RadioButton (Python)"
 msgstr "RadioButton (Python)"
 
-#: C/radiobutton.py.page:21(info/desc)
+#: C/radiobutton.py.page:19(info/desc)
 msgid "Mutually exclusive buttons."
 msgstr "Botones mutuamente excluyentes."
 
-#: C/radiobutton.py.page:26(page/p)
+#: C/radiobutton.py.page:24(page/p)
 msgid ""
 "Three RadioButtons. You can see in the terminal if they are turned off or on."
 msgstr "Tres «RadioButton». Puede ver en la terminal si están activados o no."
 
-#: C/radiobutton.py.page:32(section/code)
+#: C/radiobutton.py.page:30(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -33343,19 +34354,32 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/radiobutton.py.page:36(section/title)
+#: C/radiobutton.py.page:34(section/title)
 msgid "Useful methods for a RadioButton widget"
 msgstr "Métodos útiles para un widget «RadioButton»"
 
-#: C/radiobutton.py.page:39(section/p)
+#: C/radiobutton.py.page:35(section/p)
+msgid ""
+"In line 16 the signal <code>\"toggled\"</code> is connected to the callback "
+"function <code>toggled_cb()</code> using <code><var>widget</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+
+#: C/radiobutton.py.page:37(section/p)
+#, fuzzy
+#| msgid ""
+#| "Instead of <code>button1 = Gtk.RadioButton(label=\"Button 1\")</code> we "
+#| "could create the button and label it with"
 msgid ""
-"Instead of <code>button1 = Gtk.RadioButton(label=\"Button 1\")</code> we "
-"could create the button and label it with"
+"As seen in <link xref=\"properties.py\"/>, instead of <code>button1 = Gtk."
+"RadioButton(label=\"Button 1\")</code> we could create the button and label "
+"it with"
 msgstr ""
 "En lugar de <code>button1 = Gtk.RadioButton(label=\"Button 1\")</code> se "
 "podría crear el botón y la etiqueta con"
 
-#: C/radiobutton.py.page:40(section/code)
+#: C/radiobutton.py.page:38(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -33366,27 +34390,19 @@ msgstr ""
 "button1 = Gtk.RadioButton()\n"
 "button1.set_label(\"Button 1\")."
 
-#: C/radiobutton.py.page:43(section/p)
-msgid ""
-"For a general discussion of this, see <link xref=\"properties.py\">here</"
-"link>."
-msgstr ""
-"Para una discusión general de esto, consulte <link xref=\"properties.py"
-"\">aquí</link>."
-
-#: C/radiobutton.py.page:44(section/p)
+#: C/radiobutton.py.page:41(section/p)
 msgid ""
 "Yet another way to create a new RadioButton with a label is <code>button1 = "
 "Gtk.RadioButton.new_with_label(None, \"Button 1\")</code> (the first "
 "arguement is the group of the radiobuttons, which we can get with "
 "<code>get_group()</code>, the second argument is the label)."
 msgstr ""
-"Otra manera de crear un «RadioButton» nuevo con una etiqueta es "
-"<code>button1 = Gtk.RadioButton.new_with_label(None, \"Button 1\")</code> "
-"(El primer argumento es el grupo de botones de radio, que puede obtener con "
+"Otra manera de crear un «RadioButton» nuevo con una etiqueta es <code>button1 "
+"= Gtk.RadioButton.new_with_label(None, \"Button 1\")</code> (El primer "
+"argumento es el grupo de botones de radio, que puede obtener con "
 "<code>get_group()</code>, el segundo argumento es la etiqueta)."
 
-#: C/radiobutton.py.page:53(item/p)
+#: C/radiobutton.py.page:50(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkRadioButton.html";
 "\">GtkRadioButton</link>"
@@ -33550,7 +34566,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/record-collection.js.page:64(media)
+#: C/record-collection.js.page:69(media)
 msgctxt "_"
 msgid ""
 "external ref='media/record-collection.png' "
@@ -33560,8 +34576,11 @@ msgstr ""
 "md5='2d645997687ed5aacd36aafafc16e072'"
 
 #: C/record-collection.js.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Record Collection (JavaScript)"
 msgctxt "text"
-msgid "Record Collection (JavaScript)"
+msgid "Record collection (JavaScript)"
 msgstr "Colección de música (JavaScript)"
 
 #: C/record-collection.js.page:10(info/desc)
@@ -33570,19 +34589,21 @@ msgstr ""
 "Cree una pequeña aplicación con una base de datos para ordenar su colección "
 "de música"
 
-#: C/record-collection.js.page:23(page/title)
-msgid "3 Record Collection"
+#: C/record-collection.js.page:28(page/title)
+#, fuzzy
+#| msgid "3 Record Collection"
+msgid "Record collection"
 msgstr "3. Colección de música"
 
-#: C/record-collection.js.page:28(item/p)
+#: C/record-collection.js.page:33(item/p)
 msgid "How to connect to a database using libgda"
 msgstr "Cómo conectar con una base de datos usando libgda"
 
-#: C/record-collection.js.page:29(item/p)
+#: C/record-collection.js.page:34(item/p)
 msgid "How to insert and browse records in a database table"
 msgstr "Cómo insertar y examinar registros en una tabla de una base de datos"
 
-#: C/record-collection.js.page:35(section/p)
+#: C/record-collection.js.page:40(section/p)
 msgid ""
 "This demo uses the Javascript language. We are going to demonstrate how to "
 "connect and use a database from a GTK program, by using the GDA (GNOME Data "
@@ -33593,7 +34614,7 @@ msgstr ""
 "bilbioteca GDA («GNOME Data Access», Acceso a datos de GNOME). Por lo tanto, "
 "es necesario tener instalada también esta biblioteca."
 
-#: C/record-collection.js.page:38(section/p)
+#: C/record-collection.js.page:43(section/p)
 msgid ""
 "GNOME Data Access (GDA) is library whose purpose is to provide universal "
 "access to different kinds and types of data sources. This goes from "
@@ -33610,7 +34631,7 @@ msgstr ""
 "completa de la API, visite la  <link href=\"http://library.gnome.org/devel/";
 "libgda/stable/\">página web de GDA</link>."
 
-#: C/record-collection.js.page:41(section/p)
+#: C/record-collection.js.page:46(section/p)
 msgid ""
 "Although a big part of the code is related to user interface (GUI), we are "
 "going to focus our tutorial on the database parts (we might mention other "
@@ -33624,7 +34645,7 @@ msgstr ""
 "más sobre los programas en Javascript en GNOME, consulte el tutorial del "
 "programa<link xref=\"image-viewer.js\">Visor de Imágenes</link>"
 
-#: C/record-collection.js.page:54(item/p)
+#: C/record-collection.js.page:59(item/p)
 msgid ""
 "Choose <gui>Generic Javascript</gui> from the <gui>JS</gui> tab, click "
 "<gui>Forward</gui>, and fill-out your details on the next few pages. Use "
@@ -33634,7 +34655,7 @@ msgstr ""
 "<gui>Adelante</gui> y rellene los detalles en las siguientes páginas. Use "
 "<file>coleccion-de-albumes</file> como nombre de proyecto y de carpeta."
 
-#: C/record-collection.js.page:57(item/p)
+#: C/record-collection.js.page:62(item/p)
 msgid ""
 "Click <gui>Finished</gui> and the project will be created for you. Open "
 "<file>src/main.js</file> from the <gui>Project</gui> or <gui>File</gui> "
@@ -33644,11 +34665,11 @@ msgstr ""
 "file> desde la pestaña <gui>Proyecto</gui> o <gui>Archivo</gui>. Contiene un "
 "ejemplo de código muy básico."
 
-#: C/record-collection.js.page:63(section/title)
+#: C/record-collection.js.page:68(section/title)
 msgid "Program Structure"
 msgstr "Estructura del programa"
 
-#: C/record-collection.js.page:65(section/p)
+#: C/record-collection.js.page:70(section/p)
 msgid ""
 "This demo is a simple GTK application (with a single window) capable of "
 "inserting records into a database table as well as browsing all records of "
@@ -33667,15 +34688,15 @@ msgstr ""
 "ver todos los registros de la tabla. El contenido se actualiza cada vez que "
 "se insertar un registro y al inicio de la aplicación."
 
-#: C/record-collection.js.page:70(section/title)
+#: C/record-collection.js.page:75(section/title)
 msgid "Starting the fun"
 msgstr "Empezar la diversión"
 
-#: C/record-collection.js.page:71(section/p)
+#: C/record-collection.js.page:76(section/p)
 msgid "Let's start by examining the skeleton of the program:"
 msgstr "Empezar examinando el esqueleto del programa:"
 
-#: C/record-collection.js.page:72(section/code)
+#: C/record-collection.js.page:77(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -33728,7 +34749,7 @@ msgstr ""
 "\n"
 "Gtk.main ();"
 
-#: C/record-collection.js.page:97(item/p)
+#: C/record-collection.js.page:102(item/p)
 msgid ""
 "Lines 1‒4: Initial imports. Pay special attention to line 3, which tells "
 "Javascript to import the GDA library, our focus in this tutorial."
@@ -33737,7 +34758,7 @@ msgstr ""
 "que indica a Javascript que importe la biblioteca GDA, nuestro objetivo en "
 "este tutorial."
 
-#: C/record-collection.js.page:98(item/p)
+#: C/record-collection.js.page:103(item/p)
 msgid ""
 "Lines 6‒17: Define our <code>Demo</code> class. Pay special attention to "
 "lines 13‒15, where we call 3 methods which will do the whole job. They will "
@@ -33747,15 +34768,15 @@ msgstr ""
 "las líneas 13‒15, donde se llama a 3 métodos que harán todo el trabajo. Se "
 "detallarán más adelante."
 
-#: C/record-collection.js.page:99(item/p)
+#: C/record-collection.js.page:104(item/p)
 msgid "Lines 19‒23: Start the application."
 msgstr "Líneas 19‒23: iniciar la aplicación."
 
-#: C/record-collection.js.page:104(section/title)
+#: C/record-collection.js.page:109(section/title)
 msgid "Designing the application"
 msgstr "Diseñar la aplicación"
 
-#: C/record-collection.js.page:105(section/p)
+#: C/record-collection.js.page:110(section/p)
 msgid ""
 "Let's take a look at the <code>setupWindow</code> method. It is responsible "
 "for creating the User Interface (UI). As UI is not our focus, we will "
@@ -33765,7 +34786,7 @@ msgstr ""
 "crear la interfaz de usuario (IU). Ya que la IU no es el objetivo, sólo se "
 "explicarán las partes relevantes."
 
-#: C/record-collection.js.page:106(section/code)
+#: C/record-collection.js.page:111(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -33868,7 +34889,7 @@ msgstr ""
 "    this.window.show_all ();\n"
 "  },"
 
-#: C/record-collection.js.page:156(item/p)
+#: C/record-collection.js.page:161(item/p)
 msgid ""
 "Lines 22 and 27: Create the 2 entries (for the two fields) in which users "
 "will type something to get inserted in the database."
@@ -33876,7 +34897,7 @@ msgstr ""
 "Líneas 22 y 27: crear las dos entradas (para los dos campos) en las que el "
 "usuario escribirá algo para insertarlo en la base de datos."
 
-#: C/record-collection.js.page:157(item/p)
+#: C/record-collection.js.page:162(item/p)
 msgid ""
 "Lines 31‒34: Create the Insert button. We connect its <code>clicked</code> "
 "signal to the <code>_insertClicked</code> private method of the class. This "
@@ -33886,7 +34907,7 @@ msgstr ""
 "code> con el método privado <code>_insertClicked</code> de la clase. Este "
 "método se detalla a continuación."
 
-#: C/record-collection.js.page:158(item/p)
+#: C/record-collection.js.page:163(item/p)
 msgid ""
 "Line 39: Create the widget (<code>TextView</code>) where we will show the "
 "contents of the table."
@@ -33894,7 +34915,7 @@ msgstr ""
 "Línea 39: crear el widget (<code>TextView</code>) donde se mostrarán los "
 "contenidos de la tabla."
 
-#: C/record-collection.js.page:159(item/p)
+#: C/record-collection.js.page:164(item/p)
 msgid ""
 "Line 44: Create the label where we will show the number of records in the "
 "table. Initially it's empty, it will be updated later."
@@ -33902,11 +34923,11 @@ msgstr ""
 "Línea 44: crear la etiqueta donde se mostrará el número de registros de la "
 "tabla. Inicialmente está vacía, se actualizará más tarde."
 
-#: C/record-collection.js.page:164(section/title)
+#: C/record-collection.js.page:169(section/title)
 msgid "Connecting to and initializing the database"
 msgstr "Conectar e inicializar la base de datos"
 
-#: C/record-collection.js.page:165(section/p)
+#: C/record-collection.js.page:170(section/p)
 msgid ""
 "The code which makes the connection to the database is in the "
 "<code>setupDatabase</code> method below:"
@@ -33914,7 +34935,7 @@ msgstr ""
 "El código que hace la conexión con la base de datos está en método "
 "<code>setupDatabase</code> siguiente:"
 
-#: C/record-collection.js.page:168(section/code)
+#: C/record-collection.js.page:173(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -33943,7 +34964,7 @@ msgstr ""
 "    }\n"
 "  },"
 
-#: C/record-collection.js.page:182(item/p)
+#: C/record-collection.js.page:187(item/p)
 msgid ""
 "Lines 2‒3: Create the GDA's <code>Connection</code> object. We must supply "
 "to its constructor some properties:"
@@ -33951,7 +34972,7 @@ msgstr ""
 "Líneas 2‒3: crear el objeto de GDA <code>Connection</code>. Se deben "
 "proporcionar a su constructor algunas propiedades:"
 
-#: C/record-collection.js.page:185(item/p)
+#: C/record-collection.js.page:190(item/p)
 msgid ""
 "<code>provider</code>: One of GDA's supported providers. GDA supports "
 "SQLite, MySQL, PostgreSQL, Oracle and many others. For demo purposes we will "
@@ -33964,7 +34985,7 @@ msgstr ""
 "predeterminada en la mayoría de las distribuciones y es fácil de usar (sólo "
 "usa un archivo como base de datos)."
 
-#: C/record-collection.js.page:188(item/p)
+#: C/record-collection.js.page:193(item/p)
 msgid ""
 "<code>cnc_string</code>: The connection string. It may change from provider "
 "to provider. The syntax for SQLite is: <code>DB_DIR=<var>PATH</var>;"
@@ -33975,10 +34996,10 @@ msgstr ""
 "<code>cnc_string</code>: la cadena de conexión. Puede cambiar de un "
 "proveedor a otro. La sintaxis de SQLite es: <code>DB_DIR=<var>PATH</var>;"
 "DB_NAME=<var>FILENAME</var></code>. En esta demostración se accederá a una "
-"base de datos llamada «gnome_demo» en la carpeta del usaurio (tenga en "
-"cuenta la llamada a la función <code>get_home_dir</code> de GLib)."
+"base de datos llamada «gnome_demo» en la carpeta del usaurio (tenga en cuenta "
+"la llamada a la función <code>get_home_dir</code> de GLib)."
 
-#: C/record-collection.js.page:192(note/p)
+#: C/record-collection.js.page:197(note/p)
 msgid ""
 "If the provider is not supported by GDA, or if the connection string is "
 "missing some element, line 2 will raise an exception. So, in real life we "
@@ -33990,7 +35011,7 @@ msgstr ""
 "que manejarlo con la sentencia <code>try</code>...<code>catch</code> de "
 "JavaScript."
 
-#: C/record-collection.js.page:196(item/p)
+#: C/record-collection.js.page:201(item/p)
 msgid ""
 "Line 4: Open the connection. In the SQLite provider, if the database does "
 "not exist, it will be created in this step."
@@ -33998,7 +35019,7 @@ msgstr ""
 "Línea 4: abrir la conexión. En el proveedor de SQLite, si la base de datos "
 "no existe, se creará en este paso."
 
-#: C/record-collection.js.page:198(item/p)
+#: C/record-collection.js.page:203(item/p)
 msgid ""
 "Lines 6‒10: Try to do a simple select to check if the table exists (line 7). "
 "If it does not exist (because the database was just created), this command "
@@ -34012,7 +35033,7 @@ msgstr ""
 "<code>catch</code> block. Si este es el caso, se ejecuta la sentencia para "
 "crear tabla (línea 9)."
 
-#: C/record-collection.js.page:199(item/p)
+#: C/record-collection.js.page:204(item/p)
 msgid ""
 "In order to run the SQL commands above we are using global GDA functions, "
 "<code>execute_select_command</code> and <code>execute_non_select_command</"
@@ -34024,16 +35045,16 @@ msgstr ""
 "code>. Son fáciles de usar, y sólo requieren dos argumentos: el objeto "
 "<code>Connection</code> y el comando SQL que analizar."
 
-#: C/record-collection.js.page:203(section/p)
+#: C/record-collection.js.page:208(section/p)
 msgid "At this point we have the database set up, and are ready to use it."
 msgstr ""
 "En este punto, ya está configurada la base de datos y lista para usarse."
 
-#: C/record-collection.js.page:207(section/title)
+#: C/record-collection.js.page:212(section/title)
 msgid "Selecting"
 msgstr "Seleccionar"
 
-#: C/record-collection.js.page:208(section/p)
+#: C/record-collection.js.page:213(section/p)
 msgid ""
 "After connecting to the database, our demo's constructor calls the "
 "<code>selectData</code> method. It is responsible for getting all the "
@@ -34045,7 +35066,7 @@ msgstr ""
 "los registros de la tabla y de mostrarlos en el widget <code>TextView</"
 "code>. Échele un vistazo:"
 
-#: C/record-collection.js.page:211(section/code)
+#: C/record-collection.js.page:216(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -34084,7 +35105,7 @@ msgstr ""
 "    this.count_label.label = \"&lt;i&gt;\" + dm.get_n_rows () + \" record(s)&lt;/i&gt;\";\n"
 "  },"
 
-#: C/record-collection.js.page:229(item/p)
+#: C/record-collection.js.page:234(item/p)
 msgid ""
 "Line 2: The <code>SELECT</code> command. We are using the global GDA's "
 "function <code>execute_select_command</code> for that. It returns a "
@@ -34094,7 +35115,7 @@ msgstr ""
 "de GDA <code>execute_select_command</code>. Devuelve un objeto "
 "<code>DataModel</code>, que se usa más tarde para obtener las filas."
 
-#: C/record-collection.js.page:230(item/p)
+#: C/record-collection.js.page:235(item/p)
 msgid ""
 "Line 3: Create an <code>Iter</code> object, which is used to iterate over "
 "the <code>DataModel</code>'s records."
@@ -34102,7 +35123,7 @@ msgstr ""
 "Línea 3: crear un objeto <code>Iter</code>, que se usa para iterar sobre los "
 "registros de <code>DataModel</code>."
 
-#: C/record-collection.js.page:231(item/p)
+#: C/record-collection.js.page:236(item/p)
 msgid ""
 "Line 7: Loop through all the records, fetching them with the help of the "
 "<code>Iter</code> object. At this point, the <code>iter</code> variable "
@@ -34114,11 +35135,11 @@ msgstr ""
 "contiene los datos obtenidos actualmente. Su método <code>move_next</code> "
 "devuelve <code>false</code> cuando se alcanza el último registro."
 
-#: C/record-collection.js.page:233(item/p)
+#: C/record-collection.js.page:238(item/p)
 msgid "Lines 8‒9: We do two things in each line:"
 msgstr "Líneas 8‒9: se hacen dos cosas en cada línea:"
 
-#: C/record-collection.js.page:235(item/p)
+#: C/record-collection.js.page:240(item/p)
 msgid ""
 "Use <code>Iter</code>'s method <code>get_value_at</code>, which requires "
 "only one argument: the column number to retrieve, starting at 0. As our "
@@ -34130,7 +35151,7 @@ msgstr ""
 "Ya que el comando <code>SELECT</code> sólo devuelve dos columnas, se están "
 "recuperando las columnas 0 y 1."
 
-#: C/record-collection.js.page:236(item/p)
+#: C/record-collection.js.page:241(item/p)
 msgid ""
 "The method <code>get_value_at</code> returns the field in GLib's "
 "<code>GValue</code> format. A simple way to convert this format to a string "
@@ -34144,7 +35165,7 @@ msgstr ""
 "lo que se está haciendo aquí, y el resultado se almacena en las variables "
 "<code>id_field</code> y <code>name_field</code>."
 
-#: C/record-collection.js.page:239(item/p)
+#: C/record-collection.js.page:244(item/p)
 msgid ""
 "Line 11: Concatenate the two fields to make one text line, separated by "
 "<code>\"=&gt;\"</code>, and store it in the <code>text</code> variable."
@@ -34153,7 +35174,7 @@ msgstr ""
 "separados por <code>\"=&gt;\"</code>, y almacenarla en la variable "
 "<code>text</code>."
 
-#: C/record-collection.js.page:240(item/p)
+#: C/record-collection.js.page:245(item/p)
 msgid ""
 "Line 14: After the loop is finished, we have all the records formatted in "
 "the <code>text</code> variable. In this line we just set the contents of the "
@@ -34163,7 +35184,7 @@ msgstr ""
 "formateados en la variable <code>text</code>. En esta línea, simplemente se "
 "establece el contenido del <code>TextView</code> con esta variable."
 
-#: C/record-collection.js.page:241(item/p)
+#: C/record-collection.js.page:246(item/p)
 msgid ""
 "Line 15: Display the number of records in the table, making use of the "
 "<code>DataModel</code>'s <code>get_n_rows</code> method."
@@ -34171,11 +35192,11 @@ msgstr ""
 "Línea 15: mostrar el número de registros en la tabla, usando el método "
 "<code>get_n_rows</code> de <code>DataModel</code> <code>get_n_rows</code>."
 
-#: C/record-collection.js.page:246(section/title)
+#: C/record-collection.js.page:251(section/title)
 msgid "Inserting"
 msgstr "Insertar"
 
-#: C/record-collection.js.page:247(section/p)
+#: C/record-collection.js.page:252(section/p)
 msgid ""
 "OK, we know how to connect to a database and how to select rows from a "
 "table. Now it's time to do an <code>INSERT</code> on the table. Do you "
@@ -34189,7 +35210,7 @@ msgstr ""
 "conectó la señal <code>clicked</code> del botón <gui>Insertar</gui> al "
 "método <code>_insertClicked</code>?. Vea la implementación de este método."
 
-#: C/record-collection.js.page:250(section/code)
+#: C/record-collection.js.page:255(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -34230,7 +35251,7 @@ msgstr ""
 "    this.selectData ();\n"
 "  },"
 
-#: C/record-collection.js.page:268(section/p)
+#: C/record-collection.js.page:273(section/p)
 msgid ""
 "We have learned how to use GDA's convenience functions "
 "<code>execute_select_command</code> and <code>execute_non_select_command</"
@@ -34249,7 +35270,7 @@ msgstr ""
 "usado (usará el mismo dialecto de SQL que usa el proveedor). Estudie el "
 "código:"
 
-#: C/record-collection.js.page:272(item/p)
+#: C/record-collection.js.page:277(item/p)
 msgid ""
 "Lines 2‒3: Check if the user filled all the fields. The code for the private "
 "method <code>_validateFields</code> is really simple and you can read it in "
@@ -34259,7 +35280,7 @@ msgstr ""
 "del método privado <code>_validateFields</code> es realmente simple y puede "
 "leerlo en el código fuente completo de la demostración."
 
-#: C/record-collection.js.page:273(item/p)
+#: C/record-collection.js.page:278(item/p)
 msgid ""
 "Line 5: The faster way of doing the <code>INSERT</code>. It's commented out "
 "as we want to show how to use the <code>SqlBuilder</code> object to build a "
@@ -34269,7 +35290,7 @@ msgstr ""
 "comentado que se quiere mostrar cómo usar el objeto <code>SqlBuilder</code> "
 "para construir una sentencia SQL portable entre bases de datos."
 
-#: C/record-collection.js.page:274(item/p)
+#: C/record-collection.js.page:279(item/p)
 msgid ""
 "Line 7: Create the <code>SqlBuilder</code> object. We must pass the type of "
 "statement we are going to build. It can be <code>SELECT</code>, "
@@ -34279,7 +35300,7 @@ msgstr ""
 "sentencia que se va a construir. Puede ser <code>SELECT</code>, "
 "<code>UPDATE</code>, <code>INSERT</code> o <code>DELETE</code>."
 
-#: C/record-collection.js.page:275(item/p)
+#: C/record-collection.js.page:280(item/p)
 msgid ""
 "Line 8: Set the name of the table on which the built statement will operate "
 "(it will generate <code>INSERT INTO demo</code>)"
@@ -34287,7 +35308,7 @@ msgstr ""
 "Línea 8: establecer el nombre de la base de datos en la que operará la "
 "sentencia construida (generará <code>INSERT INTO demo</code>)"
 
-#: C/record-collection.js.page:276(item/p)
+#: C/record-collection.js.page:281(item/p)
 msgid ""
 "Lines 9‒10: Set the fields and its values that will be part of the "
 "statement. The first argument is the field name (as in the table). The "
@@ -34297,7 +35318,7 @@ msgstr ""
 "valores. El primer argumento es el nombre del campo (como aparece en la "
 "tabla). El segundo es el valor de este campo."
 
-#: C/record-collection.js.page:277(item/p)
+#: C/record-collection.js.page:282(item/p)
 msgid ""
 "Line 11: Get the dynamically generated <code>Statement</code> object, which "
 "represents a SQL statement."
@@ -34305,11 +35326,11 @@ msgstr ""
 "Línea 11: obtener el objeto <code>Statement</code> generado dinámicamente, "
 "que representa una sentencia SQL."
 
-#: C/record-collection.js.page:278(item/p)
+#: C/record-collection.js.page:283(item/p)
 msgid "Line 12: Finally, execute the SQL statement (<code>INSERT</code>)."
 msgstr "Línea 12: finalmente, ejecutar la sentencia SQL (<code>INSERT</code>)."
 
-#: C/record-collection.js.page:279(item/p)
+#: C/record-collection.js.page:284(item/p)
 msgid ""
 "Line 14: Clear the id and name fields on the screen. The code for the "
 "private method <code>_clearFields</code> is really simple and you can read "
@@ -34319,14 +35340,14 @@ msgstr ""
 "método privado <code>_clearFields</code> es muy sencillo, y puede leerlo en "
 "el código fuente de la demostración completa."
 
-#: C/record-collection.js.page:280(item/p)
+#: C/record-collection.js.page:285(item/p)
 msgid ""
 "Line 15: Refresh the view on the screen by doing another <code>SELECT</code>."
 msgstr ""
 "Línea 15: actualizar la vista en la pantalla haciendo otro <code>SELECT</"
 "code>."
 
-#: C/record-collection.js.page:282(note/p)
+#: C/record-collection.js.page:287(note/p)
 msgid ""
 "You can also make use of parameters while building the statement. By using "
 "the <code>SqlBuilder</code> objects and parameters you are less subject to "
@@ -34340,7 +35361,7 @@ msgstr ""
 "parámetros, consulte la <link href=\"http://library.gnome.org/devel/libgda/";
 "stable/\">documentación de GDA</link>."
 
-#: C/record-collection.js.page:287(section/p)
+#: C/record-collection.js.page:292(section/p)
 msgid ""
 "All of the code you need should now be in place, so try running the code. "
 "You now have a database for your record collection!"
@@ -34349,7 +35370,7 @@ msgstr ""
 "ejecutar el código. Ahora tiene una base de datos para su colección de "
 "registros."
 
-#: C/record-collection.js.page:292(section/p)
+#: C/record-collection.js.page:297(section/p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
 "<link href=\"record-collection/record-collection.js\">reference code</link>."
@@ -34371,17 +35392,17 @@ msgctxt "text"
 msgid "Scale (C)"
 msgstr "Escala (C)"
 
-#: C/scale.c.page:19(info/desc) C/scale.py.page:18(info/desc)
+#: C/scale.c.page:19(info/desc) C/scale.py.page:19(info/desc)
 #: C/scale.vala.page:19(info/desc)
 msgid "A slider widget for selecting a value from a range"
 msgstr "Un widget deslizador para seleccionar un valor de un rango"
 
 #: C/scale.c.page:22(page/title) C/scale.js.page:20(page/title)
-#: C/scale.py.page:21(page/title) C/scale.vala.page:22(page/title)
+#: C/scale.py.page:22(page/title) C/scale.vala.page:22(page/title)
 msgid "Scale"
 msgstr "Escala"
 
-#: C/scale.c.page:25(page/p) C/scale.py.page:23(page/p)
+#: C/scale.c.page:25(page/p) C/scale.py.page:24(page/p)
 #: C/scale.vala.page:24(page/p)
 msgid "Slide the scales!"
 msgstr "Desplace las escalas."
@@ -34903,16 +35924,16 @@ msgstr ""
 #: C/scale.js.page:91(section/p)
 msgid ""
 "The new_with_range method is one way to create a new Scale widget. The "
-"parameters it takes are a <link href=\"http://www.roojs.org/seed/gir-1.2-";
-"gtk-3.0/gjs/Gtk.Orientation.html\">Gtk.Orientation</link>, the minimum "
-"value, the maximum value, and the increment for a single step. After that we "
-"use the Scale's methods to set its starting value, and how many decimal "
-"places it runs to. We also set its vertical alignment in this case, to "
-"control where it appears in the window."
+"parameters it takes are a <link href=\"http://www.roojs.org/seed/gir-1.2-gtk-";
+"3.0/gjs/Gtk.Orientation.html\">Gtk.Orientation</link>, the minimum value, "
+"the maximum value, and the increment for a single step. After that we use "
+"the Scale's methods to set its starting value, and how many decimal places "
+"it runs to. We also set its vertical alignment in this case, to control "
+"where it appears in the window."
 msgstr ""
 "El método nuevo «new_with_range» es una manera de crear un widget de escala. "
-"Los parámetros que toma son una <link href=\"http://www.roojs.org/seed/";
-"gir-1.2-gtk-3.0/gjs/Gtk.Orientation.html\">Gtk.Orientation</link>, el valor "
+"Los parámetros que toma son una <link href=\"http://www.roojs.org/seed/gir-";
+"1.2-gtk-3.0/gjs/Gtk.Orientation.html\">Gtk.Orientation</link>, el valor "
 "mínimo, el valor máximo, y el incremento para un solo paso. Después de eso "
 "se usan los métodos de la escala para establecer su valor de inicio, y "
 "cuántos lugares decimales abarca. También se establece su alineación "
@@ -34990,11 +36011,11 @@ msgid ""
 "out; this is how you tell it not to show the number next to the Scale when "
 "you're creating one this way."
 msgstr ""
-"Aquí se crea un objeto de escala nuevo usando «_adjustment» como su "
-"propiedad «ajuste». Este es un buen atajo. Sin embargo, todavía hay que "
-"decirle que redondee el lugar decimal. Tenga en cuenta que la propiedad "
-"«draw_value» está comentada; así es como se le dice que no muestre el número "
-"junto a la escala cuando está creando una de esta manera."
+"Aquí se crea un objeto de escala nuevo usando «_adjustment» como su propiedad "
+"«ajuste». Este es un buen atajo. Sin embargo, todavía hay que decirle que "
+"redondee el lugar decimal. Tenga en cuenta que la propiedad «draw_value» está "
+"comentada; así es como se le dice que no muestre el número junto a la escala "
+"cuando está creando una de esta manera."
 
 #: C/scale.js.page:118(section/code)
 #, no-wrap
@@ -35211,8 +36232,8 @@ msgid ""
 "Finally, we create a new instance of the finished ScaleExample class, and "
 "set the application running."
 msgstr ""
-"Finalmente, se crea una instancia nueva de la clase «ScaleExample» "
-"terminada, y se ejecuta la aplicación."
+"Finalmente, se crea una instancia nueva de la clase «ScaleExample» terminada, "
+"y se ejecuta la aplicación."
 
 #: C/scale.js.page:203(section/code)
 #, no-wrap
@@ -35500,7 +36521,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/scale.py.page:22(media) C/scale.vala.page:23(media)
+#: C/scale.py.page:23(media) C/scale.vala.page:23(media)
 msgctxt "_"
 msgid "external ref='media/scale.png' md5='462c52a53b773cb9e8c62c646bf88452'"
 msgstr "external ref='media/scale.png' md5='462c52a53b773cb9e8c62c646bf88452'"
@@ -35510,7 +36531,7 @@ msgctxt "text"
 msgid "Scale (Python)"
 msgstr "Escala (Python)"
 
-#: C/scale.py.page:29(section/code)
+#: C/scale.py.page:30(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -35657,21 +36678,10 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/scale.py.page:33(section/title)
+#: C/scale.py.page:34(section/title)
 msgid "Useful methods for a Scale widget"
 msgstr "Métodos útiles para un widget «Escala»"
 
-#: C/scale.py.page:34(section/p)
-msgid ""
-"For an explanation of signals and callback functions, see <link xref="
-"\"signals-callbacks.py\">this page</link>. An example is the <code>\"value-"
-"changed\"</code> signal, emitted when the value of the scale changes."
-msgstr ""
-"Para una explicación de señales y funciones de retorno de llamada, consulte "
-"<link xref=\"signals-callbacks.py\">esta página</link>. Un ejemplo es la "
-"señal <code>«value-changed»</code>, que se emite cuando el cambia el valor "
-"de la escala."
-
 #: C/scale.py.page:35(section/p)
 msgid ""
 "A Gtk.Adjustment is needed to construct the Gtk.Scale. This is the "
@@ -35694,7 +36704,15 @@ msgstr ""
 "en cuenta que <code>tamaño_de_página</code> no se usa en este caso, y debe "
 "establecerse a <code>0</code>."
 
-#: C/scale.py.page:37(item/p)
+#: C/scale.py.page:36(section/p)
+msgid ""
+"In line 28 the signal <code>\"value-changed\"</code> is connected to the "
+"callback function <code>scale_moved()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+
+#: C/scale.py.page:38(item/p)
 msgid ""
 "<code>get_value()</code> retrieves the current value of the scale; "
 "<code>set_value(value)</code> sets it (if the <code>value</code>, of type "
@@ -35706,7 +36724,7 @@ msgstr ""
 "tipo <code>float</code>, está fuera del rango mínimo o máximo, se ajustará "
 "para que entre). Estos son métodos de la clase «Gtk.Range»."
 
-#: C/scale.py.page:38(item/p)
+#: C/scale.py.page:39(item/p)
 msgid ""
 "Use <code>set_draw_value(False)</code> to avoid displaying the current value "
 "as a string next to the slider."
@@ -35714,12 +36732,12 @@ msgstr ""
 "Use <code>set_draw_value(False)</code> para evitar mostrar el valor actual "
 "como una cadena junto al deslizador."
 
-#: C/scale.py.page:39(item/p)
+#: C/scale.py.page:40(item/p)
 msgid ""
 "To highlight the part of the scale between the origin and the current value:"
 msgstr "Para resaltar la parte de la escala entre el origen y el valor actual:"
 
-#: C/scale.py.page:40(item/code)
+#: C/scale.py.page:41(item/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -35732,7 +36750,7 @@ msgstr ""
 "self.h_scale.set_fill_level(self.h_scale.get_value())\n"
 "self.h_scale.set_show_fill_level(True)"
 
-#: C/scale.py.page:44(item/p)
+#: C/scale.py.page:45(item/p)
 msgid ""
 "in the callback function of the \"value-changed\" signal, so to have the new "
 "filling every time the value is changed. These are methods of the class Gtk."
@@ -35742,7 +36760,7 @@ msgstr ""
 "el relleno nuevo cada vez que cambie el valor. Estos son métodos de la clase "
 "«Gtk.Range»."
 
-#: C/scale.py.page:46(item/p)
+#: C/scale.py.page:47(item/p)
 msgid ""
 "<code>add_mark(value, position, markup)</code> adds a mark at the "
 "<code>value</code> (<code>float</code> or <code>int</code> if that is the "
@@ -35758,7 +36776,7 @@ msgstr ""
 "code>) con texto <code>Null</code> o <code>marca</code> en el lenguaje de "
 "marcado de Pango. Para limpiar las marcas, <code>clear_marks()</code>."
 
-#: C/scale.py.page:47(item/p)
+#: C/scale.py.page:48(item/p)
 msgid ""
 "<code>set_digits(digits)</code> sets the precision of the scale at "
 "<code>digits</code> digits."
@@ -35766,7 +36784,7 @@ msgstr ""
 "<code>set_digits(dígitos)</code> establece la precisión de la escala en "
 "<code>dígitos</code> dígitos."
 
-#: C/scale.py.page:55(item/p)
+#: C/scale.py.page:56(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkScale.html";
 "\">GtkScale</link>"
@@ -35774,7 +36792,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkScale.html";
 "\">GtkScale</link>"
 
-#: C/scale.py.page:56(item/p) C/spinbutton.py.page:48(item/p)
+#: C/scale.py.page:57(item/p) C/spinbutton.py.page:49(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkAdjustment.html";
 "\">GtkAdjustment</link>"
@@ -35782,7 +36800,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkAdjustment.html";
 "\">GtkAdjustment</link>"
 
-#: C/scale.py.page:57(item/p) C/scrolledwindow.py.page:44(item/p)
+#: C/scale.py.page:58(item/p) C/scrolledwindow.py.page:45(item/p)
 #: C/textview.py.page:99(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/gtk3-Standard-";
@@ -35946,7 +36964,13 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/scrolledwindow.py.page:21(media) C/scrolledwindow.vala.page:22(media)
+#.
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/scrolledwindow.c.page:24(media) C/scrolledwindow.py.page:22(media)
+#: C/scrolledwindow.vala.page:22(media)
 msgctxt "_"
 msgid ""
 "external ref='media/scrolledwindow.png' "
@@ -35955,26 +36979,242 @@ msgstr ""
 "external ref='media/scrolledwindow.png' "
 "md5='697bb3205d5c4fb0b4ea8db435843157'"
 
-#: C/scrolledwindow.py.page:7(info/title)
+#: C/scrolledwindow.c.page:7(info/title)
+#, fuzzy
+#| msgid "ScrolledWindow"
 msgctxt "text"
-msgid "ScrolledWindow (Python)"
-msgstr "ScrolledWindow (Python)"
+msgid "ScrolledWindow (C)"
+msgstr "ScrolledWindow"
 
-#: C/scrolledwindow.py.page:17(info/desc)
+#: C/scrolledwindow.c.page:19(info/desc)
+#: C/scrolledwindow.py.page:18(info/desc)
 #: C/scrolledwindow.vala.page:18(info/desc)
 msgid "Adds scrollbars to its child widget"
 msgstr "Añade barras de desplazamiento a su widget hijo"
 
-#: C/scrolledwindow.py.page:20(page/title)
+#: C/scrolledwindow.c.page:22(page/title)
+#: C/scrolledwindow.py.page:21(page/title)
 #: C/scrolledwindow.vala.page:21(page/title)
 msgid "ScrolledWindow"
 msgstr "ScrolledWindow"
 
-#: C/scrolledwindow.py.page:22(page/p) C/scrolledwindow.vala.page:23(page/p)
+#: C/scrolledwindow.c.page:25(page/p) C/scrolledwindow.py.page:23(page/p)
+#: C/scrolledwindow.vala.page:23(page/p)
 msgid "An image in a scrolled window."
 msgstr "Una imagen en una ventana con barras de desplazamiento."
 
-#: C/scrolledwindow.py.page:28(section/code)
+#: C/scrolledwindow.c.page:27(page/code)
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "#include &lt;gtk/gtk.h&gt;\n"
+#| "\n"
+#| "\n"
+#| "\n"
+#| "static void\n"
+#| "activate (GtkApplication *app,\n"
+#| "          gpointer        user_data)\n"
+#| "{\n"
+#| "  /* Declare variables */\n"
+#| "  GtkWidget *window;\n"
+#| "  GtkWidget *text_view;\n"
+#| "  GtkWidget *scrolled_window;\n"
+#| "\n"
+#| "  GtkTextBuffer *buffer;\n"
+#| "\n"
+#| "\n"
+#| "  /* Create a window with a title, and a default size */\n"
+#| "  window = gtk_application_window_new (app);\n"
+#| "  gtk_window_set_title (GTK_WINDOW (window), \"TextView Example\");\n"
+#| "  gtk_window_set_default_size (GTK_WINDOW (window), 220, 200);\n"
+#| "\n"
+#| "\n"
+#| "  /* The text buffer represents the text being edited */\n"
+#| "  buffer = gtk_text_buffer_new (NULL);\n"
+#| "  \n"
+#| "\n"
+#| "  /* Text view is a widget in which can display the text buffer. \n"
+#| "   * The line wrapping is set to break lines in between words.\n"
+#| "   */\n"
+#| "  text_view = gtk_text_view_new_with_buffer (buffer);\n"
+#| "  gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD); \n"
+#| "\n"
+#| "\n"
+#| "  /* Create the scrolled window. Usually NULL is passed for both parameters so \n"
+#| "   * that it creates the horizontal/vertical adjustments automatically. Setting \n"
+#| "   * the scrollbar policy to automatic allows the scrollbars to only show up \n"
+#| "   * when needed. \n"
+#| "   */\n"
+#| "  scrolled_window = gtk_scrolled_window_new (NULL, NULL);\n"
+#| "  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), \n"
+#| "                                  GTK_POLICY_AUTOMATIC, \n"
+#| "                                  GTK_POLICY_AUTOMATIC); \n"
+#| "  /* The function directly below is used to add children to the scrolled window \n"
+#| "   * with scrolling capabilities (e.g text_view), otherwise, \n"
+#| "   * gtk_scrolled_window_add_with_viewport() would have been used\n"
+#| "   */\n"
+#| "  gtk_container_add (GTK_CONTAINER (scrolled_window), \n"
+#| "                                         text_view);\n"
+#| "  gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 5);\n"
+#| " \n"
+#| "  \n"
+#| "  gtk_container_add (GTK_CONTAINER (window), scrolled_window);\n"
+#| "\n"
+#| "  gtk_widget_show_all (window);\n"
+#| "}\n"
+#| "\n"
+#| "\n"
+#| "\n"
+#| "int\n"
+#| "main (int argc, char **argv)\n"
+#| "{\n"
+#| "  GtkApplication *app;\n"
+#| "  int status;\n"
+#| "\n"
+#| "  app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+#| "  g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+#| "  status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+#| "  g_object_unref (app);\n"
+#| "\n"
+#| "  return status;\n"
+#| "}\n"
+msgid ""
+"\n"
+"#include &lt;gtk/gtk.h&gt;\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+"          gpointer        user_data)\n"
+"{\n"
+"  /* Declare variables */\n"
+"  GtkWidget *window;\n"
+"  GtkWidget *scrolled_window;\n"
+"  GtkWidget *image;\n"
+"\n"
+"  /* Create a window with a title, and a default size */\n"
+"  window = gtk_application_window_new (app);\n"
+"  gtk_window_set_title (GTK_WINDOW (window), \"ScrolledWindow Example\");\n"
+"  gtk_window_set_default_size (GTK_WINDOW (window), 220, 200);\n"
+"\n"
+"  /* Create the scrolled window. Usually NULL is passed for both parameters so\n"
+"   * that it creates the horizontal/vertical adjustments automatically. Setting\n"
+"   * the scrollbar policy to automatic allows the scrollbars to only show up\n"
+"   * when needed.\n"
+"   */\n"
+"  scrolled_window = gtk_scrolled_window_new (NULL, NULL);\n"
+"  /* Set the border width */\n"
+"  gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 10);\n"
+"  /* Extract our desired image from a file that we have */\n"
+"  image = gtk_image_new_from_file (\"gnome-image.png\");\n"
+"  /* And add it to the scrolled window */\n"
+"  gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), image);\n"
+"  /* Set the policy of the horizontal and vertical scrollbars to automatic.\n"
+"   * What this means is that the scrollbars are only present if needed.\n"
+"   */\n"
+"  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),\n"
+"                                  GTK_POLICY_AUTOMATIC,\n"
+"                                  GTK_POLICY_AUTOMATIC);\n"
+"\n"
+"  gtk_container_add (GTK_CONTAINER (window), scrolled_window);\n"
+"\n"
+"  gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+"  GtkApplication *app;\n"
+"  int status;\n"
+"\n"
+"  app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+"  g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+"  status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+"  g_object_unref (app);\n"
+"\n"
+"  return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include &lt;gtk/gtk.h&gt;\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+"          gpointer        user_data)\n"
+"{\n"
+"  /* Declare variables */\n"
+"  GtkWidget *window;\n"
+"  GtkWidget *scrolled_window;\n"
+"  GtkWidget *image;\n"
+"\n"
+"  /* Create a window with a title, and a default size */\n"
+"  window = gtk_application_window_new (app);\n"
+"  gtk_window_set_title (GTK_WINDOW (window), \"ScrolledWindow Example\");\n"
+"  gtk_window_set_default_size (GTK_WINDOW (window), 220, 200);\n"
+"\n"
+"  /* Create the scrolled window. Usually NULL is passed for both parameters so\n"
+"   * that it creates the horizontal/vertical adjustments automatically. Setting\n"
+"   * the scrollbar policy to automatic allows the scrollbars to only show up\n"
+"   * when needed.\n"
+"   */\n"
+"  scrolled_window = gtk_scrolled_window_new (NULL, NULL);\n"
+"  /* Set the border width */\n"
+"  gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 10);\n"
+"  /* Extract our desired image from a file that we have */\n"
+"  image = gtk_image_new_from_file (\"gnome-image.png\");\n"
+"  /* And add it to the scrolled window */\n"
+"  gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), image);\n"
+"  /* Set the policy of the horizontal and vertical scrollbars to automatic.\n"
+"   * What this means is that the scrollbars are only present if needed.\n"
+"   */\n"
+"  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),\n"
+"                                  GTK_POLICY_AUTOMATIC,\n"
+"                                  GTK_POLICY_AUTOMATIC);\n"
+"\n"
+"  gtk_container_add (GTK_CONTAINER (window), scrolled_window);\n"
+"\n"
+"  gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+"  GtkApplication *app;\n"
+"  int status;\n"
+"\n"
+"  app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+"  g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+"  status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+"  g_object_unref (app);\n"
+"\n"
+"  return status;\n"
+"}\n"
+
+#: C/scrolledwindow.c.page:36(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Standard-";
+#| "Enumerations.html#GtkOrientation\">Standard Enumerations</link>"
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk/stable/gtk-Standard-Enumerations.";
+"html#GtkPolicyType\">GtkPolicyType</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Standard-";
+"Enumerations.html#GtkOrientation\">Enumeraciones estándar</link>"
+
+#: C/scrolledwindow.py.page:7(info/title)
+msgctxt "text"
+msgid "ScrolledWindow (Python)"
+msgstr "ScrolledWindow (Python)"
+
+#: C/scrolledwindow.py.page:29(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -36055,11 +37295,11 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/scrolledwindow.py.page:31(section/title)
+#: C/scrolledwindow.py.page:32(section/title)
 msgid "Useful methods for a ScrolledWindow widget"
 msgstr "Métodos útiles para un widget «ScrolledWindow»"
 
-#: C/scrolledwindow.py.page:33(item/p)
+#: C/scrolledwindow.py.page:34(item/p)
 msgid ""
 "<code>set_policy(hscrollbar_policy, vscrollbar_policy)</code> where each of "
 "the arguments is one of <code>Gtk.Policy.AUTOMATIC, Gtk.Policy.ALWAYS, Gtk."
@@ -36074,7 +37314,7 @@ msgstr ""
 "aparecen si se necesitan, con <code>ALWAYS</code> aparecen siempre, y con "
 "<code>NEVER</code> no aparecen nunca."
 
-#: C/scrolledwindow.py.page:34(item/p)
+#: C/scrolledwindow.py.page:35(item/p)
 msgid ""
 "<code>add_with_viewport(widget)</code> is used to add the Gtk.Widget "
 "<code>widget</code> without native scrolling capabilities inside the window."
@@ -36083,7 +37323,7 @@ msgstr ""
 "code> «Gtk.Widget» sin capacidad de desplazamiento nativo dentro de la "
 "ventana."
 
-#: C/scrolledwindow.py.page:35(item/p)
+#: C/scrolledwindow.py.page:36(item/p)
 msgid ""
 "<code>set_placement(window_placement)</code> sets the placement of the "
 "contents with respect to the scrollbars for the scrolled window. The options "
@@ -36099,7 +37339,7 @@ msgstr ""
 "derecha de la ventana), <code>Gtk.CornerType.TOP_RIGHT, Gtk.CornerType."
 "BOTTOM_LEFT, Gtk.CornerType.BOTTOM_RIGHT</code>."
 
-#: C/scrolledwindow.py.page:36(item/p)
+#: C/scrolledwindow.py.page:37(item/p)
 msgid ""
 "<code>set_hadjustment(adjustment)</code> and <code>set_vadjustment"
 "(adjustment)</code> set the Gtk.Adjustment <code>adjustment</code>. This is "
@@ -36111,15 +37351,14 @@ msgid ""
 "<code>0</code>.)"
 msgstr ""
 "<code>set_hadjustment(ajuste)</code> y <code>set_vadjustment(ajuste)</code> "
-"establecen el <code>ajuste</code> «Gtk.Adjustment». Este es la "
-"representación de un valor con un límite superior e inferior, junto con "
-"pasos y páginas de incrementos, y un tamaño de página, y se construye como "
-"<code>Gtk.Adjustment(valor, mínimo, ,máximo, paso, página, tamaño_de_página)"
-"</code> donde los campos son del tipo <code>float</code>. Tenga en cuenta "
-"que <code>paso</code> no se usa en este caso, y puede establecerse a "
-"<code>0</code>."
+"establecen el <code>ajuste</code> «Gtk.Adjustment». Este es la representación "
+"de un valor con un límite superior e inferior, junto con pasos y páginas de "
+"incrementos, y un tamaño de página, y se construye como <code>Gtk.Adjustment"
+"(valor, mínimo, ,máximo, paso, página, tamaño_de_página)</code> donde los "
+"campos son del tipo <code>float</code>. Tenga en cuenta que <code>paso</"
+"code> no se usa en este caso, y puede establecerse a <code>0</code>."
 
-#: C/scrolledwindow.py.page:43(item/p) C/textview.py.page:98(item/p)
+#: C/scrolledwindow.py.page:44(item/p) C/textview.py.page:98(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkScrolledWindow.html";
 "\">GtkScrolledWindow</link>"
@@ -36203,7 +37442,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/separator.py.page:23(media)
+#: C/separator.py.page:24(media)
 msgctxt "_"
 msgid ""
 "external ref='media/separator.png' md5='8769b27662ce5c77f99e9ce33751a21a'"
@@ -36215,19 +37454,19 @@ msgctxt "text"
 msgid "Seperator (Python)"
 msgstr "Separador (Python)"
 
-#: C/separator.py.page:18(info/desc)
+#: C/separator.py.page:19(info/desc)
 msgid "A separator widget"
 msgstr "Un widget separador"
 
-#: C/separator.py.page:21(page/title)
+#: C/separator.py.page:22(page/title)
 msgid "Separator"
 msgstr "Separador"
 
-#: C/separator.py.page:24(page/p)
+#: C/separator.py.page:25(page/p)
 msgid "A horizontal and a vertical separator divide some labels."
 msgstr "Un separador horizontal y uno vertical dividen algunas etiquetas."
 
-#: C/separator.py.page:30(section/code)
+#: C/separator.py.page:31(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -36320,11 +37559,11 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/separator.py.page:34(section/title)
+#: C/separator.py.page:35(section/title)
 msgid "API Reference"
 msgstr "Referencias de la API"
 
-#: C/separator.py.page:38(item/p)
+#: C/separator.py.page:39(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSeparator.html";
 "\">GtkSeparator</link>"
@@ -36452,15 +37691,15 @@ msgctxt "text"
 msgid "Signals and callbacks (Python)"
 msgstr "Señales y retornos de llamada (Python)"
 
-#: C/signals-callbacks.py.page:12(info/desc)
+#: C/signals-callbacks.py.page:13(info/desc)
 msgid "An explanation of signals and callbacks in GTK+."
 msgstr "Una explicación de señales y retornos de llamada en GTK+."
 
-#: C/signals-callbacks.py.page:25(page/title)
+#: C/signals-callbacks.py.page:26(page/title)
 msgid "Signals and callbacks"
 msgstr "Señales y retornos de llamada"
 
-#: C/signals-callbacks.py.page:32(section/p)
+#: C/signals-callbacks.py.page:33(section/p)
 msgid ""
 "Like most GUI toolkits, GTK+ uses an event-driven programming model. When "
 "the user is doing nothing, GTK+ sits in the main loop and waits for input. "
@@ -36473,7 +37712,7 @@ msgstr ""
 "realiza alguna acción (como una pulsación del ratón), entonces el bucle "
 "principal «despierta» y le envía un evento a GTK+."
 
-#: C/signals-callbacks.py.page:34(section/p)
+#: C/signals-callbacks.py.page:35(section/p)
 msgid ""
 "When widgets receive an event, they frequently emit one or more signals. "
 "Signals notify your program that \"something interesting happened\" by "
@@ -36490,7 +37729,7 @@ msgstr ""
 "de llamada termina, GTK+ retorna al bucle principal y espera más entrada del "
 "usuario."
 
-#: C/signals-callbacks.py.page:36(section/p)
+#: C/signals-callbacks.py.page:37(section/p)
 msgid ""
 "A generic example is: <code>handler_id = widget.connect(\"event\", callback, "
 "data)</code>. <code>widget</code> is an instance of a widget we created "
@@ -36512,21 +37751,20 @@ msgstr ""
 "retorno_de_llamada, datos)</code>. <code>widget</code> es una instancia de "
 "un widget que creó anteriormente. A continuación, el <code>evento</code> en "
 "el que está interesado. Cada widget tiene sus propios eventos particulares "
-"que pueden ocurrir. Por ejemplo, si tiene un «Gtk.Button» generalmente "
-"querrá conectar el evento «clicked»: esto significa que cuando el botón se "
-"pulsa, la señal se envía. Otro ejemplo es la señal <code>notify::property</"
-"code>: cada vez que una <link xref=\"properties.py\">propiedad</link> se "
-"modifica en un «GObject», en lugar de sólo emitir la señal <code>notify</"
-"code>, GObject asocia como un detalle a la emisión de la señal el nombre de "
-"la propiedad modificada. Esto permite clientes que quieran notificarse de "
-"cambios de una sola propiedad para filtrar la mayoría de los eventos antes "
-"de recibirlos. Tercero, el argumento «retorno_de_llamada» es el nombre de la "
-"función de retorno de llamada, que contiene el código que se ejecuta cuando "
-"se emiten las señales del tipo especificado. Finalmente, el argumento "
-"opcional «datos» incluye cualquier dato que debe pasarse cuando se emita la "
-"señal."
-
-#: C/signals-callbacks.py.page:38(section/p)
+"que pueden ocurrir. Por ejemplo, si tiene un «Gtk.Button» generalmente querrá "
+"conectar el evento «clicked»: esto significa que cuando el botón se pulsa, la "
+"señal se envía. Otro ejemplo es la señal <code>notify::property</code>: cada "
+"vez que una <link xref=\"properties.py\">propiedad</link> se modifica en un "
+"«GObject», en lugar de sólo emitir la señal <code>notify</code>, GObject "
+"asocia como un detalle a la emisión de la señal el nombre de la propiedad "
+"modificada. Esto permite clientes que quieran notificarse de cambios de una "
+"sola propiedad para filtrar la mayoría de los eventos antes de recibirlos. "
+"Tercero, el argumento «retorno_de_llamada» es el nombre de la función de "
+"retorno de llamada, que contiene el código que se ejecuta cuando se emiten "
+"las señales del tipo especificado. Finalmente, el argumento opcional «datos» "
+"incluye cualquier dato que debe pasarse cuando se emita la señal."
+
+#: C/signals-callbacks.py.page:39(section/p)
 msgid ""
 "The function returns a number (the <code>handler_id</code>) that identifies "
 "this particular signal-callback pair. This number is required to disconnect "
@@ -36541,7 +37779,7 @@ msgstr ""
 "futuras o en progreso, como en <code>widget.disconnect(id_de_manejador)</"
 "code>."
 
-#: C/signals-callbacks.py.page:45(section/p)
+#: C/signals-callbacks.py.page:46(section/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gobject/stable/signal.html";
 "\">Signals</link> in GObject documentation"
@@ -36549,10 +37787,15 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gobject/stable/signal.html";
 "\">Señales</link> en la documentación de GObject"
 
-#: C/signals-callbacks.py.page:46(section/p)
+#: C/signals-callbacks.py.page:47(section/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/";
+#| "basics.html\">Basics - Main loop and Signals</link> in Python Gtk+ 3 "
+#| "Tutorial"
 msgid ""
 "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/basics.";
-"html\">Basics - Main loop and Signals</link> in Python Gtk+ 3 Tutorial"
+"html\">Basics - Main loop and Signals</link> in Python GTK+ 3 Tutorial"
 msgstr ""
 "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/basics.";
 "html\">Conceptos básicos: bucle principal y señales</link> en el tutorial de "
@@ -36572,7 +37815,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/spinbutton.c.page:25(media) C/spinbutton.py.page:22(media)
+#: C/spinbutton.c.page:25(media) C/spinbutton.py.page:23(media)
 #: C/spinbutton.vala.page:23(media)
 msgctxt "_"
 msgid ""
@@ -36590,11 +37833,11 @@ msgid "Retrieve an integer or floating point number"
 msgstr "Obtener un número entero o en coma flotante"
 
 #: C/spinbutton.c.page:23(page/title) C/spinbutton.js.page:23(page/title)
-#: C/spinbutton.py.page:21(page/title) C/spinbutton.vala.page:22(page/title)
+#: C/spinbutton.py.page:22(page/title) C/spinbutton.vala.page:22(page/title)
 msgid "SpinButton"
 msgstr "SpinButton"
 
-#: C/spinbutton.c.page:26(page/p) C/spinbutton.py.page:23(page/p)
+#: C/spinbutton.c.page:26(page/p) C/spinbutton.py.page:24(page/p)
 #: C/spinbutton.vala.page:24(page/p)
 msgid "Choose a number, by entering it or by clicking on the -/+ buttons!"
 msgstr "Elija un número, escribiéndolo o pulsando los botones -/+."
@@ -36830,10 +38073,10 @@ msgid ""
 "It's a text entry field which only accepts numbers, and which has plus and "
 "minus buttons to let you change the value without having to type anything in."
 msgstr ""
-"Un «SpinButton» no está relacionado con un <link xref=\"spinner.js"
-"\">Spinner</link>. Es un campo de entrada de texto que sólo acepta números, "
-"y que tiene botones más y menos para dejarle cambiar el valor sin tener que "
-"escribir nada."
+"Un «SpinButton» no está relacionado con un <link xref=\"spinner.js\">Spinner</"
+"link>. Es un campo de entrada de texto que sólo acepta números, y que tiene "
+"botones más y menos para dejarle cambiar el valor sin tener que escribir "
+"nada."
 
 #: C/spinbutton.js.page:26(page/p)
 msgid ""
@@ -37021,12 +38264,11 @@ msgid ""
 msgstr ""
 "Si quiere un control más fino sobre un botón incremental, o si quiere crear "
 "varios botones incrementales que usen todos los mismos parámetros, puede "
-"crear un objeto llamado <link href=\"http://www.roojs.org/seed/gir-1.2-";
-"gtk-3.0/gjs/Gtk.Adjustment.html\">Ajuste</link>. Entonces, podrá usar ese "
-"objeto como una propiedad de ajuste nueva del botón incremental, y "
-"establecer todos los valores de una vez. Después, puede cambiar todos los "
-"botones incrementales que usan ese ajuste cambiando las propiedades de su "
-"objeto."
+"crear un objeto llamado <link href=\"http://www.roojs.org/seed/gir-1.2-gtk-";
+"3.0/gjs/Gtk.Adjustment.html\">Ajuste</link>. Entonces, podrá usar ese objeto "
+"como una propiedad de ajuste nueva del botón incremental, y establecer todos "
+"los valores de una vez. Después, puede cambiar todos los botones "
+"incrementales que usan ese ajuste cambiando las propiedades de su objeto."
 
 #: C/spinbutton.js.page:112(section/p)
 msgid ""
@@ -37088,8 +38330,8 @@ msgstr ""
 "que mostrar el número de latas de atún por gatito, por lo que tiene una "
 "variable en el medio, que corresponde a una ecuación que usa las funciones "
 "«get_value» de los botones incrementales para descubrir sus valores. El "
-"método «floor» de las funciones «Math» de JavaScript se usa para redondear "
-"el número de latas atún por gatito al número entero inferior más cercano."
+"método «floor» de las funciones «Math» de JavaScript se usa para redondear el "
+"número de latas atún por gatito al número entero inferior más cercano."
 
 #: C/spinbutton.js.page:130(section/code)
 #, no-wrap
@@ -37501,11 +38743,11 @@ msgctxt "text"
 msgid "SpinButton (Python)"
 msgstr "SpinButton (Python)"
 
-#: C/spinbutton.py.page:18(info/desc)
+#: C/spinbutton.py.page:19(info/desc)
 msgid "Retrieve an integer or floating-point number from the user."
 msgstr "Obtener un número entero o en coma flotante del usuario."
 
-#: C/spinbutton.py.page:29(section/code)
+#: C/spinbutton.py.page:30(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -37616,21 +38858,10 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/spinbutton.py.page:33(section/title)
+#: C/spinbutton.py.page:34(section/title)
 msgid "Useful methods for a SpinButton widget"
 msgstr "Métodos útiles para un widget «SpinButton»"
 
-#: C/spinbutton.py.page:34(section/p)
-msgid ""
-"For an explanation of signals and callback functions, see <link xref="
-"\"signals-callbacks.py\">this page</link>. An example is the <code>\"value-"
-"changed\"</code> signal, emitted when the value of the spinbutton changes."
-msgstr ""
-"Para una explicación de señales y de funciones de retorno de llamada, "
-"consulte <link xref=\"signals-callbacks.py\">esta página</link>. Un ejemplo "
-"es la señal <code>\"value-changed\"</code>, emitida cuando el cambia el "
-"valor del botón incremental."
-
 #: C/spinbutton.py.page:35(section/p)
 msgid ""
 "A Gtk.Adjustment is needed to construct the Gtk.SpinButton. This is the "
@@ -37643,8 +38874,8 @@ msgid ""
 "<code>page_size</code> are not used in this case, and they should be set to "
 "<code>0</code>."
 msgstr ""
-"Se necesita un «Gtk.Adjustment» para construir el «Gtk.SpinButton». Este es "
-"la representación de un valor con un límite superior e inferior, junto con "
+"Se necesita un «Gtk.Adjustment» para construir el «Gtk.SpinButton». Este es la "
+"representación de un valor con un límite superior e inferior, junto con "
 "pasos y páginas de incrementos, y un tamaño de página, y se construye como "
 "<code>Gtk.Adjustment(valor, mínimo, ,máximo, paso, página, tamaño_de_página)"
 "</code> donde los campos son del tipo <code>float</code>; <code>paso</code> "
@@ -37653,7 +38884,15 @@ msgstr ""
 "<code>tamaño_de_página</code> no se usan en este caso, y deben establecerse "
 "a <code>0</code>."
 
-#: C/spinbutton.py.page:37(item/p)
+#: C/spinbutton.py.page:36(section/p)
+msgid ""
+"In line 23 the signal <code>\"value-changed\"</code> is connected to the "
+"callback function <code>spin_selected()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+
+#: C/spinbutton.py.page:38(item/p)
 msgid ""
 "If you want the value of the spinbutton to wrap around when they exceed the "
 "maximum or the minimum, set <code>set_wrap(True)</code>. The <code>\"wrapped"
@@ -37663,7 +38902,7 @@ msgstr ""
 "máximo o el mínimo, establezca <code>set_wrap(True)</code>. La señal <code>"
 "\"wrapped\"</code> se emite cuando esto sucede."
 
-#: C/spinbutton.py.page:38(item/p)
+#: C/spinbutton.py.page:39(item/p)
 msgid ""
 "<code>set_digits(digits)</code> sets the precision to be displayed by the "
 "spinbutton, up to 20 digits."
@@ -37671,7 +38910,7 @@ msgstr ""
 "<code>set_digits(dígitos)</code> establece la precisión que muestra el botón "
 "incremental, hasta 20 dígitos."
 
-#: C/spinbutton.py.page:39(item/p)
+#: C/spinbutton.py.page:40(item/p)
 msgid ""
 "To get the value of the spinbutton as an integer, use <code>get_value_as_int"
 "()</code>."
@@ -37679,7 +38918,7 @@ msgstr ""
 "Para obtener el valor del botón incremental como un entero, use "
 "<code>get_value_as_int()</code>."
 
-#: C/spinbutton.py.page:47(item/p)
+#: C/spinbutton.py.page:48(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSpinButton.html";
 "\">GtkSpinButton</link>"
@@ -37799,7 +39038,7 @@ msgstr ""
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
 #: C/spinner.c.page:23(media) C/spinner.js.page:21(media)
-#: C/spinner.py.page:21(media) C/spinner.vala.page:21(media)
+#: C/spinner.py.page:22(media) C/spinner.vala.page:21(media)
 msgctxt "_"
 msgid "external ref='media/spinner.png' md5='d04f2d81f1d72c6c2f97e8729947dfed'"
 msgstr ""
@@ -37811,17 +39050,17 @@ msgid "Spinner (C)"
 msgstr "Spinner (C)"
 
 #: C/spinner.c.page:18(info/desc) C/spinner.js.page:17(info/desc)
-#: C/spinner.py.page:17(info/desc) C/spinner.vala.page:17(info/desc)
+#: C/spinner.py.page:18(info/desc) C/spinner.vala.page:17(info/desc)
 msgid "A spinner animation"
 msgstr "Una animación giratoria"
 
 #: C/spinner.c.page:21(page/title) C/spinner.js.page:20(page/title)
-#: C/spinner.py.page:20(page/title) C/spinner.vala.page:20(page/title)
+#: C/spinner.py.page:21(page/title) C/spinner.vala.page:20(page/title)
 msgid "Spinner"
 msgstr "Spinner"
 
 #: C/spinner.c.page:24(page/p) C/spinner.js.page:22(page/p)
-#: C/spinner.py.page:22(page/p) C/spinner.vala.page:22(page/p)
+#: C/spinner.py.page:23(page/p) C/spinner.vala.page:22(page/p)
 msgid "This Spinner is stopped and started by pressing the spacebar."
 msgstr ""
 "Este indicador de progreso está detenido y se inicia al pulsar la barra "
@@ -38217,7 +39456,7 @@ msgctxt "text"
 msgid "Spinner (Python)"
 msgstr "Spinner (Python)"
 
-#: C/spinner.py.page:29(section/code)
+#: C/spinner.py.page:30(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -38322,7 +39561,7 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/spinner.py.page:31(note/p)
+#: C/spinner.py.page:32(note/p)
 msgid ""
 "<code>Gdk.keyval_name(event.keyval)</code> converts the key value "
 "<code>event.keyval</code> into a symbolic name. The names and corresponding "
@@ -38337,7 +39576,7 @@ msgstr ""
 "<code>GDK_KEY_BackSpace</code> se convierte en la cadena <code>\"BackSpace"
 "\"</code>."
 
-#: C/spinner.py.page:40(item/p) C/togglebutton.py.page:47(item/p)
+#: C/spinner.py.page:41(item/p) C/togglebutton.py.page:45(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSpinner.html";
 "\">GtkSpinner</link>"
@@ -38345,7 +39584,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSpinner.html";
 "\">GtkSpinner</link>"
 
-#: C/spinner.py.page:41(item/p)
+#: C/spinner.py.page:42(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling.html";
 "\">Key Values</link>"
@@ -38505,13 +39744,13 @@ msgctxt "text"
 msgid "Statusbar (C)"
 msgstr "Statusbar (C)"
 
-#: C/statusbar.c.page:21(info/desc) C/statusbar.py.page:20(info/desc)
+#: C/statusbar.c.page:21(info/desc) C/statusbar.py.page:19(info/desc)
 #: C/statusbar.vala.page:20(info/desc)
 msgid "Report messages of minor importance to the user"
 msgstr "Enviar mensajes de menor importancia al usuario"
 
 #: C/statusbar.c.page:24(page/title) C/statusbar.js.page:20(page/title)
-#: C/statusbar.py.page:23(page/title) C/statusbar.vala.page:23(page/title)
+#: C/statusbar.py.page:22(page/title) C/statusbar.vala.page:23(page/title)
 msgid "Statusbar"
 msgstr "Statusbar"
 
@@ -38970,10 +40209,10 @@ msgid ""
 msgstr ""
 "Este código crea los tres <link href=\"button.js.page\">Gtk.Buttons</link> "
 "que se usarán para empujar un mensaje nuevo a la barra de tareas, extraer el "
-"último, y limpiar todos los mensajes existentes. Los botones «back» y "
-"«clear» son <link href=\"http://developer.gnome.org/gtk/2.24/gtk-Stock-Items.";
-"html\">botones del almacén</link>, que se traducen automáticamente a "
-"cualquier idioma que GNOME soporte."
+"último, y limpiar todos los mensajes existentes. Los botones «back» y «clear» "
+"son <link href=\"http://developer.gnome.org/gtk/2.24/gtk-Stock-Items.html";
+"\">botones del almacén</link>, que se traducen automáticamente a cualquier "
+"idioma que GNOME soporte."
 
 #: C/statusbar.js.page:108(section/code)
 #, no-wrap
@@ -39099,8 +40338,8 @@ msgid ""
 "We use the push() function to push a new message onto the stack. Its first "
 "parameter is the context id, and its second is the message."
 msgstr ""
-"Se usa la función «push()» para empujar un mensaje nuevo a la pila. Su "
-"primer parámetro es el ID de contexto, y el segundo es el mensaje."
+"Se usa la función «push()» para empujar un mensaje nuevo a la pila. Su primer "
+"parámetro es el ID de contexto, y el segundo es el mensaje."
 
 #: C/statusbar.js.page:148(section/code)
 #, no-wrap
@@ -39601,7 +40840,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/statusbar.py.page:24(media) C/statusbar.vala.page:24(media)
+#: C/statusbar.py.page:23(media) C/statusbar.vala.page:24(media)
 msgctxt "_"
 msgid ""
 "external ref='media/statusbar.png' md5='eb1aca55315d6cda57b12a5f36058ba8'"
@@ -39613,7 +40852,7 @@ msgctxt "text"
 msgid "Statusbar (Python)"
 msgstr "Statusbar (Python)"
 
-#: C/statusbar.py.page:25(page/p)
+#: C/statusbar.py.page:24(page/p)
 msgid ""
 "This statusbar tells you if you click the button or if you press any key "
 "(and which key)."
@@ -39621,7 +40860,7 @@ msgstr ""
 "Esta barra de estado indica si ha pulsado el botón o si ha pulsado una tecla "
 "(y qué tecla ha pulsado)."
 
-#: C/statusbar.py.page:32(section/code)
+#: C/statusbar.py.page:31(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -39762,7 +41001,7 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/statusbar.py.page:34(note/p)
+#: C/statusbar.py.page:33(note/p)
 msgid ""
 "<code>Gdk.keyval_name(event.keyval)</code> converts the key value "
 "<code>event.keyval</code> into a symbolic name. The names and corresponding "
@@ -39777,10 +41016,18 @@ msgstr ""
 "<code>GDK_KEY_BackSpace</code> se convierte en la cadena <code>\"BackSpace"
 "\"</code>."
 
-#: C/statusbar.py.page:40(section/title)
+#: C/statusbar.py.page:39(section/title)
 msgid "Useful methods for a Statusbar widget"
 msgstr "Métodos útiles para un widget «Statusbar»"
 
+#: C/statusbar.py.page:40(section/p)
+msgid ""
+"In line 17 the signal <code>\"clicked\"</code> is connected to the callback "
+"function <code>button_clicked_cb()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+
 #: C/statusbar.py.page:42(item/p)
 msgid ""
 "<code>pop(context_id)</code> removes the first message in the statusbar "
@@ -39978,87 +41225,23 @@ msgctxt "text"
 msgid "Strings (Python)"
 msgstr "Cadenas (Python)"
 
-#: C/strings.py.page:12(info/desc)
+#: C/strings.py.page:13(info/desc)
 msgid "An explanation of how to deal with strings in Python and GTK+."
 msgstr "Una explicación de cómo trabajar con cadenas en Python y GTK+."
 
-#: C/strings.py.page:25(page/title)
+#: C/strings.py.page:26(page/title)
 msgid "Strings"
 msgstr "Cadenas"
 
-#: C/strings.py.page:30(section/title)
-msgid "Definitions"
-msgstr "Definiciones"
-
-#: C/strings.py.page:32(section/p)
-msgid ""
-"Conceptionally, a <em>string</em> is a list of <em>characters</em> such as "
-"'A', 'B', 'C' or 'È'. Characters are abstract representations and their "
-"meaning depends on the language and context they are used in. The "
-"<em>Unicode standard</em> describes how characters are represented by "
-"<em>code points</em>. For example the characters above are represented with "
-"the code points U+0041, U+0042, U+0043, and U+00C9, respectively. Basically, "
-"code points are numbers in the range from 0 to 0x10FFFF."
-msgstr ""
-"Conceptualmente, una <em>cadena</em> es una lista de <em>caracteres</em> "
-"como «A», «B», «C», o «È». Los caracteres son representaciones abstractas y "
-"su significado depende del lenguaje y el contexto en el que se usan. El "
-"<em>estándar Unicode</em> describe cómo sus significados se representan por "
-"<em>puntos de código</em>. Por ejemplo, los caracteres anteriores se "
-"representan con los puntos de código U+0041, U+0042, U+0043, y U+00C9, "
-"respectivamente. Básicamente, los puntos de código son números entre 0 y "
-"0x10FFFF"
-
-#: C/strings.py.page:34(section/p)
-msgid ""
-"The representation of a string as a list of code points is abstract. In "
-"order to convert this abstract representation into a sequence of bytes the "
-"Unicode string must be <em>encoded</em>. The simplest from of encoding is "
-"ASCII and is performed as follows:"
-msgstr ""
-"La representación de una cadena como una lista de puntos de código es "
-"abstracta. Para convertir esta representación abstracta en una secuencia de "
-"bytes, la cadena de Unicode debe <em>codificarse</em>. La forma más simple "
-"de codificación es ASCII y se ejecuta de la siguiente manera:"
-
-#: C/strings.py.page:37(item/p)
-msgid ""
-"If the code point is strictly less than 128, each byte is the same as the "
-"value of the code point."
+#: C/strings.py.page:30(note/p)
+msgid "GNOME strongly encourages the use of Python 3 for writing applications!"
 msgstr ""
-"Si el punto de código es estrictamente menos de 128, cada byte es igual al "
-"valor del punto de código."
 
-#: C/strings.py.page:38(item/p)
-msgid ""
-"If the code point is 128 or greater, the Unicode string can’t be represented "
-"in this encoding. (Python raises a <sys>UnicodeEncodeError</sys> exception "
-"in this case.)"
-msgstr ""
-"Si el punto de código es 128 o mayor, la cadena de Unicode no puede "
-"representarse en esta codificación. (Python eleva una excepción "
-"<sys>UnicodeEncodeError</sys> en este caso)."
-
-#: C/strings.py.page:41(section/p)
-msgid ""
-"Although ASCII encoding is simple to apply it can only encode for 128 "
-"different characters which is hardly enough. One of the most commonly used "
-"encodings that addresses this problem is UTF-8 (it can handle any Unicode "
-"code point). UTF stands for “Unicode Transformation Format”, and the ‘8’ "
-"means that 8-bit numbers are used in the encoding."
-msgstr ""
-"A pesar de que la codificación ASCII es simple de aplicar, sólo puede "
-"codificar 128 caracteres diferentes, lo que no es suficiente. Una de las "
-"codificaciones usadas más comúnmente que resuelve este problema es UTF-8 "
-"(puede manejar cualquier punto de código Unicode). UTF significa «Formato de "
-"Transformación de Unicode», y el «8» significa que se usan números de 8 bits "
-"en esta codificación."
-
-#: C/strings.py.page:46(section/title)
+#: C/strings.py.page:33(section/title)
 msgid "Strings in Python 2"
 msgstr "Cadenas en Python 2"
 
-#: C/strings.py.page:48(section/p)
+#: C/strings.py.page:35(section/p)
 msgid ""
 "Python 2 comes with two different kinds of objects that can be used to "
 "represent strings, <code>str</code> and <code>unicode</code>. Instances of "
@@ -40075,7 +41258,7 @@ msgstr ""
 "Unicode como enteros de 16 ó 32 bits, dependiendo de cómo se compiló su "
 "intérprete."
 
-#: C/strings.py.page:50(section/code)
+#: C/strings.py.page:37(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -40088,7 +41271,7 @@ msgstr ""
 "&gt;&gt;&gt; print unicode_string\n"
 "Fußbälle\n"
 
-#: C/strings.py.page:56(section/p)
+#: C/strings.py.page:43(section/p)
 msgid ""
 "Unicode strings can be converted to 8-bit strings with <code>unicode.encode()"
 "</code>. Python’s 8-bit strings have a <code>str.decode()</code> method that "
@@ -40100,7 +41283,7 @@ msgstr ""
 "método <code>str.decode()</code> que interpreta la cadena usando la "
 "codificación dada (es decir, es la inversa de <code>unicode.encode()</code>):"
 
-#: C/strings.py.page:58(section/code)
+#: C/strings.py.page:45(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -40125,7 +41308,7 @@ msgstr ""
 "&gt;&gt;&gt; unicode_string == utf8_string.decode(\"utf-8\")\n"
 "True"
 
-#: C/strings.py.page:69(section/p)
+#: C/strings.py.page:56(section/p)
 msgid ""
 "Unfortunately, Python 2.x allows you to mix <code>unicode</code> and "
 "<code>str</code> if the 8-bit string happened to contain only 7-bit (ASCII) "
@@ -40137,11 +41320,11 @@ msgstr ""
 "(ASCII), pero obtendría <sys>UnicodeDecodeError</sys> si contuviera valores "
 "no ASCII."
 
-#: C/strings.py.page:74(section/title)
+#: C/strings.py.page:61(section/title)
 msgid "Strings in Python 3"
 msgstr "Cadenas en Python 3"
 
-#: C/strings.py.page:76(section/p)
+#: C/strings.py.page:63(section/p)
 msgid ""
 "Since Python 3.0, all strings are stored as Unicode in an instance of the "
 "<code>str</code> type. Encoded strings on the other hand are represented as "
@@ -40158,7 +41341,7 @@ msgstr ""
 "code> a <code>bytes</code>, y <code>decode()</code> para ir de <code>bytes</"
 "code> a <code>str</code>."
 
-#: C/strings.py.page:78(section/p)
+#: C/strings.py.page:65(section/p)
 msgid ""
 "In addition, it is no longer possible to mix Unicode strings with encoded "
 "strings, because it will result in a <code>TypeError</code>:"
@@ -40166,7 +41349,7 @@ msgstr ""
 "Además, ya no es posible mezclar cadenas de Unicode con cadenas codificadas, "
 "porque se producirá un <code>TypeError</code>:"
 
-#: C/strings.py.page:80(section/code)
+#: C/strings.py.page:67(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -40193,11 +41376,11 @@ msgstr ""
 "&gt;&gt;&gt; text.encode(\"utf-8\") + data\n"
 "b'Fu\\xc3\\x9fb\\xc3\\xa4lle sind rund'"
 
-#: C/strings.py.page:95(section/title)
+#: C/strings.py.page:82(section/title)
 msgid "Unicode in GTK+"
 msgstr "Unicode en GTK+"
 
-#: C/strings.py.page:97(section/p)
+#: C/strings.py.page:84(section/p)
 msgid ""
 "GTK+ uses UTF-8 encoded strings for all text. This means that if you call a "
 "method that returns a string you will always obtain an instance of the "
@@ -40213,7 +41396,7 @@ msgstr ""
 "Sin embargo, por comodidad, PyGObject convertirá automáticamente cualquier "
 "instancia de Unicode a «str» si se proporciona como argumento:"
 
-#: C/strings.py.page:99(section/code)
+#: C/strings.py.page:86(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -40234,11 +41417,11 @@ msgstr ""
 "&gt;&gt;&gt; type(txt)\n"
 "&lt;type 'str'&gt;"
 
-#: C/strings.py.page:108(section/p)
+#: C/strings.py.page:95(section/p)
 msgid "Furthermore:"
 msgstr "Además:"
 
-#: C/strings.py.page:110(section/code)
+#: C/strings.py.page:97(section/code)
 #, no-wrap
 msgid ""
 "\n"
@@ -40247,7 +41430,7 @@ msgstr ""
 "\n"
 "&gt;&gt;&gt; txt == unicode_string"
 
-#: C/strings.py.page:113(section/p)
+#: C/strings.py.page:100(section/p)
 msgid ""
 "would return <code>False</code>, with the warning <code>__main__:1: "
 "UnicodeWarning: Unicode equal comparison failed to convert both arguments to "
@@ -40261,7 +41444,7 @@ msgstr ""
 "()</code> devolverá siempre una instancia de <code>str</code>; por lo tanto, "
 "<code>txt</code> y <code>unicode_string</code> no son iguales)."
 
-#: C/strings.py.page:115(section/p)
+#: C/strings.py.page:102(section/p)
 msgid ""
 "This is especially important if you want to internationalize your program "
 "using <link href=\"http://docs.python.org/library/gettext.html";
@@ -40274,7 +41457,7 @@ msgstr ""
 "code> devuelva cadenas de 8 bits codificadas con UTF-8 para todos los "
 "idiomas."
 
-#: C/strings.py.page:117(section/p)
+#: C/strings.py.page:104(section/p)
 msgid ""
 "In general it is recommended to not use <code>unicode</code> objects in GTK+ "
 "applications at all, and only use UTF-8 encoded <code>str</code> objects "
@@ -40284,19 +41467,25 @@ msgstr ""
 "aplicaciones de GTK+, y sólo usar objetos <code>str</code> codificados con "
 "UTF-8 dado que GTK+ no integra completamente objetos <code>unicode</code>."
 
-#: C/strings.py.page:119(section/p)
+#: C/strings.py.page:106(section/p)
+#, fuzzy
+#| msgid ""
+#| "With Python 3.x things are much more consistent, because PyGObject will "
+#| "automatically encode/decode to/from UTF-8 if you pass a string to a "
+#| "method or a method returns a string. Strings, or text, will always be "
+#| "represented as instances of <code>str</code> only:"
 msgid ""
 "With Python 3.x things are much more consistent, because PyGObject will "
 "automatically encode/decode to/from UTF-8 if you pass a string to a method "
 "or a method returns a string. Strings, or text, will always be represented "
-"as instances of <code>str</code> only:"
+"as instances of <code>str</code> only."
 msgstr ""
 "Con Python 3.x las cosas son mucho más consistentes, porque PyGObject "
 "automáticamente codifica/decodifica hacia/desde UTF-8 si le pasa una cadena "
 "a un método o un método devuelve una cadena. Las cadenas, o el texto, "
 "siempre se representarán sólo como instancias de <code>str</code>:"
 
-#: C/strings.py.page:126(section/p)
+#: C/strings.py.page:113(section/p)
 msgid ""
 "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/unicode.";
 "html\">How To Deal With Strings - The Python GTK+ 3 Tutorial</link>"
@@ -40318,7 +41507,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/switch.c.page:22(media) C/switch.py.page:26(media)
+#: C/switch.c.page:22(media) C/switch.py.page:22(media)
 #: C/switch.vala.page:25(media)
 msgctxt "_"
 msgid ""
@@ -40340,7 +41529,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/switch.c.page:23(media) C/switch.py.page:27(media)
+#: C/switch.c.page:23(media) C/switch.py.page:23(media)
 #: C/switch.vala.page:26(media)
 msgctxt "_"
 msgid ""
@@ -40353,13 +41542,13 @@ msgctxt "text"
 msgid "Switch (C)"
 msgstr "Interruptor (C)"
 
-#: C/switch.c.page:17(info/desc) C/switch.py.page:22(info/desc)
+#: C/switch.c.page:17(info/desc) C/switch.py.page:18(info/desc)
 #: C/switch.vala.page:21(info/desc)
 msgid "A \"light switch\" style toggle"
 msgstr "Un interruptor estilo «ligero»"
 
 #: C/switch.c.page:20(page/title) C/switch.js.page:20(page/title)
-#: C/switch.py.page:25(page/title) C/switch.vala.page:24(page/title)
+#: C/switch.py.page:21(page/title) C/switch.vala.page:24(page/title)
 msgid "Switch"
 msgstr "Interruptor"
 
@@ -41531,11 +42720,11 @@ msgctxt "text"
 msgid "Switch (Python)"
 msgstr "Interruptor (Python)"
 
-#: C/switch.py.page:29(page/p)
+#: C/switch.py.page:25(page/p)
 msgid "This Switch makes the title appears and disappear."
 msgstr "Este interruptor hace que el título aparezca y desaparezca."
 
-#: C/switch.py.page:36(section/code)
+#: C/switch.py.page:32(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -41652,11 +42841,19 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/switch.py.page:40(section/title)
+#: C/switch.py.page:36(section/title)
 msgid "Useful methods for a Switch widget"
 msgstr "Métodos útiles para un widget interruptor"
 
-#: C/switch.py.page:48(item/p)
+#: C/switch.py.page:37(section/p)
+msgid ""
+"In line 17 the signal <code>\"notify::active\"</code> is connected to the "
+"callback function <code>activate_cb()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+
+#: C/switch.py.page:44(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSwitch.html";
 "\">GtkSwitch</link>"
@@ -41792,7 +42989,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/textview.c.page:26(media) C/textview.py.page:37(media)
+#: C/textview.c.page:26(media) C/textview.py.page:38(media)
 #: C/textview.vala.page:26(media)
 msgctxt "_"
 msgid ""
@@ -41813,7 +43010,7 @@ msgstr "Un widget que muestra un GtkTextBuffer"
 msgid "TextView widget"
 msgstr "Widget TextView"
 
-#: C/textview.c.page:21(note/p) C/textview.py.page:31(note/p)
+#: C/textview.c.page:21(note/p) C/textview.py.page:32(note/p)
 #: C/textview.vala.page:21(note/p)
 msgid "If we press \"enter\", we have a new line."
 msgstr "Si se pulsa «Intro» se obtiene una línea nueva."
@@ -42024,7 +43221,7 @@ msgstr "TextView (JavaScript)"
 msgid "A multiline text editor"
 msgstr "Un editor de texto multilínea"
 
-#: C/textview.js.page:24(page/title) C/textview.py.page:28(page/title)
+#: C/textview.js.page:24(page/title) C/textview.py.page:29(page/title)
 msgid "TextView"
 msgstr "TextView"
 
@@ -42037,9 +43234,8 @@ msgstr ""
 
 #: C/textview.js.page:28(item/p)
 msgid ""
-"At the bottom there is a <link href=\"http://www.roojs.org/seed/gir-1.2-";
-"gtk-3.0/gjs/Gtk.TextBuffer.html\">TextBuffer</link>. This holds the text "
-"itself."
+"At the bottom there is a <link href=\"http://www.roojs.org/seed/gir-1.2-gtk-";
+"3.0/gjs/Gtk.TextBuffer.html\">TextBuffer</link>. This holds the text itself."
 msgstr ""
 "En la parte inferior hay un <link href=\"http://www.roojs.org/seed/gir-1.2-";
 "gtk-3.0/gjs/Gtk.TextBuffer.html\">Búfer de texto</link>. Este almacena el "
@@ -42082,9 +43278,9 @@ msgid ""
 "talk to a (make-believe) penguin, and checks the TextBuffer to see if you "
 "typed the word \"fish\" anywhere in it."
 msgstr ""
-"Si quiere cambiar el texto que se muestra en el «TextView», actúe en el "
-"búfer de texto, dado que es lo que realmente contiene al texto. Es lo mismo "
-"si quiere ver lo que se ha introducido en él. Esta aplicación de ejemplo le "
+"Si quiere cambiar el texto que se muestra en el «TextView», actúe en el búfer "
+"de texto, dado que es lo que realmente contiene al texto. Es lo mismo si "
+"quiere ver lo que se ha introducido en él. Esta aplicación de ejemplo le "
 "permite hablar con un pingüino de fantasía, y verifica el búfer de texto "
 "para ver si ha introducido la palabra «fish» en él."
 
@@ -42255,9 +43451,9 @@ msgid ""
 "things in."
 msgstr ""
 "El primer paso es crear un «TextBuffer» para poner dentro las palabras. "
-"Después de eso se crea el «TextView», y se le dice que use el «TextBuffer» "
-"que se creó como su búfer. También se configura para que sea editable, dado "
-"que se quiere poder introducir cosas nuevas dentro."
+"Después de eso se crea el «TextView», y se le dice que use el «TextBuffer» que "
+"se creó como su búfer. También se configura para que sea editable, dado que "
+"se quiere poder introducir cosas nuevas dentro."
 
 #: C/textview.js.page:113(section/p)
 msgid ""
@@ -42557,8 +43753,8 @@ msgid ""
 msgstr ""
 "Dado que se quiere limpiar el búfer de texto después de cada vez que pulsa "
 "«Send», se configura <file>this.buffer.text</file> para que contenga una "
-"cadena vacía justo entonces. Después, se devuelve el foco al «TextView», "
-"para poder seguir escribiendo sin tener que pulsar en él antes."
+"cadena vacía justo entonces. Después, se devuelve el foco al «TextView», para "
+"poder seguir escribiendo sin tener que pulsar en él antes."
 
 #: C/textview.js.page:233(section/code)
 #, no-wrap
@@ -42923,15 +44119,15 @@ msgctxt "text"
 msgid "TextView (Python)"
 msgstr "TextView (Python)"
 
-#: C/textview.py.page:25(info/desc)
+#: C/textview.py.page:26(info/desc)
 msgid "Widget that displays a GtkTextBuffer"
 msgstr "Un widget que muestra un GtkTextBuffer"
 
-#: C/textview.py.page:30(note/p)
+#: C/textview.py.page:31(note/p)
 msgid "This is an example of Gtk.TextView."
 msgstr "Esto es un ejemplo de Gtk.TextView."
 
-#: C/textview.py.page:32(note/p)
+#: C/textview.py.page:33(note/p)
 msgid ""
 "But we can also have a new line if we write a long sentence (the text will "
 "wrap breaking lines between words)."
@@ -42939,19 +44135,19 @@ msgstr ""
 "Pero también se puede obtener una línea nueva si se escribe una frase larga "
 "(el texto se ajustará a los saltos de línea entre palabras."
 
-#: C/textview.py.page:33(note/p)
+#: C/textview.py.page:34(note/p)
 msgid "If we have a loooooooooooooooooooooooooooooooooooong"
 msgstr "Si es escribe una palabra laaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarga"
 
-#: C/textview.py.page:34(note/p)
+#: C/textview.py.page:35(note/p)
 msgid "(that was long)"
 msgstr "(esto es una palabra larga)"
 
-#: C/textview.py.page:35(note/p)
+#: C/textview.py.page:36(note/p)
 msgid "word, an horizontal scrollbar will appear."
 msgstr ", aparecerá una barra de desplazamiento horizontal."
 
-#: C/textview.py.page:44(section/code)
+#: C/textview.py.page:45(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -43038,7 +44234,7 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/textview.py.page:48(section/title)
+#: C/textview.py.page:49(section/title)
 msgid "Useful methods for a TextView widget"
 msgstr "Métodos útiles para un widget «TextView»"
 
@@ -43079,8 +44275,8 @@ msgid ""
 "<code>set_editable(False)</code>. If the buffer has no editable text, it "
 "might be a good idea to use <code>set_cursor_visible(False)</code> as well."
 msgstr ""
-"El widget «TextView» es editable de manera predeterminada. Si prefiere que "
-"no lo sea, use <code>set_editable(False)</code>. Si el búfer no tiene texto "
+"El widget «TextView» es editable de manera predeterminada. Si prefiere que no "
+"lo sea, use <code>set_editable(False)</code>. Si el búfer no tiene texto "
 "editable, puede ser una buena idea usar <code>set_cursor_visible(False)</"
 "code> también."
 
@@ -43153,8 +44349,8 @@ msgid ""
 "code> is omitted or <code>-1</code>, the text is inserted completely."
 msgstr ""
 "<code>insert(iter, \"texto\", longitud)</code>, donde <code>iter</code> es "
-"un iterador de texto y <code>longitud</code> es un entero positivo o "
-"<code>-1</code>, inserta en el búfer en <code>iter</code> los primeros "
+"un iterador de texto y <code>longitud</code> es un entero positivo o <code>-"
+"1</code>, inserta en el búfer en <code>iter</code> los primeros "
 "<code>longitud</code> caracteres del <code>texto</code>. Si se omite "
 "<code>longitud</code> o es <code>-1</code>, se inserta todo el texto."
 
@@ -43292,13 +44488,13 @@ msgstr ""
 "de las siguientes, concatenándolas con el operador OR a nivel de bits <code>|"
 "</code>: <code>0</code> (la coincidencia debe ser exacta); <code>Gtk."
 "TextSearchFlags.VISIBLE_ONLY</code> (la coincidencia puede tener texto "
-"invisible intercalado en «aguja»); <code>Gtk.TextSearchFlags.TEXT_ONLY</"
-"code> (la coincidencia puede tener «pixbufs» o widgets hijos mezclados "
-"dentro del rango coincidente); <code>Gtk.TextSearchFlags.CASE_INSENSITIVE</"
-"code> (el texto coincidirá sin importar su capitalización). El método "
-"devuelve una tupla que contiene un <code>Gtk.TextIter</code> apuntando al "
-"inicio y al primer carácter después de la coincidencia; si no se encuentra, "
-"se devuelve <code>None</code>."
+"invisible intercalado en «aguja»); <code>Gtk.TextSearchFlags.TEXT_ONLY</code> "
+"(la coincidencia puede tener «pixbufs» o widgets hijos mezclados dentro del "
+"rango coincidente); <code>Gtk.TextSearchFlags.CASE_INSENSITIVE</code> (el "
+"texto coincidirá sin importar su capitalización). El método devuelve una "
+"tupla que contiene un <code>Gtk.TextIter</code> apuntando al inicio y al "
+"primer carácter después de la coincidencia; si no se encuentra, se devuelve "
+"<code>None</code>."
 
 #: C/textview.py.page:87(item/p)
 msgid ""
@@ -43460,7 +44656,7 @@ msgstr ""
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
 #: C/togglebutton.c.page:26(media) C/togglebutton.js.page:21(media)
-#: C/togglebutton.py.page:24(media) C/togglebutton.vala.page:24(media)
+#: C/togglebutton.py.page:22(media) C/togglebutton.vala.page:24(media)
 msgctxt "_"
 msgid ""
 "external ref='media/togglebutton.png' md5='791e062613d4f9bd5936390b0aa18448'"
@@ -43472,18 +44668,18 @@ msgctxt "text"
 msgid "ToggleButton (C)"
 msgstr "ToggleButton (C)"
 
-#: C/togglebutton.c.page:21(info/desc) C/togglebutton.py.page:20(info/desc)
+#: C/togglebutton.c.page:21(info/desc) C/togglebutton.py.page:18(info/desc)
 #: C/togglebutton.vala.page:20(info/desc)
 msgid "A button which retains state"
 msgstr "Un botón que mantiene su estado"
 
 #: C/togglebutton.c.page:24(page/title) C/togglebutton.js.page:20(page/title)
-#: C/togglebutton.py.page:23(page/title)
+#: C/togglebutton.py.page:21(page/title)
 #: C/togglebutton.vala.page:23(page/title)
 msgid "ToggleButton"
 msgstr "ToggleButton"
 
-#: C/togglebutton.c.page:27(page/p) C/togglebutton.py.page:25(page/p)
+#: C/togglebutton.c.page:27(page/p) C/togglebutton.py.page:23(page/p)
 #: C/togglebutton.vala.page:25(page/p)
 msgid "When this ToggleButton is in an active state, the spinner spins."
 msgstr "Cuando este ToggleButton está activado, el indicador de progreso gira."
@@ -43688,8 +44884,8 @@ msgid ""
 "to popped out and vice-versa, it sends out the \"toggled\" signal, which you "
 "can connect to a function to do something."
 msgstr ""
-"El método «get_active» del ToggleButton devuelve «true» si está presionado, "
-"y «false» si no lo está. Su método «set_active» se usa si quiere cambiar su "
+"El método «get_active» del ToggleButton devuelve «true» si está presionado, y "
+"«false» si no lo está. Su método «set_active» se usa si quiere cambiar su "
 "estado sin la necesidad de pulsarlo. Cuando cambia su estado de «pulsado» a "
 "«no pulsado» y viceversa, envía la señal «toggled», que puede conectar a una "
 "función para hacer algo."
@@ -43825,9 +45021,8 @@ msgid ""
 msgstr ""
 "Crear un ToggleButton es muy similar a crear un <link xref=\"button.js"
 "\">Button</link> normal. La mayor diferencia es que está manejando una señal "
-"«toggled» en lugar de una «clicked». Este código vincula la función "
-"_onToggle a esa señal, para que se llame cada vez que se conmute el "
-"ToggleButton."
+"«toggled» en lugar de una «clicked». Este código vincula la función _onToggle "
+"a esa señal, para que se llame cada vez que se conmute el ToggleButton."
 
 #: C/togglebutton.js.page:100(section/code)
 #, no-wrap
@@ -44122,7 +45317,7 @@ msgctxt "text"
 msgid "ToggleButton (Python)"
 msgstr "ToggleButton (Python)"
 
-#: C/togglebutton.py.page:32(section/code)
+#: C/togglebutton.py.page:30(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -44239,12 +45434,20 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/togglebutton.py.page:37(section/title)
+#: C/togglebutton.py.page:35(section/title)
 msgid "Useful methods for a ToggleButton widget"
 msgstr "Métodos útiles para un widget «ToggleButton»"
 
-#: C/togglebutton.py.page:46(item/p) C/toolbar.py.page:57(item/p)
-#: C/toolbar_builder.py.page:195(item/p)
+#: C/togglebutton.py.page:36(section/p)
+msgid ""
+"In line 22 the signal <code>\"toggled\"</code> is connected to the callback "
+"function <code>toggled_cb()</code> using <code><var>widget</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+
+#: C/togglebutton.py.page:44(item/p) C/toolbar.py.page:59(item/p)
+#: C/toolbar_builder.py.page:197(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkWidget.html";
 "\">GtkWidget</link>"
@@ -44404,29 +45607,39 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/toolbar.js.page:21(media) C/toolbar.py.page:23(media)
-#: C/toolbar.vala.page:23(media) C/toolbar_builder.py.page:36(media)
-#: C/toolbar_builder.vala.page:24(media)
+#.
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/toolbar.c.page:24(media) C/toolbar.js.page:21(media)
+#: C/toolbar.py.page:24(media) C/toolbar.vala.page:23(media)
+#: C/toolbar_builder.py.page:37(media) C/toolbar_builder.vala.page:24(media)
 msgctxt "_"
 msgid "external ref='media/toolbar.png' md5='f0350855eedf6343952b72d6d906f738'"
 msgstr ""
 "external ref='media/toolbar.png' md5='f0350855eedf6343952b72d6d906f738'"
 
-#: C/toolbar.js.page:7(info/title)
+#: C/toolbar.c.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Toolbar (Vala)"
 msgctxt "text"
-msgid "Toolbar (JavaScript)"
-msgstr "Toolbar (JavaScript)"
+msgid "Toolbar (C)"
+msgstr "Barra de herramientas (Vala)"
 
-#: C/toolbar.js.page:17(info/desc)
-msgid "A bar of tools"
+#: C/toolbar.c.page:19(info/desc) C/toolbar.vala.page:18(info/desc)
+#: C/toolbar_builder.vala.page:19(info/desc)
+msgid "A bar of buttons"
 msgstr "Una barra de botones"
 
-#: C/toolbar.js.page:20(page/title) C/toolbar.py.page:21(page/title)
-#: C/toolbar.vala.page:21(page/title)
+#: C/toolbar.c.page:22(page/title) C/toolbar.js.page:20(page/title)
+#: C/toolbar.py.page:22(page/title) C/toolbar.vala.page:21(page/title)
 msgid "Toolbar"
 msgstr "Barra de herramientas"
 
-#: C/toolbar.js.page:22(page/p) C/toolbar.vala.page:24(page/p)
+#: C/toolbar.c.page:25(page/p) C/toolbar.js.page:22(page/p)
+#: C/toolbar.vala.page:24(page/p)
 msgid ""
 "Toolbar can contain either text or stock icons. In this sample we use stock "
 "icons. This example has fullscreen functionality."
@@ -44435,6 +45648,498 @@ msgstr ""
 "ejemplo se usan iconos del almacén. Este ejemplo funciona a pantalla "
 "completa."
 
+#: C/toolbar.c.page:26(page/p)
+#, fuzzy
+#| msgid ""
+#| "This example uses SimpleActions (window and app). App actions can easily "
+#| "be added the the app menu."
+msgid ""
+"This example uses SimpleActions (window and app). App actions can easily be "
+"added to the app menu."
+msgstr ""
+"Este ejemplo usa SimpleActions (ventana y aplicación). Las acciones de la "
+"aplicación se pueden añadir fácilmente al menú de la aplicación."
+
+#: C/toolbar.c.page:28(page/code)
+#, no-wrap
+msgid ""
+"\n"
+"#include &lt;gtk/gtk.h&gt;\n"
+"\n"
+"/* Declare these two Toolbuttons, as they will be used in both the fullscreen\n"
+" * action callback as well as the activate function.\n"
+" */\n"
+"GtkToolItem *fullscreen_button;\n"
+"GtkToolItem *leavefullscreen_button;\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the undo action */\n"
+"static void\n"
+"undo_callback (GSimpleAction *simple,\n"
+"               GVariant      *parameter,\n"
+"               gpointer       user_data)\n"
+"{\n"
+"  g_print (\"You clicked \\\"Undo\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the fullscreen action */\n"
+"static void\n"
+"fullscreen_callback (GSimpleAction *simple,\n"
+"                     GVariant      *parameter,\n"
+"                     gpointer       user_data)\n"
+"{\n"
+"  GdkWindow *window = gtk_widget_get_window (GTK_WIDGET (user_data));\n"
+"\n"
+"  GdkWindowState current_state = gdk_window_get_state (window);\n"
+"\n"
+"  /* If the window is currently in fullscreen mode */\n"
+"  if ( (current_state &amp; GDK_WINDOW_STATE_FULLSCREEN) != 0)\n"
+"    {\n"
+"      /* Minimize the window and change to the fullscreen button */\n"
+"      gdk_window_unfullscreen (window);\n"
+"      gtk_widget_hide (GTK_WIDGET(leavefullscreen_button));\n"
+"      gtk_widget_show (GTK_WIDGET(fullscreen_button));\n"
+"    }\n"
+"  else\n"
+"    {\n"
+"      /* Maximize the window, and change to the unfullscreen button */\n"
+"      gdk_window_fullscreen (window);\n"
+"      gtk_widget_hide (GTK_WIDGET (fullscreen_button));\n"
+"      gtk_widget_show (GTK_WIDGET (leavefullscreen_button));\n"
+"    }\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Our \"main\" function */\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+"          gpointer        user_data)\n"
+"{\n"
+"  /* Initialize variables */\n"
+"  GtkWidget *window;\n"
+"  GtkWidget *grid;\n"
+"  GtkWidget *toolbar;\n"
+"\n"
+"  GtkToolItem *new_button;\n"
+"  GtkToolItem *open_button;\n"
+"  GtkToolItem *undo_button;\n"
+"\n"
+"  GtkStyleContext *style_context;\n"
+"\n"
+"  GSimpleAction *undo_action;\n"
+"  GSimpleAction *fullscreen_action;\n"
+"  GSimpleAction *leavefullscreen_action;\n"
+"\n"
+"  /* Create a window with a title and a default size */\n"
+"  window = gtk_application_window_new (app);\n"
+"  gtk_window_set_title (GTK_WINDOW (window), \"Toolbar Example\");\n"
+"  gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n"
+"\n"
+"  /* Here we begin to create the toolbar */\n"
+"  toolbar = gtk_toolbar_new ();\n"
+"  /* Set the toolbar to be the primary toolbar of the application */\n"
+"  style_context = gtk_widget_get_style_context (toolbar);\n"
+"  gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+"  /* Create a button for the \"new\" action, with a stock image */\n"
+"  new_button = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);\n"
+"  /* Show the \"new\" button's label */\n"
+"  gtk_tool_item_set_is_important (new_button, TRUE);\n"
+"  /* Insert the button in the desired position within the toolbar */\n"
+"  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), new_button, 0);\n"
+"  /* Show the button */\n"
+"  gtk_widget_show (GTK_WIDGET (new_button));\n"
+"  /* Set the action name for the \"new\" action. We use \"app.new\" to\n"
+"   * indicate that the action controls the application.\n"
+"   */\n"
+"  gtk_actionable_set_action_name (GTK_ACTIONABLE (new_button), \"app.new\");\n"
+"\n"
+"  /* Repeat the same steps for the \"open\" action */\n"
+"  open_button = gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);\n"
+"  gtk_tool_item_set_is_important (open_button, TRUE);\n"
+"  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), open_button, 1);\n"
+"  gtk_widget_show (GTK_WIDGET (open_button));\n"
+"  gtk_actionable_set_action_name (GTK_ACTIONABLE (open_button), \"app.open\");\n"
+"\n"
+"  /* Repeat the same steps for the \"undo\" action */\n"
+"  undo_button = gtk_tool_button_new_from_stock (GTK_STOCK_UNDO);\n"
+"  gtk_tool_item_set_is_important (undo_button, TRUE);\n"
+"  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), undo_button, 2);\n"
+"  gtk_widget_show (GTK_WIDGET (undo_button));\n"
+"  /* In this case, we use \"win.undo\" to indicate that\n"
+"   * the action controls only the window\n"
+"   */\n"
+"  gtk_actionable_set_action_name (GTK_ACTIONABLE (undo_button), \"win.undo\");\n"
+"\n"
+"  /* Repeat the same steps for the \"fullscreen\" action */\n"
+"  fullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_FULLSCREEN);\n"
+"  gtk_tool_item_set_is_important (fullscreen_button, TRUE);\n"
+"  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), fullscreen_button, 3);\n"
+"  gtk_widget_show (GTK_WIDGET (fullscreen_button));\n"
+"  gtk_actionable_set_action_name (GTK_ACTIONABLE (fullscreen_button),\n"
+"                                  \"win.fullscreen\");\n"
+"\n"
+"  /*Repeat the same steps for the \"leavefullscreen\" action */\n"
+"  leavefullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_LEAVE_FULLSCREEN);\n"
+"  gtk_tool_item_set_is_important (leavefullscreen_button, TRUE);\n"
+"  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), leavefullscreen_button, 3);\n"
+"  /* The only difference here is that we don't show the leavefullscreen button,\n"
+"   * as it will later replace the fullscreen button.\n"
+"   */\n"
+"  gtk_actionable_set_action_name (GTK_ACTIONABLE (leavefullscreen_button),\n"
+"                                  \"win.leavefullscreen\");\n"
+"\n"
+"  /* Once we've created the bare-bones of the toolbar, we make\n"
+"   * sure it has enough horizontal space.\n"
+"   */\n"
+"  gtk_widget_set_hexpand (toolbar, TRUE);\n"
+"  gtk_widget_show (toolbar);\n"
+"\n"
+"  /* Attach the toolbar to the grid and add it to the overall window */\n"
+"  grid = gtk_grid_new ();\n"
+"  gtk_grid_attach (GTK_GRID (grid), toolbar, 0, 0, 1, 1);\n"
+"  gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
+"  gtk_widget_show (GTK_WIDGET (grid));\n"
+"\n"
+"  /* Use the action names to create the actions that control the window, and\n"
+"   * connect them to the appropriate callbackfunctions.\n"
+"   */\n"
+"  undo_action = g_simple_action_new (\"undo\", NULL);\n"
+"  g_signal_connect (undo_action, \"activate\", G_CALLBACK (undo_callback),\n"
+"                    GTK_WINDOW (window));\n"
+"  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (undo_action));\n"
+"\n"
+"  fullscreen_action = g_simple_action_new (\"fullscreen\", NULL);\n"
+"  g_signal_connect (fullscreen_action, \"activate\", G_CALLBACK (fullscreen_callback),\n"
+"                    GTK_WINDOW (window));\n"
+"  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (fullscreen_action));\n"
+"\n"
+"  leavefullscreen_action = g_simple_action_new (\"leavefullscreen\", NULL);\n"
+"  g_signal_connect (leavefullscreen_action, \"activate\", G_CALLBACK (fullscreen_callback),\n"
+"                    GTK_WINDOW (window));\n"
+"  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (leavefullscreen_action));\n"
+"\n"
+"  gtk_widget_show (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the new action */\n"
+"static void\n"
+"new_callback (GSimpleAction *simple,\n"
+"              GVariant      *parameter,\n"
+"              gpointer       user_data)\n"
+"{\n"
+"  g_print (\"You clicked \\\"New\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the open action */\n"
+"static void\n"
+"open_callback (GSimpleAction *simple,\n"
+"               GVariant      *parameter,\n"
+"               gpointer       user_data)\n"
+"{\n"
+"  g_print (\"You clicked \\\"Open\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* In this function, we create the actions in which control the window, and\n"
+" * connect their signals to the appropriate callback function.\n"
+" */\n"
+"static void\n"
+"startup (GApplication *app,\n"
+"         gpointer      user_data)\n"
+"{\n"
+"  GSimpleAction *new_action;\n"
+"  GSimpleAction *open_action;\n"
+"\n"
+"  new_action = g_simple_action_new (\"new\", NULL);\n"
+"  g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
+"  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
+"\n"
+"  open_action = g_simple_action_new (\"open\", NULL);\n"
+"  g_signal_connect (open_action, \"activate\", G_CALLBACK (open_callback), app);\n"
+"  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (open_action));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the application */\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+"  GtkApplication *app;\n"
+"  int status;\n"
+"\n"
+"  app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+"  g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+"  g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+"  status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+"  g_object_unref (app);\n"
+"\n"
+"  return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include &lt;gtk/gtk.h&gt;\n"
+"\n"
+"/* Declare these two Toolbuttons, as they will be used in both the fullscreen\n"
+" * action callback as well as the activate function.\n"
+" */\n"
+"GtkToolItem *fullscreen_button;\n"
+"GtkToolItem *leavefullscreen_button;\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the undo action */\n"
+"static void\n"
+"undo_callback (GSimpleAction *simple,\n"
+"               GVariant      *parameter,\n"
+"               gpointer       user_data)\n"
+"{\n"
+"  g_print (\"You clicked \\\"Undo\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the fullscreen action */\n"
+"static void\n"
+"fullscreen_callback (GSimpleAction *simple,\n"
+"                     GVariant      *parameter,\n"
+"                     gpointer       user_data)\n"
+"{\n"
+"  GdkWindow *window = gtk_widget_get_window (GTK_WIDGET (user_data));\n"
+"\n"
+"  GdkWindowState current_state = gdk_window_get_state (window);\n"
+"\n"
+"  /* If the window is currently in fullscreen mode */\n"
+"  if ( (current_state &amp; GDK_WINDOW_STATE_FULLSCREEN) != 0)\n"
+"    {\n"
+"      /* Minimize the window and change to the fullscreen button */\n"
+"      gdk_window_unfullscreen (window);\n"
+"      gtk_widget_hide (GTK_WIDGET(leavefullscreen_button));\n"
+"      gtk_widget_show (GTK_WIDGET(fullscreen_button));\n"
+"    }\n"
+"  else\n"
+"    {\n"
+"      /* Maximize the window, and change to the unfullscreen button */\n"
+"      gdk_window_fullscreen (window);\n"
+"      gtk_widget_hide (GTK_WIDGET (fullscreen_button));\n"
+"      gtk_widget_show (GTK_WIDGET (leavefullscreen_button));\n"
+"    }\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Our \"main\" function */\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+"          gpointer        user_data)\n"
+"{\n"
+"  /* Initialize variables */\n"
+"  GtkWidget *window;\n"
+"  GtkWidget *grid;\n"
+"  GtkWidget *toolbar;\n"
+"\n"
+"  GtkToolItem *new_button;\n"
+"  GtkToolItem *open_button;\n"
+"  GtkToolItem *undo_button;\n"
+"\n"
+"  GtkStyleContext *style_context;\n"
+"\n"
+"  GSimpleAction *undo_action;\n"
+"  GSimpleAction *fullscreen_action;\n"
+"  GSimpleAction *leavefullscreen_action;\n"
+"\n"
+"  /* Create a window with a title and a default size */\n"
+"  window = gtk_application_window_new (app);\n"
+"  gtk_window_set_title (GTK_WINDOW (window), \"Toolbar Example\");\n"
+"  gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n"
+"\n"
+"  /* Here we begin to create the toolbar */\n"
+"  toolbar = gtk_toolbar_new ();\n"
+"  /* Set the toolbar to be the primary toolbar of the application */\n"
+"  style_context = gtk_widget_get_style_context (toolbar);\n"
+"  gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+"  /* Create a button for the \"new\" action, with a stock image */\n"
+"  new_button = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);\n"
+"  /* Show the \"new\" button's label */\n"
+"  gtk_tool_item_set_is_important (new_button, TRUE);\n"
+"  /* Insert the button in the desired position within the toolbar */\n"
+"  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), new_button, 0);\n"
+"  /* Show the button */\n"
+"  gtk_widget_show (GTK_WIDGET (new_button));\n"
+"  /* Set the action name for the \"new\" action. We use \"app.new\" to\n"
+"   * indicate that the action controls the application.\n"
+"   */\n"
+"  gtk_actionable_set_action_name (GTK_ACTIONABLE (new_button), \"app.new\");\n"
+"\n"
+"  /* Repeat the same steps for the \"open\" action */\n"
+"  open_button = gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);\n"
+"  gtk_tool_item_set_is_important (open_button, TRUE);\n"
+"  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), open_button, 1);\n"
+"  gtk_widget_show (GTK_WIDGET (open_button));\n"
+"  gtk_actionable_set_action_name (GTK_ACTIONABLE (open_button), \"app.open\");\n"
+"\n"
+"  /* Repeat the same steps for the \"undo\" action */\n"
+"  undo_button = gtk_tool_button_new_from_stock (GTK_STOCK_UNDO);\n"
+"  gtk_tool_item_set_is_important (undo_button, TRUE);\n"
+"  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), undo_button, 2);\n"
+"  gtk_widget_show (GTK_WIDGET (undo_button));\n"
+"  /* In this case, we use \"win.undo\" to indicate that\n"
+"   * the action controls only the window\n"
+"   */\n"
+"  gtk_actionable_set_action_name (GTK_ACTIONABLE (undo_button), \"win.undo\");\n"
+"\n"
+"  /* Repeat the same steps for the \"fullscreen\" action */\n"
+"  fullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_FULLSCREEN);\n"
+"  gtk_tool_item_set_is_important (fullscreen_button, TRUE);\n"
+"  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), fullscreen_button, 3);\n"
+"  gtk_widget_show (GTK_WIDGET (fullscreen_button));\n"
+"  gtk_actionable_set_action_name (GTK_ACTIONABLE (fullscreen_button),\n"
+"                                  \"win.fullscreen\");\n"
+"\n"
+"  /*Repeat the same steps for the \"leavefullscreen\" action */\n"
+"  leavefullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_LEAVE_FULLSCREEN);\n"
+"  gtk_tool_item_set_is_important (leavefullscreen_button, TRUE);\n"
+"  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), leavefullscreen_button, 3);\n"
+"  /* The only difference here is that we don't show the leavefullscreen button,\n"
+"   * as it will later replace the fullscreen button.\n"
+"   */\n"
+"  gtk_actionable_set_action_name (GTK_ACTIONABLE (leavefullscreen_button),\n"
+"                                  \"win.leavefullscreen\");\n"
+"\n"
+"  /* Once we've created the bare-bones of the toolbar, we make\n"
+"   * sure it has enough horizontal space.\n"
+"   */\n"
+"  gtk_widget_set_hexpand (toolbar, TRUE);\n"
+"  gtk_widget_show (toolbar);\n"
+"\n"
+"  /* Attach the toolbar to the grid and add it to the overall window */\n"
+"  grid = gtk_grid_new ();\n"
+"  gtk_grid_attach (GTK_GRID (grid), toolbar, 0, 0, 1, 1);\n"
+"  gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
+"  gtk_widget_show (GTK_WIDGET (grid));\n"
+"\n"
+"  /* Use the action names to create the actions that control the window, and\n"
+"   * connect them to the appropriate callbackfunctions.\n"
+"   */\n"
+"  undo_action = g_simple_action_new (\"undo\", NULL);\n"
+"  g_signal_connect (undo_action, \"activate\", G_CALLBACK (undo_callback),\n"
+"                    GTK_WINDOW (window));\n"
+"  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (undo_action));\n"
+"\n"
+"  fullscreen_action = g_simple_action_new (\"fullscreen\", NULL);\n"
+"  g_signal_connect (fullscreen_action, \"activate\", G_CALLBACK (fullscreen_callback),\n"
+"                    GTK_WINDOW (window));\n"
+"  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (fullscreen_action));\n"
+"\n"
+"  leavefullscreen_action = g_simple_action_new (\"leavefullscreen\", NULL);\n"
+"  g_signal_connect (leavefullscreen_action, \"activate\", G_CALLBACK (fullscreen_callback),\n"
+"                    GTK_WINDOW (window));\n"
+"  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (leavefullscreen_action));\n"
+"\n"
+"  gtk_widget_show (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the new action */\n"
+"static void\n"
+"new_callback (GSimpleAction *simple,\n"
+"              GVariant      *parameter,\n"
+"              gpointer       user_data)\n"
+"{\n"
+"  g_print (\"You clicked \\\"New\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the open action */\n"
+"static void\n"
+"open_callback (GSimpleAction *simple,\n"
+"               GVariant      *parameter,\n"
+"               gpointer       user_data)\n"
+"{\n"
+"  g_print (\"You clicked \\\"Open\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* In this function, we create the actions in which control the window, and\n"
+" * connect their signals to the appropriate callback function.\n"
+" */\n"
+"static void\n"
+"startup (GApplication *app,\n"
+"         gpointer      user_data)\n"
+"{\n"
+"  GSimpleAction *new_action;\n"
+"  GSimpleAction *open_action;\n"
+"\n"
+"  new_action = g_simple_action_new (\"new\", NULL);\n"
+"  g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
+"  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
+"\n"
+"  open_action = g_simple_action_new (\"open\", NULL);\n"
+"  g_signal_connect (open_action, \"activate\", G_CALLBACK (open_callback), app);\n"
+"  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (open_action));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the application */\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+"  GtkApplication *app;\n"
+"  int status;\n"
+"\n"
+"  app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+"  g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+"  g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+"  status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+"  g_object_unref (app);\n"
+"\n"
+"  return status;\n"
+"}\n"
+
+#: C/toolbar.c.page:34(item/p) C/tooltip.py.page:58(item/p)
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToolbar.html";
+"\">GtkToolbar</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToolbar.html";
+"\">GtkToolbar</link>"
+
+#: C/toolbar.c.page:35(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolButton.html";
+#| "\">GtkToolButton</link>"
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToolButton.html";
+"\">GtkToolbutton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolButton.html";
+"\">GtkToolButton</link>"
+
+#: C/toolbar.js.page:7(info/title)
+msgctxt "text"
+msgid "Toolbar (JavaScript)"
+msgstr "Toolbar (JavaScript)"
+
+#: C/toolbar.js.page:17(info/desc)
+msgid "A bar of tools"
+msgstr "Una barra de botones"
+
 #: C/toolbar.js.page:23(page/p) C/toolbar.vala.page:25(page/p)
 msgid ""
 "This example uses SimpleActions (window and app). App actions can easily be "
@@ -44835,16 +46540,16 @@ msgctxt "text"
 msgid "Toolbar (Python)"
 msgstr "Toolbar (Python)"
 
-#: C/toolbar.py.page:18(info/desc) C/toolbar_builder.py.page:31(info/desc)
+#: C/toolbar.py.page:19(info/desc) C/toolbar_builder.py.page:32(info/desc)
 msgid "A bar of buttons and other widgets"
 msgstr "Una barra de botones y otros widgets"
 
-#: C/toolbar.py.page:24(page/p)
+#: C/toolbar.py.page:25(page/p)
 msgid "An example of toolbar with buttons (from stock icons)."
 msgstr ""
 "Un ejemplo de barra de herramientas con botones (con iconos del almacén)."
 
-#: C/toolbar.py.page:31(section/code)
+#: C/toolbar.py.page:32(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -45113,11 +46818,20 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/toolbar.py.page:35(section/title)
+#: C/toolbar.py.page:36(section/title)
 msgid "Useful methods for a Toolbar widget"
 msgstr "Métodos útiles para un widget de barra de herramientas"
 
-#: C/toolbar.py.page:38(item/p)
+#: C/toolbar.py.page:37(section/p)
+msgid ""
+"In line 32 the signal <code>\"activate\"</code> from the action "
+"<code>undo_action</code> is connected to the callback function "
+"<code>undo_callback()</code> using <code><var>action</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+
+#: C/toolbar.py.page:40(item/p)
 msgid ""
 "Use <code>insert(tool_item, position)</code> to insert the <code>tool_item</"
 "code> at <code>position</code>. If <code>position</code> is negative, the "
@@ -45127,7 +46841,7 @@ msgstr ""
 "<code>tool_item</code> en <code>position</code>. Si <code>position</code> es "
 "negativo, el elemento se añade al final de la barra de herramientas."
 
-#: C/toolbar.py.page:39(item/p)
+#: C/toolbar.py.page:41(item/p)
 msgid ""
 "<code>get_item_index(tool_item)</code> retrieves the position of "
 "<code>tool_item</code> on the toolbar."
@@ -45135,7 +46849,7 @@ msgstr ""
 "<code>get_item_index(tool_item)</code> obtiene la posición de "
 "<code>tool_item</code> en la barra de herramientas."
 
-#: C/toolbar.py.page:40(item/p)
+#: C/toolbar.py.page:42(item/p)
 msgid ""
 "<code>get_n_items()</code> returns the number of items on the toolbar; "
 "<code>get_nth_item(position)</code> returns the item in position "
@@ -45145,7 +46859,7 @@ msgstr ""
 "herramientas; <code>get_nth_item(position)</code> devuelve el elemento en la "
 "posición <code>position</code>."
 
-#: C/toolbar.py.page:41(item/p)
+#: C/toolbar.py.page:43(item/p)
 msgid ""
 "If the toolbar does not have room for all the menu items, and "
 "<code>set_show_arrow(True)</code>, the items that do not have room are shown "
@@ -45155,7 +46869,7 @@ msgstr ""
 "menú, y <code>set_show_arrow(True)</code>, los elementos que no entran se "
 "muestran a través de un menú flotante."
 
-#: C/toolbar.py.page:42(item/p)
+#: C/toolbar.py.page:44(item/p)
 msgid ""
 "<code>set_icon_size(icon_size)</code> sets the size of icons in the toolbar; "
 "<code>icon_size</code> can be one of <code>Gtk.IconSize.INVALID, Gtk."
@@ -45177,7 +46891,7 @@ msgstr ""
 "<code>set_icon_size(icon_size)</code>, para que las preferencias de usuario "
 "se usen para determinar el tamaño de los iconos."
 
-#: C/toolbar.py.page:43(item/p)
+#: C/toolbar.py.page:45(item/p)
 msgid ""
 "<code>set_style(style)</code>, where <code>style</code> is one of <code>Gtk."
 "ToolbarStyle.ICONS, Gtk.ToolbarStyle.TEXT, Gtk.ToolbarStyle.BOTH, Gtk."
@@ -45194,7 +46908,7 @@ msgstr ""
 "estilo de la barra de herramientas, y restablecer el estilo de barra de "
 "herramientas, use <code>unset_style()</code>."
 
-#: C/toolbar.py.page:52(item/p)
+#: C/toolbar.py.page:54(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolbar.html";
 "\">GtkToolbar</link>"
@@ -45202,7 +46916,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolbar.html";
 "\">GtkToolbar</link>"
 
-#: C/toolbar.py.page:53(item/p)
+#: C/toolbar.py.page:55(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolButton.html";
 "\">GtkToolButton</link>"
@@ -45210,7 +46924,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolButton.html";
 "\">GtkToolButton</link>"
 
-#: C/toolbar.py.page:54(item/p)
+#: C/toolbar.py.page:56(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolItem.html";
 "\">GtkToolItem</link>"
@@ -45218,7 +46932,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolItem.html";
 "\">GtkToolItem</link>"
 
-#: C/toolbar.py.page:56(item/p)
+#: C/toolbar.py.page:58(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkActionable.html";
 "\">GtkActionable</link>"
@@ -45226,7 +46940,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkActionable.html";
 "\">GtkActionable</link>"
 
-#: C/toolbar.py.page:58(item/p) C/toolbar_builder.py.page:196(item/p)
+#: C/toolbar.py.page:60(item/p) C/toolbar_builder.py.page:198(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gdk3/unstable/gdk3-Event-Structures.";
 "html#GdkEventWindowState\">Event Structures</link>"
@@ -45239,10 +46953,6 @@ msgctxt "text"
 msgid "Toolbar (Vala)"
 msgstr "Barra de herramientas (Vala)"
 
-#: C/toolbar.vala.page:18(info/desc) C/toolbar_builder.vala.page:19(info/desc)
-msgid "A bar of buttons"
-msgstr "Una barra de botones"
-
 #: C/toolbar.vala.page:27(page/code)
 #, no-wrap
 msgid ""
@@ -45545,7 +47255,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/toolbar_builder.py.page:48(media) C/toolbar_builder.vala.page:32(media)
+#: C/toolbar_builder.py.page:49(media) C/toolbar_builder.vala.page:32(media)
 msgctxt "_"
 msgid ""
 "external ref='media/glade_ui.png' md5='baea74fe213bc12ea934f64f6977215a'"
@@ -45561,7 +47271,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/toolbar_builder.py.page:54(media) C/toolbar_builder.vala.page:38(media)
+#: C/toolbar_builder.py.page:55(media) C/toolbar_builder.vala.page:38(media)
 msgctxt "_"
 msgid ""
 "external ref='media/glade_select_toolbar.png' "
@@ -45579,7 +47289,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/toolbar_builder.py.page:60(media) C/toolbar_builder.vala.page:44(media)
+#: C/toolbar_builder.py.page:61(media) C/toolbar_builder.vala.page:44(media)
 msgctxt "_"
 msgid ""
 "external ref='media/glade_toolbar_general.png' "
@@ -45597,7 +47307,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/toolbar_builder.py.page:66(media) C/toolbar_builder.vala.page:50(media)
+#: C/toolbar_builder.py.page:67(media) C/toolbar_builder.vala.page:50(media)
 msgctxt "_"
 msgid ""
 "external ref='media/glade_toolbar_common.png' "
@@ -45615,7 +47325,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/toolbar_builder.py.page:72(media) C/toolbar_builder.vala.page:56(media)
+#: C/toolbar_builder.py.page:73(media) C/toolbar_builder.vala.page:56(media)
 msgctxt "_"
 msgid ""
 "external ref='media/glade_toolbar_edit.png' "
@@ -45633,7 +47343,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/toolbar_builder.py.page:131(media) C/toolbar_builder.vala.page:115(media)
+#: C/toolbar_builder.py.page:132(media) C/toolbar_builder.vala.page:115(media)
 msgctxt "_"
 msgid ""
 "external ref='media/glade_toolbar_editor.png' "
@@ -45651,7 +47361,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/toolbar_builder.py.page:140(media) C/toolbar_builder.vala.page:124(media)
+#: C/toolbar_builder.py.page:141(media) C/toolbar_builder.vala.page:124(media)
 msgctxt "_"
 msgid ""
 "external ref='media/glade_visible_no.png' "
@@ -45665,12 +47375,12 @@ msgctxt "text"
 msgid "Toolbar created using Glade (Python)"
 msgstr "Barra de herramientas creada con Glade (Python)"
 
-#: C/toolbar_builder.py.page:34(page/title)
+#: C/toolbar_builder.py.page:35(page/title)
 #: C/toolbar_builder.vala.page:22(page/title)
 msgid "Toolbar created using Glade"
 msgstr "Barra de herramientas creada con Glade"
 
-#: C/toolbar_builder.py.page:37(page/p)
+#: C/toolbar_builder.py.page:38(page/p)
 msgid ""
 "This example is similar to <link xref=\"toolbar.py\"/>, except we use Glade "
 "to create the toolbar in an XML .ui file."
@@ -45678,11 +47388,11 @@ msgstr ""
 "Este ejemplo es similar al de la <link xref=\"toolbar.py\"/>, excepto que se "
 "usa Glade para crear la barra de herramientas en un archivo .ui XML."
 
-#: C/toolbar_builder.py.page:42(section/title)
+#: C/toolbar_builder.py.page:43(section/title)
 msgid "Creating the toolbar with Glade"
 msgstr "Crear la barra de herramientas con Glade"
 
-#: C/toolbar_builder.py.page:43(section/p)
+#: C/toolbar_builder.py.page:44(section/p)
 #: C/toolbar_builder.vala.page:27(page/p)
 msgid ""
 "To create the toolbar using the <link href=\"http://glade.gnome.org/\";>Glade "
@@ -45691,11 +47401,11 @@ msgstr ""
 "Para crear la barra de herramientas usando el <link href=\"http://glade.";
 "gnome.org/\">diseñador de interfaces Glade</link>:"
 
-#: C/toolbar_builder.py.page:47(item/p) C/toolbar_builder.vala.page:31(item/p)
+#: C/toolbar_builder.py.page:48(item/p) C/toolbar_builder.vala.page:31(item/p)
 msgid "Open Glade, and save the file as <file>toolbar_builder.ui</file>"
 msgstr "Abra Glade y guarde el archivo como <file>toolbar_builder.ui</file>"
 
-#: C/toolbar_builder.py.page:48(item/p) C/toolbar_builder.vala.page:32(item/p)
+#: C/toolbar_builder.py.page:49(item/p) C/toolbar_builder.vala.page:32(item/p)
 msgid ""
 "<media type=\"image\" src=\"media/glade_ui.png\" width=\"900\"> Screenshot "
 "of Glade ui </media>"
@@ -45703,7 +47413,7 @@ msgstr ""
 "<media type=\"image\" src=\"media/glade_ui.png\" width=\"900\"> Captura de "
 "pantalla de la IU de Glade </media>"
 
-#: C/toolbar_builder.py.page:53(item/p) C/toolbar_builder.vala.page:37(item/p)
+#: C/toolbar_builder.py.page:54(item/p) C/toolbar_builder.vala.page:37(item/p)
 msgid ""
 "Under <gui>Containers</gui> on the left hand side, right click on the "
 "toolbar icon and select <gui>Add widget as toplevel</gui>."
@@ -45712,7 +47422,7 @@ msgstr ""
 "derecho en el icono de la barra de herramientas y seleccione <gui>Añadir "
 "widget como nivel superior</gui>."
 
-#: C/toolbar_builder.py.page:54(item/p) C/toolbar_builder.vala.page:38(item/p)
+#: C/toolbar_builder.py.page:55(item/p) C/toolbar_builder.vala.page:38(item/p)
 msgid ""
 "<media type=\"image\" src=\"media/glade_select_toolbar.png\"> Screenshot of "
 "toolbar icon in Glade ui </media>"
@@ -45720,7 +47430,7 @@ msgstr ""
 "<media type=\"image\" src=\"media/glade_select_toolbar.png\"> Captura de "
 "pantalla del icono de la barra de herramientas en la IU de Glade </media>"
 
-#: C/toolbar_builder.py.page:59(item/p) C/toolbar_builder.vala.page:43(item/p)
+#: C/toolbar_builder.py.page:60(item/p) C/toolbar_builder.vala.page:43(item/p)
 msgid ""
 "Under the <gui>General</gui> tab on the bottom right, change the <gui>Name</"
 "gui> to <input>toolbar</input> and <gui>Show Arrow</gui> to <gui>No</gui>."
@@ -45729,7 +47439,7 @@ msgstr ""
 "<gui>Nombre</gui> a <input>toolbar</input> y <gui>Mostrar flecha</gui> a "
 "<gui>No</gui>."
 
-#: C/toolbar_builder.py.page:60(item/p) C/toolbar_builder.vala.page:44(item/p)
+#: C/toolbar_builder.py.page:61(item/p) C/toolbar_builder.vala.page:44(item/p)
 msgid ""
 "<media type=\"image\" src=\"media/glade_toolbar_general.png\"> Screenshot of "
 "General tab </media>"
@@ -45737,7 +47447,7 @@ msgstr ""
 "<media type=\"image\" src=\"media/glade_toolbar_general.png\"> Captura de "
 "pantalla de la pestaña «General» </media>"
 
-#: C/toolbar_builder.py.page:65(item/p) C/toolbar_builder.vala.page:49(item/p)
+#: C/toolbar_builder.py.page:66(item/p) C/toolbar_builder.vala.page:49(item/p)
 msgid ""
 "Under the <gui>Common</gui> tab, set <gui>Horizontal Expand</gui> to "
 "<gui>Yes</gui>."
@@ -45745,7 +47455,7 @@ msgstr ""
 "Bajo la pestaña <gui>Comunes</gui>, establezca <gui>Expansión horizontal</"
 "gui> a <gui>Sí</gui>."
 
-#: C/toolbar_builder.py.page:66(item/p) C/toolbar_builder.vala.page:50(item/p)
+#: C/toolbar_builder.py.page:67(item/p) C/toolbar_builder.vala.page:50(item/p)
 msgid ""
 "<media type=\"image\" src=\"media/glade_toolbar_common.png\"> Screenshot of "
 "Common tab </media>"
@@ -45753,7 +47463,7 @@ msgstr ""
 "<media type=\"image\" src=\"media/glade_toolbar_common.png\"> Captura de "
 "pantalla de la pestaña «Común» </media>"
 
-#: C/toolbar_builder.py.page:71(item/p) C/toolbar_builder.vala.page:55(item/p)
+#: C/toolbar_builder.py.page:72(item/p) C/toolbar_builder.vala.page:55(item/p)
 msgid ""
 "Right click on the toolbar in the top right and select <gui>Edit</gui>. The "
 "<gui>Tool Bar Editor</gui> window will appear."
@@ -45762,7 +47472,7 @@ msgstr ""
 "derecha y seleccione <gui>Editar</gui>. La ventana <gui>Editor de barras de "
 "herramientas</gui> aparecerá."
 
-#: C/toolbar_builder.py.page:72(item/p) C/toolbar_builder.vala.page:56(item/p)
+#: C/toolbar_builder.py.page:73(item/p) C/toolbar_builder.vala.page:56(item/p)
 msgid ""
 "<media type=\"image\" src=\"media/glade_toolbar_edit.png\"> Screenshot of "
 "where to right click to edit toolbar. </media>"
@@ -45771,23 +47481,23 @@ msgstr ""
 "pantalla que muestra dónde pulsar el botón derecho para editar la barra de "
 "herramientas. </media>"
 
-#: C/toolbar_builder.py.page:77(item/p) C/toolbar_builder.vala.page:61(item/p)
+#: C/toolbar_builder.py.page:78(item/p) C/toolbar_builder.vala.page:61(item/p)
 msgid ""
 "We want to add 5 ToolButtons: New, Open, Undo, Fullscreen and Leave "
 "Fullscreen. First, we will add the New ToolButton."
 msgstr ""
-"Se quieren añadir 5 «ToolButton»: «New», «Open», «Undo», «Fullscreen», y "
-"«Leave Fullscreen». Primero, se añadirá el «ToolButton» «New»."
+"Se quieren añadir 5 «ToolButton»: «New», «Open», «Undo», «Fullscreen», y «Leave "
+"Fullscreen». Primero, se añadirá el «ToolButton» «New»."
 
-#: C/toolbar_builder.py.page:80(item/p) C/toolbar_builder.vala.page:64(item/p)
+#: C/toolbar_builder.py.page:81(item/p) C/toolbar_builder.vala.page:64(item/p)
 msgid "Under <gui>Hierarchy</gui> tab, click <gui>Add</gui>."
 msgstr "Bajo la pestaña <gui>Jerarquía</gui>, pulse <gui>Añadir</gui>."
 
-#: C/toolbar_builder.py.page:81(item/p) C/toolbar_builder.vala.page:65(item/p)
+#: C/toolbar_builder.py.page:82(item/p) C/toolbar_builder.vala.page:65(item/p)
 msgid "Change the name of the ToolItem to <input>new_button</input>."
 msgstr "Cambie el nombre del «ToolItem» a <input>new_button</input>."
 
-#: C/toolbar_builder.py.page:82(item/p) C/toolbar_builder.vala.page:66(item/p)
+#: C/toolbar_builder.py.page:83(item/p) C/toolbar_builder.vala.page:66(item/p)
 msgid ""
 "Scroll down and set <gui>Is important</gui> to <gui>Yes</gui>. This will "
 "cause the label of the ToolButton to be shown, when you view the toolbar."
@@ -45796,15 +47506,15 @@ msgstr ""
 "Esto hará que la etiqueta del «ToolButton» se muestre cuando vea la barra de "
 "herramientas."
 
-#: C/toolbar_builder.py.page:83(item/p) C/toolbar_builder.vala.page:67(item/p)
+#: C/toolbar_builder.py.page:84(item/p) C/toolbar_builder.vala.page:67(item/p)
 msgid "Enter the <gui>action name</gui>: <input>app.new</input>."
 msgstr "Introduzca el <gui>Nombre de la acción</gui>: <input>app.new</input>."
 
-#: C/toolbar_builder.py.page:84(item/p) C/toolbar_builder.vala.page:68(item/p)
+#: C/toolbar_builder.py.page:85(item/p) C/toolbar_builder.vala.page:68(item/p)
 msgid "Change the <gui>Label</gui> to <input>New</input>."
 msgstr "Cambie la <gui>Etiqueta</gui> a <input>New</input>."
 
-#: C/toolbar_builder.py.page:85(item/p) C/toolbar_builder.vala.page:69(item/p)
+#: C/toolbar_builder.py.page:86(item/p) C/toolbar_builder.vala.page:69(item/p)
 msgid ""
 "Select the <gui>New</gui> Stock Id from the drop down menu, or type "
 "<input>gtk-new</input>."
@@ -45812,7 +47522,7 @@ msgstr ""
 "Seleccione el ID del inventario <gui>Nuevo</gui> desde el menú desplegable, "
 "o escriba <input>gtk-new</input>."
 
-#: C/toolbar_builder.py.page:87(item/p) C/toolbar_builder.vala.page:71(item/p)
+#: C/toolbar_builder.py.page:88(item/p) C/toolbar_builder.vala.page:71(item/p)
 msgid ""
 "Repeat the above steps for the remaining ToolButtons, with the following "
 "properties:"
@@ -45820,92 +47530,92 @@ msgstr ""
 "Repita los pasos anteriores para los «ToolButton» restantes, con las "
 "siguientes propiedades:"
 
-#: C/toolbar_builder.py.page:94(td/p) C/toolbar_builder.vala.page:78(td/p)
+#: C/toolbar_builder.py.page:95(td/p) C/toolbar_builder.vala.page:78(td/p)
 msgid "Is important"
 msgstr "Es importante"
 
-#: C/toolbar_builder.py.page:95(td/p) C/toolbar_builder.vala.page:79(td/p)
+#: C/toolbar_builder.py.page:96(td/p) C/toolbar_builder.vala.page:79(td/p)
 msgid "Action name"
 msgstr "Nombre de la acción"
 
-#: C/toolbar_builder.py.page:97(td/p) C/toolbar_builder.vala.page:81(td/p)
+#: C/toolbar_builder.py.page:98(td/p) C/toolbar_builder.vala.page:81(td/p)
 msgid "Stock Id"
 msgstr "ID del inventario"
 
-#: C/toolbar_builder.py.page:102(td/p) C/toolbar_builder.vala.page:86(td/p)
+#: C/toolbar_builder.py.page:103(td/p) C/toolbar_builder.vala.page:86(td/p)
 msgid "open_button"
 msgstr "open_button"
 
-#: C/toolbar_builder.py.page:103(td/p) C/toolbar_builder.py.page:110(td/p)
-#: C/toolbar_builder.py.page:117(td/p) C/toolbar_builder.py.page:124(td/p)
+#: C/toolbar_builder.py.page:104(td/p) C/toolbar_builder.py.page:111(td/p)
+#: C/toolbar_builder.py.page:118(td/p) C/toolbar_builder.py.page:125(td/p)
 #: C/toolbar_builder.vala.page:87(td/p) C/toolbar_builder.vala.page:94(td/p)
 #: C/toolbar_builder.vala.page:101(td/p) C/toolbar_builder.vala.page:108(td/p)
 msgid "Yes"
 msgstr "Sí"
 
-#: C/toolbar_builder.py.page:104(td/p) C/toolbar_builder.vala.page:88(td/p)
+#: C/toolbar_builder.py.page:105(td/p) C/toolbar_builder.vala.page:88(td/p)
 msgid "app.open"
 msgstr "app.open"
 
-#: C/toolbar_builder.py.page:105(td/p) C/toolbar_builder.vala.page:89(td/p)
+#: C/toolbar_builder.py.page:106(td/p) C/toolbar_builder.vala.page:89(td/p)
 msgid "Open"
 msgstr "Open"
 
-#: C/toolbar_builder.py.page:106(td/p) C/toolbar_builder.vala.page:90(td/p)
+#: C/toolbar_builder.py.page:107(td/p) C/toolbar_builder.vala.page:90(td/p)
 msgid "gtk-open"
 msgstr "gtk-open"
 
-#: C/toolbar_builder.py.page:109(td/p) C/toolbar_builder.vala.page:93(td/p)
+#: C/toolbar_builder.py.page:110(td/p) C/toolbar_builder.vala.page:93(td/p)
 msgid "undo_button"
 msgstr "undo_button"
 
-#: C/toolbar_builder.py.page:111(td/p) C/toolbar_builder.vala.page:95(td/p)
+#: C/toolbar_builder.py.page:112(td/p) C/toolbar_builder.vala.page:95(td/p)
 msgid "win.undo"
 msgstr "win.undo"
 
-#: C/toolbar_builder.py.page:112(td/p) C/toolbar_builder.vala.page:96(td/p)
+#: C/toolbar_builder.py.page:113(td/p) C/toolbar_builder.vala.page:96(td/p)
 msgid "Undo"
 msgstr "Undo"
 
-#: C/toolbar_builder.py.page:113(td/p) C/toolbar_builder.vala.page:97(td/p)
+#: C/toolbar_builder.py.page:114(td/p) C/toolbar_builder.vala.page:97(td/p)
 msgid "gtk-undo"
 msgstr "gtk-undo"
 
-#: C/toolbar_builder.py.page:116(td/p) C/toolbar_builder.vala.page:100(td/p)
+#: C/toolbar_builder.py.page:117(td/p) C/toolbar_builder.vala.page:100(td/p)
 msgid "fullscreen_button"
 msgstr "fullscreen_button"
 
-#: C/toolbar_builder.py.page:118(td/p) C/toolbar_builder.py.page:125(td/p)
+#: C/toolbar_builder.py.page:119(td/p) C/toolbar_builder.py.page:126(td/p)
 #: C/toolbar_builder.vala.page:102(td/p) C/toolbar_builder.vala.page:109(td/p)
 msgid "win.fullscreen"
 msgstr "win.fullscreen"
 
-#: C/toolbar_builder.py.page:119(td/p) C/toolbar_builder.vala.page:103(td/p)
+#: C/toolbar_builder.py.page:120(td/p) C/toolbar_builder.vala.page:103(td/p)
 msgid "Fullscreen"
 msgstr "Fullscreen"
 
-#: C/toolbar_builder.py.page:120(td/p) C/toolbar_builder.vala.page:104(td/p)
+#: C/toolbar_builder.py.page:121(td/p) C/toolbar_builder.vala.page:104(td/p)
 msgid "gtk-fullscreen"
 msgstr "gtk-fullscreen"
 
-#: C/toolbar_builder.py.page:123(td/p) C/toolbar_builder.vala.page:107(td/p)
+#: C/toolbar_builder.py.page:124(td/p) C/toolbar_builder.vala.page:107(td/p)
 msgid "leave_fullscreen_button"
 msgstr "leave_fullscreen_button"
 
-#: C/toolbar_builder.py.page:126(td/p) C/toolbar_builder.vala.page:110(td/p)
+#: C/toolbar_builder.py.page:127(td/p) C/toolbar_builder.vala.page:110(td/p)
 msgid "Leave Fullscreen"
 msgstr "Leave Fullscreen"
 
-#: C/toolbar_builder.py.page:127(td/p) C/toolbar_builder.vala.page:111(td/p)
+#: C/toolbar_builder.py.page:128(td/p) C/toolbar_builder.vala.page:111(td/p)
 msgid "gtk-leave-fullscreen"
 msgstr "gtk-leave-fullscreen"
 
-#: C/toolbar_builder.py.page:136(item/p)
+#: C/toolbar_builder.py.page:137(item/p)
 #: C/toolbar_builder.vala.page:120(item/p)
 msgid "Close the <gui>Tool Bar Editor</gui>."
 msgstr "Cierre el <gui>Editor de la barra de herramientas</gui>."
 
-#: C/toolbar_builder.py.page:139(item/p)
+#: C/toolbar_builder.py.page:140(item/p)
 msgid ""
 "When our program will first start, we do not want the <gui>Leave Fullscreen</"
 "gui> ToolButton to be visible, since the application will not be in "
@@ -45916,17 +47626,17 @@ msgid ""
 "would override this setting - so in the code we have to use <code>show()</"
 "code> separately on all the elements."
 msgstr ""
-"No se quiere que se vea el «ToolButton» <gui>Salir de pantalla completa</"
-"gui> cuando el programa se inicie por primera vez, dado que la aplicación no "
+"No se quiere que se vea el «ToolButton» <gui>Salir de pantalla completa</gui> "
+"cuando el programa se inicie por primera vez, dado que la aplicación no "
 "estará en modo pantalla completa. Puede establecer esto en la pestaña "
 "<gui>Comunes</gui>, pulsando <gui>No</gui> en la propiedad <gui>Visible</"
-"gui>. El «ToolButton» aparecerá de todos modos en el diseñador de "
-"interfaces, pero se comportará correctamente cuando se cargue el archivo en "
-"el código de su programa. Tenga en cuenta que el método <gui>show_all()</"
-"gui> anularía esta opción, por lo que en el código se tiene que usar "
-"<gui>show()</gui> en todos los elementos por separado."
+"gui>. El «ToolButton» aparecerá de todos modos en el diseñador de interfaces, "
+"pero se comportará correctamente cuando se cargue el archivo en el código de "
+"su programa. Tenga en cuenta que el método <gui>show_all()</gui> anularía "
+"esta opción, por lo que en el código se tiene que usar <gui>show()</gui> en "
+"todos los elementos por separado."
 
-#: C/toolbar_builder.py.page:140(item/p)
+#: C/toolbar_builder.py.page:141(item/p)
 #: C/toolbar_builder.vala.page:124(item/p)
 msgid ""
 "<media type=\"image\" src=\"media/glade_visible_no.png\"> Setting the "
@@ -45935,12 +47645,12 @@ msgstr ""
 "<media type=\"image\" src=\"media/glade_visible_no.png\"> Establecer la "
 "propiedad «visible» a «No» </media>"
 
-#: C/toolbar_builder.py.page:145(item/p)
+#: C/toolbar_builder.py.page:146(item/p)
 #: C/toolbar_builder.vala.page:129(item/p)
 msgid "Save your work, and close Glade."
 msgstr "Guarde su trabajo y cierre Glade."
 
-#: C/toolbar_builder.py.page:148(item/p)
+#: C/toolbar_builder.py.page:149(item/p)
 #: C/toolbar_builder.vala.page:132(item/p)
 msgid ""
 "The XML file created by Glade is shown below. This is the description of the "
@@ -45951,12 +47661,12 @@ msgid ""
 msgstr ""
 "El archivo XML generado por Glade se muestra debajo. Este es la descripción "
 "de la barra de herramientas. En el momento en el que se escribe esto, la "
-"opción para añadir la clase «Gtk.STYLE_CLASS_PRIMARY_TOOLBAR» en el "
-"diseñador de interfaces Glade no existe. Se puede añadir manualmente al "
-"archivo XML. Para hacer esto, añada el siguiente código XML en la línea 9 de "
+"opción para añadir la clase «Gtk.STYLE_CLASS_PRIMARY_TOOLBAR» en el diseñador "
+"de interfaces Glade no existe. Se puede añadir manualmente al archivo XML. "
+"Para hacer esto, añada el siguiente código XML en la línea 9 de "
 "<file>toolbar_builder.ui</file>:"
 
-#: C/toolbar_builder.py.page:149(item/code)
+#: C/toolbar_builder.py.page:150(item/code)
 #: C/toolbar_builder.vala.page:133(item/code)
 #, no-wrap
 msgid ""
@@ -45972,7 +47682,7 @@ msgstr ""
 "  &lt;/style&gt;\n"
 "  "
 
-#: C/toolbar_builder.py.page:154(item/p)
+#: C/toolbar_builder.py.page:155(item/p)
 #: C/toolbar_builder.vala.page:138(item/p)
 msgid ""
 "If you do not add this, the program will still work fine. The resulting "
@@ -45983,7 +47693,7 @@ msgstr ""
 "herramientas resultante se verá, sin embargo, ligeramente distinta a la de "
 "la captura de pantalla en la parte superior de esta página."
 
-#: C/toolbar_builder.py.page:157(section/code)
+#: C/toolbar_builder.py.page:158(section/code)
 #: C/toolbar_builder.vala.page:141(page/code)
 #, no-wrap
 msgid ""
@@ -46177,7 +47887,7 @@ msgstr ""
 "  &lt;/object&gt;\n"
 "&lt;/interface&gt;\n"
 
-#: C/toolbar_builder.py.page:164(section/p)
+#: C/toolbar_builder.py.page:165(section/p)
 #: C/toolbar_builder.vala.page:143(page/p)
 msgid ""
 "We now create the code below, which adds the toolbar from the file we just "
@@ -46186,7 +47896,7 @@ msgstr ""
 "Ahora se crea el código siguiente, que añade la barra de herramientas desde "
 "el archivo que se acaba de crear."
 
-#: C/toolbar_builder.py.page:165(section/code)
+#: C/toolbar_builder.py.page:166(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -46391,22 +48101,22 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/toolbar_builder.py.page:170(section/title)
+#: C/toolbar_builder.py.page:171(section/title)
 msgid "Useful methods for Gtk.Builder"
 msgstr "Métodos útiles para Gtk.Builder"
 
-#: C/toolbar_builder.py.page:171(section/p)
+#: C/toolbar_builder.py.page:172(section/p)
 msgid ""
 "For the useful methods for a Toolbar widget, see <link xref=\"toolbar.py\"/>"
 msgstr ""
 "Para ver los métodos útiles de un widget de barra de herramientas, consulte "
 "la <link xref=\"toolbar.py\"/>"
 
-#: C/toolbar_builder.py.page:173(section/p)
+#: C/toolbar_builder.py.page:174(section/p)
 msgid "Gtk.Builder builds an interface from an XML UI definition."
 msgstr "Gtk.Builder construye una interfaz desde una definición UI XML."
 
-#: C/toolbar_builder.py.page:176(item/p)
+#: C/toolbar_builder.py.page:177(item/p)
 msgid ""
 "<code>add_from_file(filename)</code> loads and parses the given file and "
 "merges it with the current contents of the Gtk.Builder."
@@ -46414,7 +48124,7 @@ msgstr ""
 "<code>add_from_file(filename)</code> carga y procesa el archivo dado y lo "
 "une con el contenido actual del Gtk.Builder."
 
-#: C/toolbar_builder.py.page:177(item/p)
+#: C/toolbar_builder.py.page:178(item/p)
 msgid ""
 "<code>add_from_string(string)</code> parses the given string and merges it "
 "with the current contents of the Gtk.Builder."
@@ -46422,7 +48132,7 @@ msgstr ""
 "<code>add_from_string(string)</code> procesa la cadena dada y la une con el "
 "contenido actual del Gtk.Builder."
 
-#: C/toolbar_builder.py.page:178(item/p)
+#: C/toolbar_builder.py.page:179(item/p)
 msgid ""
 "<code>add_objects_from_file(filename, object_ids)</code> is the same as "
 "<code>add_from_file()</code>, but it loads only the objects with the ids "
@@ -46432,7 +48142,7 @@ msgstr ""
 "<code>add_from_file()</code>, pero solo carga los objetos con los ID dados "
 "en la lista de <code>object_id</code>."
 
-#: C/toolbar_builder.py.page:179(item/p)
+#: C/toolbar_builder.py.page:180(item/p)
 msgid ""
 "<code>add_objects_from_string(filename, object_ids)</code> is the same as "
 "<code>add_from_string()</code>, but it loads only the objects with the ids "
@@ -46442,7 +48152,7 @@ msgstr ""
 "<code>add_from_string()</code>, pero sólo carga los objetos con las ID dadas "
 "en la lista de <code>object_id</code>."
 
-#: C/toolbar_builder.py.page:180(item/p)
+#: C/toolbar_builder.py.page:181(item/p)
 msgid ""
 "<code>get_object(object_id)</code> retrieves the widget with the id "
 "<code>object_id</code> from the loaded objects in the builder."
@@ -46450,16 +48160,27 @@ msgstr ""
 "<code>get_object(object_id)</code> obtiene el widget con el ID "
 "<code>object_id</code> de los objetos cargados en el constructor."
 
-#: C/toolbar_builder.py.page:181(item/p)
+#: C/toolbar_builder.py.page:182(item/p)
 msgid "<code>get_objects()</code> returns all loaded objects."
 msgstr "<code>get_objects()</code> devuelve todos los objetos cargados."
 
-#: C/toolbar_builder.py.page:182(item/p)
+#: C/toolbar_builder.py.page:183(item/p)
+#, fuzzy
+#| msgid ""
+#| "<code>connect_signals(handler_object)</code> connects the signals to the "
+#| "methods given in the <code>handler_object</code>. This can be any object "
+#| "which contains keys or attributes that are called like the signal handler "
+#| "names given in the interface description, e.g. a class or a dict."
 msgid ""
 "<code>connect_signals(handler_object)</code> connects the signals to the "
 "methods given in the <code>handler_object</code>. This can be any object "
 "which contains keys or attributes that are called like the signal handler "
-"names given in the interface description, e.g. a class or a dict."
+"names given in the interface description, e.g. a class or a dict. In line 39 "
+"the signal <code>\"activate\"</code> from the action <code>undo_action</"
+"code> is connected to the callback function <code>undo_callback()</code> "
+"using <code><var>action</var>.connect(<var>signal</var>, <var>callback "
+"function</var>)</code>. See <link xref=\"signals-callbacks.py\"/> for a more "
+"detailed explanation."
 msgstr ""
 "<code>connect_signals(handler_object)</code> conecta las señales a los "
 "métodos dados en el <code>handler_object</code>. Este puede ser cualquier "
@@ -46467,14 +48188,6 @@ msgstr ""
 "manejador de señales dados en la descripción de la interfaz, por ejemplo una "
 "clase o un diccionario."
 
-#: C/toolbar_builder.py.page:197(item/p)
-msgid ""
-"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/builder.";
-"html\">The Python Gtk+ 3 Tutorial - Glade and Gtk.Builder</link>"
-msgstr ""
-"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/builder.";
-"html\">El tutorial de GTK+3 en Python: Glade y Gtk.Builder</link>"
-
 #: C/toolbar_builder.vala.page:7(info/title)
 msgctxt "text"
 msgid "Toolbar created using Glade (Vala)"
@@ -46497,13 +48210,12 @@ msgid ""
 "appear in the interface designer, but will behave correctly when the file is "
 "loaded into your program code."
 msgstr ""
-"No se quiere que se vea el «ToolButton» <gui>Leave Fullscreen</gui> cuando "
-"el programa se inicie por primera vez, dado que la aplicación no estará en "
-"modo a pantalla completa. Puede establecer esto en la pestaña <gui>Comunes</"
-"gui>, pulsando <gui>No</gui> en la propiedad <gui>Visible</gui>. El "
-"«ToolButton» aparecerá de todos modos en el diseñador de interfaces, pero se "
-"comportará correctamente cuando se cargue el archivo en el código de su "
-"programa."
+"No se quiere que se vea el «ToolButton» <gui>Leave Fullscreen</gui> cuando el "
+"programa se inicie por primera vez, dado que la aplicación no estará en modo "
+"a pantalla completa. Puede establecer esto en la pestaña <gui>Comunes</gui>, "
+"pulsando <gui>No</gui> en la propiedad <gui>Visible</gui>. El «ToolButton» "
+"aparecerá de todos modos en el diseñador de interfaces, pero se comportará "
+"correctamente cuando se cargue el archivo en el código de su programa."
 
 #: C/toolbar_builder.vala.page:144(page/code)
 #, no-wrap
@@ -46720,26 +48432,34 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/tooltip.py.page:22(media)
+#: C/tooltip.py.page:23(media)
 msgctxt "_"
 msgid "external ref='media/tooltip.png' md5='6950da5f4444aa941ecc2f0fc5951d52'"
 msgstr ""
 "external ref='media/tooltip.png' md5='6950da5f4444aa941ecc2f0fc5951d52'"
 
-#: C/tooltip.py.page:18(info/desc)
+#: C/tooltip.py.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Toolbar (Python)"
+msgctxt "text"
+msgid "Tooltip (Python)"
+msgstr "Toolbar (Python)"
+
+#: C/tooltip.py.page:19(info/desc)
 msgid "Add tips to your widgets"
 msgstr "Añadir consejos a sus widgets"
 
-#: C/tooltip.py.page:21(page/title) C/tutorial.py.page:122(steps/title)
+#: C/tooltip.py.page:22(page/title)
 msgid "Tooltip"
 msgstr "Consejo"
 
-#: C/tooltip.py.page:23(page/p)
+#: C/tooltip.py.page:24(page/p)
 msgid "A toolbar with a tooltip (with an image) for a button."
 msgstr ""
 "Una barra de herramientas con un consejo (con una imagen) para un botón."
 
-#: C/tooltip.py.page:29(section/code)
+#: C/tooltip.py.page:30(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -46984,11 +48704,11 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/tooltip.py.page:33(section/title)
+#: C/tooltip.py.page:34(section/title)
 msgid "Useful methods for a Tooltip widget"
 msgstr "Métodos útiles para un widget de consejo"
 
-#: C/tooltip.py.page:34(section/p)
+#: C/tooltip.py.page:36(section/p)
 msgid ""
 "<code>set_tooltip_text(text)</code> and <code>set_tooltip_markup(text)</"
 "code> can be used to add a tooltip of plain text (or text in the Pango "
@@ -46998,12 +48718,12 @@ msgstr ""
 "pueden usarse para añadir un consejo o texto plano (o texto en el lenguaje "
 "de marcado de Pango) a un widget."
 
-#: C/tooltip.py.page:35(section/p)
+#: C/tooltip.py.page:37(section/p)
 msgid "For more complex tooltips, for instance for a tooltip with an image:"
 msgstr ""
 "Para consejos más complejos, por ejemplo para un consejo con una imagen:"
 
-#: C/tooltip.py.page:37(item/p)
+#: C/tooltip.py.page:39(item/p)
 msgid ""
 "Set the <code>\"has-tooltip\"</code> property of the widget to <code>True</"
 "code>; this will make GTK+ monitor the widget for motion and related events "
@@ -47014,7 +48734,7 @@ msgstr ""
 "movimiento y eventos relacionados que se necesitan para determinar cuándo y "
 "dónde mostrar un consejo."
 
-#: C/tooltip.py.page:38(item/p)
+#: C/tooltip.py.page:40(item/p)
 msgid ""
 "Connect to the <code>\"query-tooltip\"</code> signal. This signal will be "
 "emitted when a tooltip is supposed to be shown. One of the arguments passed "
@@ -47034,7 +48754,7 @@ msgstr ""
 "un icono del almacén (<code>set_icon_from_stock(stock_id, size)</code>), o "
 "incluso poner un widget personalizado (<code>set_custom(widget)</code>)."
 
-#: C/tooltip.py.page:39(item/p)
+#: C/tooltip.py.page:41(item/p)
 msgid ""
 "Return <code>True</code> from your query-tooltip handler. This causes the "
 "tooltip to be show. If you return <code>False</code>, it will not be shown."
@@ -47042,7 +48762,7 @@ msgstr ""
 "Devuelva <code>True</code> de su manejador de «query-tooltip». Esto hace que "
 "el consejo se muestre. Si devuelve <code>False</code>, no se mostrará."
 
-#: C/tooltip.py.page:42(section/p)
+#: C/tooltip.py.page:44(section/p)
 msgid ""
 "In the probably rare case where you want to have even more control over the "
 "tooltip that is about to be shown, you can set your own GtkWindow which will "
@@ -47052,7 +48772,7 @@ msgstr ""
 "el consejo que se va a mostrar, puede establecer su propia GtkWindow que se "
 "usará como ventana del consejo. Esto funciona así:"
 
-#: C/tooltip.py.page:44(item/p)
+#: C/tooltip.py.page:46(item/p)
 msgid ""
 "Set <code>\"has-tooltip\"</code> and connect to <code>\"query-tooltip\"</"
 "code> as before."
@@ -47060,7 +48780,7 @@ msgstr ""
 "Establezca <code>\"has-tooltip\"</code> y conecte con <code>\"query-tooltip"
 "\"</code> como antes."
 
-#: C/tooltip.py.page:45(item/p)
+#: C/tooltip.py.page:47(item/p)
 msgid ""
 "Use <code>set_tooltip_window()</code> on the widget to set a GtkWindow "
 "created by you as tooltip window."
@@ -47068,7 +48788,7 @@ msgstr ""
 "Use <code>set_tooltip_window()</code> en el widget para establecer una "
 "GtkWindow creada como ventana del consejo."
 
-#: C/tooltip.py.page:46(item/p)
+#: C/tooltip.py.page:48(item/p)
 msgid ""
 "In the <code>\"query-tooltip\"</code> callback you can access your window "
 "using <code>get_tooltip_window()</code> and manipulate as you wish. The "
@@ -47081,7 +48801,7 @@ msgstr ""
 "devuelva <code>True</code> para mostrar el widget o <code>False</code> para "
 "no hacerlo."
 
-#: C/tooltip.py.page:55(item/p)
+#: C/tooltip.py.page:57(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkTooltip.html";
 "\">GtkTooltip</link>"
@@ -47089,15 +48809,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkTooltip.html";
 "\">GtkTooltip</link>"
 
-#: C/tooltip.py.page:56(item/p)
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToolbar.html";
-"\">GtkToolbar</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToolbar.html";
-"\">GtkToolbar</link>"
-
-#: C/tooltip.py.page:57(item/p)
+#: C/tooltip.py.page:59(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkWidget.html";
 "\">GtkWidget</link>"
@@ -47105,7 +48817,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkWidget.html";
 "\">GtkWidget</link>"
 
-#: C/tooltip.py.page:58(item/p)
+#: C/tooltip.py.page:60(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Stock-Items.html";
 "\">Stock Items</link>"
@@ -47117,7 +48829,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/treeview_advanced_liststore.py.page:24(media)
+#: C/treeview_advanced_liststore.py.page:22(media)
 msgctxt "_"
 msgid ""
 "external ref='media/treeview_advanced_liststore.png' "
@@ -47131,16 +48843,17 @@ msgctxt "text"
 msgid "Simple Treeview with ListStore (Python)"
 msgstr "Treeview sencillo con ListStore (Python)"
 
-#: C/treeview_advanced_liststore.py.page:20(info/desc)
+#: C/treeview_advanced_liststore.py.page:18(info/desc)
 msgid "A TreeView displaying a ListStore (more complex example)"
 msgstr "Un TreeView mostrando un ListStore (ejemplo más complejo)"
 
-#: C/treeview_advanced_liststore.py.page:23(page/title)
-#: C/treeview_simple_liststore.vala.page:22(page/title)
-msgid "Simple Treeview with ListStore"
+#: C/treeview_advanced_liststore.py.page:21(page/title)
+#, fuzzy
+#| msgid "Simple Treeview with ListStore"
+msgid "More Complex Treeview with ListStore"
 msgstr "Treeview sencillo con ListStore"
 
-#: C/treeview_advanced_liststore.py.page:25(page/p)
+#: C/treeview_advanced_liststore.py.page:23(page/p)
 #: C/treeview_simple_liststore.py.page:24(page/p)
 msgid ""
 "This TreeView displays a simple ListStore with the selection \"changed\" "
@@ -47149,7 +48862,7 @@ msgstr ""
 "Este TreeView muestra un ListStore sencillo con la señal de selección "
 "«changed» conectada."
 
-#: C/treeview_advanced_liststore.py.page:32(section/code)
+#: C/treeview_advanced_liststore.py.page:30(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -47412,41 +49125,38 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/treeview_advanced_liststore.py.page:36(section/title)
-#: C/treeview_cellrenderertoggle.py.page:33(section/title)
+#: C/treeview_advanced_liststore.py.page:34(section/title)
+#: C/treeview_cellrenderertoggle.py.page:34(section/title)
 #: C/treeview_simple_liststore.py.page:35(section/title)
-#: C/treeview_treestore.py.page:33(section/title)
+#: C/treeview_treestore.py.page:35(section/title)
 msgid "Useful methods for a TreeView widget"
 msgstr "Métodos útiles para un widget TreeView"
 
-#: C/treeview_advanced_liststore.py.page:37(section/p)
-#: C/treeview_cellrenderertoggle.py.page:34(section/p)
-#: C/treeview_simple_liststore.py.page:36(section/p)
-#: C/treeview_treestore.py.page:34(section/p)
+#: C/treeview_advanced_liststore.py.page:35(section/p)
+#: C/treeview_cellrenderertoggle.py.page:35(section/p)
+#: C/treeview_treestore.py.page:36(section/p)
 msgid ""
 "The TreeView widget is designed around a <em>Model/View/Controller</em> "
-"design. For more information, and for a list of useful methods for TreeView "
-"and the interface TreeModel, see <link xref=\"model-view-controller.py"
-"\">here</link>."
+"design: the <em>Model</em> stores the data; the <em>View</em> gets change "
+"notifications and displays the content of the model; the <em>Controller</"
+"em>, finally, changes the state of the model and notifies the view of these "
+"changes. For more information and for a list of useful methods for TreeModel "
+"see <link xref=\"model-view-controller.py\"/>."
 msgstr ""
-"El widget TreeView está diseñado alrededor de un diseño <em>Modelo/Vista/"
-"Controlador</em>. Para obtener más información, y una lista de métodos "
-"útiles para TreeView y la interfaz TreeModel, consulte <link xref=\"model-"
-"view-controller.py\">aquí</link>."
 
-#: C/treeview_advanced_liststore.py.page:38(section/p)
+#: C/treeview_advanced_liststore.py.page:36(section/p)
 msgid ""
-"For buttons and callbacks functions, see <link xref=\"signals-callbacks.py"
-"\">here</link>"
+"In line 36 the <code>\"changed\"</code> signal is connected to the callback "
+"function <code>on_changed()</code> using <code><var>widget</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation."
 msgstr ""
-"Para botones y funciones de retorno de llamada, consulte <link xref="
-"\"signals-callbacks.py\">aquí</link>."
 
 #. This is a reference to an external file such as an image or video. When
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/treeview_cellrenderertoggle.py.page:21(media)
+#: C/treeview_cellrenderertoggle.py.page:22(media)
 msgctxt "_"
 msgid ""
 "external ref='media/treeview_cellrenderertoggle.png' "
@@ -47461,7 +49171,7 @@ msgctxt "text"
 msgid "TreeView with TreeStore (Python)"
 msgstr "TreeView con TreeStore (Python)"
 
-#: C/treeview_cellrenderertoggle.py.page:17(info/desc)
+#: C/treeview_cellrenderertoggle.py.page:18(info/desc)
 msgid ""
 "A TreeView displaying a TreeStore (more complex example, with "
 "CellRendererToggle)"
@@ -47469,12 +49179,13 @@ msgstr ""
 "Un TreeView mostrando un TreeStore (ejemplo más complejo, con "
 "CellRendererToggle)"
 
-#: C/treeview_cellrenderertoggle.py.page:20(page/title)
-#: C/treeview_treestore.py.page:20(page/title)
-msgid "TreeView with TreeStore"
+#: C/treeview_cellrenderertoggle.py.page:21(page/title)
+#, fuzzy
+#| msgid "TreeView with TreeStore"
+msgid "More Complex TreeView with TreeStore"
 msgstr "TreeView con TreeStore"
 
-#: C/treeview_cellrenderertoggle.py.page:22(page/p)
+#: C/treeview_cellrenderertoggle.py.page:23(page/p)
 msgid ""
 "This TreeView displays a TreeStore with two columns, one of which is "
 "rendered as a toggle."
@@ -47482,7 +49193,7 @@ msgstr ""
 "Este TreeView muestra un ListStore con dos columnas, una de las cuales se "
 "procesa como un interruptor."
 
-#: C/treeview_cellrenderertoggle.py.page:29(section/code)
+#: C/treeview_cellrenderertoggle.py.page:30(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -47689,8 +49400,16 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/treeview_cellrenderertoggle.py.page:43(item/p)
-#: C/treeview_treestore.py.page:43(item/p)
+#: C/treeview_cellrenderertoggle.py.page:36(section/p)
+msgid ""
+"In line 48 the <code>\"toggled\"</code> signal is connected to the callback "
+"function <code>on_toggled()</code> using <code><var>widget</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+
+#: C/treeview_cellrenderertoggle.py.page:45(item/p)
+#: C/treeview_treestore.py.page:45(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeStore.html";
 "\">GtkTreeStore</link>"
@@ -47698,7 +49417,7 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeStore.html";
 "\">GtkTreeStore</link>"
 
-#: C/treeview_cellrenderertoggle.py.page:45(item/p)
+#: C/treeview_cellrenderertoggle.py.page:47(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererToggle.";
 "html\">GtkCellRendererToggle</link>"
@@ -48063,8 +49782,8 @@ msgid ""
 "set, and an array which contains the data we want to put into those columns."
 msgstr ""
 "Este bucle <file>for</file> pone las cadenas de la libreta de direcciones en "
-"el ListStore ordenadas. En orden, se le pasa al método «set» del ListStore "
-"el iter que apunta a la fila correcta, una matriz que dice qué columnas se "
+"el ListStore ordenadas. En orden, se le pasa al método «set» del ListStore el "
+"iter que apunta a la fila correcta, una matriz que dice qué columnas se "
 "quieren establecer, y una matriz que contiene los datos que se quieren poner "
 "en esas columnas."
 
@@ -48997,7 +50716,25 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/treeview_simple_liststore.py.page:49(item/p)
+#: C/treeview_simple_liststore.py.page:36(section/p)
+msgid ""
+"The TreeView widget is designed around a <em>Model/View/Controller</em> "
+"design: the <em>Model</em> stores the data; the <em>View</em> gets change "
+"notifications and displays the content of the model; the <em>Controller</"
+"em>, finally, changes the state of the model and notifies the view of these "
+"changes. For more information, and for a list of useful methods for "
+"TreeModel, see <link xref=\"model-view-controller.py\"/>."
+msgstr ""
+
+#: C/treeview_simple_liststore.py.page:37(section/p)
+msgid ""
+"In line 44 the <code>\"changed\"</code> signal is connected to the callback "
+"function <code>on_changed()</code> using <code><var>widget</var>.connect"
+"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
+"\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+
+#: C/treeview_simple_liststore.py.page:50(item/p)
 msgid ""
 "<link href=\"http://developer.gnome.org/pango/stable/pango-Fonts.html";
 "\">Fonts</link>"
@@ -49016,6 +50753,10 @@ msgstr ""
 "Un widget puede mostrar cualquier implementación de TreeModel (listas y "
 "árboles)"
 
+#: C/treeview_simple_liststore.vala.page:22(page/title)
+msgid "Simple Treeview with ListStore"
+msgstr "Treeview sencillo con ListStore"
+
 #: C/treeview_simple_liststore.vala.page:24(page/p)
 msgid ""
 "This TreeView displays a simple ListStore with the Selection \"changed\" "
@@ -49299,7 +51040,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/treeview_treestore.py.page:21(media)
+#: C/treeview_treestore.py.page:23(media)
 msgctxt "_"
 msgid ""
 "external ref='media/treeview_treestore.png' "
@@ -49308,15 +51049,21 @@ msgstr ""
 "external ref='media/treeview_treestore.png' "
 "md5='5ca87bc4acd55c527b3fb5fd46779d85'"
 
-#: C/treeview_treestore.py.page:17(info/desc)
+#: C/treeview_treestore.py.page:19(info/desc)
 msgid "A TreeView displaying a TreeStore (simpler example)"
 msgstr "Un TreeView mostrando un TreeStore (ejemplo más simple)"
 
-#: C/treeview_treestore.py.page:22(page/p)
+#: C/treeview_treestore.py.page:22(page/title)
+#, fuzzy
+#| msgid "Simple TreeView with ListStore"
+msgid "Simpler TreeView with TreeStore"
+msgstr "TreeView sencillo con ListStore"
+
+#: C/treeview_treestore.py.page:24(page/p)
 msgid "This TreeView displays a TreeStore."
 msgstr "Este TreeView muestra un TreeStore"
 
-#: C/treeview_treestore.py.page:29(section/code)
+#: C/treeview_treestore.py.page:31(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -49499,9 +51246,12 @@ msgstr ""
 "\">lista de correo</link>."
 
 #: C/tutorial.py.page:8(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Guitar Tuner (Python)"
 msgctxt "text"
-msgid "Beginner's Tutorial (Python)"
-msgstr "Tutorial para principiantes (Python)"
+msgid "Tutorial for beginners (Python)"
+msgstr "Afinador de guitarra (Python)"
 
 #: C/tutorial.py.page:12(info/desc)
 msgid ""
@@ -49511,11 +51261,28 @@ msgstr ""
 "Un tutorial para principiantes que quieran aprender cómo programar IGU "
 "usando GTK+ en Python."
 
-#: C/tutorial.py.page:25(page/title)
-msgid "0 Beginner's Tutorial"
-msgstr "0. Tutorial para principiantes"
+#: C/tutorial.py.page:21(credit/years)
+#| msgid "2010, 2011"
+msgid "2012 2013"
+msgstr "2012 2013"
 
-#: C/tutorial.py.page:30(synopsis/p)
+#: C/tutorial.py.page:24(credit/name)
+msgid "Jim Campbell"
+msgstr ""
+
+#: C/tutorial.py.page:33(synopsis/p)
+#, fuzzy
+#| msgid ""
+#| "By following these tutorials you will learn the basics of GUI programming "
+#| "using Gtk+."
+msgid ""
+"By following these tutorials you will learn the basics of GUI programming "
+"using GTK+ in Python."
+msgstr ""
+"Siguiendo estos tutoriales, aprenderá los conceptos básicos de la "
+"programación de interfaces de usuario usando GTK+."
+
+#: C/tutorial.py.page:35(synopsis/p)
 msgid ""
 "If you have never programmed before, or are not familiar with the concepts "
 "of object oriented programming, you may need to learn a few basics first. "
@@ -49532,98 +51299,129 @@ msgstr ""
 "conceptos básicos. El libro <link href=\"http://learnpythonthehardway.org/";
 "book/\">Learn Python the Hard Way</link> o <link href=\"http://docs.python.";
 "org/tutorial/index.html\">The Python Tutorial</link> pueden ser un buen "
-"comienzo. Tal vez también esté interesado en <link href=\"http://python-";
-"gtk-3-tutorial.readthedocs.org/en/latest/index.html\">The Python GTK+ 3 "
+"comienzo. Tal vez también esté interesado en <link href=\"http://python-gtk-";
+"3-tutorial.readthedocs.org/en/latest/index.html\">The Python GTK+ 3 "
 "Tutorial</link>. Una vez que domine los conceptos básicos, vuelva y revise "
 "estos tutoriales."
 
-#: C/tutorial.py.page:36(section/title)
+#: C/tutorial.py.page:41(section/title)
 msgid "To run the code samples"
 msgstr "Para ejecutar los ejemplos de código"
 
-#: C/tutorial.py.page:40(item/p)
-msgid "Copy and paste the code into <var>filename</var>.py"
+#: C/tutorial.py.page:43(section/p)
+#, fuzzy
+#| msgid "To run the code samples:"
+msgid "To run the code samples in the tutorial:"
+msgstr "Para ejecutar los ejemplos de código:"
+
+#: C/tutorial.py.page:45(item/p)
+#, fuzzy
+#| msgid "Copy and paste the code into <var>filename</var>.py"
+msgid ""
+"Type or copy and paste the code into a file, and save the file with a name "
+"like <var>filename</var>.py"
 msgstr "Copie y pegue el código en <var>nombre_archivo</var>.py"
 
-#: C/tutorial.py.page:42(item/screen)
+#: C/tutorial.py.page:46(item/p)
+#, fuzzy
+#| msgid "These radiobuttons report their activity in the terminal."
+msgid "To execute the code, type in the terminal:"
+msgstr "Estos RadioButton informan de su actividad en la terminal."
+
+#: C/tutorial.py.page:47(item/screen)
 #, no-wrap
 msgid "python <var>filename</var>.py"
 msgstr "python <var>nombre_archivo</var>.py"
 
-#: C/tutorial.py.page:48(section/title)
-msgid "A path through the widgets"
+#: C/tutorial.py.page:50(section/p)
+msgid ""
+"After executing the code, you will either see the widget on your screen, or "
+"(if you have mistyped some of the code) you will see an error message that "
+"will help you identify the problem."
+msgstr ""
+
+#: C/tutorial.py.page:54(section/title)
+#, fuzzy
+#| msgid "A path through the widgets"
+msgid "A path through the widgets (with some theory)"
 msgstr "Un camino a través de los widgets"
 
-#: C/tutorial.py.page:50(steps/title)
+#: C/tutorial.py.page:55(section/p)
+msgid ""
+"The tutorial will walk you through increasingly complex examples and "
+"programming theory, but you can also feel free to just go directly to the "
+"tutorial that is most helpful to you."
+msgstr ""
+
+#: C/tutorial.py.page:57(steps/title)
 msgid "Tutorial"
 msgstr "Tutorial"
 
-#: C/tutorial.py.page:52(steps/title)
+#: C/tutorial.py.page:59(steps/title)
 msgid "Basic windows"
 msgstr "Ventanas básicas"
 
-#: C/tutorial.py.page:57(steps/title)
+#: C/tutorial.py.page:64(steps/title)
 msgid "Images and labels"
 msgstr "Imágenes y etiquetas"
 
 #: C/tutorial.py.page:70(steps/title)
-msgid "Basic buttons"
-msgstr "Botones básicos"
+#, fuzzy
+#| msgid "Introduction"
+msgid "Introduction to properties"
+msgstr "Introducción"
 
-#: C/tutorial.py.page:79(steps/title)
+#: C/tutorial.py.page:74(steps/title)
+msgid "Grid, separator and scrolling"
+msgstr ""
+
+#: C/tutorial.py.page:81(steps/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Signals and callbacks (Python)"
+msgid "Signals, callbacks and buttons"
+msgstr "Señales y retornos de llamada (Python)"
+
+#: C/tutorial.py.page:95(steps/title)
 msgid "Other display widgets"
 msgstr "Otros widgets de visualización"
 
-#: C/tutorial.py.page:85(steps/title)
-msgid "Entry widgets (with a detour on basic scrolling)"
-msgstr "Widgets de entrada (con algo de desplazamiento básico)"
+#: C/tutorial.py.page:101(steps/title)
+#, fuzzy
+#| msgid "Grid widget"
+msgid "Entry widgets"
+msgstr "Widget de rejilla"
+
+#: C/tutorial.py.page:107(steps/title)
+#, fuzzy
+#| msgid "A widget which displays text"
+msgid "A widget to write and display text"
+msgstr "Un widget que muestra un texto"
 
-#: C/tutorial.py.page:93(steps/title)
+#: C/tutorial.py.page:111(steps/title)
 msgid "Dialogs"
 msgstr "Diálogos"
 
-#: C/tutorial.py.page:99(steps/title)
-msgid "TreeViews and ComboBoxes (using the M/V/C design)"
-msgstr "TreeViews y ComboBoxes (usando el diseño M/V/C)"
-
-#: C/tutorial.py.page:108(steps/title)
-msgid "Menus and toolbars (also: using Glade)"
+#: C/tutorial.py.page:117(steps/title)
+#, fuzzy
+#| msgid "Menus and toolbars (also: using Glade)"
+msgid "Menus, Toolbars and Tooltips (also: using Glade and GtkBuilder)"
 msgstr "Menús y barras de herramientas (también usando Glade)"
 
-#: C/tutorial.py.page:116(steps/title)
-msgid "Selectors (a recap)"
-msgstr "Selectores (un resumen)"
-
-#: C/tutorial.py.page:126(steps/title)
-msgid "More containers"
-msgstr "Más contenedores"
-
-#: C/tutorial.py.page:131(steps/title)
-msgid "More scrolling"
-msgstr "Más desplazamiento"
-
-#: C/tutorial.py.page:132(item/p)
-msgid "\"scrollbar.py\""
-msgstr "«scrollbar.py»"
+#: C/tutorial.py.page:132(steps/title)
+msgid "TreeViews and ComboBoxes (using the M/V/C design)"
+msgstr "TreeViews y ComboBoxes (usando el diseño M/V/C)"
 
-#: C/tutorial.py.page:135(steps/title)
+#: C/tutorial.py.page:142(steps/title)
 msgid "Custom widget"
 msgstr "Widget personalizado"
 
-#: C/tutorial.py.page:136(item/p)
-msgid "\"widget.py\""
-msgstr "«widget.py»"
-
-#: C/tutorial.py.page:142(section/title)
-msgid "Some theory to help you"
-msgstr "Algo de teoría para ayudarle"
-
 #: C/vala.page:6(info/title)
 msgctxt "link"
 msgid "Vala"
 msgstr "Vala"
 
-#: C/vala.page:15(page/title)
+#: C/vala.page:20(page/title)
 msgid "Tutorials, code samples and platform demos in Vala"
 msgstr ""
 "Tutoriales, ejemplos de código y demostraciones de la plataforma en Vala"
@@ -49632,7 +51430,7 @@ msgstr ""
 #. the file changes, the md5 hash will change to let you know you need to
 #. update your localized copy. The msgstr is not used at all. Set it to
 #. whatever you like once you have updated your copy of the file.
-#: C/weatherApp.js.page:35(media)
+#: C/weatherApp.js.page:40(media)
 msgctxt "_"
 msgid ""
 "external ref='media/weatherAppJs.png' md5='1fe859ac4854273d72ea8fc9203639b2'"
@@ -49640,11 +51438,14 @@ msgstr ""
 "external ref='media/weatherAppJs.png' md5='1fe859ac4854273d72ea8fc9203639b2'"
 
 #: C/weatherApp.js.page:6(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Weather Application (JavaScript)"
 msgctxt "text"
-msgid "Weather Application (JavaScript)"
+msgid "Weather application (JavaScript)"
 msgstr "Aplicación del clima (JavaScript)"
 
-#: C/weatherApp.js.page:16(info/desc)
+#: C/weatherApp.js.page:21(info/desc)
 msgid ""
 "How to plan an application that uses asynchronous calls. Asynchronous calls "
 "will be presented through a weather application."
@@ -49653,11 +51454,13 @@ msgstr ""
 "asíncronas se presentarán mediante una aplicación de información "
 "meteorológica."
 
-#: C/weatherApp.js.page:21(page/title)
-msgid "4 Weather Application"
+#: C/weatherApp.js.page:26(page/title)
+#, fuzzy
+#| msgid "4 Weather Application"
+msgid "Weather application"
 msgstr "4 Aplicación del clima"
 
-#: C/weatherApp.js.page:23(synopsis/p)
+#: C/weatherApp.js.page:28(synopsis/p)
 msgid ""
 "In this guide well construct a weather application using asynchronous calls. "
 "Weather information in this example is fetched from geonames.org and the "
@@ -49676,32 +51479,32 @@ msgstr ""
 "GNOME 3 o superior instalado en su equipo. En esta guía se verán las "
 "siguientes partes:"
 
-#: C/weatherApp.js.page:26(item/p)
+#: C/weatherApp.js.page:31(item/p)
 msgid "<link xref=\"#planningUi\">Planning the graphical user interface</link>"
 msgstr ""
 "<link xref=\"#planningUi\">Planificar la interfaz gráfica de usuario</link>"
 
-#: C/weatherApp.js.page:27(item/p)
+#: C/weatherApp.js.page:32(item/p)
 msgid "<link xref=\"#asynchronous\">Asynchronous calls</link>"
 msgstr "<link xref=\"#asynchronous\">Llamadas asíncronas</link>"
 
-#: C/weatherApp.js.page:28(item/p)
+#: C/weatherApp.js.page:33(item/p)
 msgid "<link xref=\"#main\">The main program file</link>"
 msgstr "<link xref=\"#main\">El archivo del programa principal</link>"
 
-#: C/weatherApp.js.page:29(item/p)
+#: C/weatherApp.js.page:34(item/p)
 msgid "<link xref=\"#main\">Local library GeoNames</link>"
 msgstr "<link xref=\"#main\">Biblioteca local GeoNames</link>"
 
-#: C/weatherApp.js.page:30(item/p)
+#: C/weatherApp.js.page:35(item/p)
 msgid "<link xref=\"#main\">Autotools and Icons</link>"
 msgstr "<link xref=\"#main\">«Autotools» e iconos</link>"
 
-#: C/weatherApp.js.page:38(section/title)
+#: C/weatherApp.js.page:43(section/title)
 msgid "Planning the graphical user interface"
 msgstr "Planificar la interfaz gráfica de usuario"
 
-#: C/weatherApp.js.page:39(section/p)
+#: C/weatherApp.js.page:44(section/p)
 msgid ""
 "Structuring an application for GNOME 3 means you will be using <link href="
 "\"http://developer.gnome.org/platform-overview/stable/gtk\";>GTK+</link>. The "
@@ -49724,11 +51527,11 @@ msgstr ""
 "widgets en relación a otros widgets, por lo que después de colocar el "
 "primero, los demás se pueden colocar en relación al primero en la rejilla."
 
-#: C/weatherApp.js.page:42(section/title)
+#: C/weatherApp.js.page:47(section/title)
 msgid "Asynchronous calls"
 msgstr "Llamadas asíncronas"
 
-#: C/weatherApp.js.page:43(section/p)
+#: C/weatherApp.js.page:48(section/p)
 msgid ""
 "With many programming languages, all operations are run synchronously - you "
 "tell the program to do something, and it will wait until that action "
@@ -49753,7 +51556,7 @@ msgstr ""
 "ejemplo, para E/S del sistema de archivos y para cálculos lentos en segundo "
 "plano."
 
-#: C/weatherApp.js.page:46(section/p)
+#: C/weatherApp.js.page:51(section/p)
 msgid ""
 "In this example we have to get data from geonames.org. While we do that we "
 "want the rest of our program to continue. If we wouldn't get any information "
@@ -49769,7 +51572,7 @@ msgstr ""
 "main_quit() se procesa correctamente y habría que matar la aplicación desde "
 "una terminal."
 
-#: C/weatherApp.js.page:49(section/title)
+#: C/weatherApp.js.page:54(section/title)
 msgid "The different parts of the program"
 msgstr "Las diferentes partes del programa"
 
@@ -50047,8 +51850,8 @@ msgstr ""
 "hace con GeoNames es solicitar el tiempo. Todo lo que sucede después de "
 "GeoNames.getWeather(function(error, weather) ocurre sólo si se obtiene un "
 "mensaje de error o información del tiempo incorrecta. Si no pasa nada de "
-"esto, el resto del programa funciona de manera normal, por lo que "
-"«main_Quit» funciona."
+"esto, el resto del programa funciona de manera normal, por lo que «main_Quit» "
+"funciona."
 
 #: C/weatherAppMain.js.page:124(section/title)
 msgid "Connecting signals to button and entry."
@@ -50977,13 +52780,13 @@ msgctxt "text"
 msgid "Window (C)"
 msgstr "Ventana (C)"
 
-#: C/window.c.page:17(info/desc) C/window.py.page:22(info/desc)
+#: C/window.c.page:17(info/desc) C/window.py.page:24(info/desc)
 #: C/window.vala.page:17(info/desc)
 msgid "A toplevel window which can contain other widgets"
 msgstr "Una ventana de nivel superior que puede contener otros widgets"
 
 #: C/window.c.page:20(page/title) C/window.js.page:20(page/title)
-#: C/window.py.page:25(page/title) C/window.vala.page:20(page/title)
+#: C/window.py.page:27(page/title) C/window.vala.page:20(page/title)
 msgid "Window"
 msgstr "Ventana"
 
@@ -51187,19 +52990,25 @@ msgctxt "text"
 msgid "Window (Python)"
 msgstr "Ventana (Python)"
 
-#: C/window.py.page:31(td/p)
-msgid "A minimal Gtk+ Application: a window with a title."
+#: C/window.py.page:33(td/p)
+#, fuzzy
+#| msgid "A minimal Gtk+ Application: a window with a title."
+msgid "A minimal GTK+ Application: a window with a title."
 msgstr "Una aplicación mínima en GTK+: una ventana con un título"
 
-#: C/window.py.page:34(td/p)
+#: C/window.py.page:36(td/p)
+#, fuzzy
+#| msgid ""
+#| "Use <link xref=\"GtkApplicationWindow.py\">Application Window</link> if "
+#| "you need GMenu support."
 msgid ""
-"Use <link xref=\"GtkApplicationWindow.py\">Application Window</link> if you "
-"need GMenu support."
+"Use <link xref=\"GtkApplicationWindow.py\"/> if you need <link xref=\"gmenu."
+"py\"/> support."
 msgstr ""
 "Use una <link href=\"GtkApplicationWindow.py\">ventana de aplicación</link> "
 "si necesita soporte para GMenu."
 
-#: C/window.py.page:44(section/code)
+#: C/window.py.page:46(section/code)
 #, no-wrap
 msgid ""
 "from gi.repository import Gtk\n"
@@ -51238,22 +53047,10 @@ msgstr ""
 "exit_status = app.run(sys.argv)\n"
 "sys.exit(exit_status)\n"
 
-#: C/window.py.page:49(section/title)
+#: C/window.py.page:51(section/title)
 msgid "Useful methods for a Window widget"
 msgstr "Métodos útiles para un widget «Window»"
 
-#: C/window.py.page:50(section/p)
-msgid ""
-"<code>window = Gtk.Window(application=self, title=\"Welcome to GNOME\")</"
-"code> sets the title as well, without the need for the line <code>window."
-"set_title(\"Welcome to GNOME\")</code>. For a general discussion of this, "
-"see <link xref=\"properties.py\">here</link>."
-msgstr ""
-"<code>window = Gtk.Window(application=self, title=\"Welcome to GNOME\")</"
-"code> también establece el título, sin necesitar la línea <code>window."
-"set_title(\"Welcome to GNOME\")</code>. Para obtener más información sobre "
-"esto, consulte <link xref=\"properties.py\">aquí</link>."
-
 #: C/window.vala.page:7(info/title)
 msgctxt "text"
 msgid "Window (Vala)"
@@ -51389,3 +53186,606 @@ msgid ""
 msgstr ""
 "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.window_position.html";
 "\">window_position</link>"
+
+#~ msgid ""
+#~ "For an explanation of signals and callback functions, see <link xref="
+#~ "\"signals-callbacks.py\">this page</link>."
+#~ msgstr ""
+#~ "Para una explicación de señales y funciones de retorno de llamada, "
+#~ "consulte <link xref=\"signals-callbacks.py\">esta página</link>."
+
+#~ msgctxt "text"
+#~ msgid "Beginner's Tutorials (C)"
+#~ msgstr "Tutoriales para principiantes (C)"
+
+#~ msgid "0 Beginner's Tutorials"
+#~ msgstr "0. Tutoriales para principiantes"
+
+#~ msgid "0 Beginner's tutorials and samples"
+#~ msgstr "0. Tutoriales para principiantes y ejemplos"
+
+#~ msgctxt "text"
+#~ msgid "Beginner Tutorials (Vala)"
+#~ msgstr "Tutoriales para principiantes (Vala)"
+
+#~ msgid ""
+#~ "<code>button = Gtk.Button(label=\"Click me\")</code> could also be used "
+#~ "to create a button and set the text directly. For a general discussion of "
+#~ "this, see <link xref=\"properties.py\">here</link>."
+#~ msgstr ""
+#~ "<code>button = Gtk.Button(label=\"Click me\")</code> también podría "
+#~ "usarse para crear un botón y establecer el texto directamente. Para una "
+#~ "discusión general sobre esto, consulte <link xref=\"properties.py\">aquí</"
+#~ "link>."
+
+#~ msgid ""
+#~ "We could also create the CheckButton with <code>button = Gtk.CheckButton."
+#~ "new_with_label(\"Show Title\")</code>."
+#~ msgstr ""
+#~ "También se podría crear la casilla de verificación con <code>button = Gtk."
+#~ "CheckButton.new_with_label(\"Show Title\")</code>."
+
+#~ msgid ""
+#~ "For a discussion on signals and callback functions, see <link xref="
+#~ "\"signals-callbacks.py\">this page</link>."
+#~ msgstr ""
+#~ "Para ver una discusión sobre señales y funciones de retorno de llamada, "
+#~ "consulte <link xref=\"signals-callbacks.py\">esta página</link>."
+
+#~ msgid "Platform demos in C++"
+#~ msgstr "Demostraciones de la plataforma en C++"
+
+#~ msgid "<_:item-1/> <_:item-2/> <_:item-3/> <_:item-4/>."
+#~ msgstr "<_:item-1/> <_:item-2/> <_:item-3/> <_:item-4/>."
+
+#~ msgid "2 Guitar Tuner"
+#~ msgstr "2. Afinador de guitarra"
+
+#~ msgid "1 Image Viewer"
+#~ msgstr "1. Visor de imágenes"
+
+#~ msgid ""
+#~ "<code>label = Gtk.Label(label=\"Hello GNOME!\")</code> could also be used "
+#~ "to create a label and set the text directly. For a general discussion of "
+#~ "this, see <link xref=\"properties.py\">here</link>."
+#~ msgstr ""
+#~ "<code>label = Gtk.Label(label=\"Hello GNOME!\")</code> también podría "
+#~ "usarse para crear una etiqueta y establecer el texto directamente. Para "
+#~ "más información general sobre esto, consulte <link xref=\"properties.py"
+#~ "\">aquí</link>."
+
+#~ msgid ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/";
+#~ "treeview.html\">The Python Gtk+ 3 Tutorial - Tree and List Widgets</link>"
+#~ msgstr ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/";
+#~ "treeview.html\">El tutorial de GTK+ 3 en Python: widgets de árbol y "
+#~ "lista</link>"
+
+#~ msgid ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/";
+#~ "cellrenderers.html\">The Python Gtk+ 3 Tutorial - CellRenderers</link>"
+#~ msgstr ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/";
+#~ "cellrenderers.html\">El tutorial de GTK+ 3 en Python: «CellRenderer»</link>"
+
+#~ msgid ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/";
+#~ "combobox.html\">The Python Gtk+ 3 Tutorial - ComboBox</link>"
+#~ msgstr ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/";
+#~ "combobox.html\">El tutorial de GTK+ 3 en Python: «ComboBox»</link>"
+
+#~ msgid ""
+#~ "\n"
+#~ "int\n"
+#~ "main(int argc, char *argv[])\n"
+#~ "{\n"
+#~ "    ClutterColor stage_color = { 16, 16, 16, 255 };\n"
+#~ "    ClutterActor *stage = NULL;\n"
+#~ "\n"
+#~ "    clutter_init(&amp;argc, &amp;argv);\n"
+#~ "\n"
+#~ "    stage = clutter_stage_get_default();\n"
+#~ "    clutter_actor_set_size(stage, STAGE_WIDTH, STAGE_HEIGHT);\n"
+#~ "    clutter_stage_set_color(CLUTTER_STAGE (stage), &amp;stage_color);\n"
+#~ "\n"
+#~ "    load_image_path_names();\n"
+#~ "\n"
+#~ "    guint row = 0;\n"
+#~ "    guint col = 0;\n"
+#~ "    for(row=0; row &lt; ROW_COUNT; ++row)\n"
+#~ "    {\n"
+#~ "        for(col=0; col &lt; COL_COUNT; ++col)\n"
+#~ "        {\n"
+#~ "            GSList *img_path_node = g_slist_nth(img_path_list, (row * "
+#~ "COL_COUNT) + col);\n"
+#~ "            ClutterActor *actor = clutter_texture_new_from_file((gchar *)"
+#~ "(img_path_node-&gt;data), NULL);\n"
+#~ "            initialize_actor(actor, row, col);\n"
+#~ "            clutter_container_add_actor(CLUTTER_CONTAINER(stage), "
+#~ "actor);\n"
+#~ "            actor_list = g_slist_prepend(actor_list, actor);\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /* Show the stage. */\n"
+#~ "    clutter_actor_show(stage);\n"
+#~ "\n"
+#~ "    /* Start the clutter main loop. */\n"
+#~ "    clutter_main();\n"
+#~ "\n"
+#~ "    return 0;\n"
+#~ "}"
+#~ msgstr ""
+#~ "\n"
+#~ "int\n"
+#~ "main(int argc, char *argv[])\n"
+#~ "{\n"
+#~ "    ClutterColor stage_color = { 16, 16, 16, 255 };\n"
+#~ "    ClutterActor *stage = NULL;\n"
+#~ "\n"
+#~ "    clutter_init(&amp;argc, &amp;argv);\n"
+#~ "\n"
+#~ "    stage = clutter_stage_get_default();\n"
+#~ "    clutter_actor_set_size(stage, STAGE_WIDTH, STAGE_HEIGHT);\n"
+#~ "    clutter_stage_set_color(CLUTTER_STAGE (stage), &amp;stage_color);\n"
+#~ "\n"
+#~ "    load_image_path_names();\n"
+#~ "\n"
+#~ "    guint row = 0;\n"
+#~ "    guint col = 0;\n"
+#~ "    for(row=0; row &lt; ROW_COUNT; ++row)\n"
+#~ "    {\n"
+#~ "        for(col=0; col &lt; COL_COUNT; ++col)\n"
+#~ "        {\n"
+#~ "            GSList *img_path_node = g_slist_nth(img_path_list, (row * "
+#~ "COL_COUNT) + col);\n"
+#~ "            ClutterActor *actor = clutter_texture_new_from_file((gchar *)"
+#~ "(img_path_node-&gt;data), NULL);\n"
+#~ "            initialize_actor(actor, row, col);\n"
+#~ "            clutter_container_add_actor(CLUTTER_CONTAINER(stage), "
+#~ "actor);\n"
+#~ "            actor_list = g_slist_prepend(actor_list, actor);\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /* Show the stage. */\n"
+#~ "    clutter_actor_show(stage);\n"
+#~ "\n"
+#~ "    /* Start the clutter main loop. */\n"
+#~ "    clutter_main();\n"
+#~ "\n"
+#~ "    return 0;\n"
+#~ "}"
+
+#~ msgid ""
+#~ "\n"
+#~ "for(row=0; row &lt; ROW_COUNT; ++row)\n"
+#~ "{\n"
+#~ "    for(col=0; col &lt; COL_COUNT; ++col)\n"
+#~ "    {\n"
+#~ "        GSList *img_path_node = g_slist_nth(img_path_list, (row * "
+#~ "COL_COUNT) + col);\n"
+#~ "        ClutterActor *actor = clutter_texture_new_from_file((gchar *)"
+#~ "(img_path_node-&gt;data), NULL);\n"
+#~ "        initialize_actor(actor, row, col);\n"
+#~ "        clutter_container_add_actor(CLUTTER_CONTAINER(stage), actor);\n"
+#~ "        actor_list = g_slist_prepend(actor_list, actor);\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "for(row=0; row &lt; ROW_COUNT; ++row)\n"
+#~ "{\n"
+#~ "    for(col=0; col &lt; COL_COUNT; ++col)\n"
+#~ "    {\n"
+#~ "        GSList *img_path_node = g_slist_nth(img_path_list, (row * "
+#~ "COL_COUNT) + col);\n"
+#~ "        ClutterActor *actor = clutter_texture_new_from_file((gchar *)"
+#~ "(img_path_node-&gt;data), NULL);\n"
+#~ "        initialize_actor(actor, row, col);\n"
+#~ "        clutter_container_add_actor(CLUTTER_CONTAINER(stage), actor);\n"
+#~ "        actor_list = g_slist_prepend(actor_list, actor);\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "\n"
+
+#~ msgid "Line 7: We'll look at this function in a later section."
+#~ msgstr "Línea 7: está función se verá en una sección posterior."
+
+#~ msgid ""
+#~ "Line 9: This adds our <code>ClutterActor</code> to a <code>GSList</code> "
+#~ "so that we can later iterate over the <code>ClutterActor</code>s."
+#~ msgstr ""
+#~ "Línea 9: esto añade el <code>ClutterActor</code> a una <code>GSList</"
+#~ "code> por lo que luego se podrá iterar sobre los <code>ClutterActor</"
+#~ "code>."
+
+#~ msgid ""
+#~ "Interesting to note is that we want to prepend the <code>ClutterActor</"
+#~ "code>s rather than append so that we avoid traversing the list upon each "
+#~ "insertion. You will often see <code>g_slist_prepend</code> followed by "
+#~ "<code>g_slist_reverse</code> because it faster than inserting many "
+#~ "objects at the end of the list."
+#~ msgstr ""
+#~ "Es interesante tener en cuenta que se prefiere anteponer los "
+#~ "<code>ClutterActor</code> en lugar de adjuntarlos, lo que evita atravesar "
+#~ "la lista en cada inserción. A menudo vera <code>g_slist_prepend</code> "
+#~ "seguido de <code>g_slist_reverse</code>, ya que es más rápido que "
+#~ "insertar varios objetos al final de la lista."
+
+#~ msgid ""
+#~ "\n"
+#~ "static gboolean\n"
+#~ "actor_clicked_cb(ClutterActor *actor,\n"
+#~ "                 ClutterEvent *event,\n"
+#~ "                 gpointer      user_data)\n"
+#~ "{\n"
+#~ "    /* Flag to keep track of our state. */\n"
+#~ "    static gboolean is_focused = FALSE;\n"
+#~ "\n"
+#~ "    g_slist_foreach(actor_list, foreach_set_focus_state, &amp;"
+#~ "is_focused);\n"
+#~ "\n"
+#~ "    if(is_focused)\n"
+#~ "    {\n"
+#~ "        clutter_actor_animate(actor, CLUTTER_LINEAR, "
+#~ "ANIMATION_DURATION_MS,\n"
+#~ "                              \"x\",      origin.x,\n"
+#~ "                              \"y\",      origin.y,\n"
+#~ "                              \"depth\",  UNFOCUS_DEPTH,\n"
+#~ "                              \"width\",  (float) THUMBNAIL_SIZE,\n"
+#~ "                              \"height\", (float) THUMBNAIL_SIZE,\n"
+#~ "                              NULL);\n"
+#~ "    }\n"
+#~ "    else\n"
+#~ "    {\n"
+#~ "        /*Save the current location before animating. */\n"
+#~ "        clutter_actor_get_position(actor, &amp;origin.x, &amp;origin.y);\n"
+#~ "        clutter_actor_set_reactive(actor, TRUE);\n"
+#~ "        clutter_actor_animate(actor, CLUTTER_LINEAR, "
+#~ "ANIMATION_DURATION_MS,\n"
+#~ "                              \"x\",      (STAGE_WIDTH - STAGE_HEIGHT) / "
+#~ "2.0,\n"
+#~ "                              \"y\",      0.0,\n"
+#~ "                              \"depth\",  FOCUS_DEPTH,\n"
+#~ "                              \"width\",  (float) STAGE_HEIGHT,\n"
+#~ "                              \"height\", (float) STAGE_HEIGHT,\n"
+#~ "                              NULL);\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /* Toggle our flag. */\n"
+#~ "    is_focused = !is_focused;\n"
+#~ "\n"
+#~ "    return TRUE;\n"
+#~ "}"
+#~ msgstr ""
+#~ "\n"
+#~ "static gboolean\n"
+#~ "actor_clicked_cb(ClutterActor *actor,\n"
+#~ "                 ClutterEvent *event,\n"
+#~ "                 gpointer      user_data)\n"
+#~ "{\n"
+#~ "    /* Flag to keep track of our state. */\n"
+#~ "    static gboolean is_focused = FALSE;\n"
+#~ "\n"
+#~ "    g_slist_foreach(actor_list, foreach_set_focus_state, &amp;"
+#~ "is_focused);\n"
+#~ "\n"
+#~ "    if(is_focused)\n"
+#~ "    {\n"
+#~ "        clutter_actor_animate(actor, CLUTTER_LINEAR, "
+#~ "ANIMATION_DURATION_MS,\n"
+#~ "                              \"x\",      origin.x,\n"
+#~ "                              \"y\",      origin.y,\n"
+#~ "                              \"depth\",  UNFOCUS_DEPTH,\n"
+#~ "                              \"width\",  (float) THUMBNAIL_SIZE,\n"
+#~ "                              \"height\", (float) THUMBNAIL_SIZE,\n"
+#~ "                              NULL);\n"
+#~ "    }\n"
+#~ "    else\n"
+#~ "    {\n"
+#~ "        /*Save the current location before animating. */\n"
+#~ "        clutter_actor_get_position(actor, &amp;origin.x, &amp;origin.y);\n"
+#~ "        clutter_actor_set_reactive(actor, TRUE);\n"
+#~ "        clutter_actor_animate(actor, CLUTTER_LINEAR, "
+#~ "ANIMATION_DURATION_MS,\n"
+#~ "                              \"x\",      (STAGE_WIDTH - STAGE_HEIGHT) / "
+#~ "2.0,\n"
+#~ "                              \"y\",      0.0,\n"
+#~ "                              \"depth\",  FOCUS_DEPTH,\n"
+#~ "                              \"width\",  (float) STAGE_HEIGHT,\n"
+#~ "                              \"height\", (float) STAGE_HEIGHT,\n"
+#~ "                              NULL);\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /* Toggle our flag. */\n"
+#~ "    is_focused = !is_focused;\n"
+#~ "\n"
+#~ "    return TRUE;\n"
+#~ "}"
+
+#~ msgid ""
+#~ "Line 9: This line of code runs a custom function, "
+#~ "<code>foreach_set_focus_state</code>, for each element in our "
+#~ "<code>actor_list</code>, passing it the address to the <code>is_focused</"
+#~ "code> flag. We'll see the definition of the "
+#~ "<code>foreach_set_focus_state</code> function in the next section."
+#~ msgstr ""
+#~ "Línea 9: esta línea de código ejecuta una función personalizada, "
+#~ "<code>foreach_set_focus_state</code>, para cada elemento de la "
+#~ "<code>actor_list</code>, pasando la dirección al indicador "
+#~ "<code>is_focused</code>. La definición de la función "
+#~ "<code>foreach_set_focus_state</code> se verá en la siguiente sección."
+
+#~ msgid "The address of the <code>ClutterActor</code> to animate"
+#~ msgstr "La dirección del <code>ClutterActor</code> que animar"
+
+#~ msgid ""
+#~ "The animation mode to use. Here we use <code>CLUTTER_LINEAR</code> so "
+#~ "that we have a constant speed for animation."
+#~ msgstr ""
+#~ "El modo de animación que usar. Aquí se ha usado <code>CLUTTER_LINEAR</"
+#~ "code> por lo que se tiene una velocidad constante en la animación."
+
+#~ msgid ""
+#~ "The duration of the animation in milliseconds. I've chosen 500 ms for "
+#~ "this example."
+#~ msgstr ""
+#~ "La duración de la animación, en milisegundos. Se ha escogido 500 ms para "
+#~ "este ejemplo."
+
+#~ msgid ""
+#~ "The remaining arguments are property/value pairs. Here we want to set the "
+#~ "<code>x</code> value to the starting <code>x</code> value this "
+#~ "<code>ClutterActor</code> was at before being brought into focus."
+#~ msgstr ""
+#~ "El resto de argumentos son parejas propiedad/valor. Aquí se quiere "
+#~ "establecer el valor <code>x</code> al valor <code>x</code> inicial en el "
+#~ "que estaba el <code>ClutterActor</code> antes de darle el foco."
+
+#~ msgid ""
+#~ "The last argument must always be <code>NULL</code> to indicate that there "
+#~ "are no more properties to be set."
+#~ msgstr ""
+#~ "El último argumento debe ser siempre <code>NULL</code> para indicar que "
+#~ "no hay más propiedades que configurar."
+
+#~ msgid ""
+#~ "The <code>depth</code> property needs a little more explaining. We need "
+#~ "to raise the focused image so that it doesn't slide behind other "
+#~ "<code>ClutterActor</code>s. In this section we are returning it to the "
+#~ "same depth as the others on the wall."
+#~ msgstr ""
+#~ "La propiedad <code>depth</code> necesita un poco más de explicación. Se "
+#~ "debe elevar la imagen que tiene el foco para que no se deslice por debajo "
+#~ "de otros <code>ClutterActor</code>. En esta sección se está devolviendo a "
+#~ "la misma profundidad que las otras en el mural."
+
+#~ msgid ""
+#~ "Depth also determines which <code>ClutterActor</code>s receive events. A "
+#~ "<code>ClutterActor</code> with a higher depth value receives the click "
+#~ "events and can choose whether the event gets sent to <code>ClutterActor</"
+#~ "code>s under it. We'll see how that works in a few steps."
+#~ msgstr ""
+#~ "La profundidad también determina qué <code>ClutterActor</code> recibe "
+#~ "eventos. Un <code>ClutterActor</code> con una profundidad alta recibe los "
+#~ "eventos de las pulsaciones y puede elegir si el evento se envía a un "
+#~ "<code>ClutterActor</code> que esté debajo de él. Se verá cómo funciona "
+#~ "esto en pocos pasos."
+
+#~ msgid ""
+#~ "Lines 27‒33: This is similar to the above block of code. Notice that we "
+#~ "are setting the the depth to raise it above the other images."
+#~ msgstr ""
+#~ "Líneas 27‒33: esto es similar al bloque de código anterior. Tenga en "
+#~ "cuenta que se está estableciendo la profundidad para elevarlo por encima "
+#~ "del resto de imágenes."
+
+#~ msgid ""
+#~ "The following is the convenience function passed to "
+#~ "<code>g_slist_foreach</code>."
+#~ msgstr ""
+#~ "Lo siguiente es la función de conveniencia pasada a "
+#~ "<code>g_slist_foreach</code>."
+
+#~ msgid ""
+#~ "\n"
+#~ "static void\n"
+#~ "foreach_set_focus_state(gpointer data, gpointer user_data)\n"
+#~ "{\n"
+#~ "    ClutterActor *actor = CLUTTER_ACTOR(data);\n"
+#~ "    gboolean is_reactive = *((gboolean*)user_data);\n"
+#~ "\n"
+#~ "    clutter_actor_set_reactive(actor, is_reactive);\n"
+#~ "}"
+#~ msgstr ""
+#~ "\n"
+#~ "static void\n"
+#~ "foreach_set_focus_state(gpointer data, gpointer user_data)\n"
+#~ "{\n"
+#~ "    ClutterActor *actor = CLUTTER_ACTOR(data);\n"
+#~ "    gboolean is_reactive = *((gboolean*)user_data);\n"
+#~ "\n"
+#~ "    clutter_actor_set_reactive(actor, is_reactive);\n"
+#~ "}"
+
+#~ msgid ""
+#~ "Lines 2‒5: The signature of this function requires two <code>gpointer</"
+#~ "code>s. The first is a pointer to the <code>ClutterActor</code> that our "
+#~ "<code>GSList</code> holds and the other is the <code>is_focused</code> "
+#~ "flag that we've passed in the previous section. We want to cast these and "
+#~ "store them for easy use."
+#~ msgstr ""
+#~ "Líneas 2‒5: la firma de esta función requiere dos <code>gpointer</code>. "
+#~ "El primero es un puntero al <code>ClutterActor</code> contenido en la "
+#~ "<code>GSList</code> y el otro es el indicador <code>is_focused</code> que "
+#~ "se ha pasado en la sección anterior. Se quiere convertir su tipo («cast») "
+#~ "y almacenarlos para que sea fácil usarlos."
+
+#~ msgid ""
+#~ "Line 7: Depending on which boolean value is passed in, the "
+#~ "<code>ClutterActor</code> will be set to respond to events or not."
+#~ msgstr ""
+#~ "Línea 7: dependiendo de qué valor booleano se pasa, el "
+#~ "<code>ClutterActor</code> se establecerá para que responda o no a eventos."
+
+#~ msgid ""
+#~ "For a general discussion of this, see <link xref=\"properties.py\">here</"
+#~ "link>."
+#~ msgstr ""
+#~ "Para una discusión general de esto, consulte <link xref=\"properties.py"
+#~ "\">aquí</link>."
+
+#~ msgid ""
+#~ "For an explanation of signals and callback functions, see <link xref="
+#~ "\"signals-callbacks.py\">this page</link>. An example is the <code>"
+#~ "\"value-changed\"</code> signal, emitted when the value of the scale "
+#~ "changes."
+#~ msgstr ""
+#~ "Para una explicación de señales y funciones de retorno de llamada, "
+#~ "consulte <link xref=\"signals-callbacks.py\">esta página</link>. Un "
+#~ "ejemplo es la señal <code>«value-changed»</code>, que se emite cuando el "
+#~ "cambia el valor de la escala."
+
+#~ msgid ""
+#~ "For an explanation of signals and callback functions, see <link xref="
+#~ "\"signals-callbacks.py\">this page</link>. An example is the <code>"
+#~ "\"value-changed\"</code> signal, emitted when the value of the spinbutton "
+#~ "changes."
+#~ msgstr ""
+#~ "Para una explicación de señales y de funciones de retorno de llamada, "
+#~ "consulte <link xref=\"signals-callbacks.py\">esta página</link>. Un "
+#~ "ejemplo es la señal <code>\"value-changed\"</code>, emitida cuando el "
+#~ "cambia el valor del botón incremental."
+
+#~ msgid "Definitions"
+#~ msgstr "Definiciones"
+
+#~ msgid ""
+#~ "Conceptionally, a <em>string</em> is a list of <em>characters</em> such "
+#~ "as 'A', 'B', 'C' or 'È'. Characters are abstract representations and "
+#~ "their meaning depends on the language and context they are used in. The "
+#~ "<em>Unicode standard</em> describes how characters are represented by "
+#~ "<em>code points</em>. For example the characters above are represented "
+#~ "with the code points U+0041, U+0042, U+0043, and U+00C9, respectively. "
+#~ "Basically, code points are numbers in the range from 0 to 0x10FFFF."
+#~ msgstr ""
+#~ "Conceptualmente, una <em>cadena</em> es una lista de <em>caracteres</em> "
+#~ "como «A», «B», «C», o «È». Los caracteres son representaciones abstractas y "
+#~ "su significado depende del lenguaje y el contexto en el que se usan. El "
+#~ "<em>estándar Unicode</em> describe cómo sus significados se representan "
+#~ "por <em>puntos de código</em>. Por ejemplo, los caracteres anteriores se "
+#~ "representan con los puntos de código U+0041, U+0042, U+0043, y U+00C9, "
+#~ "respectivamente. Básicamente, los puntos de código son números entre 0 y "
+#~ "0x10FFFF"
+
+#~ msgid ""
+#~ "The representation of a string as a list of code points is abstract. In "
+#~ "order to convert this abstract representation into a sequence of bytes "
+#~ "the Unicode string must be <em>encoded</em>. The simplest from of "
+#~ "encoding is ASCII and is performed as follows:"
+#~ msgstr ""
+#~ "La representación de una cadena como una lista de puntos de código es "
+#~ "abstracta. Para convertir esta representación abstracta en una secuencia "
+#~ "de bytes, la cadena de Unicode debe <em>codificarse</em>. La forma más "
+#~ "simple de codificación es ASCII y se ejecuta de la siguiente manera:"
+
+#~ msgid ""
+#~ "If the code point is strictly less than 128, each byte is the same as the "
+#~ "value of the code point."
+#~ msgstr ""
+#~ "Si el punto de código es estrictamente menos de 128, cada byte es igual "
+#~ "al valor del punto de código."
+
+#~ msgid ""
+#~ "If the code point is 128 or greater, the Unicode string can’t be "
+#~ "represented in this encoding. (Python raises a <sys>UnicodeEncodeError</"
+#~ "sys> exception in this case.)"
+#~ msgstr ""
+#~ "Si el punto de código es 128 o mayor, la cadena de Unicode no puede "
+#~ "representarse en esta codificación. (Python eleva una excepción "
+#~ "<sys>UnicodeEncodeError</sys> en este caso)."
+
+#~ msgid ""
+#~ "Although ASCII encoding is simple to apply it can only encode for 128 "
+#~ "different characters which is hardly enough. One of the most commonly "
+#~ "used encodings that addresses this problem is UTF-8 (it can handle any "
+#~ "Unicode code point). UTF stands for “Unicode Transformation Format”, and "
+#~ "the ‘8’ means that 8-bit numbers are used in the encoding."
+#~ msgstr ""
+#~ "A pesar de que la codificación ASCII es simple de aplicar, sólo puede "
+#~ "codificar 128 caracteres diferentes, lo que no es suficiente. Una de las "
+#~ "codificaciones usadas más comúnmente que resuelve este problema es UTF-8 "
+#~ "(puede manejar cualquier punto de código Unicode). UTF significa «Formato "
+#~ "de Transformación de Unicode», y el «8» significa que se usan números de 8 "
+#~ "bits en esta codificación."
+
+#~ msgid ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/";
+#~ "builder.html\">The Python Gtk+ 3 Tutorial - Glade and Gtk.Builder</link>"
+#~ msgstr ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/";
+#~ "builder.html\">El tutorial de GTK+3 en Python: Glade y Gtk.Builder</link>"
+
+#~ msgid ""
+#~ "The TreeView widget is designed around a <em>Model/View/Controller</em> "
+#~ "design. For more information, and for a list of useful methods for "
+#~ "TreeView and the interface TreeModel, see <link xref=\"model-view-"
+#~ "controller.py\">here</link>."
+#~ msgstr ""
+#~ "El widget TreeView está diseñado alrededor de un diseño <em>Modelo/Vista/"
+#~ "Controlador</em>. Para obtener más información, y una lista de métodos "
+#~ "útiles para TreeView y la interfaz TreeModel, consulte <link xref=\"model-"
+#~ "view-controller.py\">aquí</link>."
+
+#~ msgid ""
+#~ "For buttons and callbacks functions, see <link xref=\"signals-callbacks.py"
+#~ "\">here</link>"
+#~ msgstr ""
+#~ "Para botones y funciones de retorno de llamada, consulte <link xref="
+#~ "\"signals-callbacks.py\">aquí</link>."
+
+#~ msgctxt "text"
+#~ msgid "Beginner's Tutorial (Python)"
+#~ msgstr "Tutorial para principiantes (Python)"
+
+#~ msgid "0 Beginner's Tutorial"
+#~ msgstr "0. Tutorial para principiantes"
+
+#~ msgid "Basic buttons"
+#~ msgstr "Botones básicos"
+
+#~ msgid "Entry widgets (with a detour on basic scrolling)"
+#~ msgstr "Widgets de entrada (con algo de desplazamiento básico)"
+
+#~ msgid "Selectors (a recap)"
+#~ msgstr "Selectores (un resumen)"
+
+#~ msgid "More containers"
+#~ msgstr "Más contenedores"
+
+#~ msgid "More scrolling"
+#~ msgstr "Más desplazamiento"
+
+#~ msgid "\"scrollbar.py\""
+#~ msgstr "«scrollbar.py»"
+
+#~ msgid "\"widget.py\""
+#~ msgstr "«widget.py»"
+
+#~ msgid "Some theory to help you"
+#~ msgstr "Algo de teoría para ayudarle"
+
+#~ msgid ""
+#~ "<code>window = Gtk.Window(application=self, title=\"Welcome to GNOME\")</"
+#~ "code> sets the title as well, without the need for the line <code>window."
+#~ "set_title(\"Welcome to GNOME\")</code>. For a general discussion of this, "
+#~ "see <link xref=\"properties.py\">here</link>."
+#~ msgstr ""
+#~ "<code>window = Gtk.Window(application=self, title=\"Welcome to GNOME\")</"
+#~ "code> también establece el título, sin necesitar la línea <code>window."
+#~ "set_title(\"Welcome to GNOME\")</code>. Para obtener más información "
+#~ "sobre esto, consulte <link xref=\"properties.py\">aquí</link>."


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]