[gnome-devel-docs] Updated Spanish translation



commit 7f5499677469179096f21f02275a253b6bff2d6b
Author: Daniel Mustieles <daniel mustieles gmail com>
Date:   Wed Jun 26 12:55:37 2013 +0200

    Updated Spanish translation

 platform-demos/es/es.po | 6111 ++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 5286 insertions(+), 825 deletions(-)
---
diff --git a/platform-demos/es/es.po b/platform-demos/es/es.po
index 53d535d..5f4661e 100644
--- a/platform-demos/es/es.po
+++ b/platform-demos/es/es.po
@@ -3,21 +3,21 @@
 # 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, 2013.
 # 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-04-06 15:44+0000\n"
-"PO-Revision-Date: 2013-03-24 23:23-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-06-25 20:02+0000\n"
+"PO-Revision-Date: 2013-06-26 12:54+0200\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"
+"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
@@ -76,7 +76,8 @@ msgstr "2011"
 #: C/c.page:10(credit/name) C/checkbutton.c.page:12(credit/name)
 #: C/checkbutton.vala.page:12(credit/name)
 #: C/colorbutton.vala.page:14(credit/name)
-#: C/combobox.vala.page:12(credit/name) C/cpp.page:10(credit/name)
+#: C/combobox.vala.page:12(credit/name)
+#: C/combobox_multicolumn.vala.page:13(credit/name) C/cpp.page:10(credit/name)
 #: C/dialog.vala.page:12(credit/name) C/documentation.page:10(credit/name)
 #: C/entry.vala.page:12(credit/name)
 #: C/filechooserdialog.vala.page:15(credit/name)
@@ -88,15 +89,19 @@ msgstr "2011"
 #: 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/hello-world.c.page:19(credit/name) C/hello-world.js.page:19(credit/name)
+#: C/hello-world.py.page:19(credit/name)
+#: C/hello-world.vala.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:13(credit/name) C/menubutton.vala.page:12(credit/name)
-#: C/messagedialog.vala.page:12(credit/name)
+#: C/messagedialog.vala.page:12(credit/name) C/paned.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)
+#: C/radiobutton.vala.page:15(credit/name) C/response-type.page:8(credit/name)
+#: C/scale.vala.page:14(credit/name)
 #: C/scrolledwindow.vala.page:13(credit/name)
+#: C/separator.vala.page:15(credit/name)
 #: C/spinbutton.vala.page:14(credit/name) C/spinner.vala.page:12(credit/name)
 #: C/statusbar.vala.page:15(credit/name) C/switch.vala.page:16(credit/name)
 #: C/textview.vala.page:12(credit/name)
@@ -104,6 +109,7 @@ msgstr "2011"
 #: C/toolbar.vala.page:13(credit/name)
 #: C/toolbar_builder.py.page:15(credit/name)
 #: C/toolbar_builder.vala.page:14(credit/name)
+#: C/tooltip.vala.page:13(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)
@@ -272,13 +278,16 @@ msgstr "Taryn Fox"
 #: 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: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: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/hellognome.js.page:13(credit/years) C/hello-world.c.page:16(credit/years)
+#: C/hello-world.js.page:16(credit/years)
+#: C/hello-world.py.page:16(credit/years)
+#: C/hello-world.vala.page:16(credit/years) C/image.c.page:14(credit/years)
+#: C/image.js.page:13(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: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.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)
@@ -296,7 +305,8 @@ msgstr "Taryn Fox"
 #: 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:16(credit/years)
-#: C/radiobutton.vala.page:17(credit/years) C/scale.c.page:16(credit/years)
+#: C/radiobutton.vala.page:17(credit/years)
+#: C/response-type.page:10(credit/years) C/scale.c.page:16(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)
@@ -783,9 +793,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
@@ -877,8 +887,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"
@@ -956,8 +966,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 ""
@@ -984,8 +994,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
@@ -1095,10 +1105,19 @@ msgstr "Eso da esto, cuando se ejecuta:"
 # Dejo las comillas "" porque así están en la página citada (que no está disponible en castellano, 
aparentemente).
 # Nicolás.
 #: C/02_welcome_to_the_grid.js.page:250(section/p)
+#, fuzzy
+#| msgid ""
+#| "That's what the stock \"About\" icon looks like. You can see a list of "
+#| "all the stock items starting with gtk-about in <link href=\"http://";
+#| "developer.gnome.org/gtk/2.24/gtk-Stock-Items.html#GTK-STOCK-ABOUT:CAPS"
+#| "\">GNOME's developer documentation</link>. It was written for C "
+#| "programmers, but you don't need to know C to use it; just look at the "
+#| "part in quotation marks, like \"gtk-about\", and copy that part to use "
+#| "the icon next to it."
 msgid ""
 "That's what the stock \"About\" icon looks like. You can see a list of all "
-"the stock items starting with gtk-about in <link href=\"http://developer.";
-"gnome.org/gtk/2.24/gtk-Stock-Items.html#GTK-STOCK-ABOUT:CAPS\">GNOME's "
+"the stock items starting with gtk-about in <link href=\"https://developer.";
+"gnome.org/gtk3/3.4/gtk3-Stock-Items.html#GTK-STOCK-ABOUT:CAPS\">GNOME's "
 "developer documentation</link>. It was written for C programmers, but you "
 "don't need to know C to use it; just look at the part in quotation marks, "
 "like \"gtk-about\", and copy that part to use the icon next to it."
@@ -1122,8 +1141,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)
@@ -1161,12 +1180,19 @@ msgstr ""
 "        this._grid.attach (this._button, 1, 1, 1, 1);\n"
 
 #: C/02_welcome_to_the_grid.js.page:269(section/p)
+#, fuzzy
+#| msgid ""
+#| "That's right, we turned the Label into a Button just by changing the "
+#| "name! If you run the application and click on it, though, you'll find "
+#| "that it doesn't do anything. How do we make our Button do something? "
+#| "That's what we'll find out, in <link xref=\"getting_the_signal.js\">our "
+#| "next tutorial</link>."
 msgid ""
 "That's right, we turned the Label into a Button just by changing the name! "
 "If you run the application and click on it, though, you'll find that it "
 "doesn't do anything. How do we make our Button do something? That's what "
-"we'll find out, in <link xref=\"getting_the_signal.js\">our next tutorial</"
-"link>."
+"we'll find out, in <link xref=\"03_getting_the_signal.js\">our next "
+"tutorial</link>."
 msgstr ""
 "Así es, se convirtió la etiqueta en un botón simplemente cambiándole el "
 "nombre. Si ejecuta la aplicación y la pulsa, sin embargo, encontrará que no "
@@ -1635,10 +1661,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"
@@ -1830,9 +1856,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)
@@ -2064,10 +2090,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 ""
@@ -2135,10 +2160,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
@@ -2170,8 +2195,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
@@ -2366,12 +2391,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 ""
@@ -2417,10 +2441,14 @@ msgstr ""
 "    }\n"
 
 #: C/03_getting_the_signal.js.page:340(section/p)
+#, fuzzy
+#| msgid ""
+#| "<link xref=\"04_popup_dialog_boxes.js\">Click here</link> to go on to the "
+#| "next tutorial. Or keep reading, if you'd like to see the complete code "
+#| "for each version of our cookie maker application."
 msgid ""
-"<link xref=\"04_popup_dialog_boxes.js\">Click here</link> to go on to the "
-"next tutorial. Or keep reading, if you'd like to see the complete code for "
-"each version of our cookie maker application."
+"Keep reading, if you'd like to see the complete code for each version of our "
+"cookie maker application."
 msgstr ""
 "<link xref=\"04_popup_dialog_boxes.js\">Pulse aquí</link> para ir al "
 "siguiente tutorial. O siga leyendo, si quiere ver el código completo para "
@@ -3693,19 +3721,23 @@ 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: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/button.py.page:52(section/p) C/buttonbox.js.page:35(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.js.page:33(section/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: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/combobox_multicolumn.py.page:41(section/p)
+#: C/combobox_multicolumn.vala.page:35(section/p) C/dialog.c.page:29(page/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: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:44(section/p) C/gmenu.c.page:27(page/p)
+#: C/fontchooserwidget.js.page:34(section/p)
+#: C/fontchooserwidget.py.page:44(section/p)
+#: C/fontchooserwidget.vala.page:34(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:54(section/p)
@@ -3724,27 +3756,31 @@ msgstr ""
 #: 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:39(section/p) C/progressbar.c.page:28(page/p)
+#: C/paned.js.page:33(section/p) C/paned.py.page:39(section/p)
+#: C/paned.vala.page:33(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: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.js.page:33(section/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: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: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: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/separator.vala.page:37(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: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: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: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.js.page:33(section/p)
+#: C/tooltip.py.page:55(section/p) C/tooltip.vala.page:34(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)
@@ -4168,31 +4204,39 @@ msgstr ""
 "muestra al pulsar el elemento de menú «Acerca de»)."
 
 #: C/aboutdialog.py.page:28(section/title) C/button.py.page:30(section/title)
-#: C/buttonbox.py.page:30(section/title)
+#: C/buttonbox.js.page:29(section/title) C/buttonbox.py.page:30(section/title)
 #: C/checkbutton.py.page:28(section/title)
+#: C/colorbutton.js.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/combobox_multicolumn.vala.page:28(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.js.page:28(section/title)
 #: C/fontchooserwidget.py.page:30(section/title)
+#: C/fontchooserwidget.vala.page:28(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:36(section/title)
-#: C/messagedialog.py.page:28(section/title) C/paned.py.page:28(section/title)
+#: C/messagedialog.py.page:28(section/title) C/paned.js.page:27(section/title)
+#: C/paned.py.page:28(section/title) C/paned.vala.page:27(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.js.page:27(section/title)
 #: C/scrolledwindow.py.page:28(section/title)
 #: C/separator.py.page:30(section/title)
+#: C/separator.vala.page:31(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/tooltip.js.page:27(section/title) C/tooltip.py.page:29(section/title)
+#: C/tooltip.vala.page:28(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)
@@ -4384,22 +4428,28 @@ msgstr ""
 "explicación más detallada."
 
 #: C/aboutdialog.py.page:40(section/title) C/button.py.page:51(section/title)
-#: C/buttonbox.py.page:45(section/title)
+#: C/buttonbox.js.page:34(section/title) C/buttonbox.py.page:45(section/title)
 #: C/checkbutton.py.page:41(section/title)
+#: C/colorbutton.js.page:32(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/combobox_multicolumn.vala.page:34(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.js.page:33(section/title)
 #: C/fontchooserwidget.py.page:43(section/title)
+#: C/fontchooserwidget.vala.page:33(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/messagedialog.py.page:53(section/title) C/paned.js.page:32(section/title)
+#: C/paned.py.page:38(section/title) C/paned.vala.page:32(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.js.page:32(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)
@@ -4407,7 +4457,8 @@ msgstr ""
 #: 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/tooltip.js.page:32(section/title) C/tooltip.py.page:54(section/title)
+#: C/tooltip.vala.page:33(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)
@@ -4648,6 +4699,10 @@ msgstr ""
 
 #: 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/buttonbox.js.page:15(credit/years) C/colorbutton.js.page:14(credit/years)
+#: C/combobox_multicolumn.vala.page:15(credit/years)
+#: C/fontchooserwidget.js.page:14(credit/years)
+#: C/fontchooserwidget.vala.page:14(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)
@@ -4659,11 +4714,13 @@ msgstr ""
 #: 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)
+#: C/message-board.c.page:21(credit/years) C/paned.js.page:14(credit/years)
+#: C/paned.vala.page:14(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/scrolledwindow.js.page:14(credit/years)
+#: C/separator.vala.page:17(credit/years) C/tooltip.js.page:15(credit/years)
+#: C/tooltip.vala.page:15(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"
 
@@ -4839,7 +4896,9 @@ msgid "Exercises"
 msgstr "Ejercicios"
 
 #: C/beginner.js.page:10(credit/name) C/grid.js.page:12(credit/name)
-#: C/guitar-tuner.js.page:11(credit/name) C/helloWorld.js.page:14(credit/name)
+#: C/guitar-tuner.js.page:11(credit/name) C/hello-world.c.page:14(credit/name)
+#: C/hello-world.js.page:14(credit/name) C/hello-world.py.page:14(credit/name)
+#: C/hello-world.vala.page:14(credit/name)
 #: C/weatherApp.js.page:11(credit/name)
 #: C/weatherAppMain.js.page:10(credit/name)
 #: C/weatherAutotools.js.page:10(credit/name)
@@ -5764,7 +5823,12 @@ 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: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/buttonbox.js.page:23(media) C/buttonbox.py.page:24(media)
 msgctxt "_"
 msgid ""
 "external ref='media/buttonbox_calculator.png' "
@@ -5773,23 +5837,601 @@ msgstr ""
 "external ref='media/buttonbox_calculator.png' "
 "md5='ce0de08b7ac66f517290e33e6d33d508'"
 
-#: C/buttonbox.py.page:7(info/title)
+#: C/buttonbox.js.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Button (JavaScript)"
 msgctxt "text"
-msgid "ButtonBox (Python)"
-msgstr "Botonera (Python)"
+msgid "ButtonBox (JavaScript)"
+msgstr "Botón (JavaScript)"
 
-#: C/buttonbox.py.page:19(info/desc)
+#: C/buttonbox.js.page:13(credit/name) C/colorbutton.js.page:12(credit/name)
+#: C/fontchooserwidget.js.page:12(credit/name) C/paned.js.page:12(credit/name)
+#: C/scrolledwindow.js.page:12(credit/name) C/tooltip.js.page:13(credit/name)
+msgid "Meg Ford"
+msgstr "Meg Ford"
+
+#: C/buttonbox.js.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:22(page/title) C/tutorial.py.page:91(steps/title)
+#: C/buttonbox.js.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:25(page/p)
+#: C/buttonbox.js.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.js.page:30(section/code)
+#, no-wrap
+#| msgid ""
+#| "from gi.repository import Gtk\n"
+#| "import sys\n"
+#| "\n"
+#| "class MyWindow(Gtk.ApplicationWindow):\n"
+#| "    def __init__(self, app):\n"
+#| "        Gtk.Window.__init__(self, title=\"Calculator\", application=app)\n"
+#| "        self.set_default_size(350, 200)\n"
+#| "        self.set_border_width(10)\n"
+#| "\n"
+#| "        # an entry\n"
+#| "        self.entry = Gtk.Entry()\n"
+#| "        # with an initial text\n"
+#| "        self.entry.set_text('0')\n"
+#| "        # text aligned on the right\n"
+#| "        self.entry.set_alignment(1)\n"
+#| "        # the text in the entry cannot be modified writing in it\n"
+#| "        self.entry.set_can_focus(False)\n"
+#| "\n"
+#| "        # a grid\n"
+#| "        grid = Gtk.Grid()\n"
+#| "        grid.set_row_spacing(5)\n"
+#| "        \n"
+#| "        # to attach the entry\n"
+#| "        grid.attach(self.entry, 0, 0, 1, 1)\n"
+#| "        \n"
+#| "        # the labels for the buttons\n"
+#| "        buttons = [ 7, 8, 9, '/',\n"
+#| "                    4, 5, 6, '*',\n"
+#| "                    1, 2, 3, '-',\n"
+#| "                    'C', 0, '=', '+' ]\n"
+#| "        \n"
+#| "        # each row is a ButtonBox, attached to the grid            \n"
+#| "        for i in range(4):\n"
+#| "            hbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL)\n"
+#| "            hbox.set_spacing(5)\n"
+#| "            grid.attach(hbox, 0, i + 1, 1, 1)\n"
+#| "            # each ButtonBox has 4 buttons, connected to the callback function\n"
+#| "            for j in range(4):\n"
+#| "                button = Gtk.Button(label=buttons[i * 4 + j])\n"
+#| "                button.set_can_focus(False)\n"
+#| "                button.connect(\"clicked\", self.button_clicked)\n"
+#| "                hbox.add(button)\n"
+#| "            \n"
+#| "        # some variables for the calculations\n"
+#| "        self.first_number = 0\n"
+#| "        self.second_number = 0\n"
+#| "        self.counter = 0\n"
+#| "        self.operation = \"\"\n"
+#| "\n"
+#| "        # add the grid to the window\n"
+#| "        self.add(grid)\n"
+#| "\n"
+#| "    # callback function for all the buttons\n"
+#| "    def button_clicked(self, button):\n"
+#| "        # for the operations\n"
+#| "        if button.get_label() == '+':\n"
+#| "            self.counter += 1 \n"
+#| "            if self.counter &gt; 1:\n"
+#| "                self.do_operation()\n"
+#| "            self.entry.set_text('0')\n"
+#| "            self.operation = \"plus\"\n"
+#| "        elif button.get_label() == '-':\n"
+#| "            self.counter += 1 \n"
+#| "            if self.counter &gt; 1:\n"
+#| "                self.do_operation()\n"
+#| "            self.entry.set_text('0')\n"
+#| "            self.operation = \"minus\"\n"
+#| "        elif button.get_label() == '*':\n"
+#| "            self.counter += 1 \n"
+#| "            if self.counter &gt; 1:\n"
+#| "                self.do_operation()\n"
+#| "            self.entry.set_text('0')\n"
+#| "            self.operation = \"multiplication\"\n"
+#| "        elif button.get_label() == '/':\n"
+#| "            self.counter += 1 \n"
+#| "            if self.counter &gt; 1:\n"
+#| "                self.do_operation()\n"
+#| "            self.entry.set_text('0')\n"
+#| "            self.operation = \"division\"\n"
+#| "        # for =\n"
+#| "        elif button.get_label() == '=':\n"
+#| "            self.do_operation()\n"
+#| "            self.entry.set_text(str(self.first_number))\n"
+#| "            self.counter = 1\n"
+#| "        # for Cancel\n"
+#| "        elif button.get_label() == 'C':\n"
+#| "            self.first_number = 0\n"
+#| "            self.second_number = 0\n"
+#| "            self.counter = 0\n"
+#| "            self.entry.set_text('')\n"
+#| "            self.operation = \"\"\n"
+#| "        # for a digit button\n"
+#| "        else:\n"
+#| "            new_digit = int(button.get_label())\n"
+#| "            if self.entry.get_text() == 'error':\n"
+#| "                number = 0\n"
+#| "            else:\n"
+#| "                number = int(self.entry.get_text())\n"
+#| "            number = number * 10 + new_digit            \n"
+#| "            if self.counter == 0:\n"
+#| "                self.first_number = number\n"
+#| "            else:\n"
+#| "                self.second_number = number\n"
+#| "            self.entry.set_text(str(number))\n"
+#| "\n"
+#| "    def do_operation(self):\n"
+#| "        if self.operation == \"plus\":\n"
+#| "            self.first_number += self.second_number\n"
+#| "        elif self.operation == \"minus\":\n"
+#| "            self.first_number -= self.second_number\n"
+#| "        elif self.operation == \"multiplication\":\n"
+#| "            self.first_number *= self.second_number\n"
+#| "        elif self.operation == \"division\":\n"
+#| "            try:\n"
+#| "                self.first_number /= self.second_number\n"
+#| "            except ZeroDivisionError:\n"
+#| "                self.first_number = 0\n"
+#| "                self.second_number = 0\n"
+#| "                self.counter = 0\n"
+#| "                self.entry.set_text('error')\n"
+#| "                self.operation = \"\"\n"
+#| "                return\n"
+#| "        else:\n"
+#| "            self.first_number = 0\n"
+#| "            self.second_number = 0\n"
+#| "            self.counter = 0\n"
+#| "            self.entry.set_text('error')\n"
+#| "            \n"
+#| "class MyApplication(Gtk.Application):\n"
+#| "    def __init__(self):\n"
+#| "        Gtk.Application.__init__(self)\n"
+#| "\n"
+#| "    def do_activate(self):\n"
+#| "        win = MyWindow(self)\n"
+#| "        win.show_all()\n"
+#| "\n"
+#| "    def do_startup(self):\n"
+#| "        Gtk.Application.do_startup(self)\n"
+#| "\n"
+#| "app = MyApplication()\n"
+#| "exit_status = app.run(sys.argv)\n"
+#| "sys.exit(exit_status)\n"
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ButtonBoxExample = new Lang.Class ({\n"
+"    Name: 'ButtonBox Example',\n"
+"\n"
+"    // Create the application itthis\n"
+"    _init: function () {\n"
+"        this.application = new Gtk.Application({ application_id: 'org.example.jsbuttonbox' });\n"
+"\n"
+"        // Connect 'activate' and 'startup' signals to the callback functions\n"
+"        this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+"        this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+"    },\n"
+"\n"
+"    // Callback function for 'activate' signal presents windows when active\n"
+"    _onActivate: function() {\n"
+"        this.window.present();\n"
+"    },\n"
+"\n"
+"    // Callback function for 'startup' signal builds the UI\n"
+"    _onStartup: function() {\n"
+"        this._buildUI ();\n"
+"    },\n"
+"\n"
+"    // Build the application's UI\n"
+"    _buildUI: function() {\n"
+"        // Create the application window\n"
+"        this.window = new Gtk.ApplicationWindow  ({ application: this.application,\n"
+"                                                    window_position: Gtk.WindowPosition.CENTER,\n"
+"                                                    title: \"Calculator\",\n"
+"                                                    default_width: 350,\n"
+"                                                    default_height: 200,\n"
+"                                                    border_width: 10 });\n"
+"        this.entry = new Gtk.Entry();\n"
+"        this.entry.set_text('0');\n"
+"        // text aligned on the right\n"
+"        this.entry.set_alignment(1);\n"
+"        // the text in the entry cannot be modified by writing in it\n"
+"        this.entry.set_can_focus(false);\n"
+"\n"
+"        // a grid\n"
+"        this.grid = new Gtk.Grid();\n"
+"        this.grid.set_row_spacing(5);\n"
+"        \n"
+"        // to attach the entry\n"
+"        this.grid.attach(this.entry, 0, 0, 1, 1);\n"
+"        \n"
+"        // the labels for the buttons\n"
+"        this.buttons = [ 7, 8, 9, '/', 4, 5, 6, '*', 1, 2, 3, '-', 'C', 0, '=', '+' ];\n"
+"        \n"
+"        // each row is a ButtonBox, attached to the grid            \n"
+"        for (i = 0; i &lt; 4; i++) {\n"
+"            this.hbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL);\n"
+"            this.hbox.set_spacing(5);\n"
+"            this.grid.attach(this.hbox, 0, i + 1, 1, 1);\n"
+"            // each ButtonBox has 4 buttons, connected to the callback function\n"
+"            for (j= 0; j &lt; 4; j++) {\n"
+"                this.button = new Gtk.Button();\n"
+"                this.buttonLabel = (this.buttons[i * 4 + j].toString());\n"
+"                this.button.set_label(this.buttonLabel);\n"
+"                this.button.set_can_focus(false);\n"
+"                this.button.connect(\"clicked\", Lang.bind(this, this._buttonClicked, this.button));\n"
+"                this.hbox.add(this.button);\n"
+"            }\n"
+"        }\n"
+"            \n"
+"        // some variables for the calculations\n"
+"        this.firstNumber = 0;\n"
+"        this.secondNumber = 0;\n"
+"        this.counter = 0;\n"
+"        this.operation = \"\";\n"
+"\n"
+"        // add the grid to the window\n"
+"        this.window.add(this.grid);\n"
+"        this.window.show_all();\n"
+"    },\n"
+"\n"
+"    // callback function for all the buttons\n"
+"    _buttonClicked: function(button) {\n"
+"        this.button = button;\n"
+"        // for the operations\n"
+"        if (this.button.get_label() == '+') {\n"
+"            this.counter += 1 \n"
+"            if (this.counter &gt; 1)\n"
+"                this._doOperation();\n"
+"            this.entry.set_text('0');\n"
+"            this.operation = \"plus\";\n"
+"        }\n"
+"\n"
+"        else if (this.button.get_label() == '-') {\n"
+"            this.counter += 1;\n"
+"            if (this.counter &gt; 1)\n"
+"                this._doOperation();\n"
+"            this.entry.set_text('0');\n"
+"            this.operation = \"minus\";\n"
+"        }\n"
+"\n"
+"        else if (this.button.get_label() == '*') {\n"
+"            this.counter += 1; \n"
+"            if (this.counter &gt; 1)\n"
+"                this._doOperation();\n"
+"            this.entry.set_text('0');\n"
+"            this.operation = \"multiplication\";\n"
+"        }\n"
+"\n"
+"        else if (this.button.get_label() == '/') {\n"
+"            this.counter += 1 \n"
+"            if (this.counter &gt; 1)\n"
+"                this._doOperation();\n"
+"            this.entry.set_text('0');\n"
+"            this.operation = \"division\";\n"
+"        }\n"
+"\n"
+"        // for =\n"
+"        else if (this.button.get_label() == '=') {\n"
+"            this._doOperation();\n"
+"            this.entry.set_text(this.firstNumber.toString());\n"
+"            this.counter = 1;\n"
+"        }\n"
+"\n"
+"        // for Cancel\n"
+"        else if (this.button.get_label() == 'C') {\n"
+"            this.firstNumber = 0;\n"
+"            this.secondNumber = 0;\n"
+"            this.counter = 0;\n"
+"            this.entry.set_text('0');\n"
+"            this.operation = \"\";\n"
+"        }\n"
+"\n"
+"        // for a digit button\n"
+"        else {\n"
+"            this.newDigit = parseInt(this.button.get_label());\n"
+"            if (this.entry.get_text() == \"error\")\n"
+"                this.number = 0;\n"
+"            else\n"
+"                this.number = parseInt(this.entry.get_text());\n"
+"            this.number = this.number * 10 + this.newDigit;            \n"
+"            if (this.counter == 0)\n"
+"                this.firstNumber = this.number;\n"
+"            else\n"
+"                this.secondNumber = this.number;\n"
+"            this.entry.set_text(this.number.toString());\n"
+"        }\n"
+"     },\n"
+"\n"
+"     _doOperation: function() {\n"
+"        if (this.operation == \"plus\") {\n"
+"           this.firstNumber += this.secondNumber;\n"
+"        } else if (this.operation == \"minus\") {\n"
+"            this.firstNumber -= this.secondNumber;\n"
+"        } else if (this.operation == \"multiplication\") {\n"
+"            this.firstNumber *= this.secondNumber;\n"
+"        } else if (this.operation == \"division\") {\n"
+"            if (this.secondNumber != 0) {\n"
+"                this.firstNumber /= this.secondNumber;\n"
+"            } else {\n"
+"                this.firstNumber = 0; \n"
+"                this.secondNumber = 0;\n"
+"                this.counter = 0; \n"
+"                this.entry.set_text(\"error\");\n"
+"                this.operation = \"\";\n"
+"\n"
+"                return\n"
+"            }\n"
+"        } else {\n"
+"            this.firstNumber = 0;\n"
+"            this.secondNumber = 0;\n"
+"            this.counter = 0;\n"
+"            this.entry.set_text(\"error\");\n"
+"        }\n"
+"    }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ButtonBoxExample();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ButtonBoxExample = new Lang.Class ({\n"
+"    Name: 'ButtonBox Example',\n"
+"\n"
+"    // Create the application itthis\n"
+"    _init: function () {\n"
+"        this.application = new Gtk.Application({ application_id: 'org.example.jsbuttonbox' });\n"
+"\n"
+"        // Connect 'activate' and 'startup' signals to the callback functions\n"
+"        this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+"        this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+"    },\n"
+"\n"
+"    // Callback function for 'activate' signal presents windows when active\n"
+"    _onActivate: function() {\n"
+"        this.window.present();\n"
+"    },\n"
+"\n"
+"    // Callback function for 'startup' signal builds the UI\n"
+"    _onStartup: function() {\n"
+"        this._buildUI ();\n"
+"    },\n"
+"\n"
+"    // Build the application's UI\n"
+"    _buildUI: function() {\n"
+"        // Create the application window\n"
+"        this.window = new Gtk.ApplicationWindow  ({ application: this.application,\n"
+"                                                    window_position: Gtk.WindowPosition.CENTER,\n"
+"                                                    title: \"Calculator\",\n"
+"                                                    default_width: 350,\n"
+"                                                    default_height: 200,\n"
+"                                                    border_width: 10 });\n"
+"        this.entry = new Gtk.Entry();\n"
+"        this.entry.set_text('0');\n"
+"        // text aligned on the right\n"
+"        this.entry.set_alignment(1);\n"
+"        // the text in the entry cannot be modified by writing in it\n"
+"        this.entry.set_can_focus(false);\n"
+"\n"
+"        // a grid\n"
+"        this.grid = new Gtk.Grid();\n"
+"        this.grid.set_row_spacing(5);\n"
+"        \n"
+"        // to attach the entry\n"
+"        this.grid.attach(this.entry, 0, 0, 1, 1);\n"
+"        \n"
+"        // the labels for the buttons\n"
+"        this.buttons = [ 7, 8, 9, '/', 4, 5, 6, '*', 1, 2, 3, '-', 'C', 0, '=', '+' ];\n"
+"        \n"
+"        // each row is a ButtonBox, attached to the grid            \n"
+"        for (i = 0; i &lt; 4; i++) {\n"
+"            this.hbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL);\n"
+"            this.hbox.set_spacing(5);\n"
+"            this.grid.attach(this.hbox, 0, i + 1, 1, 1);\n"
+"            // each ButtonBox has 4 buttons, connected to the callback function\n"
+"            for (j= 0; j &lt; 4; j++) {\n"
+"                this.button = new Gtk.Button();\n"
+"                this.buttonLabel = (this.buttons[i * 4 + j].toString());\n"
+"                this.button.set_label(this.buttonLabel);\n"
+"                this.button.set_can_focus(false);\n"
+"                this.button.connect(\"clicked\", Lang.bind(this, this._buttonClicked, this.button));\n"
+"                this.hbox.add(this.button);\n"
+"            }\n"
+"        }\n"
+"            \n"
+"        // some variables for the calculations\n"
+"        this.firstNumber = 0;\n"
+"        this.secondNumber = 0;\n"
+"        this.counter = 0;\n"
+"        this.operation = \"\";\n"
+"\n"
+"        // add the grid to the window\n"
+"        this.window.add(this.grid);\n"
+"        this.window.show_all();\n"
+"    },\n"
+"\n"
+"    // callback function for all the buttons\n"
+"    _buttonClicked: function(button) {\n"
+"        this.button = button;\n"
+"        // for the operations\n"
+"        if (this.button.get_label() == '+') {\n"
+"            this.counter += 1 \n"
+"            if (this.counter &gt; 1)\n"
+"                this._doOperation();\n"
+"            this.entry.set_text('0');\n"
+"            this.operation = \"plus\";\n"
+"        }\n"
+"\n"
+"        else if (this.button.get_label() == '-') {\n"
+"            this.counter += 1;\n"
+"            if (this.counter &gt; 1)\n"
+"                this._doOperation();\n"
+"            this.entry.set_text('0');\n"
+"            this.operation = \"minus\";\n"
+"        }\n"
+"\n"
+"        else if (this.button.get_label() == '*') {\n"
+"            this.counter += 1; \n"
+"            if (this.counter &gt; 1)\n"
+"                this._doOperation();\n"
+"            this.entry.set_text('0');\n"
+"            this.operation = \"multiplication\";\n"
+"        }\n"
+"\n"
+"        else if (this.button.get_label() == '/') {\n"
+"            this.counter += 1 \n"
+"            if (this.counter &gt; 1)\n"
+"                this._doOperation();\n"
+"            this.entry.set_text('0');\n"
+"            this.operation = \"division\";\n"
+"        }\n"
+"\n"
+"        // for =\n"
+"        else if (this.button.get_label() == '=') {\n"
+"            this._doOperation();\n"
+"            this.entry.set_text(this.firstNumber.toString());\n"
+"            this.counter = 1;\n"
+"        }\n"
+"\n"
+"        // for Cancel\n"
+"        else if (this.button.get_label() == 'C') {\n"
+"            this.firstNumber = 0;\n"
+"            this.secondNumber = 0;\n"
+"            this.counter = 0;\n"
+"            this.entry.set_text('0');\n"
+"            this.operation = \"\";\n"
+"        }\n"
+"\n"
+"        // for a digit button\n"
+"        else {\n"
+"            this.newDigit = parseInt(this.button.get_label());\n"
+"            if (this.entry.get_text() == \"error\")\n"
+"                this.number = 0;\n"
+"            else\n"
+"                this.number = parseInt(this.entry.get_text());\n"
+"            this.number = this.number * 10 + this.newDigit;            \n"
+"            if (this.counter == 0)\n"
+"                this.firstNumber = this.number;\n"
+"            else\n"
+"                this.secondNumber = this.number;\n"
+"            this.entry.set_text(this.number.toString());\n"
+"        }\n"
+"     },\n"
+"\n"
+"     _doOperation: function() {\n"
+"        if (this.operation == \"plus\") {\n"
+"           this.firstNumber += this.secondNumber;\n"
+"        } else if (this.operation == \"minus\") {\n"
+"            this.firstNumber -= this.secondNumber;\n"
+"        } else if (this.operation == \"multiplication\") {\n"
+"            this.firstNumber *= this.secondNumber;\n"
+"        } else if (this.operation == \"division\") {\n"
+"            if (this.secondNumber != 0) {\n"
+"                this.firstNumber /= this.secondNumber;\n"
+"            } else {\n"
+"                this.firstNumber = 0; \n"
+"                this.secondNumber = 0;\n"
+"                this.counter = 0; \n"
+"                this.entry.set_text(\"error\");\n"
+"                this.operation = \"\";\n"
+"\n"
+"                return\n"
+"            }\n"
+"        } else {\n"
+"            this.firstNumber = 0;\n"
+"            this.secondNumber = 0;\n"
+"            this.counter = 0;\n"
+"            this.entry.set_text(\"error\");\n"
+"        }\n"
+"    }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ButtonBoxExample();\n"
+"app.application.run (ARGV);\n"
+
+#: C/buttonbox.js.page:37(item/p)
+#| msgid ""
+#| "<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html";
+#| "\">Gtk.Button</link>"
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ButtonBox.html";
+"\">GtkButtonBox</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ButtonBox.html";
+"\">GtkButtonBox</link>"
+
+#: C/buttonbox.js.page:38(item/p)
+#| msgid ""
+#| "<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html";
+#| "\">Gtk.Button</link>"
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Box.html";
+"\">GtkBox</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Box.html";
+"\">GtkBox</link>"
+
+#: C/buttonbox.js.page:39(item/p)
+#| msgid ""
+#| "<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html";
+#| "\">Gtk.Button</link>"
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html";
+"\">GtkButton</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html";
+"\">GtkButton</link>"
+
+#: C/buttonbox.js.page:40(item/p)
+#| msgid ""
+#| "<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Entry.html";
+#| "\">Gtk.Entry</link>"
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Entry.html";
+"\">GtkEntry</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Entry.html";
+"\">GtkEntry</link>"
+
+#: C/buttonbox.js.page:41(item/p)
+#| msgid ""
+#| "<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html";
+#| "\">Gtk.Grid</link>"
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html";
+"\">GtkGrid</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html";
+"\">GtkGrid</link>"
+
+#: C/buttonbox.py.page:7(info/title)
+msgctxt "text"
+msgid "ButtonBox (Python)"
+msgstr "Botonera (Python)"
+
 #: C/buttonbox.py.page:31(section/code)
 #, no-wrap
 msgid ""
@@ -6371,14 +7013,16 @@ 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)
 #: C/combobox.js.page:32(section/title)
 #: C/guitar-tuner.js.page:54(section/title)
-#: C/helloWorld.js.page:52(section/title)
+#: C/hello-world.c.page:43(section/title)
+#: C/hello-world.js.page:52(section/title)
+#: C/hello-world.py.page:45(section/title)
 #: C/messagedialog.js.page:30(section/title)
 #: C/radiobutton.js.page:27(section/title) C/scale.js.page:27(section/title)
 #: C/spinbutton.js.page:30(section/title)
@@ -7138,27 +7782,38 @@ 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:22(media) C/colorbutton.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/colorbutton.js.page:21(media) C/colorbutton.py.page:22(media)
+#: C/colorbutton.vala.page:23(media)
 msgctxt "_"
 msgid ""
 "external ref='media/colorbutton.png' md5='904539d26fe367bf99f9a0961cfc9a03'"
 msgstr ""
 "external ref='media/colorbutton.png' md5='904539d26fe367bf99f9a0961cfc9a03'"
 
-#: C/colorbutton.py.page:7(info/title)
+#: C/colorbutton.js.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Button (JavaScript)"
 msgctxt "text"
-msgid "ColorButton (Python)"
-msgstr "ColorButton (Python)"
+msgid "ColorButton (JavaScript)"
+msgstr "Botón (JavaScript)"
 
-#: C/colorbutton.py.page:18(info/desc) C/colorbutton.vala.page:19(info/desc)
+#: C/colorbutton.js.page:17(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:21(page/title) C/colorbutton.vala.page:22(page/title)
+#: C/colorbutton.js.page:20(page/title) C/colorbutton.py.page:21(page/title)
+#: C/colorbutton.vala.page:22(page/title)
 msgid "ColorButton"
 msgstr "ColorButton"
 
-#: C/colorbutton.py.page:23(page/p)
+#: C/colorbutton.js.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."
@@ -7166,6 +7821,225 @@ 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.js.page:28(section/code)
+#, no-wrap
+#| msgid ""
+#| "#!/usr/bin/gjs\n"
+#| "\n"
+#| "const Gio = imports.gi.Gio;\n"
+#| "const GLib = imports.gi.GLib;\n"
+#| "const Gtk = imports.gi.Gtk;\n"
+#| "const Lang = imports.lang;\n"
+#| "\n"
+#| "const LinkButtonExample = new Lang.Class ({\n"
+#| "    Name: 'LinkButton Example',\n"
+#| "\n"
+#| "    // Create the application itself\n"
+#| "        _init: function () {\n"
+#| "        this.application = new Gtk.Application ({\n"
+#| "              application_id: 'org.example.jslinkbutton',\n"
+#| "              flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+#| "         });\n"
+#| "\n"
+#| "    // Connect 'activate' and 'startup' signals to the callback functions\n"
+#| "    this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+#| "    this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+#| "    },\n"
+#| "\n"
+#| "    // Callback function for 'activate' signal presents window when active\n"
+#| "    _onActivate: function () {\n"
+#| "        this._window.present ();\n"
+#| "    },\n"
+#| "\n"
+#| "    // Callback function for 'startup' signal initializes menus and builds the UI\n"
+#| "    _onStartup: function () {\n"
+#| "        this._buildUI ();\n"
+#| "    },\n"
+#| "\n"
+#| "    // Build the application's UI\n"
+#| "    _buildUI: function () {\n"
+#| "\n"
+#| "        // Create the application window\n"
+#| "    this._window = new Gtk.ApplicationWindow  ({ application: this.application,\n"
+#| "                                                 window_position: Gtk.WindowPosition.CENTER,\n"
+#| "                                                 title: \"GNOME LinkButton\",\n"
+#| "                                                 default_height: 50,\n"
+#| "                                                 default_width: 250 });\n"
+#| "\n"
+#| "        // Create the LinkButton and have it link to live.gnome.org\n"
+#| "        this.LinkButton = new Gtk.LinkButton ({label: \"Link to GNOME live!\",\n"
+#| "                               uri: \"http://live.gnome.org\"});\n"
+#| "        this._window.add (this.LinkButton);\n"
+#| "\n"
+#| "    // Show the window and all child widgets\n"
+#| "    this._window.show_all();\n"
+#| "    },\n"
+#| "});\n"
+#| "\n"
+#| "// Run the application\n"
+#| "let app = new LinkButtonExample ();\n"
+#| "app.application.run (ARGV);\n"
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gdk = imports.gi.Gdk;\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ColorbuttonExample = new Lang.Class ({\n"
+"    Name: 'Colorbutton Example',\n"
+"\n"
+"    // Create the application itself\n"
+"    _init: function () {\n"
+"        this.application = new Gtk.Application ({ application_id: 'org.example.jscolorbutton' });\n"
+"\n"
+"        // Connect 'activate' and 'startup' signals to the callback functions\n"
+"        this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+"        this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+"    },\n"
+"\n"
+"    // Callback function for 'activate' signal presents windows when active\n"
+"    _onActivate: function() {\n"
+"        this.window.present();\n"
+"    },\n"
+"\n"
+"    // Callback function for 'startup' signal builds the UI\n"
+"    _onStartup: function () {\n"
+"        this._buildUI ();\n"
+"    },\n"
+"\n"
+"    // Build the application's UI\n"
+"    _buildUI: function () {\n"
+"\n"
+"        // Create the application window\n"
+"        this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+"                                                   window_position: Gtk.WindowPosition.CENTER,\n"
+"                                                   title: \"ColorButton\",\n"
+"                                                   default_width: 150,\n"
+"                                                   default_height: 50,\n"
+"                                                   border_width: 10 });\n"
+"\n"
+"        this.button = new Gtk.ColorButton();\n"
+"        this.color = new Gdk.RGBA();\n"
+"        this.color.red = 0.0;\n"
+"        this.color.green = 0.0;\n"
+"        this.color.blue = 1.0;\n"
+"        this.color.alpha = 0.5;\n"
+"        this.button.set_rgba(this.color);\n"
+"        this.button.connect(\"color-set\", Lang.bind(this, this.onColorChosen));\n"
+"        this.label = new Gtk.Label();\n"
+"        this.label.set_text(\"Click to choose a color\");\n"
+"\n"
+"        let grid = new Gtk.Grid();\n"
+"        grid.attach(this.button, 0, 0, 2, 1);\n"
+"        grid.attach(this.label, 0, 1, 2, 1);\n"
+"        this.window.add(grid);\n"
+"        this.window.show_all();\n"
+"    },\n"
+"\n"
+"    onColorChosen: function() {\n"
+"    let colorName = this.color.to_string();\n"
+"    this.label.set_text(\"You chose the color \" + colorName);\n"
+"    }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ColorbuttonExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gdk = imports.gi.Gdk;\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ColorbuttonExample = new Lang.Class ({\n"
+"    Name: 'Colorbutton Example',\n"
+"\n"
+"    // Create the application itself\n"
+"    _init: function () {\n"
+"        this.application = new Gtk.Application ({ application_id: 'org.example.jscolorbutton' });\n"
+"\n"
+"        // Connect 'activate' and 'startup' signals to the callback functions\n"
+"        this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+"        this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+"    },\n"
+"\n"
+"    // Callback function for 'activate' signal presents windows when active\n"
+"    _onActivate: function() {\n"
+"        this.window.present();\n"
+"    },\n"
+"\n"
+"    // Callback function for 'startup' signal builds the UI\n"
+"    _onStartup: function () {\n"
+"        this._buildUI ();\n"
+"    },\n"
+"\n"
+"    // Build the application's UI\n"
+"    _buildUI: function () {\n"
+"\n"
+"        // Create the application window\n"
+"        this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+"                                                   window_position: Gtk.WindowPosition.CENTER,\n"
+"                                                   title: \"ColorButton\",\n"
+"                                                   default_width: 150,\n"
+"                                                   default_height: 50,\n"
+"                                                   border_width: 10 });\n"
+"\n"
+"        this.button = new Gtk.ColorButton();\n"
+"        this.color = new Gdk.RGBA();\n"
+"        this.color.red = 0.0;\n"
+"        this.color.green = 0.0;\n"
+"        this.color.blue = 1.0;\n"
+"        this.color.alpha = 0.5;\n"
+"        this.button.set_rgba(this.color);\n"
+"        this.button.connect(\"color-set\", Lang.bind(this, this.onColorChosen));\n"
+"        this.label = new Gtk.Label();\n"
+"        this.label.set_text(\"Click to choose a color\");\n"
+"\n"
+"        let grid = new Gtk.Grid();\n"
+"        grid.attach(this.button, 0, 0, 2, 1);\n"
+"        grid.attach(this.label, 0, 1, 2, 1);\n"
+"        this.window.add(grid);\n"
+"        this.window.show_all();\n"
+"    },\n"
+"\n"
+"    onColorChosen: function() {\n"
+"    let colorName = this.color.to_string();\n"
+"    this.label.set_text(\"You chose the color \" + colorName);\n"
+"    }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ColorbuttonExample ();\n"
+"app.application.run (ARGV);\n"
+
+#: C/colorbutton.js.page:35(item/p)
+#| msgid ""
+#| "<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html";
+#| "\">Gtk.Button</link>"
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ColorButton.";
+"html\">GtkColorButton</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ColorButton.";
+"html\">GtkColorButton</link>"
+
+#: C/colorbutton.js.page:36(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>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gdk3/stable/gdk3-RGBA-Colors.html";
+"\">Colores RGBA</link>"
+
+#: C/colorbutton.py.page:7(info/title)
+msgctxt "text"
+msgid "ColorButton (Python)"
+msgstr "ColorButton (Python)"
+
 #: C/colorbutton.py.page:29(section/code)
 #, no-wrap
 msgid ""
@@ -7318,14 +8192,6 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkColorChooser.html";
 "\">GtkColorChooser</link>"
 
-#: C/colorbutton.py.page:44(item/p)
-msgid ""
-"<link href=\"http://developer.gnome.org/gdk3/stable/gdk3-RGBA-Colors.html";
-"\">RGBA Colors</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gdk3/stable/gdk3-RGBA-Colors.html";
-"\">Colores RGBA</link>"
-
 #: C/colorbutton.vala.page:7(info/title)
 msgctxt "text"
 msgid "ColorButton (Vala)"
@@ -7477,8 +8343,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 ""
@@ -7549,8 +8415,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)
@@ -7638,10 +8504,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í."
 
@@ -7795,9 +8661,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."
 
@@ -8112,7 +8978,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.
+#.
+#. 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/combobox.js.page:25(media) C/combobox_multicolumn.py.page:22(media)
+#: C/combobox_multicolumn.vala.page:22(media)
 msgctxt "_"
 msgid ""
 "external ref='media/combobox_multicolumn.png' "
@@ -8148,8 +9020,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)
@@ -8277,12 +9149,19 @@ msgstr ""
 "            GObject.TYPE_STRING]);\n"
 
 #: C/combobox.js.page:94(section/p)
+#, fuzzy
+#| msgid ""
+#| "This ListStore works like the one used in the <link xref="
+#| "\"treeview_simple_liststore.js\">TreeView</link> example. We're giving it "
+#| "two columns, both strings, because one of them will contain the names of "
+#| "<link href=\"http://developer.gnome.org/gtk/2.24/gtk-Stock-Items.html#GTK-";
+#| "STOCK-ABOUT:CAPS\">stock Gtk icons</link>."
 msgid ""
 "This ListStore works like the one used in the <link xref="
 "\"treeview_simple_liststore.js\">TreeView</link> example. We're giving it "
 "two columns, both strings, because one of them will contain the names of "
-"<link href=\"http://developer.gnome.org/gtk/2.24/gtk-Stock-Items.html#GTK-";
-"STOCK-ABOUT:CAPS\">stock Gtk icons</link>."
+"<link href=\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html";
+"\">stock Gtk icons</link>."
 msgstr ""
 "Este «ListStore» funciona como el que se usó en el ejemplo del <link xref="
 "\"treeview_simple_liststore.js\">TreeView</link>. Se le dan dos columnas, "
@@ -8374,11 +9253,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 ""
@@ -8411,10 +9289,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
@@ -8468,10 +9345,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 ""
@@ -8483,13 +9360,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
@@ -8518,10 +9395,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
@@ -8581,9 +9458,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
@@ -8965,12 +9842,15 @@ msgstr ""
 
 #: C/combobox.js.page:240(item/p)
 #: C/treeview_simple_liststore.js.page:278(item/p)
+#| msgid ""
+#| "<link href=\"www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.CellRendererText."
+#| "html\">Gtk.CellRendererText</link>"
 msgid ""
-"<link href=\"www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.CellRendererText.html"
-"\">Gtk.CellRendererText</link>"
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.";
+"CellRendererText.html\">Gtk.CellRendererText</link>"
 msgstr ""
-"<link href=\"www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.CellRendererText.html"
-"\">Gtk.CellRendererText</link>"
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.";
+"CellRendererText.html\">Gtk.CellRendererText</link>"
 
 #: C/combobox.js.page:241(item/p)
 msgid ""
@@ -9006,6 +9886,7 @@ msgstr "ComboBox (Python)"
 
 #: C/combobox.py.page:19(info/desc) C/combobox.vala.page:17(info/desc)
 #: C/combobox_multicolumn.py.page:18(info/desc)
+#: C/combobox_multicolumn.vala.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"
 
@@ -9014,6 +9895,7 @@ msgid "ComboBox (one column)"
 msgstr "ComboBox (una columna)"
 
 #: C/combobox.py.page:24(page/p) C/combobox_multicolumn.py.page:23(page/p)
+#: C/combobox_multicolumn.vala.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."
@@ -9163,8 +10045,8 @@ msgstr ""
 "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\"/>."
+"de «ComboBox» y «TreeModel», consulte la <link xref=\"model-view-controller.py"
+"\"/>."
 
 #: C/combobox.py.page:36(section/p)
 msgid ""
@@ -9229,6 +10111,7 @@ msgstr ""
 "\">pygobject: vinculaciones de Python para introspección de GObject</link>"
 
 #: C/combobox.vala.page:7(info/title)
+#: C/combobox_multicolumn.vala.page:7(info/title)
 msgctxt "text"
 msgid "ComboBox (Vala)"
 msgstr "ComboBox (Vala)"
@@ -9434,6 +10317,7 @@ msgstr ""
 "html\">set_attributes</link>"
 
 #: C/combobox_multicolumn.py.page:21(page/title)
+#: C/combobox_multicolumn.vala.page:21(page/title)
 msgid "ComboBox (two columns)"
 msgstr "ComboBox (dos columnas)"
 
@@ -9605,7 +10489,8 @@ 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:57(item/p)
+#: C/combobox_multicolumn.py.page:47(item/p)
+#: C/combobox_multicolumn.vala.page:41(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>"
@@ -9613,6 +10498,287 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/gtk3-Stock-Items.html";
 "\">Elementos del almacén</link>"
 
+#: C/combobox_multicolumn.vala.page:29(section/code)
+#, no-wrap
+#| msgid ""
+#| "/* A window in the application */\n"
+#| "class MyWindow : Gtk.ApplicationWindow {\n"
+#| "\n"
+#| "\t/* An instance array of linux distributions belonging to this window. */\n"
+#| "\tstring[] distros = {\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"};\n"
+#| "\n"
+#| "\t/* This enum makes the code more readable when we refer to\n"
+#| "\t * the column as Column.DISTRO, instead of just 0.\n"
+#| "\t */\n"
+#| "\tenum Column {\n"
+#| "\t\tDISTRO\n"
+#| "\t}\n"
+#| "\n"
+#| "\t/* Constructor */\n"
+#| "\tinternal MyWindow (MyApplication app) {\n"
+#| "\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
+#| "\n"
+#| "\t\tthis.set_default_size (200, -1);\n"
+#| "\t\tthis.border_width = 10;\n"
+#| "\n"
+#| "\t\tGtk.ListStore liststore = new Gtk.ListStore (1, typeof (string));\n"
+#| "\n"
+#| "\t\tfor (int i = 0; i &lt; distros.length; i++){\n"
+#| "\t\t\tGtk.TreeIter iter;\n"
+#| "\t\t\tliststore.append (out iter);\n"
+#| "\t\t\tliststore.set (iter, Column.DISTRO, distros[i]);\n"
+#| "\t\t}\n"
+#| "\n"
+#| "\t\tGtk.ComboBox combobox = new Gtk.ComboBox.with_model (liststore);\n"
+#| "\t\tGtk.CellRendererText cell = new Gtk.CellRendererText ();\n"
+#| "\t\tcombobox.pack_start (cell, false);\n"
+#| "\n"
+#| "\t\tcombobox.set_attributes (cell, \"text\", Column.DISTRO);\n"
+#| "\n"
+#| "\t\t/* Set the first item in the list to be selected (active). */\n"
+#| "\t\tcombobox.set_active (0);\n"
+#| "\n"
+#| "\t\t/* Connect the 'changed' signal of the combobox\n"
+#| "\t\t * to the signal handler (aka. callback function.\n"
+#| "\t\t */\n"
+#| "\t\tcombobox.changed.connect (this.item_changed);\n"
+#| "\n"
+#| "\t\t/* Add the combobox to this window */\n"
+#| "\t\tthis.add (combobox);\n"
+#| "\t\tcombobox.show ();\n"
+#| "\t}\n"
+#| "\n"
+#| "\t/* Signal handler for the 'changed' signal of the combobox. */\n"
+#| "\tvoid item_changed (Gtk.ComboBox combo) {\n"
+#| "\t\tif (combo.get_active () !=0) {\n"
+#| "\t\t\tprint (\"You chose \" + distros [combo.get_active ()] +\"\\n\");\n"
+#| "\t\t}\n"
+#| "\t}\n"
+#| "}\n"
+#| "\n"
+#| "/* This is the application */\n"
+#| "class MyApplication : Gtk.Application {\n"
+#| "\n"
+#| "\t/* Constructor */\n"
+#| "\tinternal MyApplication () {\n"
+#| "\t\tObject (application_id: \"org.example.MyApplication\");\n"
+#| "\t}\n"
+#| "\n"
+#| "\t/* Override the activate signal of GLib.Application,\n"
+#| "\t * which is inherited by Gtk.Application.\n"
+#| "\t */\n"
+#| "\tprotected override void activate () {\n"
+#| "\n"
+#| "\t\t/* Create the window of this application\n"
+#| "\t\t * and show it.\n"
+#| "\t\t */\n"
+#| "\t\tnew MyWindow (this).show ();\n"
+#| "\t}\n"
+#| "}\n"
+#| "\n"
+#| "/* main creates and runs the application */\n"
+#| "int main (string[] args) {\n"
+#| "\treturn new MyApplication ().run (args);\n"
+#| "}\n"
+msgid ""
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tstring[] file = {\"Select\", \"New\", \"Open\", \"Save\"};\n"
+"\tstring[] stock_item = {\"\",\"gtk-new\", \"gtk-open\", \"gtk-save\"};\n"
+"\n"
+"\tenum Column {\n"
+"\t\tFILE,\n"
+"\t\tSTOCK_ITEM\t\n"
+"\t}\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
+"\n"
+"\t\tthis.set_default_size (200, -1);\n"
+"\t\tthis.border_width = 10;\n"
+"\n"
+"\t\tGtk.ListStore liststore = new Gtk.ListStore (2, typeof (string), typeof (string));\n"
+"\n"
+"\t\tfor (int i = 0; i &lt; file.length; i++){\n"
+"\t\t\tGtk.TreeIter iter;\n"
+"\t\t\tliststore.append (out iter);\n"
+"\t\t\tliststore.set (iter, Column.FILE, file[i]);\n"
+"\t\t\tliststore.set (iter, Column.STOCK_ITEM, stock_item[i]);\n"
+"\t\t}\n"
+"\n"
+"\t\tGtk.ComboBox combobox = new Gtk.ComboBox.with_model (liststore);\n"
+"\n"
+"\t\t/* CellRenderers render the data. */\n"
+"\t\tGtk.CellRendererText cell = new Gtk.CellRendererText ();\n"
+"\t\tGtk.CellRendererPixbuf cell_pb = new Gtk.CellRendererPixbuf ();\n"
+"\t\t\n"
+"                /* we pack the cell into the beginning of the combobox, allocating\n"
+"\t\t * no more space than needed;\n"
+"\t\t * first the image, then the text;\n"
+"\t\t * note that it does not matter in which order they are in the model,\n"
+"\t\t * the visualization is decided by the order of the cellrenderers\n"
+"\t\t */\n"
+"\t\tcombobox.pack_start (cell_pb, false);\n"
+"\t\tcombobox.pack_start (cell, false);\n"
+"\n"
+"\t\t/* associate a property of the cellrenderer to a column in the model\n"
+"\t\t * used by the combobox\n"
+"\t\t */\n"
+"\t\tcombobox.set_attributes (cell_pb, \"stock_id\", Column.STOCK_ITEM);\n"
+"\t\tcombobox.set_attributes (cell, \"text\", Column.FILE);\n"
+"\n"
+"\t\t/* Set the first item in the list to be selected (active). */\n"
+"\t\tcombobox.set_active (0);\n"
+"\n"
+"\t\t/* Connect the 'changed' signal of the combobox\n"
+"\t\t * to the signal handler (aka. callback function.\n"
+"\t\t */\n"
+"\t\tcombobox.changed.connect (this.item_changed);\n"
+"\n"
+"\t\t/* Add the combobox to this window */\n"
+"\t\tthis.add (combobox);\n"
+"\t\tcombobox.show ();\n"
+"\t}\n"
+"\n"
+"\tvoid item_changed (Gtk.ComboBox combo) {\n"
+"\t\tif (combo.get_active () !=0) {\n"
+"\t\t\tprint (\"You chose \" + file [combo.get_active ()] +\"\\n\");\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"class MyApplication : Gtk.Application {\n"
+"        protected override void activate () {\n"
+"                new MyWindow (this).show ();\n"
+"        }\n"
+"}\n"
+"\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tstring[] file = {\"Select\", \"New\", \"Open\", \"Save\"};\n"
+"\tstring[] stock_item = {\"\",\"gtk-new\", \"gtk-open\", \"gtk-save\"};\n"
+"\n"
+"\tenum Column {\n"
+"\t\tFILE,\n"
+"\t\tSTOCK_ITEM\t\n"
+"\t}\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
+"\n"
+"\t\tthis.set_default_size (200, -1);\n"
+"\t\tthis.border_width = 10;\n"
+"\n"
+"\t\tGtk.ListStore liststore = new Gtk.ListStore (2, typeof (string), typeof (string));\n"
+"\n"
+"\t\tfor (int i = 0; i &lt; file.length; i++){\n"
+"\t\t\tGtk.TreeIter iter;\n"
+"\t\t\tliststore.append (out iter);\n"
+"\t\t\tliststore.set (iter, Column.FILE, file[i]);\n"
+"\t\t\tliststore.set (iter, Column.STOCK_ITEM, stock_item[i]);\n"
+"\t\t}\n"
+"\n"
+"\t\tGtk.ComboBox combobox = new Gtk.ComboBox.with_model (liststore);\n"
+"\n"
+"\t\t/* CellRenderers render the data. */\n"
+"\t\tGtk.CellRendererText cell = new Gtk.CellRendererText ();\n"
+"\t\tGtk.CellRendererPixbuf cell_pb = new Gtk.CellRendererPixbuf ();\n"
+"\t\t\n"
+"                /* we pack the cell into the beginning of the combobox, allocating\n"
+"\t\t * no more space than needed;\n"
+"\t\t * first the image, then the text;\n"
+"\t\t * note that it does not matter in which order they are in the model,\n"
+"\t\t * the visualization is decided by the order of the cellrenderers\n"
+"\t\t */\n"
+"\t\tcombobox.pack_start (cell_pb, false);\n"
+"\t\tcombobox.pack_start (cell, false);\n"
+"\n"
+"\t\t/* associate a property of the cellrenderer to a column in the model\n"
+"\t\t * used by the combobox\n"
+"\t\t */\n"
+"\t\tcombobox.set_attributes (cell_pb, \"stock_id\", Column.STOCK_ITEM);\n"
+"\t\tcombobox.set_attributes (cell, \"text\", Column.FILE);\n"
+"\n"
+"\t\t/* Set the first item in the list to be selected (active). */\n"
+"\t\tcombobox.set_active (0);\n"
+"\n"
+"\t\t/* Connect the 'changed' signal of the combobox\n"
+"\t\t * to the signal handler (aka. callback function.\n"
+"\t\t */\n"
+"\t\tcombobox.changed.connect (this.item_changed);\n"
+"\n"
+"\t\t/* Add the combobox to this window */\n"
+"\t\tthis.add (combobox);\n"
+"\t\tcombobox.show ();\n"
+"\t}\n"
+"\n"
+"\tvoid item_changed (Gtk.ComboBox combo) {\n"
+"\t\tif (combo.get_active () !=0) {\n"
+"\t\t\tprint (\"You chose \" + file [combo.get_active ()] +\"\\n\");\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"class MyApplication : Gtk.Application {\n"
+"        protected override void activate () {\n"
+"                new MyWindow (this).show ();\n"
+"        }\n"
+"}\n"
+"\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#: C/combobox_multicolumn.vala.page:37(item/p)
+#| msgid ""
+#| "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ComboBox.html\";>Gtk."
+#| "ComboBox</link>"
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ComboBox.html";
+"\">GtkComboBox</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ComboBox.html";
+"\">GtkComboBox</link>"
+
+#: C/combobox_multicolumn.vala.page:38(item/p)
+#| msgid ""
+#| "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ListStore.html\";>Gtk."
+#| "ListStore</link>"
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ListStore.html";
+"\">GtkListStore</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ListStore.html";
+"\">GtkListStore</link>"
+
+#: C/combobox_multicolumn.vala.page:39(item/p)
+#| msgid ""
+#| "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererText.html";
+#| "\">Gtk.CellRendererText</link>"
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererText.html";
+"\">GtkCellRendererText</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererText.html";
+"\">GtkCellRendererText</link>"
+
+#: C/combobox_multicolumn.vala.page:40(item/p)
+#| msgid ""
+#| "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererText.html";
+#| "\">Gtk.CellRendererText</link>"
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererPixbuf.html";
+"\">GtkCellRendererPixbuf</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererPixbuf.html";
+"\">GtkCellRendererPixbuf</link>"
+
 #: C/cpp.page:6(info/title)
 msgctxt "link"
 msgid "C++"
@@ -10257,15 +11423,15 @@ msgid ""
 "<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:50(item/p) C/messagedialog.py.page:59(item/p)
 msgid ""
@@ -10503,10 +11669,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
@@ -11007,11 +12172,11 @@ msgstr ""
 "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 "
+"«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 "
@@ -11025,8 +12190,8 @@ msgid ""
 "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:43(item/p)
 msgid ""
@@ -11372,8 +12537,8 @@ msgid ""
 "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:36(item/p)
 msgid ""
@@ -11413,10 +12578,9 @@ msgid ""
 "\", 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:40(item/p)
 msgid ""
@@ -11424,8 +12588,8 @@ msgid ""
 "\"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:41(item/p)
 msgid ""
@@ -12105,9 +13269,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"
@@ -12555,7 +13719,18 @@ 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: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.
+#.
+#. 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/fontchooserwidget.js.page:22(media) C/fontchooserwidget.py.page:24(media)
+#: C/fontchooserwidget.vala.page:22(media)
 msgctxt "_"
 msgid ""
 "external ref='media/fontchooserwidget.png' "
@@ -12564,23 +13739,235 @@ msgstr ""
 "external ref='media/fontchooserwidget.png' "
 "md5='9161245e307b432ae1313e9a9941edae'"
 
-#: C/fontchooserwidget.py.page:7(info/title)
+#: C/fontchooserwidget.js.page:7(info/title)
+#| msgctxt "text"
+#| msgid "FontChooserWidget (Python)"
 msgctxt "text"
-msgid "FontChooserWidget (Python)"
-msgstr "FontChooserWidget (Python)"
+msgid "FontChooserWidget (JavaScript)"
+msgstr "FontChooserWidget (JavaScript)"
 
+#: C/fontchooserwidget.js.page:17(info/desc)
 #: C/fontchooserwidget.py.page:19(info/desc)
+#: C/fontchooserwidget.vala.page:17(info/desc)
 msgid "A widget to choose a font"
 msgstr "Un widget para elegir la tipografía"
 
+#: C/fontchooserwidget.js.page:20(page/title)
 #: C/fontchooserwidget.py.page:22(page/title)
+#: C/fontchooserwidget.vala.page:20(page/title)
 msgid "FontChooserWidget"
 msgstr "FontChooserWidget"
 
+#: C/fontchooserwidget.js.page:23(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.js.page:29(section/code)
+#, no-wrap
+#| msgid ""
+#| "#!/usr/bin/gjs\n"
+#| "\n"
+#| "const Gio = imports.gi.Gio;\n"
+#| "const GLib = imports.gi.GLib;\n"
+#| "const Gtk = imports.gi.Gtk;\n"
+#| "const Lang = imports.lang;\n"
+#| "\n"
+#| "const ButtonExample = new Lang.Class ({\n"
+#| "    Name: 'Button Example',\n"
+#| "\n"
+#| "    /* Create the application itself\n"
+#| "       This boilerplate code is needed to build any GTK+ application. */\n"
+#| "        _init: function () {\n"
+#| "            this.application = new Gtk.Application ({\n"
+#| "                application_id: 'org.example.jsbutton',\n"
+#| "                flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+#| "            });\n"
+#| "\n"
+#| "    // Connect 'activate' and 'startup' signals to the callback functions\n"
+#| "    this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+#| "    this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+#| "    },\n"
+#| "\n"
+#| "    // Callback function for 'activate' signal presents windows when active\n"
+#| "    _onActivate: function () {\n"
+#| "        this._window.present ();\n"
+#| "    },\n"
+#| "\n"
+#| "    // Callback function for 'startup' signal initializes menus and builds the UI\n"
+#| "    _onStartup: function () {\n"
+#| "        this._buildUI ();\n"
+#| "    },\n"
+#| "\n"
+#| "    // Build the application's UI\n"
+#| "    _buildUI: function () {\n"
+#| "\n"
+#| "        // Create the application window\n"
+#| "            this._window = new Gtk.ApplicationWindow  ({ application: this.application,\n"
+#| "                                                              window_position: 
Gtk.WindowPosition.CENTER,\n"
+#| "                                                              title: \"GNOME Button\",\n"
+#| "                                                              default_height: 50,\n"
+#| "                                                              default_width: 250 });\n"
+#| "\n"
+#| "        // Create the button\n"
+#| "        this.Button = new Gtk.Button ({label: \"Click Me\"});\n"
+#| "        this._window.add (this.Button);\n"
+#| "\n"
+#| "        // Bind it to a function that says what to do when the button is clicked\n"
+#| "        this.Button.connect (\"clicked\", Lang.bind(this, this._clickHandler));\n"
+#| "\n"
+#| "                // Show the window and all child widgets\n"
+#| "                this._window.show_all();\n"
+#| "    },\n"
+#| "\n"
+#| "    // Here's the function that says what happens when the button is clicked\n"
+#| "    _clickHandler: function () {\n"
+#| "        this.Button.set_label (\"Clicked!\");\n"
+#| "    }\n"
+#| "});\n"
+#| "\n"
+#| "// Run the application\n"
+#| "let app = new ButtonExample ();\n"
+#| "app.application.run (ARGV);\n"
+msgid ""
+"//!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const FontChooserWidgetExample = new Lang.Class ({\n"
+"    Name: 'Font Chooser Widget Example',\n"
+"\n"
+"    // Create the application itthis\n"
+"    _init: function () {\n"
+"        this.application = new Gtk.Application({ application_id: 'org.example.fontchooserwidget' });\n"
+"\n"
+"        // Connect 'activate' and 'startup' signals to the callback functions\n"
+"        this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+"        this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+"    },\n"
+"\n"
+"    // Callback function for 'activate' signal presents windows when active\n"
+"    _onActivate: function() {\n"
+"        this.window.present();\n"
+"    },\n"
+"\n"
+"    // Callback function for 'startup' signal builds the UI\n"
+"    _onStartup: function() {\n"
+"        this._buildUI ();\n"
+"    },\n"
+"\n"
+"    // Build the application's UI\n"
+"    _buildUI: function() {\n"
+"        // Create the application window\n"
+"        this.window = new Gtk.ApplicationWindow  ({ application: this.application,\n"
+"                                                    window_position: Gtk.WindowPosition.CENTER,\n"
+"                                                    title: \"FontChooserWidget\",\n"
+"                                                    default_width: 200,\n"
+"                                                    default_height: 200,\n"
+"                                                    border_width: 10 });\n"
+"\n"
+"        this.fontChooser = new Gtk.FontChooserWidget();\n"
+"        // a default font\n"
+"        this.fontChooser.set_font(\"Sans\");\n"
+"        // a text to preview the font\n"
+"        this.fontChooser.set_preview_text(\"This is an example of preview text!\");\n"
+"\n"
+"        // connect signal from the font chooser to the callback function\n"
+"        this.fontChooser.connect(\"notify::font\", Lang.bind(this, this._fontCb));\n"
+"\n"
+"        // add the font chooser to the window\n"
+"        this.window.add(this.fontChooser);\n"
+"        this.window.show_all();\n"
+"   },\n"
+"\n"
+"     // callback function:\n"
+"     _fontCb: function() {\n"
+"        // print in the terminal\n"
+"        print(\"You chose the font \" + this.fontChooser.get_font());\n"
+"    }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new FontChooserWidgetExample();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"//!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const FontChooserWidgetExample = new Lang.Class ({\n"
+"    Name: 'Font Chooser Widget Example',\n"
+"\n"
+"    // Create the application itthis\n"
+"    _init: function () {\n"
+"        this.application = new Gtk.Application({ application_id: 'org.example.fontchooserwidget' });\n"
+"\n"
+"        // Connect 'activate' and 'startup' signals to the callback functions\n"
+"        this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+"        this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+"    },\n"
+"\n"
+"    // Callback function for 'activate' signal presents windows when active\n"
+"    _onActivate: function() {\n"
+"        this.window.present();\n"
+"    },\n"
+"\n"
+"    // Callback function for 'startup' signal builds the UI\n"
+"    _onStartup: function() {\n"
+"        this._buildUI ();\n"
+"    },\n"
+"\n"
+"    // Build the application's UI\n"
+"    _buildUI: function() {\n"
+"        // Create the application window\n"
+"        this.window = new Gtk.ApplicationWindow  ({ application: this.application,\n"
+"                                                    window_position: Gtk.WindowPosition.CENTER,\n"
+"                                                    title: \"FontChooserWidget\",\n"
+"                                                    default_width: 200,\n"
+"                                                    default_height: 200,\n"
+"                                                    border_width: 10 });\n"
+"\n"
+"        this.fontChooser = new Gtk.FontChooserWidget();\n"
+"        // a default font\n"
+"        this.fontChooser.set_font(\"Sans\");\n"
+"        // a text to preview the font\n"
+"        this.fontChooser.set_preview_text(\"This is an example of preview text!\");\n"
+"\n"
+"        // connect signal from the font chooser to the callback function\n"
+"        this.fontChooser.connect(\"notify::font\", Lang.bind(this, this._fontCb));\n"
+"\n"
+"        // add the font chooser to the window\n"
+"        this.window.add(this.fontChooser);\n"
+"        this.window.show_all();\n"
+"   },\n"
+"\n"
+"     // callback function:\n"
+"     _fontCb: function() {\n"
+"        // print in the terminal\n"
+"        print(\"You chose the font \" + this.fontChooser.get_font());\n"
+"    }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new FontChooserWidgetExample();\n"
+"app.application.run (ARGV);\n"
+
+#: C/fontchooserwidget.js.page:36(item/p)
+#: C/fontchooserwidget.py.page:46(item/p)
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkFontChooserWidget.";
+"html\">GtkFontChooserWidget</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkFontChooserWidget.";
+"html\">GtkFontChooserWidget</link>"
+
+#: C/fontchooserwidget.py.page:7(info/title)
+msgctxt "text"
+msgid "FontChooserWidget (Python)"
+msgstr "FontChooserWidget (Python)"
+
 #: C/fontchooserwidget.py.page:31(section/code)
 #, no-wrap
 msgid ""
@@ -12709,13 +14096,103 @@ msgstr ""
 "Para cambiar el texto que se muestra en el área de previsualización, use "
 "<code>set_preview_text()</code>."
 
-#: C/fontchooserwidget.py.page:46(item/p)
+#: C/fontchooserwidget.vala.page:7(info/title)
+#, fuzzy
+#| msgid "FontChooserWidget"
+msgctxt "text"
+msgid "FontChooserWidget (Vala)"
+msgstr "FontChooserWidget"
+
+#: C/fontchooserwidget.vala.page:12(credit/name)
+#| msgid "Tiffany Antopolski"
+msgid "Tiffany Antpoolski"
+msgstr "Tiffany Antpoolski"
+
+#: C/fontchooserwidget.vala.page:23(page/p)
+#, fuzzy
+#| msgid "A FontChooserWidget with a callback function."
+msgid "A FontChooserWidget with a lambda callback function."
+msgstr "Un FontChooserWidget con una función de retorno de llamada."
+
+#: C/fontchooserwidget.vala.page:29(section/code)
+#, no-wrap
 msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkFontChooserWidget.";
-"html\">GtkFontChooserWidget</link>"
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"        internal MyWindow (MyApplication app) {\n"
+"                Object (application: app, title: \"FontChooserWidget\");\n"
+"\n"
+"\t\tvar font_chooser = new Gtk.FontChooserWidget ();\n"
+"\t\tfont_chooser.set_font (\"Sans\");\n"
+"\t\tfont_chooser.set_preview_text (\"This is an example of preview text!\");\n"
+"\t\tthis.add (font_chooser);\n"
+"\n"
+"\t\tfont_chooser.notify[\"font\"].connect (() =&gt; {\n"
+"\t\t\tprint (\"font: %s\\n\", font_chooser.get_font ().to_string ());\n"
+"\t\t\tprint (\"desc: %s\\n\", font_chooser.get_font_desc ().to_string ());\n"
+"\t\t\tprint (\"face: %s\\n\", font_chooser.get_font_face ().get_face_name ());\n"
+"\t\t\tprint (\"size: %d\\n\", font_chooser.get_font_size ());\n"
+"\t\t\tprint (\"family: %s\\n\", font_chooser.get_font_family ().get_name ());\n"
+"\t\t\tprint (\"monospace: %s\\n\\n\", font_chooser.get_font_family ().is_monospace ().to_string ());\n"
+"\t\t});\n"
+"\n"
+"                this.show_all ();\n"
+"        }\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"        protected override void activate () {\n"
+"                new MyWindow (this).show ();\n"
+"        }\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"        return new MyApplication ().run (args);\n"
+"}\n"
+"\n"
 msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkFontChooserWidget.";
-"html\">GtkFontChooserWidget</link>"
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"        internal MyWindow (MyApplication app) {\n"
+"                Object (application: app, title: \"FontChooserWidget\");\n"
+"\n"
+"\t\tvar font_chooser = new Gtk.FontChooserWidget ();\n"
+"\t\tfont_chooser.set_font (\"Sans\");\n"
+"\t\tfont_chooser.set_preview_text (\"This is an example of preview text!\");\n"
+"\t\tthis.add (font_chooser);\n"
+"\n"
+"\t\tfont_chooser.notify[\"font\"].connect (() =&gt; {\n"
+"\t\t\tprint (\"font: %s\\n\", font_chooser.get_font ().to_string ());\n"
+"\t\t\tprint (\"desc: %s\\n\", font_chooser.get_font_desc ().to_string ());\n"
+"\t\t\tprint (\"face: %s\\n\", font_chooser.get_font_face ().get_face_name ());\n"
+"\t\t\tprint (\"size: %d\\n\", font_chooser.get_font_size ());\n"
+"\t\t\tprint (\"family: %s\\n\", font_chooser.get_font_family ().get_name ());\n"
+"\t\t\tprint (\"monospace: %s\\n\\n\", font_chooser.get_font_family ().is_monospace ().to_string ());\n"
+"\t\t});\n"
+"\n"
+"                this.show_all ();\n"
+"        }\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"        protected override void activate () {\n"
+"                new MyWindow (this).show ();\n"
+"        }\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"        return new MyApplication ().run (args);\n"
+"}\n"
+"\n"
+
+#: C/fontchooserwidget.vala.page:36(item/p)
+#| msgid ""
+#| "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Widget.html\";>Gtk."
+#| "Widget</link>"
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.FontChooserWidget.html";
+"\">GtkFontChooserWidget</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.FontChooserWidget.html";
+"\">GtkFontChooserWidget</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
@@ -13629,8 +15106,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
@@ -16510,7 +17987,7 @@ 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:"
 
 #: C/guitar-tuner.js.page:47(section/title)
-#: C/helloWorld.js.page:45(section/title)
+#: C/hello-world.js.page:45(section/title)
 #: C/weatherAppMain.js.page:32(section/title)
 msgid "Script for running the application"
 msgstr "Script para ejecutar la aplicación"
@@ -16573,7 +18050,10 @@ msgstr ""
 "usar para los tonos de afinación."
 
 #: C/guitar-tuner.js.page:63(section/title)
-#: C/helloWorld.js.page:58(section/title)
+#: C/hello-world.c.page:48(section/title)
+#: C/hello-world.js.page:58(section/title)
+#: C/hello-world.py.page:51(section/title)
+#: C/hello-world.vala.page:43(section/title)
 #: C/weatherAppMain.js.page:48(section/title)
 msgid "Creating the main window for the application"
 msgstr "Crear la ventana principal de la aplicación"
@@ -16832,8 +18312,8 @@ msgid ""
 "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 <code>E.connect(\"clicked\", function()"
+"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 "
@@ -17551,9 +19031,9 @@ msgstr ""
 #: 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/";
@@ -17909,8 +19389,8 @@ 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)."
 
@@ -17951,11 +19431,11 @@ 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 "
@@ -18502,8 +19982,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 ""
@@ -18515,8 +19995,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."
@@ -18617,8 +20097,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)
@@ -18634,12 +20114,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
@@ -18676,9 +20156,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
@@ -18698,8 +20178,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"
@@ -18774,15 +20254,23 @@ msgstr ""
 "link>, si quiere ver código de ejemplo para cada widget de GTK+."
 
 #: C/hellognome.js.page:189(section/p)
+#, fuzzy
+#| msgid ""
+#| "Finally, if you want to just build GNOME applications using JavaScript "
+#| "libraries designed for the web, you can basically stop here and go do "
+#| "that! Take a look at the <link xref=\"scrolledwindow.js\">ScrolledWindow</"
+#| "link> code sample if you'd like to see how to make a WebView widget that "
+#| "can scroll to show parts of a larger web page, and check out <link xref="
+#| "\"beginner.js#tutorials\">the later tutorials</link> if you'd like to see "
+#| "how to create a .desktop file for your application, which will let it "
+#| "appear in your desktop's Activities menu with all your other apps."
 msgid ""
 "Finally, if you want to just build GNOME applications using JavaScript "
 "libraries designed for the web, you can basically stop here and go do that! "
-"Take a look at the <link xref=\"scrolledwindow.js\">ScrolledWindow</link> "
-"code sample if you'd like to see how to make a WebView widget that can "
-"scroll to show parts of a larger web page, and check out <link xref="
-"\"beginner.js#tutorials\">the later tutorials</link> if you'd like to see "
-"how to create a .desktop file for your application, which will let it appear "
-"in your desktop's Activities menu with all your other apps."
+"Check out <link xref=\"beginner.js#tutorials\">the later tutorials</link> if "
+"you'd like to see how to create a .desktop file for your application, which "
+"will let it appear in your desktop's Activities menu with all your other "
+"apps."
 msgstr ""
 "Finalmente, si sólo quiere construir aplicaciones de GNOME usando "
 "bibliotecas de JavaScript diseñadas para la web, puede simplemente parar "
@@ -18921,56 +20409,921 @@ 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/helloWorld.js.page:27(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.
+#.
+#. 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.
+#.
+#. 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/hello-world.c.page:27(media) C/hello-world.js.page:27(media)
+#: C/hello-world.py.page:27(media) C/hello-world.vala.page:27(media)
+#| msgctxt "_"
+#| msgid ""
+#| "external ref='media/helloWorld.png' md5='4c88a27211dfd1b33e504c9f78602f2d'"
 msgctxt "_"
 msgid ""
-"external ref='media/helloWorld.png' md5='4c88a27211dfd1b33e504c9f78602f2d'"
+"external ref='media/hello-world.png' md5='4c88a27211dfd1b33e504c9f78602f2d'"
 msgstr ""
-"external ref='media/helloWorld.png' md5='4c88a27211dfd1b33e504c9f78602f2d'"
+"external ref='media/hello-world.png' md5='4c88a27211dfd1b33e504c9f78602f2d'"
 
-#: C/helloWorld.js.page:8(info/title)
+#: C/hello-world.c.page:8(info/title)
+#, fuzzy
+#| msgid "Hello World"
 msgctxt "text"
-msgid "Hello World (JavaScript)"
-msgstr "Hola mundo (JavaScript)"
+msgid "Hello World (C)"
+msgstr "Hola mundo"
 
-#: C/helloWorld.js.page:23(info/desc)
+#: C/hello-world.c.page:23(info/desc) C/hello-world.js.page:23(info/desc)
+#: C/hello-world.py.page:23(info/desc) C/hello-world.vala.page:23(info/desc)
 msgid "A basic \"hello, world\" application"
 msgstr "Una aplicación «Hola mundo» básica"
 
-#: C/helloWorld.js.page:26(page/title)
-msgid "Hello World"
-msgstr "Hola mundo"
+#: C/hello-world.c.page:26(page/title) C/hello-world.js.page:26(page/title)
+#: C/hello-world.py.page:26(page/title) C/hello-world.vala.page:26(page/title)
+msgid ""
+"How to build, install and create a <file>tar.xz</file> of a Hello World "
+"program"
+msgstr ""
 
-#: C/helloWorld.js.page:29(synopsis/p)
+#: C/hello-world.c.page:29(synopsis/p) C/hello-world.js.page:29(synopsis/p)
+#: C/hello-world.py.page:29(synopsis/p) C/hello-world.vala.page:29(synopsis/p)
 msgid "This tutorial will demonstrate how to:"
 msgstr "Este tutorial le demostrará cómo:"
 
-#: C/helloWorld.js.page:31(item/p)
-msgid "create a small \"Hello, World\" application using JavaScript and GTK+"
+#: C/hello-world.c.page:31(item/p) C/hello-world.vala.page:31(item/p)
+#, fuzzy
+#| msgid ""
+#| "create a small \"Hello, World\" application using JavaScript and GTK+"
+msgid "create a small \"Hello, World\" application using GTK+"
 msgstr "crear una pequeña aplicación «Hola, mundo» usando JavaScript y GTK+"
 
-#: C/helloWorld.js.page:32(item/p)
+#: C/hello-world.c.page:32(item/p) C/hello-world.js.page:32(item/p)
+#: C/hello-world.py.page:32(item/p) C/hello-world.vala.page:32(item/p)
 msgid "make the <file>.desktop</file> file"
 msgstr "hacer el archivo <file>.desktop</file>"
 
-#: C/helloWorld.js.page:33(item/p)
+#: C/hello-world.c.page:33(item/p) C/hello-world.js.page:33(item/p)
+#: C/hello-world.py.page:33(item/p) C/hello-world.vala.page:33(item/p)
 msgid "how to set up the build system"
 msgstr "configurar el sistema de construcción"
 
-#: C/helloWorld.js.page:41(section/title)
-msgid "Create the HelloWorld program"
+#: C/hello-world.c.page:39(section/title)
+#: C/hello-world.js.page:41(section/title)
+#: C/hello-world.py.page:41(section/title)
+#: C/hello-world.vala.page:39(section/title)
+#, fuzzy
+#| msgid "Create the HelloWorld program"
+msgid "Create the program"
 msgstr "Crear el programa «HolaMundo»"
 
-#: C/helloWorld.js.page:46(section/p)
+#: C/hello-world.c.page:44(section/code)
+#, no-wrap
+#| msgid "#include &lt;gst/gst.h&gt;"
+msgid "#include &lt;gtk/gtk.h&gt;\n"
+msgstr "#include &lt;gtk/gtk.h&gt;\n"
+
+#: C/hello-world.c.page:49(section/code)
+#, no-wrap
+msgid ""
+"static void\n"
+"activate (GtkApplication* app,\n"
+"          gpointer        user_data)\n"
+"{\n"
+"  GtkWidget *window;\n"
+"\n"
+"  window = gtk_application_window_new (app);\n"
+"  gtk_window_set_title (GTK_WINDOW (window), \"Hello World\");\n"
+"  gtk_window_set_default_size (GTK_WINDOW (window), 200, 100);\n"
+"  gtk_widget_show_all (window);\n"
+"}\n"
+msgstr ""
+"static void\n"
+"activate (GtkApplication* app,\n"
+"          gpointer        user_data)\n"
+"{\n"
+"  GtkWidget *window;\n"
+"\n"
+"  window = gtk_application_window_new (app);\n"
+"  gtk_window_set_title (GTK_WINDOW (window), \"Hello World\");\n"
+"  gtk_window_set_default_size (GTK_WINDOW (window), 200, 100);\n"
+"  gtk_widget_show_all (window);\n"
+"}\n"
+
+#: C/hello-world.c.page:62(section/p) C/hello-world.js.page:91(section/p)
+msgid ""
+"GtkApplication initializes GTK+. It also connects the <gui>x</gui> button "
+"that's automatically generated along with the window to the \"destroy\" "
+"signal."
+msgstr ""
+"«GtkApplication» inicializa GTK+. También conecta el botón <gui>x</gui> que "
+"se genera automáticamente junto con la ventana a la señal «destroy»."
+
+#: C/hello-world.c.page:63(section/p)
+#, fuzzy
+#| msgid ""
+#| "We can start building our first window. We do this by creating a variable "
+#| "called <var>_window</var> and assigning it a new Gtk.ApplicationWindow."
+msgid ""
+"We can start building our first window. We do this by creating a variable "
+"called <var>window</var> and assigning it a gtk_application_window_new"
+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."
+
+#: C/hello-world.c.page:64(section/p)
+#, fuzzy
+#| 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."
+msgid ""
+"The window 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."
+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 "
+"codificación UTF-8."
+
+#: C/hello-world.c.page:65(section/p) C/hello-world.js.page:94(section/p)
+#: C/hello-world.py.page:73(section/p) C/hello-world.vala.page:56(section/p)
+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»."
+
+#: C/hello-world.c.page:68(section/title)
+#: C/hello-world.js.page:97(section/title)
+#: C/hello-world.py.page:76(section/title)
+#: C/hello-world.vala.page:59(section/title)
+msgid "Label for the window"
+msgstr "Etiqueta para la ventana"
+
+#: C/hello-world.c.page:69(section/code)
+#, no-wrap
+msgid ""
+"GtkWidget *label;\n"
+"\n"
+"  label = gtk_label_new (\"Hello World!\");\n"
+"  gtk_container_add (GTK_CONTAINER (window), label);\n"
+msgstr ""
+"GtkWidget *label;\n"
+"\n"
+"  label = gtk_label_new (\"Hello World!\");\n"
+"  gtk_container_add (GTK_CONTAINER (window), label);\n"
+
+#: C/hello-world.c.page:75(section/p) C/hello-world.vala.page:64(section/p)
+#, fuzzy
+#| msgid "Build and run the application"
+msgid "Finally, we create and run the application:"
+msgstr "Construir y ejecutar la aplicación"
+
+#: C/hello-world.c.page:77(section/code)
+#, no-wrap
+#| msgid ""
+#| "#include &lt;gtk/gtk.h&gt;\n"
+#| "\n"
+#| "static void\n"
+#| "activate (GtkApplication *app,\n"
+#| "          gpointer        user_data)\n"
+#| "{\n"
+#| "  GtkWidget *window;\n"
+#| "\n"
+#| "  window = gtk_application_window_new (app);\n"
+#| "  gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n"
+#| "  gtk_widget_show_all (window);\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"
+#| "  return status;\n"
+#| "}\n"
+msgid ""
+"int\n"
+"main (int    argc,\n"
+"      char **argv)\n"
+"{\n"
+"  GtkApplication *app;\n"
+"  int status;\n"
+"\n"
+"  app = gtk_application_new (NULL, 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"
+"}"
+msgstr ""
+"int\n"
+"main (int    argc,\n"
+"      char **argv)\n"
+"{\n"
+"  GtkApplication *app;\n"
+"  int status;\n"
+"\n"
+"  app = gtk_application_new (NULL, 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"
+"}"
+
+#: C/hello-world.c.page:92(section/p)
+#, fuzzy
+#| msgid ""
+#| "Gtk.ApplicationWindow can only hold one widget at a time. To construct "
+#| "more elaborate programs you need to create a holder widget like Gtk.Grid "
+#| "inside the window, and then add all the other widgets to it."
+msgid ""
+"GtkApplicationWindow can only hold one widget at a time. To construct more "
+"elaborate programs you need to create a holder widget like GtkGrid inside "
+"the window, and then add all the other widgets to it."
+msgstr ""
+"«Gtk.ApplicationWindow» sólo puede contener un widget a la vez. Para "
+"construir programas más elaborados necesita crear un widget contenedor como "
+"«Gtk.Grid» dentro de la ventana, y después añadirle los otros."
+
+#: C/hello-world.c.page:96(section/title)
+#| msgid "helloWorld.js"
+msgid "hello-world.c"
+msgstr "hello-world.c"
+
+#: C/hello-world.c.page:97(section/p) C/hello-world.js.page:114(section/p)
+#: C/hello-world.py.page:101(section/p) C/hello-world.vala.page:75(section/p)
+msgid "The complete file:"
+msgstr "El archivo completo:"
+
+#: C/hello-world.c.page:98(section/code)
+#, no-wrap
+#| msgid ""
+#| "#include &lt;gtk/gtk.h&gt;\n"
+#| "\n"
+#| "static void\n"
+#| "activate (GtkApplication *app,\n"
+#| "          gpointer        user_data)\n"
+#| "{\n"
+#| "  GtkWidget *window;\n"
+#| "\n"
+#| "  window = gtk_application_window_new (app);\n"
+#| "  gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n"
+#| "  gtk_widget_show_all (window);\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"
+#| "  return status;\n"
+#| "}\n"
+msgid ""
+"#include &lt;gtk/gtk.h&gt;\n"
+"\n"
+"static void\n"
+"activate (GtkApplication* app,\n"
+"          gpointer        user_data)\n"
+"{\n"
+"  GtkWidget *window;\n"
+"  GtkWidget *label;\n"
+"\n"
+"  window = gtk_application_window_new (app);\n"
+"  label = gtk_label_new (\"Hello GNOME!\");\n"
+"  gtk_container_add (GTK_CONTAINER (window), label);\n"
+"  gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
+"  gtk_window_set_default_size (GTK_WINDOW (window), 200, 100);\n"
+"  gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"int\n"
+"main (int    argc,\n"
+"      char **argv)\n"
+"{\n"
+"  GtkApplication *app;\n"
+"  int status;\n"
+"\n"
+"  app = gtk_application_new (NULL, 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 ""
+"#include &lt;gtk/gtk.h&gt;\n"
+"\n"
+"static void\n"
+"activate (GtkApplication* app,\n"
+"          gpointer        user_data)\n"
+"{\n"
+"  GtkWidget *window;\n"
+"  GtkWidget *label;\n"
+"\n"
+"  window = gtk_application_window_new (app);\n"
+"  label = gtk_label_new (\"Hello GNOME!\");\n"
+"  gtk_container_add (GTK_CONTAINER (window), label);\n"
+"  gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
+"  gtk_window_set_default_size (GTK_WINDOW (window), 200, 100);\n"
+"  gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"int\n"
+"main (int    argc,\n"
+"      char **argv)\n"
+"{\n"
+"  GtkApplication *app;\n"
+"  int status;\n"
+"\n"
+"  app = gtk_application_new (NULL, 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/hello-world.c.page:101(section/title)
+#: C/hello-world.js.page:118(section/title)
+#: C/hello-world.py.page:105(section/title)
+#: C/hello-world.vala.page:79(section/title)
+msgid "Running the application from terminal"
+msgstr "Ejecutar la aplicación desde la terminal"
+
+#: C/hello-world.c.page:102(section/p)
+#, fuzzy
+#| msgid ""
+#| "To run this application, first save it as helloWorld.js. Then open "
+#| "Terminal, go to the folder where your application is stored and run:"
+msgid ""
+"To run this application, first save it as hello-world.c. Then open Terminal, "
+"go to the folder where your application is stored."
+msgstr ""
+"Para ejecutar esta aplicación, primero guárdela como helloWorld.js. Luego, "
+"abra una terminal, vaya a la carpeta donde está la aplicación y ejecute:"
+
+#: C/hello-world.c.page:103(section/p) C/hello-world.vala.page:81(section/p)
+#, fuzzy
+#| msgid "The whole program"
+msgid "Compile the program:"
+msgstr "El programa completo"
+
+#: C/hello-world.c.page:104(section/screen)
+#, no-wrap
+#| msgid "gcc <var>filename</var>.c `pkg-config --cflags --libs gtk+-3.0` -o <var>filename</var>\n"
+msgid "gcc <var>hello-world</var>.c `pkg-config --cflags --libs gtk+-3.0` -o <var>hello-world</var>"
+msgstr "gcc <var>hello-world</var>.c `pkg-config --cflags --libs gtk+-3.0` -o <var>hello-world</var>"
+
+#: C/hello-world.c.page:105(section/p) C/hello-world.vala.page:83(section/p)
+#, fuzzy
+#| msgid "The whole program"
+msgid "Run the program:"
+msgstr "El programa completo"
+
+#: C/hello-world.c.page:106(section/screen)
+#: C/hello-world.vala.page:84(section/screen)
+#, no-wrap
+#| msgid "./<var>filename</var>"
+msgid "./<var>hello-world</var>"
+msgstr "./<var>hello-world</var>"
+
+#: C/hello-world.c.page:110(section/title)
+#: C/hello-world.js.page:126(section/title)
+#: C/hello-world.py.page:111(section/title)
+#: C/hello-world.vala.page:88(section/title)
+msgid "The <file>.desktop.in</file> file"
+msgstr "El archivo <file>.desktop.in</file>"
+
+#: C/hello-world.c.page:111(section/p) C/hello-world.js.page:127(section/p)
+#: C/hello-world.py.page:112(section/p) C/hello-world.vala.page:89(section/p)
+#, fuzzy
+#| msgid ""
+#| "Running applications from the Terminal is useful at the beginning of the "
+#| "application making process. To have fully working <link href=\"http://";
+#| "library.gnome.org/admin/system-admin-guide/stable/mimetypes-9.html.en"
+#| "\">application integration</link> in GNOME 3 requires a desktop launcher. "
+#| "For this you need to create a <file>.desktop</file> file. The <file>."
+#| "desktop</file> file describes the application name, the used icon and "
+#| "various integration bits. A deeper insight into the <file>.desktop</file> "
+#| "file can be found <link href=\"http://developer.gnome.org/desktop-entry-";
+#| "spec/\">here</link>. The <file>.desktop.in</file> file will create the "
+#| "<file>.desktop</file>."
+msgid ""
+"Running applications from the Terminal is useful at the beginning of the "
+"application making process. To have fully working <link href=\"https://";
+"developer.gnome.org/integration-guide/stable/mime.html.en\">application "
+"integration</link> in GNOME 3 requires a desktop launcher. For this you need "
+"to create a <file>.desktop</file> file. The <file>.desktop</file> file "
+"describes the application name, the used icon and various integration bits. "
+"A deeper insight into the <file>.desktop</file> file can be found <link href="
+"\"http://developer.gnome.org/desktop-entry-spec/\";>here</link>. The <file>."
+"desktop.in</file> file will create the <file>.desktop</file>."
+msgstr ""
+"Ejecutar aplicaciones desde la terminal es útil al principio del proceso de "
+"crear la aplicación. Para tener una <link href=\"http://library.gnome.org/";
+"admin/system-admin-guide/stable/mimetypes-9.html.en\">integración con la "
+"aplicación</link> completa en GNOME 3, se necesita un lanzador en el "
+"escritorio. Para esto, necesita crear un archivo <file>.desktop</file>. El "
+"archivo «.desktop» describe el nombre de la aplicación, el icono que usa y "
+"varios campos de integración. Puede encontrar una descripción de los "
+"archivos <file>.desktop</file> <link href=\"http://developer.gnome.org/";
+"desktop-entry-spec/\">aquí</link>. El archivo <file>.desktop.in</file> "
+"creará el <file>.desktop</file>."
+
+#: C/hello-world.c.page:113(section/p) C/hello-world.js.page:134(section/p)
+#: C/hello-world.py.page:114(section/p) C/hello-world.vala.page:91(section/p)
+msgid ""
+"The example shows you the minimum requirements for a <code>.desktop.in</"
+"code> file."
+msgstr ""
+"El ejemplo muestra los requerimientos mínimos de un archivo <code>.desktop."
+"in</code>."
+
+#: C/hello-world.c.page:114(section/code)
+#: C/hello-world.js.page:135(section/code)
+#: C/hello-world.py.page:115(section/code)
+#: C/hello-world.vala.page:92(section/code)
+#, no-wrap
+#| msgid ""
+#| "[Desktop Entry]\n"
+#| "Version=1.0\n"
+#| "Encoding=UTF-8\n"
+#| "Name=Hello World\n"
+#| "Comment=Say Hello\n"
+#| "Exec= prefix@/bin/helloWorld\n"
+#| "Icon=application-default-icon\n"
+#| "Terminal=false\n"
+#| "Type=Application\n"
+#| "StartupNotify=true\n"
+#| "Categories=GNOME;GTK;Utility;\n"
+msgid ""
+"[Desktop Entry]\n"
+"Version=1.0\n"
+"Encoding=UTF-8\n"
+"Name=Hello World\n"
+"Comment=Say Hello\n"
+"Exec= prefix@/bin/hello-world\n"
+"Icon=application-default-icon\n"
+"Terminal=false\n"
+"Type=Application\n"
+"StartupNotify=true\n"
+"Categories=GNOME;GTK;Utility;\n"
+msgstr ""
+"[Desktop Entry]\n"
+"Version=1.0\n"
+"Encoding=UTF-8\n"
+"Name=Hello World\n"
+"Comment=Say Hello\n"
+"Exec= prefix@/bin/hello-world\n"
+"Icon=application-default-icon\n"
+"Terminal=false\n"
+"Type=Application\n"
+"StartupNotify=true\n"
+"Categories=GNOME;GTK;Utility;\n"
+
+#: C/hello-world.c.page:116(section/p) C/hello-world.js.page:137(section/p)
+#: C/hello-world.py.page:117(section/p) C/hello-world.vala.page:94(section/p)
+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/hello-world.c.page:118(item/title) C/hello-world.js.page:139(item/title)
+#: C/hello-world.py.page:119(item/title)
+#: C/hello-world.vala.page:96(item/title) C/toolbar_builder.py.page:94(td/p)
+#: C/toolbar_builder.vala.page:77(td/p)
+msgid "Name"
+msgstr "Name"
+
+#: C/hello-world.c.page:118(item/p) C/hello-world.js.page:139(item/p)
+#: C/hello-world.py.page:119(item/p) C/hello-world.vala.page:96(item/p)
+msgid "The application name."
+msgstr "El nombre de la aplicación."
+
+#: C/hello-world.c.page:119(item/title) C/hello-world.js.page:140(item/title)
+#: C/hello-world.py.page:120(item/title)
+#: C/hello-world.vala.page:97(item/title)
+msgid "Comment"
+msgstr "Comment"
+
+#: C/hello-world.c.page:119(item/p) C/hello-world.js.page:140(item/p)
+#: C/hello-world.py.page:120(item/p) C/hello-world.vala.page:97(item/p)
+msgid "A short description of the application."
+msgstr "Una descripción corta de la aplicación."
+
+#: C/hello-world.c.page:120(item/title) C/hello-world.js.page:141(item/title)
+#: C/hello-world.py.page:121(item/title)
+#: C/hello-world.vala.page:98(item/title)
+msgid "Exec"
+msgstr "Exec"
+
+#: C/hello-world.c.page:120(item/p) C/hello-world.js.page:141(item/p)
+#: C/hello-world.py.page:121(item/p) C/hello-world.vala.page:98(item/p)
+#, fuzzy
+#| msgid ""
+#| "Specifies a command to execute when you choose the application from the "
+#| "menu. In this example exec just tells where to find the <file>helloWorld</"
+#| "file> file and the file takes care of the rest."
+msgid ""
+"Specifies a command to execute when you choose the application from the "
+"menu. In this example exec just tells where to find the <file>hello-world</"
+"file> file and the file takes care of the rest."
+msgstr ""
+"Especifica un comando que ejecutar cuando se elige la aplicación en el menú. "
+"En este ejemplo, «exec» sólo indica dónde encontrar el archivo "
+"<code>helloworld</code> y el archivo se hace cargo del resto."
+
+#: C/hello-world.c.page:121(item/title) C/hello-world.js.page:142(item/title)
+#: C/hello-world.py.page:122(item/title)
+#: C/hello-world.vala.page:99(item/title)
+msgid "Terminal"
+msgstr "Terminal"
+
+#: C/hello-world.c.page:121(item/p) C/hello-world.js.page:142(item/p)
+#: C/hello-world.py.page:122(item/p) C/hello-world.vala.page:99(item/p)
+msgid ""
+"Specifies whether the command in the Exec key runs in a terminal window."
+msgstr ""
+"Especifica si el comando del campo «Exec» se ejecuta en una ventana de la "
+"terminal."
+
+#: C/hello-world.c.page:124(section/p) C/hello-world.js.page:145(section/p)
+#: C/hello-world.py.page:125(section/p) C/hello-world.vala.page:102(section/p)
+msgid ""
+"To put your application into the appropriate category, you need to add the "
+"necessary categories to the Categories line. More information on the "
+"different categories can be found in the <link href=\"http://standards.";
+"freedesktop.org/menu-spec/latest/apa.html\">menu specification</link>."
+msgstr ""
+"Para incluir su aplicación en la categoría correcta, debe añadir las "
+"categorías necesarias a la línea «Categories». Puede encontrar más "
+"información sobre las distintas categorías en la <link href=\"http://";
+"standards.freedesktop.org/menu-spec/latest/apa.html\">especificación del "
+"menú</link>."
+
+#: C/hello-world.c.page:125(section/p) C/hello-world.js.page:146(section/p)
+#: C/hello-world.py.page:126(section/p) C/hello-world.vala.page:103(section/p)
+#, fuzzy
+#| msgid ""
+#| "In this example we use an existing icon. For a custom icon you need to "
+#| "have a .svg file of your icon, stored in <file>/usr/share/icons/hicolor/"
+#| "scalable/apps</file>. Write the name of your icon file to the .desktop.in "
+#| "file, on line 7. More information on icons in: <link href=\"http://";
+#| "library.gnome.org/admin/system-admin-guide/stable/themes-11.html.en\"> "
+#| "Installing Icons for Themes </link>, <link href=\"https://live.gnome.org/";
+#| "GnomeGoals/AppIcon\">Installing Icons for Themes</link> and <link href="
+#| "\"http://freedesktop.org/wiki/Specifications/icon-theme-spec\";>on "
+#| "freedesktop.org: Specifications/icon-theme-spec</link>."
+msgid ""
+"In this example we use an existing icon. For a custom icon you need to have "
+"a .svg file of your icon, stored in <file>/usr/share/icons/hicolor/scalable/"
+"apps</file>. Write the name of your icon file to the .desktop.in file, on "
+"line 7. More information on icons in: <link href=\"https://live.gnome.org/";
+"GnomeGoals/AppIcon\">Installing Icons for Themes</link> and <link href="
+"\"http://freedesktop.org/wiki/Specifications/icon-theme-spec\";>on "
+"freedesktop.org: Specifications/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 "
+"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 "
+"iconos para temas</link> y <link href=\"http://freedesktop.org/wiki/";
+"Specifications/icon-theme-spec\">en freedesktop.org: especificaciones/icon-"
+"theme-spec</link>."
+
+#: C/hello-world.c.page:128(section/title)
+#: C/hello-world.js.page:149(section/title)
+#: C/hello-world.py.page:129(section/title)
+#: C/hello-world.vala.page:106(section/title)
+msgid "The build system"
+msgstr "El sistema de construcción"
+
+#: C/hello-world.c.page:129(section/p) C/hello-world.js.page:150(section/p)
+#: C/hello-world.py.page:130(section/p) C/hello-world.vala.page:107(section/p)
+msgid ""
+"To make your application truly a part of the GNOME 3 system you need to "
+"install it with the help of autotools. The autotools build will install all "
+"the necessary files to all the right places."
+msgstr ""
+"Para que su aplicación forme parte realmente del sistema GNOME 3 debe "
+"instalarla con la ayuda de autotools. La construcción autotools instalará "
+"todos los archivos necesarios en las ubicaciones correctas."
+
+#: C/hello-world.c.page:130(section/p) C/hello-world.js.page:151(section/p)
+#: C/hello-world.py.page:131(section/p) C/hello-world.vala.page:108(section/p)
+msgid "For this you need to have the following files:"
+msgstr "Para esto deberá tener los siguientes archivos:"
+
+#: C/hello-world.c.page:133(section/title)
+#: C/hello-world.js.page:154(section/title)
+#: C/hello-world.py.page:134(section/title)
+#: C/hello-world.vala.page:111(section/title)
+#: C/weatherAutotools.js.page:39(item/p)
+msgid "autogen.sh"
+msgstr "autogen.sh"
+
+#: C/hello-world.c.page:134(section/code)
+#: C/hello-world.js.page:155(section/code)
+#: C/hello-world.py.page:135(section/code)
+#: C/hello-world.vala.page:112(section/code)
+#, no-wrap
+msgid ""
+"#!/bin/sh\n"
+"\n"
+"set -e\n"
+"\n"
+"test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n"
+"test -n \"$srcdir\" || srcdir=.\n"
+"\n"
+"olddir=`pwd`\n"
+"cd \"$srcdir\"\n"
+"\n"
+"# This will run autoconf, automake, etc. for us\n"
+"autoreconf --force --install\n"
+"\n"
+"cd \"$olddir\"\n"
+"\n"
+"if test -z \"$NOCONFIGURE\"; then\n"
+"  \"$srcdir\"/configure \"$ \"\n"
+"fi\n"
+msgstr ""
+"#!/bin/sh\n"
+"\n"
+"set -e\n"
+"\n"
+"test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n"
+"test -n \"$srcdir\" || srcdir=.\n"
+"\n"
+"olddir=`pwd`\n"
+"cd \"$srcdir\"\n"
+"\n"
+"# This will run autoconf, automake, etc. for us\n"
+"autoreconf --force --install\n"
+"\n"
+"cd \"$olddir\"\n"
+"\n"
+"if test -z \"$NOCONFIGURE\"; then\n"
+"  \"$srcdir\"/configure \"$ \"\n"
+"fi\n"
+
+#: C/hello-world.c.page:136(section/p) C/hello-world.js.page:157(section/p)
+#: C/hello-world.py.page:137(section/p) C/hello-world.vala.page:114(section/p)
+msgid "After the <file>autogen.sh</file> file is ready and saved, run:"
+msgstr ""
+"Una vez que el archivo <file>autogen.sh</file> esté listo y guardado, "
+"ejecute:"
+
+#: C/hello-world.c.page:137(section/screen)
+#: C/hello-world.js.page:158(section/screen)
+#: C/hello-world.py.page:138(section/screen)
+#: C/hello-world.vala.page:115(section/screen)
+#, no-wrap
+msgid "<output style=\"prompt\">$ </output><input>chmod +x autogen.sh</input>"
+msgstr "<output style=\"prompt\">$ </output><input>chmod +x autogen.sh</input>"
+
+#: C/hello-world.c.page:141(section/title)
+#: C/hello-world.js.page:162(section/title)
+#: C/hello-world.py.page:142(section/title)
+#: C/hello-world.vala.page:119(section/title)
+#: C/weatherAutotools.js.page:37(item/p)
+#: C/weatherAutotools.js.page:63(section/p)
+msgid "Makefile.am"
+msgstr "Makefile.am"
+
+#: C/hello-world.c.page:142(section/code)
+#, no-wrap
+#| msgid ""
+#| "# The actual runnable program is set to the SCRIPTS primitive.\n"
+#| "# # Prefix bin_ tells where to copy this\n"
+#| "bin_SCRIPTS = helloWorld\n"
+#| "# # List of files to be distributed\n"
+#| "EXTRA_DIST=  \\\n"
+#| "\t$(bin_SCRIPTS)\n"
+#| "#\n"
+#| "#     # The desktop files\n"
+#| "desktopdir = $(datadir)/applications\n"
+#| "desktop_DATA = \\\n"
+#| "\thelloWorld.desktop\n"
+msgid ""
+"# The actual runnable program is set to the SCRIPTS primitive.\n"
+"# # Prefix bin_ tells where to copy this\n"
+"bin_PROGRAMS = hello-world\n"
+"hello_world_CFLAGS = $(gtk_CFLAGS)\n"
+"hello_world_LDADD = $(gtk_LIBS)\n"
+"hello_world_SOURCES = hello-world.c\n"
+"\n"
+"desktopdir = $(datadir)/applications\n"
+"desktop_DATA = \\\n"
+"\thello-world.desktop\n"
+msgstr ""
+"# The actual runnable program is set to the SCRIPTS primitive.\n"
+"# # Prefix bin_ tells where to copy this\n"
+"bin_PROGRAMS = hello-world\n"
+"hello_world_CFLAGS = $(gtk_CFLAGS)\n"
+"hello_world_LDADD = $(gtk_LIBS)\n"
+"hello_world_SOURCES = hello-world.c\n"
+"\n"
+"desktopdir = $(datadir)/applications\n"
+"desktop_DATA = \\\n"
+"\thello-world.desktop\n"
+
+#: C/hello-world.c.page:146(section/title)
+#: C/hello-world.js.page:167(section/title)
+#: C/hello-world.py.page:147(section/title)
+#: C/hello-world.vala.page:124(section/title)
+#: C/weatherAutotools.js.page:38(item/p)
+#: C/weatherAutotools.js.page:130(section/p)
+msgid "configure.ac"
+msgstr "configure.ac"
+
+#: C/hello-world.c.page:147(section/code)
+#: C/hello-world.vala.page:125(section/code)
+#, no-wrap
+#| msgid ""
+#| "# This file is processed by autoconf to create a configure script\n"
+#| "AC_INIT([Hello World], 1.0)\n"
+#| "AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
+#| "AC_CONFIG_FILES([Makefile helloWorld.desktop])\n"
+#| "AC_OUTPUT\n"
+msgid ""
+"# This file is processed by autoconf to create a configure script\n"
+"AC_INIT([Hello World], 1.0)\n"
+"AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
+"AC_PROG_CC\n"
+"AM_PROG_VALAC([0.16])\n"
+"PKG_CHECK_MODULES(gtk, gtk+-3.0)\n"
+"AC_CONFIG_FILES([Makefile hello-world.desktop])\n"
+"\n"
+"AC_OUTPUT\n"
+msgstr ""
+"# This file is processed by autoconf to create a configure script\n"
+"AC_INIT([Hello World], 1.0)\n"
+"AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
+"AC_PROG_CC\n"
+"AM_PROG_VALAC([0.16])\n"
+"PKG_CHECK_MODULES(gtk, gtk+-3.0)\n"
+"AC_CONFIG_FILES([Makefile hello-world.desktop])\n"
+"\n"
+"AC_OUTPUT\n"
+
+#: C/hello-world.c.page:151(section/title)
+#: C/hello-world.js.page:172(section/title)
+#: C/hello-world.py.page:152(section/title)
+#: C/hello-world.vala.page:129(section/title)
+msgid "README"
+msgstr "README"
+
+#: C/hello-world.c.page:152(section/p) C/hello-world.js.page:173(section/p)
+#: C/hello-world.py.page:153(section/p) C/hello-world.vala.page:130(section/p)
+msgid "Information users should read first. This file can be blank."
+msgstr ""
+"Información que los usuarios deben leer primero. Este archivo puede estar "
+"vacío."
+
+#: C/hello-world.c.page:154(section/p) C/hello-world.vala.page:132(section/p)
+#, fuzzy
+#| msgid ""
+#| "When you have the <file>helloWorld</file>, <file>helloWorld.desktop.in</"
+#| "file>, <file>Makefile.am</file>, <file>configure.ac</file> and "
+#| "<file>autogen.sh</file> files with correct information and rights, the "
+#| "<file>README</file> file can include the following instructions:"
+msgid ""
+"When you have the <file>hello-world.c</file>, <file>hello-world.desktop.in</"
+"file>, <file>Makefile.am</file>, <file>configure.ac</file> and <file>autogen."
+"sh</file> files with correct information and rights, the <file>README</file> "
+"file can include the following instructions:"
+msgstr ""
+"Cuando tenga los archivos <file>helloWorld</file>, <file>helloWorld.desktop."
+"in</file>, <file>Makefile.am</file>, <file>configure.ac</file> y "
+"<file>autogen.sh</file> con la información y los derechos correctos, el "
+"archivo <file>README</file> puede incluir las siguientes instrucciones:"
+
+#: C/hello-world.c.page:155(section/code)
+#, no-wrap
+#| msgid ""
+#| "To build and install this program:\n"
+#| "\n"
+#| "./autogen.sh --prefix=/home/your_username/.local\n"
+#| "make install\n"
+#| "\n"
+#| "-------------\n"
+#| "Running the first line above creates the following files:\n"
+#| "\n"
+#| "aclocal.m4\n"
+#| "autom4te.cache\n"
+#| "config.log\n"
+#| "config.status\n"
+#| "configure\n"
+#| "helloWorld.desktop\n"
+#| "install-sh\n"
+#| "missing\n"
+#| "Makefile.in\n"
+#| "Makefile\n"
+#| "\n"
+#| "Running \"make install\", installs the application in /home/your_username/.local/bin\n"
+#| "and installs the helloWorld.desktop file in /home/your_username/.local/share/applications\n"
+#| "\n"
+#| "You can now run the application by typing \"Hello World\" in the Overview.\n"
+#| "\n"
+#| "----------------\n"
+#| "To uninstall, type:\n"
+#| "\n"
+#| "make uninstall\n"
+#| "\n"
+#| "----------------\n"
+#| "To create a tarball type:\n"
+#| "\n"
+#| "make distcheck\n"
+#| "\n"
+#| "This will create hello-world-1.0.tar.xz\n"
+#| "\n"
+msgid ""
+"To build and install this program:\n"
+"\n"
+"./autogen.sh --prefix=/home/your_username/.local\n"
+"make\n"
+"make install\n"
+"\n"
+"-------------\n"
+"Running the first line above creates the following files:\n"
+"\n"
+"aclocal.m4\n"
+"autom4te.cache\n"
+"config.log\n"
+"config.status\n"
+"configure\n"
+"depcomp\n"
+"hello-world\n"
+"hello-world.desktop\n"
+"hello_world-hello-world.o\n"
+"install-sh\n"
+"missing\n"
+"Makefile.in\n"
+"Makefile\n"
+"\n"
+"Running \"make\" links all the appropriate libraries.\n"
+"\n"
+"Running \"make install\", installs the application in /home/your_username/.local/bin\n"
+"and installs the hello-world.desktop file in /home/your_username/.local/share/applications\n"
+"\n"
+"You can now run the application by typing \"Hello World\" in the Overview.\n"
+"\n"
+"----------------\n"
+"To uninstall, type:\n"
+"\n"
+"make uninstall\n"
+"\n"
+"----------------\n"
+"To create a tarball type:\n"
+"\n"
+"make distcheck\n"
+"\n"
+"This will create hello-world-1.0.tar.xz\n"
+msgstr ""
+
+#: C/hello-world.js.page:8(info/title)
+msgctxt "text"
+msgid "Hello World (JavaScript)"
+msgstr "Hola mundo (JavaScript)"
+
+#: C/hello-world.js.page:31(item/p)
+msgid "create a small \"Hello, World\" application using JavaScript and GTK+"
+msgstr "crear una pequeña aplicación «Hola, mundo» usando JavaScript y GTK+"
+
+#: C/hello-world.js.page:46(section/p)
 msgid "This needs to be the first line of your script:"
 msgstr "Esta tiene que ser la primera línea de su script:"
 
-#: C/helloWorld.js.page:47(section/code)
+#: C/hello-world.js.page:47(section/code)
 #, no-wrap
 msgid "#!/usr/bin/gjs"
 msgstr "#!/usr/bin/gjs"
 
-#: C/helloWorld.js.page:48(section/p)
+#: C/hello-world.js.page:48(section/p)
 msgid ""
 "It tells the script to use <link href=\"https://live.gnome.org/Gjs/\";>Gjs</"
 "link>. Gjs is a JavaScript binding for GNOME."
@@ -18978,7 +21331,7 @@ msgstr ""
 "Le dice al script que use <link href=\"https://live.gnome.org/Gjs/\";>Gjs</"
 "link>. Gjs es una vinculación de JavaScript para GNOME."
 
-#: C/helloWorld.js.page:53(section/code)
+#: C/hello-world.js.page:53(section/code)
 #, no-wrap
 msgid ""
 "const Lang = imports.lang;\n"
@@ -18987,7 +21340,7 @@ msgstr ""
 "const Lang = imports.lang;\n"
 "const Gtk = imports.gi.Gtk;"
 
-#: C/helloWorld.js.page:55(section/p)
+#: C/hello-world.js.page:55(section/p) C/hello-world.py.page:48(section/p)
 msgid ""
 "In order for our script to work with GNOME, we need to import GNOME "
 "libraries via GObject Introspection. Here we import the language bindings "
@@ -18999,7 +21352,7 @@ msgstr ""
 "las vinculaciones de lenguaje y GTK+, la biblioteca que contiene los widgets "
 "gráficos usados para crear aplicaciones de GNOME."
 
-#: C/helloWorld.js.page:59(section/code)
+#: C/hello-world.js.page:59(section/code)
 #, no-wrap
 msgid ""
 "const Application = new Lang.Class({\n"
@@ -19064,47 +21417,26 @@ msgstr ""
 "    }\n"
 "});\n"
 
-#: C/helloWorld.js.page:91(section/p)
-msgid ""
-"GtkApplication initializes GTK+. It also connects the <gui>x</gui> button "
-"that's automatically generated along with the window to the \"destroy\" "
-"signal."
-msgstr ""
-"«GtkApplication» inicializa GTK+. También conecta el botón <gui>x</gui> que "
-"se genera automáticamente junto con la ventana a la señal «destroy»."
-
-#: C/helloWorld.js.page:92(section/p)
+#: C/hello-world.js.page:92(section/p)
 msgid ""
 "We can start building our first window. We do this by creating a variable "
 "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)
+#: C/hello-world.js.page:93(section/p) C/hello-world.py.page:72(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 "
 "codificación UTF-8."
 
-#: C/helloWorld.js.page:94(section/p)
-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»."
-
-#: C/helloWorld.js.page:97(section/title)
-msgid "Label for the window"
-msgstr "Etiqueta para la ventana"
-
-#: C/helloWorld.js.page:98(section/code)
+#: C/hello-world.js.page:98(section/code)
 #, no-wrap
 msgid ""
 "// Add a label widget to your window\n"
@@ -19117,7 +21449,7 @@ msgstr ""
 "this._window.add(this.label);\n"
 "this._window.set_default_size(200, 200);"
 
-#: C/helloWorld.js.page:103(section/p)
+#: C/hello-world.js.page:103(section/p)
 msgid ""
 "A text label is one of the GTK+ widgets we can use, on account of having "
 "imported the GTK+ library. To use it, we create a new variable called label, "
@@ -19128,10 +21460,10 @@ 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)
+#: C/hello-world.js.page:105(section/code)
 #, no-wrap
 msgid ""
 "//run the application\n"
@@ -19142,7 +21474,8 @@ msgstr ""
 "let app = new Application();\n"
 "app.application.run(ARGV);"
 
-#: C/helloWorld.js.page:109(section/p)
+#: C/hello-world.js.page:109(section/p) C/hello-world.py.page:96(section/p)
+#: C/hello-world.vala.page:70(section/p)
 msgid ""
 "Gtk.ApplicationWindow can only hold one widget at a time. To construct more "
 "elaborate programs you need to create a holder widget like Gtk.Grid inside "
@@ -19152,15 +21485,13 @@ msgstr ""
 "construir programas más elaborados necesita crear un widget contenedor como "
 "«Gtk.Grid» dentro de la ventana, y después añadirle los otros."
 
-#: C/helloWorld.js.page:113(section/title)
-msgid "helloWorld.js"
+#: C/hello-world.js.page:113(section/title)
+#, fuzzy
+#| msgid "helloWorld.js"
+msgid "hello-world.js"
 msgstr "helloWorld.js"
 
-#: C/helloWorld.js.page:114(section/p)
-msgid "The complete file:"
-msgstr "El archivo completo:"
-
-#: C/helloWorld.js.page:115(section/code)
+#: C/hello-world.js.page:115(section/code)
 #, no-wrap
 msgid ""
 "#!/usr/bin/gjs\n"
@@ -19249,268 +21580,526 @@ msgstr ""
 "let app = new Application();\n"
 "app.application.run(ARGV);\n"
 
-#: C/helloWorld.js.page:118(section/title)
-msgid "Running the application from terminal"
-msgstr "Ejecutar la aplicación desde la terminal"
-
-#: C/helloWorld.js.page:119(section/p)
+#: C/hello-world.js.page:119(section/p)
+#, fuzzy
+#| msgid ""
+#| "To run this application, first save it as helloWorld.js. Then open "
+#| "Terminal, go to the folder where your application is stored and run:"
 msgid ""
-"To run this application, first save it as helloWorld.js. Then open Terminal, "
-"go to the folder where your application is stored and run:"
+"To run this application, first save it as hello-world.js. Then open "
+"Terminal, go to the folder where your application is stored and run:"
 msgstr ""
 "Para ejecutar esta aplicación, primero guárdela como helloWorld.js. Luego, "
 "abra una terminal, vaya a la carpeta donde está la aplicación y ejecute:"
 
-#: C/helloWorld.js.page:120(section/screen)
+#: C/hello-world.js.page:120(section/screen)
 #, no-wrap
-msgid "<output style=\"prompt\">$ </output><input>gjs helloWorld.js</input>"
-msgstr "<output style=\"prompt\">$ </output><input>gjs helloWorld.js</input>"
+#| msgid "<output style=\"prompt\">$ </output><input>gjs helloWorld.js</input>"
+msgid "<output style=\"prompt\">$ </output><input>gjs hello-world.js</input>"
+msgstr "<output style=\"prompt\">$ </output><input>gjs hello-world.js</input>"
 
-#: C/helloWorld.js.page:126(section/title)
-msgid "The <file>.desktop.in</file> file"
-msgstr "El archivo <file>.desktop.in</file>"
-
-#: C/helloWorld.js.page:127(section/p)
+#: C/hello-world.js.page:130(note/p)
+#, fuzzy
+#| msgid ""
+#| "Before continuing, resave <file>helloWorld.js</file> as <file>helloWorld</"
+#| "file>. Then run this in the command line:"
 msgid ""
-"Running applications from the Terminal is useful at the beginning of the "
-"application making process. To have fully working <link href=\"http://";
-"library.gnome.org/admin/system-admin-guide/stable/mimetypes-9.html.en"
-"\">application integration</link> in GNOME 3 requires a desktop launcher. "
-"For this you need to create a <file>.desktop</file> file. The <file>."
-"desktop</file> file describes the application name, the used icon and "
-"various integration bits. A deeper insight into the <file>.desktop</file> "
-"file can be found <link href=\"http://developer.gnome.org/desktop-entry-spec/";
-"\">here</link>. The <file>.desktop.in</file> file will create the <file>."
-"desktop</file>."
-msgstr ""
-"Ejecutar aplicaciones desde la terminal es útil al principio del proceso de "
-"crear la aplicación. Para tener una <link href=\"http://library.gnome.org/";
-"admin/system-admin-guide/stable/mimetypes-9.html.en\">integración con la "
-"aplicación</link> completa en GNOME 3, se necesita un lanzador en el "
-"escritorio. Para esto, necesita crear un archivo <file>.desktop</file>. El "
-"archivo «.desktop» describe el nombre de la aplicación, el icono que usa y "
-"varios campos de integración. Puede encontrar una descripción de los "
-"archivos <file>.desktop</file> <link href=\"http://developer.gnome.org/";
-"desktop-entry-spec/\">aquí</link>. El archivo <file>.desktop.in</file> "
-"creará el <file>.desktop</file>."
-
-#: C/helloWorld.js.page:130(note/p)
-msgid ""
-"Before continuing, resave <file>helloWorld.js</file> as <file>helloWorld</"
+"Before continuing, resave <file>hello-world.js</file> as <file>hello-world</"
 "file>. Then run this in the command line:"
 msgstr ""
 "Antes de continuar, guarde nuevamente <file>helloWorld.js</file> como "
 "<file>helloWorld</file>. Después ejecute esto en la terminal:"
 
-#: C/helloWorld.js.page:131(note/screen)
+#: C/hello-world.js.page:131(note/screen)
 #, no-wrap
-msgid "<output style=\"prompt\">$ </output><input>chmod +x helloWorld</input>"
-msgstr "<output style=\"prompt\">$ </output><input>chmod +x helloWorld</input>"
+#| msgid "<output style=\"prompt\">$ </output><input>chmod +x helloWorld</input>"
+msgid "<output style=\"prompt\">$ </output><input>chmod +x hello-world</input>"
+msgstr "<output style=\"prompt\">$ </output><input>chmod +x hello-world</input>"
 
-#: C/helloWorld.js.page:134(section/p)
+#: C/hello-world.js.page:163(section/code)
+#, no-wrap
+#| msgid ""
+#| "# The actual runnable program is set to the SCRIPTS primitive.\n"
+#| "# # Prefix bin_ tells where to copy this\n"
+#| "bin_SCRIPTS = helloWorld\n"
+#| "# # List of files to be distributed\n"
+#| "EXTRA_DIST=  \\\n"
+#| "\t$(bin_SCRIPTS)\n"
+#| "#\n"
+#| "#     # The desktop files\n"
+#| "desktopdir = $(datadir)/applications\n"
+#| "desktop_DATA = \\\n"
+#| "\thelloWorld.desktop\n"
 msgid ""
-"The example shows you the minimum requirements for a <code>.desktop.in</"
-"code> file."
+"# The actual runnable program is set to the SCRIPTS primitive.\n"
+"# # Prefix bin_ tells where to copy this\n"
+"bin_SCRIPTS = hello-world\n"
+"# # List of files to be distributed\n"
+"EXTRA_DIST =  \\\n"
+"\t$(bin_SCRIPTS)\n"
+"#\n"
+"#     # The desktop files\n"
+"desktopdir = $(datadir)/applications\n"
+"desktop_DATA = \\\n"
+"\thello-world.desktop\n"
 msgstr ""
-"El ejemplo muestra los requerimientos mínimos de un archivo <code>.desktop."
-"in</code>."
+"# The actual runnable program is set to the SCRIPTS primitive.\n"
+"# # Prefix bin_ tells where to copy this\n"
+"bin_SCRIPTS = hello-world\n"
+"# # List of files to be distributed\n"
+"EXTRA_DIST =  \\\n"
+"\t$(bin_SCRIPTS)\n"
+"#\n"
+"#     # The desktop files\n"
+"desktopdir = $(datadir)/applications\n"
+"desktop_DATA = \\\n"
+"\thello-world.desktop\n"
 
-#: C/helloWorld.js.page:135(section/code)
+#: C/hello-world.js.page:168(section/code)
+#: C/hello-world.py.page:148(section/code)
 #, no-wrap
+#| msgid ""
+#| "# This file is processed by autoconf to create a configure script\n"
+#| "AC_INIT([Hello World], 1.0)\n"
+#| "AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
+#| "AC_CONFIG_FILES([Makefile helloWorld.desktop])\n"
+#| "AC_OUTPUT\n"
 msgid ""
-"[Desktop Entry]\n"
-"Version=1.0\n"
-"Encoding=UTF-8\n"
-"Name=Hello World\n"
-"Comment=Say Hello\n"
-"Exec= prefix@/bin/helloWorld\n"
-"Icon=application-default-icon\n"
-"Terminal=false\n"
-"Type=Application\n"
-"StartupNotify=true\n"
-"Categories=GNOME;GTK;Utility;\n"
+"# This file is processed by autoconf to create a configure script\n"
+"AC_INIT([Hello World], 1.0)\n"
+"AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
+"AC_CONFIG_FILES([Makefile hello-world.desktop])\n"
+"AC_OUTPUT\n"
 msgstr ""
-"[Desktop Entry]\n"
-"Version=1.0\n"
-"Encoding=UTF-8\n"
-"Name=Hello World\n"
-"Comment=Say Hello\n"
-"Exec= prefix@/bin/helloWorld\n"
-"Icon=application-default-icon\n"
-"Terminal=false\n"
-"Type=Application\n"
-"StartupNotify=true\n"
-"Categories=GNOME;GTK;Utility;\n"
-
-#: C/helloWorld.js.page:137(section/p)
-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:94(td/p)
-#: C/toolbar_builder.vala.page:77(td/p)
-msgid "Name"
-msgstr "Name"
+"# This file is processed by autoconf to create a configure script\n"
+"AC_INIT([Hello World], 1.0)\n"
+"AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
+"AC_CONFIG_FILES([Makefile hello-world.desktop])\n"
+"AC_OUTPUT\n"
 
-#: C/helloWorld.js.page:139(item/p)
-msgid "The application name."
-msgstr "El nombre de la aplicación."
+#: C/hello-world.js.page:175(section/p) C/hello-world.py.page:155(section/p)
+#, fuzzy
+#| msgid ""
+#| "When you have the <file>helloWorld</file>, <file>helloWorld.desktop.in</"
+#| "file>, <file>Makefile.am</file>, <file>configure.ac</file> and "
+#| "<file>autogen.sh</file> files with correct information and rights, the "
+#| "<file>README</file> file can include the following instructions:"
+msgid ""
+"When you have the <file>hello-world</file>, <file>hello-world.desktop.in</"
+"file>, <file>Makefile.am</file>, <file>configure.ac</file> and <file>autogen."
+"sh</file> files with correct information and rights, the <file>README</file> "
+"file can include the following instructions:"
+msgstr ""
+"Cuando tenga los archivos <file>helloWorld</file>, <file>helloWorld.desktop."
+"in</file>, <file>Makefile.am</file>, <file>configure.ac</file> y "
+"<file>autogen.sh</file> con la información y los derechos correctos, el "
+"archivo <file>README</file> puede incluir las siguientes instrucciones:"
 
-#: C/helloWorld.js.page:140(item/title)
-msgid "Comment"
-msgstr "Comment"
+#: C/hello-world.js.page:176(section/code)
+#: C/hello-world.py.page:156(section/code)
+#, fuzzy, no-wrap
+#| msgid ""
+#| "To build and install this program:\n"
+#| "\n"
+#| "./autogen.sh --prefix=/home/your_username/.local\n"
+#| "make install\n"
+#| "\n"
+#| "-------------\n"
+#| "Running the first line above creates the following files:\n"
+#| "\n"
+#| "aclocal.m4\n"
+#| "autom4te.cache\n"
+#| "config.log\n"
+#| "config.status\n"
+#| "configure\n"
+#| "helloWorld.desktop\n"
+#| "install-sh\n"
+#| "missing\n"
+#| "Makefile.in\n"
+#| "Makefile\n"
+#| "\n"
+#| "Running \"make install\", installs the application in /home/your_username/.local/bin\n"
+#| "and installs the helloWorld.desktop file in /home/your_username/.local/share/applications\n"
+#| "\n"
+#| "You can now run the application by typing \"Hello World\" in the Overview.\n"
+#| "\n"
+#| "----------------\n"
+#| "To uninstall, type:\n"
+#| "\n"
+#| "make uninstall\n"
+#| "\n"
+#| "----------------\n"
+#| "To create a tarball type:\n"
+#| "\n"
+#| "make distcheck\n"
+#| "\n"
+#| "This will create hello-world-1.0.tar.xz\n"
+#| "\n"
+msgid ""
+"To build and install this program:\n"
+"\n"
+"./autogen.sh --prefix=/home/your_username/.local\n"
+"make install\n"
+"\n"
+"-------------\n"
+"Running the first line above creates the following files:\n"
+"\n"
+"aclocal.m4\n"
+"autom4te.cache\n"
+"config.log\n"
+"config.status\n"
+"configure\n"
+"hello-world.desktop\n"
+"install-sh\n"
+"missing\n"
+"Makefile.in\n"
+"Makefile\n"
+"\n"
+"Running \"make install\", installs the application in /home/your_username/.local/bin\n"
+"and installs the hello-world.desktop file in /home/your_username/.local/share/applications\n"
+"\n"
+"You can now run the application by typing \"Hello World\" in the Overview.\n"
+"\n"
+"----------------\n"
+"To uninstall, type:\n"
+"\n"
+"make uninstall\n"
+"\n"
+"----------------\n"
+"To create a tarball type:\n"
+"\n"
+"make distcheck\n"
+"\n"
+"This will create hello-world-1.0.tar.xz\n"
+msgstr ""
+"To build and install this program:\n"
+"\n"
+"./autogen.sh --prefix=/home/your_username/.local\n"
+"make install\n"
+"\n"
+"-------------\n"
+"Running the first line above creates the following files:\n"
+"\n"
+"aclocal.m4\n"
+"autom4te.cache\n"
+"config.log\n"
+"config.status\n"
+"configure\n"
+"helloWorld.desktop\n"
+"install-sh\n"
+"missing\n"
+"Makefile.in\n"
+"Makefile\n"
+"\n"
+"Running \"make install\", installs the application in /home/your_username/.local/bin\n"
+"and installs the helloWorld.desktop file in /home/your_username/.local/share/applications\n"
+"\n"
+"You can now run the application by typing \"Hello World\" in the Overview.\n"
+"\n"
+"----------------\n"
+"To uninstall, type:\n"
+"\n"
+"make uninstall\n"
+"\n"
+"----------------\n"
+"To create a tarball type:\n"
+"\n"
+"make distcheck\n"
+"\n"
+"This will create hello-world-1.0.tar.xz\n"
+"\n"
 
-#: C/helloWorld.js.page:140(item/p)
-msgid "A short description of the application."
-msgstr "Una descripción corta de la aplicación."
+#: C/hello-world.py.page:8(info/title)
+#, fuzzy
+#| msgid "Hello World"
+msgctxt "text"
+msgid "Hello World (Python)"
+msgstr "Hola mundo"
 
-#: C/helloWorld.js.page:141(item/title)
-msgid "Exec"
-msgstr "Exec"
+#: C/hello-world.py.page:31(item/p)
+#, fuzzy
+#| msgid ""
+#| "create a small \"Hello, World\" application using JavaScript and GTK+"
+msgid "create a small \"Hello, World\" application using Python and GTK+"
+msgstr "crear una pequeña aplicación «Hola, mundo» usando JavaScript y GTK+"
 
-#: C/helloWorld.js.page:141(item/p)
+#: C/hello-world.py.page:46(section/code)
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "from gi.repository import Gtk, GdkPixbuf, Gdk\n"
+#| "import os, sys"
 msgid ""
-"Specifies a command to execute when you choose the application from the "
-"menu. In this example exec just tells where to find the <file>helloWorld</"
-"file> file and the file takes care of the rest."
+"from gi.repository import Gtk\n"
+"import sys"
 msgstr ""
-"Especifica un comando que ejecutar cuando se elige la aplicación en el menú. "
-"En este ejemplo, «exec» sólo indica dónde encontrar el archivo "
-"<code>helloworld</code> y el archivo se hace cargo del resto."
-
-#: C/helloWorld.js.page:142(item/title)
-msgid "Terminal"
-msgstr "Terminal"
-
-#: C/helloWorld.js.page:142(item/p)
+"from gi.repository import Gtk\n"
+"import sys"
+
+#: C/hello-world.py.page:52(section/code)
+#, no-wrap
+#| msgid ""
+#| "from gi.repository import Gtk\n"
+#| "import sys\n"
+#| "\n"
+#| "class MyWindow(Gtk.ApplicationWindow):\n"
+#| "    # constructor for a Gtk.ApplicationWindow\n"
+#| "    def __init__(self, app):\n"
+#| "        Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+#| "        self.set_default_size(200, 100)\n"
+#| "\n"
+#| "        # create a label\n"
+#| "        label = Gtk.Label()\n"
+#| "        # set the text of the label\n"
+#| "        label.set_text(\"Hello GNOME!\")\n"
+#| "        # add the label to the window\n"
+#| "        self.add(label)\n"
+#| "\n"
+#| "class MyApplication(Gtk.Application):\n"
+#| "    def __init__(self):\n"
+#| "        Gtk.Application.__init__(self)\n"
+#| "\n"
+#| "    def do_activate(self):\n"
+#| "        win = MyWindow(self)\n"
+#| "        win.show_all()\n"
+#| "\n"
+#| "    def do_startup(self):\n"
+#| "        Gtk.Application.do_startup(self)\n"
+#| "\n"
+#| "app = MyApplication()\n"
+#| "exit_status = app.run(sys.argv)\n"
+#| "sys.exit(exit_status)\n"
 msgid ""
-"Specifies whether the command in the Exec key runs in a terminal window."
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+"    # constructor for a Gtk.ApplicationWindow\n"
+"    def __init__(self, app):\n"
+"        Gtk.Window.__init__(self, title=\"Hello World!\", application=app)\n"
+"        self.set_default_size(200, 100)\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"    def __init__(self):\n"
+"        Gtk.Application.__init__(self)\n"
+"\n"
+"    def do_activate(self):\n"
+"        win = MyWindow(self)\n"
+"        win.show_all()\n"
+"\n"
+"    def do_startup(self):\n"
+"        Gtk.Application.do_startup(self)"
 msgstr ""
-"Especifica si el comando del campo «Exec» se ejecuta en una ventana de la "
-"terminal."
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+"    # constructor for a Gtk.ApplicationWindow\n"
+"    def __init__(self, app):\n"
+"        Gtk.Window.__init__(self, title=\"Hello World!\", application=app)\n"
+"        self.set_default_size(200, 100)\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"    def __init__(self):\n"
+"        Gtk.Application.__init__(self)\n"
+"\n"
+"    def do_activate(self):\n"
+"        win = MyWindow(self)\n"
+"        win.show_all()\n"
+"\n"
+"    def do_startup(self):\n"
+"        Gtk.Application.do_startup(self)"
 
-#: C/helloWorld.js.page:145(section/p)
+#: C/hello-world.py.page:70(section/p) C/hello-world.vala.page:53(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 ""
-"To put your application into the appropriate category, you need to add the "
-"necessary categories to the Categories line. More information on the "
-"different categories can be found in the <link href=\"http://standards.";
-"freedesktop.org/menu-spec/latest/apa.html\">menu specification</link>."
+"Gtk.Application initializes GTK+. It also connects the <gui>x</gui> button "
+"that's automatically generated along with the window to the \"destroy\" "
+"signal."
 msgstr ""
-"Para incluir su aplicación en la categoría correcta, debe añadir las "
-"categorías necesarias a la línea «Categories». Puede encontrar más "
-"información sobre las distintas categorías en la <link href=\"http://";
-"standards.freedesktop.org/menu-spec/latest/apa.html\">especificación del "
-"menú</link>."
+"«GtkApplication» inicializa GTK+. También conecta el botón <gui>x</gui> que "
+"se genera automáticamente junto con la ventana a la señal «destroy»."
 
-#: C/helloWorld.js.page:146(section/p)
+#: C/hello-world.py.page:71(section/p)
+#, fuzzy
+#| msgid ""
+#| "We can start building our first window. We do this by creating a variable "
+#| "called <var>_window</var> and assigning it a new Gtk.ApplicationWindow."
 msgid ""
-"In this example we use an existing icon. For a custom icon you need to have "
-"a .svg file of your icon, stored in <file>/usr/share/icons/hicolor/scalable/"
-"apps</file>. Write the name of your icon file to the .desktop.in file, on "
-"line 7. More information on icons in: <link href=\"http://library.gnome.org/";
-"admin/system-admin-guide/stable/themes-11.html.en\"> Installing Icons for "
-"Themes </link>, <link href=\"https://live.gnome.org/GnomeGoals/AppIcon";
-"\">Installing Icons for Themes</link> and <link href=\"http://freedesktop.";
-"org/wiki/Specifications/icon-theme-spec\">on freedesktop.org: Specifications/"
-"icon-theme-spec</link>."
+"We can start building our first window. We do this by creating a class "
+"called <var>MyWindow</var> and assigning it a Gtk.ApplicationWindow."
 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 "
-"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 "
-"iconos para temas</link> y <link href=\"http://freedesktop.org/wiki/";
-"Specifications/icon-theme-spec\">en freedesktop.org: especificaciones/icon-"
-"theme-spec</link>."
+"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."
 
-#: C/helloWorld.js.page:149(section/title)
-msgid "The build system"
-msgstr "El sistema de construcción"
+#: C/hello-world.py.page:77(section/code)
+#, no-wrap
+msgid ""
+"# Add a label widget to your window\n"
+"\n"
+"        # create a label\n"
+"        label = Gtk.Label()\n"
+"\n"
+"        # set the text of the label\n"
+"        label.set_text(\"Hello GNOME!\")\n"
+"\n"
+"        # add the label to the window\n"
+"        self.add(label)"
+msgstr ""
+"# Add a label widget to your window\n"
+"\n"
+"        # create a label\n"
+"        label = Gtk.Label()\n"
+"\n"
+"        # set the text of the label\n"
+"        label.set_text(\"Hello GNOME!\")\n"
+"\n"
+"        # add the label to the window\n"
+"        self.add(label)"
 
-#: C/helloWorld.js.page:150(section/p)
+#: C/hello-world.py.page:88(section/p)
+#, fuzzy
+#| msgid ""
+#| "A text label is one of the GTK+ widgets we can use, on account of having "
+#| "imported the GTK+ library. To use it, we create a new variable called "
+#| "label, and assign it a new Gtk.Label. Then we give it properties inside "
+#| "the curly braces {}. In this case, we're setting the text that the label "
+#| "will hold. Finally, we create and run the application:"
 msgid ""
-"To make your application truly a part of the GNOME 3 system you need to "
-"install it with the help of autotools. The autotools build will install all "
-"the necessary files to all the right places."
+"A text label is one of the GTK+ widgets we can use, on account of having "
+"imported the GTK+ library. To use it, we create a variable called "
+"<var>label</var> and set the text that the label will hold. Finally, we "
+"create and run the application:"
 msgstr ""
-"Para que su aplicación forme parte realmente del sistema GNOME 3 debe "
-"instalarla con la ayuda de autotools. La construcción autotools instalará "
-"todos los archivos necesarios en las ubicaciones correctas."
+"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:"
 
-#: C/helloWorld.js.page:151(section/p)
-msgid "For this you need to have the following files:"
-msgstr "Para esto deberá tener los siguientes archivos:"
+#: C/hello-world.py.page:90(section/code)
+#, no-wrap
+msgid ""
+"#run the application\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)"
+msgstr ""
+"#run the application\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)"
 
-#: C/helloWorld.js.page:154(section/title)
-#: C/weatherAutotools.js.page:39(item/p)
-msgid "autogen.sh"
-msgstr "autogen.sh"
+#: C/hello-world.py.page:100(section/title)
+#, fuzzy
+#| msgid "helloWorld.js"
+msgid "hello-world.py"
+msgstr "helloWorld.js"
 
-#: C/helloWorld.js.page:155(section/code)
+#: C/hello-world.py.page:102(section/code) C/label.py.page:37(section/code)
 #, no-wrap
 msgid ""
-"#!/bin/sh\n"
+"from gi.repository import Gtk\n"
+"import sys\n"
 "\n"
-"set -e\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"    # constructor for a Gtk.ApplicationWindow\n"
+"    def __init__(self, app):\n"
+"        Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+"        self.set_default_size(200, 100)\n"
 "\n"
-"test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n"
-"test -n \"$srcdir\" || srcdir=.\n"
+"        # create a label\n"
+"        label = Gtk.Label()\n"
+"        # set the text of the label\n"
+"        label.set_text(\"Hello GNOME!\")\n"
+"        # add the label to the window\n"
+"        self.add(label)\n"
 "\n"
-"olddir=`pwd`\n"
-"cd \"$srcdir\"\n"
+"class MyApplication(Gtk.Application):\n"
+"    def __init__(self):\n"
+"        Gtk.Application.__init__(self)\n"
 "\n"
-"# This will run autoconf, automake, etc. for us\n"
-"autoreconf --force --install\n"
+"    def do_activate(self):\n"
+"        win = MyWindow(self)\n"
+"        win.show_all()\n"
 "\n"
-"cd \"$olddir\"\n"
+"    def do_startup(self):\n"
+"        Gtk.Application.do_startup(self)\n"
 "\n"
-"if test -z \"$NOCONFIGURE\"; then\n"
-"  \"$srcdir\"/configure \"$ \"\n"
-"fi\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
 msgstr ""
-"#!/bin/sh\n"
+"from gi.repository import Gtk\n"
+"import sys\n"
 "\n"
-"set -e\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"    # constructor for a Gtk.ApplicationWindow\n"
+"    def __init__(self, app):\n"
+"        Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+"        self.set_default_size(200, 100)\n"
 "\n"
-"test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n"
-"test -n \"$srcdir\" || srcdir=.\n"
+"        # create a label\n"
+"        label = Gtk.Label()\n"
+"        # set the text of the label\n"
+"        label.set_text(\"Hello GNOME!\")\n"
+"        # add the label to the window\n"
+"        self.add(label)\n"
 "\n"
-"olddir=`pwd`\n"
-"cd \"$srcdir\"\n"
+"class MyApplication(Gtk.Application):\n"
+"    def __init__(self):\n"
+"        Gtk.Application.__init__(self)\n"
 "\n"
-"# This will run autoconf, automake, etc. for us\n"
-"autoreconf --force --install\n"
+"    def do_activate(self):\n"
+"        win = MyWindow(self)\n"
+"        win.show_all()\n"
 "\n"
-"cd \"$olddir\"\n"
+"    def do_startup(self):\n"
+"        Gtk.Application.do_startup(self)\n"
 "\n"
-"if test -z \"$NOCONFIGURE\"; then\n"
-"  \"$srcdir\"/configure \"$ \"\n"
-"fi\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
 
-#: C/helloWorld.js.page:157(section/p)
-msgid "After the <file>autogen.sh</file> file is ready and saved, run:"
+#: C/hello-world.py.page:106(section/p)
+#, fuzzy
+#| msgid ""
+#| "To run this application, first save it as helloWorld.js. Then open "
+#| "Terminal, go to the folder where your application is stored and run:"
+msgid ""
+"To run this application, first save it as hello-world.py. Then open "
+"Terminal, go to the folder where your application is stored and run:"
 msgstr ""
-"Una vez que el archivo <file>autogen.sh</file> esté listo y guardado, "
-"ejecute:"
-
-#: C/helloWorld.js.page:158(section/screen)
-#, no-wrap
-msgid "<output style=\"prompt\">$ </output><input>chmod +x autogen.sh</input>"
-msgstr "<output style=\"prompt\">$ </output><input>chmod +x autogen.sh</input>"
+"Para ejecutar esta aplicación, primero guárdela como helloWorld.js. Luego, "
+"abra una terminal, vaya a la carpeta donde está la aplicación y ejecute:"
 
-#: C/helloWorld.js.page:162(section/title)
-#: C/weatherAutotools.js.page:37(item/p)
-#: C/weatherAutotools.js.page:63(section/p)
-msgid "Makefile.am"
-msgstr "Makefile.am"
+#: C/hello-world.py.page:107(section/screen)
+#, fuzzy, no-wrap
+#| msgid "<output style=\"prompt\">$ </output><input>chmod +x helloWorld</input>"
+msgid "<output style=\"prompt\">$ </output><input>python hello-world.py</input>"
+msgstr "<output style=\"prompt\">$ </output><input>chmod +x helloWorld</input>"
 
-#: C/helloWorld.js.page:163(section/code)
-#, no-wrap
+#: C/hello-world.py.page:143(section/code)
+#, no-wrap
+#| msgid ""
+#| "# The actual runnable program is set to the SCRIPTS primitive.\n"
+#| "# # Prefix bin_ tells where to copy this\n"
+#| "bin_SCRIPTS = helloWorld\n"
+#| "# # List of files to be distributed\n"
+#| "EXTRA_DIST=  \\\n"
+#| "\t$(bin_SCRIPTS)\n"
+#| "#\n"
+#| "#     # The desktop files\n"
+#| "desktopdir = $(datadir)/applications\n"
+#| "desktop_DATA = \\\n"
+#| "\thelloWorld.desktop\n"
 msgid ""
 "# The actual runnable program is set to the SCRIPTS primitive.\n"
 "# # Prefix bin_ tells where to copy this\n"
-"bin_SCRIPTS = helloWorld\n"
+"bin_SCRIPTS = hello-world.py\n"
 "# # List of files to be distributed\n"
 "EXTRA_DIST=  \\\n"
 "\t$(bin_SCRIPTS)\n"
@@ -19518,11 +22107,11 @@ msgid ""
 "#     # The desktop files\n"
 "desktopdir = $(datadir)/applications\n"
 "desktop_DATA = \\\n"
-"\thelloWorld.desktop\n"
+"\thello-world.desktop\n"
 msgstr ""
 "# The actual runnable program is set to the SCRIPTS primitive.\n"
 "# # Prefix bin_ tells where to copy this\n"
-"bin_SCRIPTS = helloWorld\n"
+"bin_SCRIPTS = hello-world.py\n"
 "# # List of files to be distributed\n"
 "EXTRA_DIST=  \\\n"
 "\t$(bin_SCRIPTS)\n"
@@ -19530,57 +22119,243 @@ msgstr ""
 "#     # The desktop files\n"
 "desktopdir = $(datadir)/applications\n"
 "desktop_DATA = \\\n"
-"\thelloWorld.desktop\n"
+"\thello-world.desktop\n"
 
-#: C/helloWorld.js.page:167(section/title)
-#: C/weatherAutotools.js.page:38(item/p)
-#: C/weatherAutotools.js.page:130(section/p)
-msgid "configure.ac"
-msgstr "configure.ac"
+#: C/hello-world.vala.page:8(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Hello World (JavaScript)"
+msgctxt "text"
+msgid "Hello World (Vala)"
+msgstr "Hola mundo (JavaScript)"
 
-#: C/helloWorld.js.page:168(section/code)
+#: C/hello-world.vala.page:44(section/code)
 #, no-wrap
 msgid ""
-"# This file is processed by autoconf to create a configure script\n"
-"AC_INIT([Hello World], 1.0)\n"
-"AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
-"AC_CONFIG_FILES([Makefile helloWorld.desktop])\n"
-"AC_OUTPUT\n"
+"class MyApplication : Gtk.Application {\n"
+"        protected override void activate () {\n"
+"                var window = new Gtk.ApplicationWindow (this);\n"
+"                window.set_title (\"Welcome to GNOME\");\n"
+"                window.set_default_size (200, 100);\n"
+"                window.show_all ();\n"
+"        }\n"
+"}"
 msgstr ""
-"# This file is processed by autoconf to create a configure script\n"
-"AC_INIT([Hello World], 1.0)\n"
-"AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
-"AC_CONFIG_FILES([Makefile helloWorld.desktop])\n"
-"AC_OUTPUT\n"
+"class MyApplication : Gtk.Application {\n"
+"        protected override void activate () {\n"
+"                var window = new Gtk.ApplicationWindow (this);\n"
+"                window.set_title (\"Welcome to GNOME\");\n"
+"                window.set_default_size (200, 100);\n"
+"                window.show_all ();\n"
+"        }\n"
+"}"
 
-#: C/helloWorld.js.page:172(section/title)
-msgid "README"
-msgstr "README"
+#: C/hello-world.vala.page:54(section/p)
+#, fuzzy
+#| msgid ""
+#| "We can start building our first window. We do this by creating a variable "
+#| "called <var>_window</var> and assigning it a new Gtk.ApplicationWindow."
+msgid ""
+"We can start building our first window. We do this by creating a variable "
+"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."
+
+#: C/hello-world.vala.page:55(section/p)
+#, fuzzy
+#| 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."
+msgid ""
+"We give the window a title using <code>set_title</code>. 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."
+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 "
+"codificación UTF-8."
 
-#: C/helloWorld.js.page:173(section/p)
-msgid "Information users should read first. This file can be blank."
+#: C/hello-world.vala.page:60(section/code)
+#, no-wrap
+msgid ""
+"var label = new Gtk.Label (\"Hello GNOME!\");\n"
+"                window.add (label);\n"
 msgstr ""
-"Información que los usuarios deben leer primero. Este archivo puede estar "
-"vacío."
+"var label = new Gtk.Label (\"Hello GNOME!\");\n"
+"                window.add (label);\n"
 
-#: C/helloWorld.js.page:175(section/p)
+#: C/hello-world.vala.page:66(section/code)
+#, no-wrap
 msgid ""
-"When you have the <file>helloWorld</file>, <file>helloWorld.desktop.in</"
-"file>, <file>Makefile.am</file>, <file>configure.ac</file> and <file>autogen."
-"sh</file> files with correct information and rights, the <file>README</file> "
-"file can include the following instructions:"
+"int main (string[] args) {\n"
+"        return new MyApplication ().run (args);\n"
+"}"
 msgstr ""
-"Cuando tenga los archivos <file>helloWorld</file>, <file>helloWorld.desktop."
-"in</file>, <file>Makefile.am</file>, <file>configure.ac</file> y "
-"<file>autogen.sh</file> con la información y los derechos correctos, el "
-"archivo <file>README</file> puede incluir las siguientes instrucciones:"
+"int main (string[] args) {\n"
+"        return new MyApplication ().run (args);\n"
+"}"
 
-#: C/helloWorld.js.page:176(section/code)
+#: C/hello-world.vala.page:74(section/title)
+#| msgid "helloWorld.js"
+msgid "hello-world.vala"
+msgstr "hello-world.vala"
+
+#: C/hello-world.vala.page:76(section/code)
+#, fuzzy, no-wrap
+#| msgid ""
+#| "\n"
+#| "/* This is the application. */\n"
+#| "public class MyApplication : Gtk.Application {\n"
+#| "\t/* Override the 'activate' signal of GLib.Application. */\n"
+#| "\tprotected override void activate () {\n"
+#| "\t\t/* Create the window of this application and show it. */\n"
+#| "\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+#| "\t\twindow.title = \"Welcome to GNOME\";\n"
+#| "\t\twindow.show ();\n"
+#| "\t}\n"
+#| "}\n"
+#| "\n"
+#| "/* main creates and runs the application. */\n"
+#| "public int main (string[] args) {\n"
+#| "\treturn new MyApplication ().run (args);\n"
+#| "}\n"
+msgid ""
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\tvar label = new Gtk.Label (\"Hello GNOME!\");\n"
+"\t\twindow.add (label);\n"
+"\t\twindow.set_title (\"Welcome to GNOME\");\n"
+"\t\twindow.set_default_size (200, 100);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"\n"
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\t\t/* Create the window of this application and show it. */\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"Welcome to GNOME\";\n"
+"\t\twindow.show ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#: C/hello-world.vala.page:80(section/p)
+#, fuzzy
+#| msgid ""
+#| "To run this application, first save it as helloWorld.js. Then open "
+#| "Terminal, go to the folder where your application is stored and run:"
+msgid ""
+"To run this application, first save it as hello-world.vala. Then open "
+"Terminal, go to the folder where your application is stored."
+msgstr ""
+"Para ejecutar esta aplicación, primero guárdela como helloWorld.js. Luego, "
+"abra una terminal, vaya a la carpeta donde está la aplicación y ejecute:"
+
+#: C/hello-world.vala.page:82(section/screen)
 #, no-wrap
+#| msgid "valac --pkg gtk+-3.0 <var>filename</var>.vala"
+msgid "valac --pkg gtk+-3.0 <file>hello-world.vala</file>"
+msgstr "valac --pkg gtk+-3.0 <file>hello-world.vala</file>"
+
+#: C/hello-world.vala.page:120(section/code)
+#, no-wrap
+#| msgid ""
+#| "# The actual runnable program is set to the SCRIPTS primitive.\n"
+#| "# # Prefix bin_ tells where to copy this\n"
+#| "bin_SCRIPTS = helloWorld\n"
+#| "# # List of files to be distributed\n"
+#| "EXTRA_DIST=  \\\n"
+#| "\t$(bin_SCRIPTS)\n"
+#| "#\n"
+#| "#     # The desktop files\n"
+#| "desktopdir = $(datadir)/applications\n"
+#| "desktop_DATA = \\\n"
+#| "\thelloWorld.desktop\n"
+msgid ""
+"# The actual runnable program is set to the SCRIPTS primitive.\n"
+"# # Prefix bin_ tells where to copy this\n"
+"bin_PROGRAMS = hello-world\n"
+"hello_world_CFLAGS = $(gtk_CFLAGS)\n"
+"hello_world_LDADD = $(gtk_LIBS)\n"
+"hello_world_VALAFLAGS = --pkg gtk+-3.0\n"
+"hello_world_SOURCES = hello-world.vala\n"
+"\n"
+"desktopdir = $(datadir)/applications\n"
+"desktop_DATA = \\\n"
+"\thello-world.desktop\n"
+msgstr ""
+"# The actual runnable program is set to the SCRIPTS primitive.\n"
+"# # Prefix bin_ tells where to copy this\n"
+"bin_PROGRAMS = hello-world\n"
+"hello_world_CFLAGS = $(gtk_CFLAGS)\n"
+"hello_world_LDADD = $(gtk_LIBS)\n"
+"hello_world_VALAFLAGS = --pkg gtk+-3.0\n"
+"hello_world_SOURCES = hello-world.vala\n"
+"\n"
+"desktopdir = $(datadir)/applications\n"
+"desktop_DATA = \\\n"
+"\thello-world.desktop\n"
+
+#: C/hello-world.vala.page:133(section/code)
+#, fuzzy, no-wrap
+#| msgid ""
+#| "To build and install this program:\n"
+#| "\n"
+#| "./autogen.sh --prefix=/home/your_username/.local\n"
+#| "make install\n"
+#| "\n"
+#| "-------------\n"
+#| "Running the first line above creates the following files:\n"
+#| "\n"
+#| "aclocal.m4\n"
+#| "autom4te.cache\n"
+#| "config.log\n"
+#| "config.status\n"
+#| "configure\n"
+#| "helloWorld.desktop\n"
+#| "install-sh\n"
+#| "missing\n"
+#| "Makefile.in\n"
+#| "Makefile\n"
+#| "\n"
+#| "Running \"make install\", installs the application in /home/your_username/.local/bin\n"
+#| "and installs the helloWorld.desktop file in /home/your_username/.local/share/applications\n"
+#| "\n"
+#| "You can now run the application by typing \"Hello World\" in the Overview.\n"
+#| "\n"
+#| "----------------\n"
+#| "To uninstall, type:\n"
+#| "\n"
+#| "make uninstall\n"
+#| "\n"
+#| "----------------\n"
+#| "To create a tarball type:\n"
+#| "\n"
+#| "make distcheck\n"
+#| "\n"
+#| "This will create hello-world-1.0.tar.xz\n"
+#| "\n"
 msgid ""
 "To build and install this program:\n"
 "\n"
 "./autogen.sh --prefix=/home/your_username/.local\n"
+"make\n"
 "make install\n"
 "\n"
 "-------------\n"
@@ -19591,14 +22366,21 @@ msgid ""
 "config.log\n"
 "config.status\n"
 "configure\n"
-"helloWorld.desktop\n"
+"depcomp\n"
+"hello-world\n"
+"hello-world.c\n"
+"hello-world.desktop\n"
+"hello_world-hello-world.o\n"
+"hello_world_vala.stamp\n"
 "install-sh\n"
 "missing\n"
 "Makefile.in\n"
 "Makefile\n"
 "\n"
+"Running \"make\" links all the appropriate libraries.\n"
+"\n"
 "Running \"make install\", installs the application in /home/your_username/.local/bin\n"
-"and installs the helloWorld.desktop file in /home/your_username/.local/share/applications\n"
+"and installs the hello-world.desktop file in /home/your_username/.local/share/applications\n"
 "\n"
 "You can now run the application by typing \"Hello World\" in the Overview.\n"
 "\n"
@@ -19613,7 +22395,6 @@ msgid ""
 "make distcheck\n"
 "\n"
 "This will create hello-world-1.0.tar.xz\n"
-"\n"
 msgstr ""
 "To build and install this program:\n"
 "\n"
@@ -19946,8 +22727,8 @@ msgid ""
 "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:35(section/code)
 #, no-wrap
@@ -20247,7 +23028,7 @@ msgstr ""
 "\treturn new MyApplication ().run (args);\n"
 "}\n"
 
-#: C/image.vala.page:31(item/p)
+#: C/image.vala.page:31(item/p) C/separator.vala.page:39(item/p)
 msgid ""
 "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Application.html";
 "\">GtkApplication</link>"
@@ -20263,7 +23044,7 @@ msgstr ""
 "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ApplicationWindow.html";
 "\">GtkApplicationWindow</link>"
 
-#: C/image.vala.page:33(item/p)
+#: C/image.vala.page:33(item/p) C/paned.vala.page:37(item/p)
 msgid ""
 "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Image.html\";>GtkImage</link>"
 msgstr ""
@@ -20656,9 +23437,9 @@ 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:206(item/p)
 msgid ""
@@ -21684,9 +24465,13 @@ msgstr ""
 "object.connect (&lt;signal_name&gt;, &lt;function_to_be_called&gt;);"
 
 #: C/image-viewer.js.page:197(section/p)
+#, fuzzy
+#| 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>."
 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>."
+"You can find signal definitions for any object in the <link href=\"https://";
+"developer.gnome.org/gtk3/stable/gtkobjects.html\">GTK class reference</link>."
 msgstr ""
 "Puede encontrar definiciones de señales para cualquier objeto en la <link "
 "href=\"http://library.gnome.org/devel/gtk/stable/ch01.html\";>referencia de "
@@ -22150,8 +24935,7 @@ 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:295(item/p) C/image-viewer.py.page:209(item/p)
 msgid ""
@@ -22696,8 +25480,8 @@ 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:65(item/p)
@@ -23585,71 +26369,6 @@ msgstr "Label (Python)"
 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:37(section/code)
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"    # constructor for a Gtk.ApplicationWindow\n"
-"    def __init__(self, app):\n"
-"        Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-"        self.set_default_size(200, 100)\n"
-"\n"
-"        # create a label\n"
-"        label = Gtk.Label()\n"
-"        # set the text of the label\n"
-"        label.set_text(\"Hello GNOME!\")\n"
-"        # add the label to the window\n"
-"        self.add(label)\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"    def __init__(self):\n"
-"        Gtk.Application.__init__(self)\n"
-"\n"
-"    def do_activate(self):\n"
-"        win = MyWindow(self)\n"
-"        win.show_all()\n"
-"\n"
-"    def do_startup(self):\n"
-"        Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"    # constructor for a Gtk.ApplicationWindow\n"
-"    def __init__(self, app):\n"
-"        Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-"        self.set_default_size(200, 100)\n"
-"\n"
-"        # create a label\n"
-"        label = Gtk.Label()\n"
-"        # set the text of the label\n"
-"        label.set_text(\"Hello GNOME!\")\n"
-"        # add the label to the window\n"
-"        self.add(label)\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"    def __init__(self):\n"
-"        Gtk.Application.__init__(self)\n"
-"\n"
-"    def do_activate(self):\n"
-"        win = MyWindow(self)\n"
-"        win.show_all()\n"
-"\n"
-"    def do_startup(self):\n"
-"        Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
 #: C/label.py.page:39(section/p)
 msgid ""
 "Another way to obtain what we have in the example is to create the label as "
@@ -24282,9 +27001,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 ""
@@ -24519,10 +27238,10 @@ 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:97(section/title)
 msgid "Access the webcam video stream with GStreamer"
@@ -27502,13 +30221,13 @@ 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:46(section/p)
 msgid ""
@@ -28933,10 +31652,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
@@ -29123,8 +31841,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»."
 
@@ -29260,9 +31978,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 "
@@ -30321,8 +33039,8 @@ 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:90(item/p)
 msgid ""
@@ -30755,28 +33473,271 @@ 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/paned.py.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.
+#.
+#. 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.js.page:21(media) C/paned.py.page:22(media)
+#: C/paned.vala.page:21(media)
 msgctxt "_"
 msgid "external ref='media/paned.png' md5='01e36d8a51ee18313616d63d2e15d993'"
 msgstr "external ref='media/paned.png' md5='01e36d8a51ee18313616d63d2e15d993'"
 
-#: C/paned.py.page:7(info/title)
+#: C/paned.js.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Image (JavaScript)"
 msgctxt "text"
-msgid "Paned (Python)"
-msgstr "Paned (Python)"
+msgid "Paned (JavaScript)"
+msgstr "Image (JavaScript)"
 
-#: C/paned.py.page:18(info/desc)
+#: C/paned.js.page:17(info/desc) C/paned.py.page:18(info/desc)
+#: C/paned.vala.page:17(info/desc)
 msgid "A widget with two adjustable panes"
 msgstr "Un widget con dos paneles ajustables"
 
-#: C/paned.py.page:21(page/title)
+#: C/paned.js.page:20(page/title) C/paned.py.page:21(page/title)
+#: C/paned.vala.page:20(page/title)
 msgid "Paned"
 msgstr "Paned"
 
-#: C/paned.py.page:23(page/p)
+#: C/paned.js.page:22(page/p) C/paned.py.page:23(page/p)
+#: C/paned.vala.page:22(page/p)
 msgid "Two images in two adjustable panes, horizontally aligned."
 msgstr "Dos imágenes en dos paneles ajustables, alineados horizontalmente."
 
+#: C/paned.js.page:28(section/code)
+#, no-wrap
+#| msgid ""
+#| "#!/usr/bin/gjs\n"
+#| "\n"
+#| "const Gio = imports.gi.Gio;\n"
+#| "const GLib = imports.gi.GLib;\n"
+#| "const Gtk = imports.gi.Gtk;\n"
+#| "const Lang = imports.lang;\n"
+#| "\n"
+#| "const LabelExample = new Lang.Class ({\n"
+#| "    Name: 'Label Example',\n"
+#| "\n"
+#| "    /* Create the application itself\n"
+#| "       This boilerplate code is needed to build any GTK+ application. */\n"
+#| "        _init: function () {\n"
+#| "            this.application = new Gtk.Application ({\n"
+#| "                application_id: 'org.example.jslabel',\n"
+#| "                flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+#| "            });\n"
+#| "\n"
+#| "    // Connect 'activate' and 'startup' signals to the callback functions\n"
+#| "    this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+#| "    this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+#| "    },\n"
+#| "\n"
+#| "    // Callback function for 'activate' signal presents windows when active\n"
+#| "    _onActivate: function () {\n"
+#| "        this._window.present ();\n"
+#| "    },\n"
+#| "\n"
+#| "    // Callback function for 'startup' signal initializes menus and builds the UI\n"
+#| "    _onStartup: function () {\n"
+#| "        this._buildUI ();\n"
+#| "    },\n"
+#| "\n"
+#| "\n"
+#| "\n"
+#| "\n"
+#| "    // Build the application's UI\n"
+#| "    _buildUI: function () {\n"
+#| "\n"
+#| "        // Create the application window\n"
+#| "            this._window = new Gtk.ApplicationWindow  ({ application: this.application,\n"
+#| "                                                              window_position: 
Gtk.WindowPosition.CENTER,\n"
+#| "                                                              title: \"Welcome to GNOME\",\n"
+#| "                                                              default_height: 100,\n"
+#| "                                                              default_width: 200 });\n"
+#| "\n"
+#| "        // Create the label\n"
+#| "        this.label = new Gtk.Label ({label: \"Hello GNOME!\"});\n"
+#| "        this._window.add (this.label);\n"
+#| "\n"
+#| "                // Show the window and all child widgets\n"
+#| "                this._window.show_all();\n"
+#| "    }\n"
+#| "\n"
+#| "\n"
+#| "});\n"
+#| "\n"
+#| "// Run the application\n"
+#| "let app = new LabelExample ();\n"
+#| "app.application.run (ARGV);\n"
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const PanedExample = new Lang.Class ({\n"
+"    Name: 'Paned Example',\n"
+"\n"
+"    // Create the application itself\n"
+"    _init: function () {\n"
+"        this.application = new Gtk.Application({ application_id: 'org.example.panedexample' });\n"
+"\n"
+"       // Connect 'activate' and 'startup' signals to the callback functions\n"
+"        this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+"        this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+"    },\n"
+"\n"
+"    // Callback function for 'activate' signal presents windows when active\n"
+"    _onActivate: function() {\n"
+"        this.window.present();\n"
+"    },\n"
+"\n"
+"    // Callback function for 'startup' signal builds the UI\n"
+"    _onStartup: function () {\n"
+"        this._buildUI ();\n"
+"    },\n"
+"\n"
+"    // Build the application's UI\n"
+"    _buildUI: function() {\n"
+"        // Create the application window\n"
+"        this.window = new Gtk.ApplicationWindow  ({ application: this.application,\n"
+"                                                    window_position: Gtk.WindowPosition.CENTER,\n"
+"                                                    title: \"Paned Window Example\",\n"
+"                                                    default_width: 450,\n"
+"                                                    default_height: 350,\n"
+"                                                    border_width: 10 });\n"
+"\n"
+"        // a new widget with two adjustable panes,\n"
+"        // one on the left and one on the right\n"
+"        this.paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL);\n"
+"\n"
+"        // two images\n"
+"        this.image1 = new Gtk.Image();\n"
+"        this.image1.set_from_file(\"gnome-image.png\");\n"
+"        this.image2 = new Gtk.Image();\n"
+"        this.image2.set_from_file(\"tux.png\");\n"
+"\n"
+"        // add the first image to the left pane\n"
+"        this.paned.add1(this.image1);\n"
+"        // add the second image to the right pane\n"
+"        this.paned.add2(this.image2)\n"
+"\n"
+"        // add the panes to the window\n"
+"        this.window.add(this.paned)\n"
+"        this.window.show_all();\n"
+"    }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new PanedExample();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const PanedExample = new Lang.Class ({\n"
+"    Name: 'Paned Example',\n"
+"\n"
+"    // Create the application itself\n"
+"    _init: function () {\n"
+"        this.application = new Gtk.Application({ application_id: 'org.example.panedexample' });\n"
+"\n"
+"       // Connect 'activate' and 'startup' signals to the callback functions\n"
+"        this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+"        this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+"    },\n"
+"\n"
+"    // Callback function for 'activate' signal presents windows when active\n"
+"    _onActivate: function() {\n"
+"        this.window.present();\n"
+"    },\n"
+"\n"
+"    // Callback function for 'startup' signal builds the UI\n"
+"    _onStartup: function () {\n"
+"        this._buildUI ();\n"
+"    },\n"
+"\n"
+"    // Build the application's UI\n"
+"    _buildUI: function() {\n"
+"        // Create the application window\n"
+"        this.window = new Gtk.ApplicationWindow  ({ application: this.application,\n"
+"                                                    window_position: Gtk.WindowPosition.CENTER,\n"
+"                                                    title: \"Paned Window Example\",\n"
+"                                                    default_width: 450,\n"
+"                                                    default_height: 350,\n"
+"                                                    border_width: 10 });\n"
+"\n"
+"        // a new widget with two adjustable panes,\n"
+"        // one on the left and one on the right\n"
+"        this.paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL);\n"
+"\n"
+"        // two images\n"
+"        this.image1 = new Gtk.Image();\n"
+"        this.image1.set_from_file(\"gnome-image.png\");\n"
+"        this.image2 = new Gtk.Image();\n"
+"        this.image2.set_from_file(\"tux.png\");\n"
+"\n"
+"        // add the first image to the left pane\n"
+"        this.paned.add1(this.image1);\n"
+"        // add the second image to the right pane\n"
+"        this.paned.add2(this.image2)\n"
+"\n"
+"        // add the panes to the window\n"
+"        this.window.add(this.paned)\n"
+"        this.window.show_all();\n"
+"    }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new PanedExample();\n"
+"app.application.run (ARGV);\n"
+
+#: C/paned.js.page:35(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Paned.html";
+#| "\">Gtk.Paned</link>"
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Paned.html";
+"\">GtkPaned</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Paned.html";
+"\">Gtk.Paned</link>"
+
+#: C/paned.js.page:36(item/p) C/paned.py.page:42(item/p)
+#: C/paned.vala.page:36(item/p)
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Standard-";
+"Enumerations.html#GtkOrientation\">Standard Enumerations</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Standard-";
+"Enumerations.html#GtkOrientation\">Enumeraciones estándar</link>"
+
+#: C/paned.js.page:37(item/p) C/scrolledwindow.js.page:37(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html";
+#| "\">Gtk.Image</link>"
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html";
+"\">GtkImage</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html";
+"\">Gtk.Image</link>"
+
+#: C/paned.py.page:7(info/title)
+msgctxt "text"
+msgid "Paned (Python)"
+msgstr "Paned (Python)"
+
 #: C/paned.py.page:29(section/code)
 #, no-wrap
 msgid ""
@@ -30888,13 +33849,110 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkPaned.html";
 "\">GtkPaned</link>"
 
-#: C/paned.py.page:42(item/p)
+#: C/paned.vala.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Image (Vala)"
+msgctxt "text"
+msgid "Paned (Vala)"
+msgstr "Imagen (Vala)"
+
+#: C/paned.vala.page:28(section/code)
+#, fuzzy, no-wrap
+#| msgid ""
+#| "/* This is the application. */\n"
+#| "public class MyApplication : Gtk.Application {\n"
+#| "\t/* Override the 'activate' signal of GLib.Application. */\n"
+#| "\tprotected override void activate () {\n"
+#| "\t\t/* Create the window of this application. */\n"
+#| "\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+#| "\t\twindow.title = \"ScrolledWindow Example\";\n"
+#| "\t\twindow.set_default_size (200, 200);\n"
+#| "\n"
+#| "\t\tvar scrolled_window = new Gtk.ScrolledWindow (null, null);\n"
+#| "\t\tscrolled_window.set_border_width (10);\n"
+#| "\t\tscrolled_window.add_with_viewport (new Gtk.Image.from_file (\"gnome-image.png\"));\n"
+#| "\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);\n"
+#| "\n"
+#| "\t\twindow.add (scrolled_window);\n"
+#| "\t\twindow.show_all ();\n"
+#| "\t}\n"
+#| "}\n"
+#| "\n"
+#| "/* main creates and runs the application. */\n"
+#| "public int main (string[] args) {\n"
+#| "\treturn new MyApplication ().run (args);\n"
+#| "}\n"
 msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Standard-";
-"Enumerations.html#GtkOrientation\">Standard Enumerations</link>"
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"Paned Example\";\n"
+"\t\twindow.set_default_size (450,350);\n"
+"\n"
+"\t\t// a new widget with two adjustable panes,\n"
+"\t\t// one on the left and one on the right\n"
+"\t\tvar paned = new Gtk.Paned (Gtk.Orientation.HORIZONTAL);\n"
+"\n"
+"\t\t/* two images */\n"
+"\t\tvar image1 = new Gtk.Image ();\n"
+"\t\timage1.set_from_file (\"gnome-image.png\");\n"
+"\t\tvar image2 = new Gtk.Image ();\n"
+"\t\timage2.set_from_file (\"tux.png\");\n"
+"\n"
+"\t\t/* add the first image to the left pane */\n"
+"\t\tpaned.add1 (image1);\n"
+"\n"
+"\t\t/* add the second image to the right pane */\n"
+"\t\tpaned.add2 (image2);\n"
+"\n"
+"\t\t/* add the panes to the window */\n"
+"\t\twindow.add (paned);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
 msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Standard-";
-"Enumerations.html#GtkOrientation\">Enumeraciones estándar</link>"
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\t\t/* Create the window of this application. */\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"ScrolledWindow Example\";\n"
+"\t\twindow.set_default_size (200, 200);\n"
+"\n"
+"\t\tvar scrolled_window = new Gtk.ScrolledWindow (null, null);\n"
+"\t\tscrolled_window.set_border_width (10);\n"
+"\t\tscrolled_window.add_with_viewport (new Gtk.Image.from_file (\"gnome-image.png\"));\n"
+"\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);\n"
+"\n"
+"\t\twindow.add (scrolled_window);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#: C/paned.vala.page:35(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Image.html\";>GtkImage</"
+#| "link>"
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Paned.html\";>GtkPaned</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Image.html\";>GtkImage</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
@@ -33151,10 +36209,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 ""
@@ -33235,10 +36293,16 @@ msgstr ""
 "qué botones de radio se seleccionaron."
 
 #: C/radiobutton.js.page:130(section/p)
+#, fuzzy
+#| msgid ""
+#| "To make sure the button's \"OK\" label shows up properly in every "
+#| "language that GNOME is translated into, remember to use one of Gtk's "
+#| "<link href=\"http://developer.gnome.org/gtk/2.24/gtk-Stock-Items.html";
+#| "\">stock button types</link>."
 msgid ""
 "To make sure the button's \"OK\" label shows up properly in every language "
 "that GNOME is translated into, remember to use one of Gtk's <link href="
-"\"http://developer.gnome.org/gtk/2.24/gtk-Stock-Items.html\";>stock button "
+"\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html\";>stock button "
 "types</link>."
 msgstr ""
 "Para asegurarse de que la etiqueta «OK» del botón se muestra apropiadamente "
@@ -34175,9 +37239,9 @@ msgid ""
 "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:50(item/p)
@@ -34769,8 +37833,8 @@ 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:197(note/p)
 msgid ""
@@ -35151,6 +38215,96 @@ msgstr ""
 "Si tiene problemas con este tutorial, compare su código con este <link href="
 "\"record-collection/record-collection.js\">código de referencia</link>."
 
+#: C/response-type.page:16(page/title)
+msgid "enum ResponseType"
+msgstr "enum ResponseType"
+
+#: C/response-type.page:20(item/title)
+msgid "ResponseType.NONE = -1"
+msgstr "ResponseType.NONE = -1"
+
+#: C/response-type.page:21(item/p)
+msgid ""
+"Returned if an action widget has no response id, or if the dialog gets "
+"programmatically hidden or destroyed"
+msgstr ""
+
+#: C/response-type.page:24(item/title)
+msgid "ResponseType.REJECT = -2"
+msgstr "ResponseType.REJECT = -2"
+
+#: C/response-type.page:25(item/p) C/response-type.page:29(item/p)
+msgid "Generic response id, not used by GTK+ dialogs"
+msgstr ""
+
+#: C/response-type.page:28(item/title)
+msgid "ResponseType.ACCEPT = -3"
+msgstr "ResponseType.ACCEPT = -3"
+
+#: C/response-type.page:32(item/title)
+msgid "ResponseType.DELETE_EVENT = -4"
+msgstr "ResponseType.DELETE_EVENT = -4"
+
+#: C/response-type.page:33(item/p)
+msgid "Returned if the dialog is deleted"
+msgstr ""
+
+#: C/response-type.page:36(item/title)
+msgid "ResponseType.OK = -5"
+msgstr "ResponseType.OK = -5"
+
+#: C/response-type.page:37(item/p)
+msgid "Returned by OK buttons in GTK+ dialogs"
+msgstr ""
+
+#: C/response-type.page:40(item/title)
+msgid "ResponseType.CANCEL = -6"
+msgstr "ResponseType.CANCEL = -6"
+
+#: C/response-type.page:41(item/p)
+msgid "Returned by Cancel buttons in GTK+ dialogs"
+msgstr ""
+
+#: C/response-type.page:44(item/title)
+msgid "ResponseType.CLOSE = -7"
+msgstr "ResponseType.CLOSE = -7"
+
+#: C/response-type.page:45(item/p)
+msgid "Returned by Close buttons in GTK+ dialogs"
+msgstr ""
+
+#: C/response-type.page:48(item/title)
+msgid "ResponseType.YES = -8"
+msgstr "ResponseType.YES = -8"
+
+#: C/response-type.page:49(item/p)
+msgid "Returned by Yes buttons in GTK+ dialogs"
+msgstr ""
+
+#: C/response-type.page:52(item/title)
+msgid "ResponseType.NO = -9"
+msgstr "ResponseType.NO = -9"
+
+#: C/response-type.page:53(item/p)
+msgid "Returned by No buttons in GTK+ dialogs"
+msgstr ""
+
+#: C/response-type.page:56(item/title)
+msgid "ResponseType.APPLY = -10"
+msgstr "ResponseType.APPLY = -10"
+
+#: C/response-type.page:57(item/p)
+msgid "Returned by Apply buttons in GTK+ dialogs"
+msgstr ""
+
+#: C/response-type.page:60(item/title)
+msgid "ResponseType.HELP = -11"
+msgstr "ResponseType.HELP = -11"
+
+#: C/response-type.page:61(item/p)
+msgid "Returned by Help buttons in GTK+ dialogs"
+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
@@ -35697,16 +38851,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 "
@@ -35784,11 +38938,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
@@ -36005,8 +39159,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
@@ -36484,11 +39638,11 @@ msgid ""
 "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 28, la señal <code>«value-changed»</code> se conecta a la "
-"función de retorno de llamada <code>scale_moved()</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."
+"En la línea 28, la señal <code>«value-changed»</code> se conecta a la función "
+"de retorno de llamada <code>scale_moved()</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/scale.py.page:38(item/p)
 msgid ""
@@ -36578,8 +39732,8 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkAdjustment.html";
 "\">GtkAdjustment</link>"
 
-#: C/scale.py.page:58(item/p) C/scrolledwindow.py.page:45(item/p)
-#: C/textview.py.page:99(item/p)
+#: C/scale.py.page:58(item/p) C/scrolledwindow.js.page:36(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-";
 "Enumerations.html\">Standard Enumerations</link>"
@@ -36747,8 +39901,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.c.page:24(media) C/scrolledwindow.py.page:22(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.js.page:21(media)
+#: C/scrolledwindow.py.page:22(media) C/scrolledwindow.vala.page:22(media)
 msgctxt "_"
 msgid ""
 "external ref='media/scrolledwindow.png' "
@@ -36763,19 +39922,21 @@ msgid "ScrolledWindow (C)"
 msgstr "ScrolledWindow (C)"
 
 #: C/scrolledwindow.c.page:19(info/desc)
+#: C/scrolledwindow.js.page:17(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.c.page:22(page/title)
+#: C/scrolledwindow.js.page:20(page/title)
 #: C/scrolledwindow.py.page:21(page/title)
 #: C/scrolledwindow.vala.page:21(page/title)
 msgid "ScrolledWindow"
 msgstr "ScrolledWindow"
 
-#: C/scrolledwindow.c.page:25(page/p) C/scrolledwindow.py.page:23(page/p)
-#: C/scrolledwindow.vala.page:23(page/p)
+#: C/scrolledwindow.c.page:25(page/p) C/scrolledwindow.js.page:22(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."
 
@@ -36901,13 +40062,222 @@ msgstr ""
 "}\n"
 
 #: C/scrolledwindow.c.page:36(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://developer.gnome.org/gtk/stable/gtk-Standard-";
+#| "Enumerations.html#GtkPolicyType\">GtkPolicyType</link>"
 msgid ""
-"<link href=\"http://developer.gnome.org/gtk/stable/gtk-Standard-Enumerations.";
-"html#GtkPolicyType\">GtkPolicyType</link>"
+"<link href=\"http://developer.gnome.org/gtk/stable/gtk3-Standard-";
+"Enumerations.html#GtkPolicyType\">GtkPolicyType</link>"
 msgstr ""
 "<link href=\"http://developer.gnome.org/gtk/stable/gtk-Standard-Enumerations.";
 "html#GtkPolicyType\">GtkPolicyType</link>"
 
+#: C/scrolledwindow.js.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Window (JavaScript)"
+msgctxt "text"
+msgid "ScrolledWindow (JavaScript)"
+msgstr "Ventana (JavaScript)"
+
+#: C/scrolledwindow.js.page:28(section/code)
+#, no-wrap
+#| msgid ""
+#| "#!/usr/bin/gjs\n"
+#| "\n"
+#| "const Gio = imports.gi.Gio;\n"
+#| "const GLib = imports.gi.GLib;\n"
+#| "const Gtk = imports.gi.Gtk;\n"
+#| "const Lang = imports.lang;\n"
+#| "\n"
+#| "const ButtonExample = new Lang.Class ({\n"
+#| "    Name: 'Button Example',\n"
+#| "\n"
+#| "    /* Create the application itself\n"
+#| "       This boilerplate code is needed to build any GTK+ application. */\n"
+#| "        _init: function () {\n"
+#| "            this.application = new Gtk.Application ({\n"
+#| "                application_id: 'org.example.jsbutton',\n"
+#| "                flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+#| "            });\n"
+#| "\n"
+#| "    // Connect 'activate' and 'startup' signals to the callback functions\n"
+#| "    this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+#| "    this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+#| "    },\n"
+#| "\n"
+#| "    // Callback function for 'activate' signal presents windows when active\n"
+#| "    _onActivate: function () {\n"
+#| "        this._window.present ();\n"
+#| "    },\n"
+#| "\n"
+#| "    // Callback function for 'startup' signal initializes menus and builds the UI\n"
+#| "    _onStartup: function () {\n"
+#| "        this._buildUI ();\n"
+#| "    },\n"
+#| "\n"
+#| "    // Build the application's UI\n"
+#| "    _buildUI: function () {\n"
+#| "\n"
+#| "        // Create the application window\n"
+#| "            this._window = new Gtk.ApplicationWindow  ({ application: this.application,\n"
+#| "                                                              window_position: 
Gtk.WindowPosition.CENTER,\n"
+#| "                                                              title: \"GNOME Button\",\n"
+#| "                                                              default_height: 50,\n"
+#| "                                                              default_width: 250 });\n"
+#| "\n"
+#| "        // Create the button\n"
+#| "        this.Button = new Gtk.Button ({label: \"Click Me\"});\n"
+#| "        this._window.add (this.Button);\n"
+#| "\n"
+#| "        // Bind it to a function that says what to do when the button is clicked\n"
+#| "        this.Button.connect (\"clicked\", Lang.bind(this, this._clickHandler));\n"
+#| "\n"
+#| "                // Show the window and all child widgets\n"
+#| "                this._window.show_all();\n"
+#| "    },\n"
+#| "\n"
+#| "    // Here's the function that says what happens when the button is clicked\n"
+#| "    _clickHandler: function () {\n"
+#| "        this.Button.set_label (\"Clicked!\");\n"
+#| "    }\n"
+#| "});\n"
+#| "\n"
+#| "// Run the application\n"
+#| "let app = new ButtonExample ();\n"
+#| "app.application.run (ARGV);\n"
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ScrolledWindowExample = new Lang.Class ({\n"
+"    Name: 'ScrolledWindow Example',\n"
+"\n"
+"    // Create the application itself\n"
+"    _init: function () {\n"
+"        this.application = new Gtk.Application({ application_id: 'org.example.jscrolledwindow' });\n"
+"\n"
+"        // Connect 'activate' and 'startup' signals to the callback functions\n"
+"        this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+"        this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+"    },\n"
+"\n"
+"    // Callback function for 'activate' signal presents windows when active\n"
+"    _onActivate: function() {\n"
+"        this.window.present();\n"
+"    },\n"
+"\n"
+"    // Callback function for 'startup' signal builds the UI\n"
+"    _onStartup: function() {\n"
+"        this._buildUI ();\n"
+"    },\n"
+"\n"
+"    // Build the application's UI\n"
+"    _buildUI: function() {\n"
+"        // Create the application window\n"
+"        this.window = new Gtk.ApplicationWindow  ({ application: this.application,\n"
+"                                                    window_position: Gtk.WindowPosition.CENTER,\n"
+"                                                    title: \"ScrolledWindow Example\",\n"
+"                                                    default_width: 200,\n"
+"                                                    default_height: 200,\n"
+"                                                    border_width: 10 });\n"
+"        // the scrolledwindow\n"
+"        this.scrolledWindow = new Gtk.ScrolledWindow();\n"
+"        this.scrolledWindow.set_border_width(10);\n"
+"        // there is always the scrollbar (otherwise: AUTOMATIC - only if needed - or NEVER)\n"
+"        this.scrolledWindow.set_policy(Gtk.PolicyType.ALWAYS, Gtk.PolicyType.ALWAYS);\n"
+"        // an image - slightly larger than the window\n"
+"        this.image = new Gtk.Image();\n"
+"        this.image.set_from_file(\"gnome-image.png\");\n"
+"\n"
+"        // add the image to the scrolledwindow\n"
+"        this.scrolledWindow.add_with_viewport(this.image);\n"
+"\n"
+"        // add the scrolledwindow to the window\n"
+"        this.window.add(this.scrolledWindow);\n"
+"        this.window.show_all();\n"
+"    }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ScrolledWindowExample();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ScrolledWindowExample = new Lang.Class ({\n"
+"    Name: 'ScrolledWindow Example',\n"
+"\n"
+"    // Create the application itself\n"
+"    _init: function () {\n"
+"        this.application = new Gtk.Application({ application_id: 'org.example.jscrolledwindow' });\n"
+"\n"
+"        // Connect 'activate' and 'startup' signals to the callback functions\n"
+"        this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+"        this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+"    },\n"
+"\n"
+"    // Callback function for 'activate' signal presents windows when active\n"
+"    _onActivate: function() {\n"
+"        this.window.present();\n"
+"    },\n"
+"\n"
+"    // Callback function for 'startup' signal builds the UI\n"
+"    _onStartup: function() {\n"
+"        this._buildUI ();\n"
+"    },\n"
+"\n"
+"    // Build the application's UI\n"
+"    _buildUI: function() {\n"
+"        // Create the application window\n"
+"        this.window = new Gtk.ApplicationWindow  ({ application: this.application,\n"
+"                                                    window_position: Gtk.WindowPosition.CENTER,\n"
+"                                                    title: \"ScrolledWindow Example\",\n"
+"                                                    default_width: 200,\n"
+"                                                    default_height: 200,\n"
+"                                                    border_width: 10 });\n"
+"        // the scrolledwindow\n"
+"        this.scrolledWindow = new Gtk.ScrolledWindow();\n"
+"        this.scrolledWindow.set_border_width(10);\n"
+"        // there is always the scrollbar (otherwise: AUTOMATIC - only if needed - or NEVER)\n"
+"        this.scrolledWindow.set_policy(Gtk.PolicyType.ALWAYS, Gtk.PolicyType.ALWAYS);\n"
+"        // an image - slightly larger than the window\n"
+"        this.image = new Gtk.Image();\n"
+"        this.image.set_from_file(\"gnome-image.png\");\n"
+"\n"
+"        // add the image to the scrolledwindow\n"
+"        this.scrolledWindow.add_with_viewport(this.image);\n"
+"\n"
+"        // add the scrolledwindow to the window\n"
+"        this.window.add(this.scrolledWindow);\n"
+"        this.window.show_all();\n"
+"    }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ScrolledWindowExample();\n"
+"app.application.run (ARGV);\n"
+
+#: C/scrolledwindow.js.page:35(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.";
+#| "ScrolledWindow.html\">Gtk.ScrolledWindow</link>"
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.";
+"ScrolledWindow.html\">GtkScrolledWindow</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.";
+"ScrolledWindow.html\">Gtk.ScrolledWindow</link>"
+
 #: C/scrolledwindow.py.page:7(info/title)
 msgctxt "text"
 msgid "ScrolledWindow (Python)"
@@ -37050,13 +40420,12 @@ 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:44(item/p) C/textview.py.page:98(item/p)
 msgid ""
@@ -37142,7 +40511,12 @@ 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: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/separator.py.page:24(media) C/separator.vala.page:25(media)
 msgctxt "_"
 msgid ""
 "external ref='media/separator.png' md5='8769b27662ce5c77f99e9ce33751a21a'"
@@ -37154,15 +40528,15 @@ msgctxt "text"
 msgid "Seperator (Python)"
 msgstr "Separador (Python)"
 
-#: C/separator.py.page:19(info/desc)
+#: C/separator.py.page:19(info/desc) C/separator.vala.page:20(info/desc)
 msgid "A separator widget"
 msgstr "Un widget separador"
 
-#: C/separator.py.page:22(page/title)
+#: C/separator.py.page:22(page/title) C/separator.vala.page:23(page/title)
 msgid "Separator"
 msgstr "Separador"
 
-#: C/separator.py.page:25(page/p)
+#: C/separator.py.page:25(page/p) C/separator.vala.page:26(page/p)
 msgid "A horizontal and a vertical separator divide some labels."
 msgstr "Un separador horizontal y uno vertical dividen algunas etiquetas."
 
@@ -37260,6 +40634,7 @@ msgstr ""
 "sys.exit(exit_status)\n"
 
 #: C/separator.py.page:35(section/title)
+#: C/separator.vala.page:36(section/title)
 msgid "API Reference"
 msgstr "Referencias de la API"
 
@@ -37271,6 +40646,188 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSeparator.html";
 "\">GtkSeparator</link>"
 
+#: C/separator.vala.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Spinner (Vala)"
+msgctxt "text"
+msgid "Seperator (Vala)"
+msgstr "Spinner (Vala)"
+
+#: C/separator.vala.page:32(section/code)
+#, no-wrap
+#| msgid ""
+#| "/* This is the application. */\n"
+#| "public class Application : Gtk.Application {\n"
+#| "\n"
+#| "\t/* Constructor */\n"
+#| "\tpublic Application () {\n"
+#| "\t\tObject (application_id: \"org.example.window\");\n"
+#| "\t}\n"
+#| "\n"
+#| "\t/* Override the 'activate' signal of GLib.Application,\n"
+#| "\t * which is inherited by Gtk.Application. */\n"
+#| "\tpublic override void activate () {\n"
+#| "\n"
+#| "\t\tvar window = new Gtk.Window ();\n"
+#| "\t\twindow.title = \"Welcome to GNOME\";\n"
+#| "\n"
+#| "\t\t/* The following 3 lines are included here to introduce\n"
+#| "\t\t * you to ways you can adjust the toplevel window to suit\n"
+#| "\t\t * your needs.  Uncomment them to see what they do.\n"
+#| "\t\t */\n"
+#| "\n"
+#| "\t\t//window.border_width = 10;\n"
+#| "\t\t//window.set_default_size (350, 70);\n"
+#| "\t\t//window.window_position = Gtk.WindowPosition.CENTER;\n"
+#| "\n"
+#| "\t\t/* Add the window to this application. */\n"
+#| "\t\tthis.add_window (window);\n"
+#| "\n"
+#| "\t\t/* Show the window. */\n"
+#| "\t\twindow.show ();\n"
+#| "\t}\n"
+#| "}\n"
+#| "\n"
+#| "/* The main function creates the application and runs it.*/\n"
+#| "int main (string[] args) {\n"
+#| "\tvar app = new Application ();\n"
+#| "\treturn app.run (args);\n"
+#| "}\n"
+msgid ""
+"/* This is the application. */\n"
+"public class Application : Gtk.Application {\n"
+"\n"
+"\tpublic Application () {\n"
+"\t\tObject (application_id: \"org.example.window\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application,\n"
+"\t * which is inherited by Gtk.Application. */\n"
+"\tpublic override void activate () {\n"
+"\n"
+"\t\tvar window = new Gtk.Window ();\n"
+"\t\twindow.title = \"Separator Example\";\n"
+"\n"
+"\t\tvar label1 = new Gtk.Label (\"Below, a horizontal separator.\");\n"
+"\t\tvar label2 = new Gtk.Label (\"On the right, a vertical separator.\");\n"
+"\t\tvar label3 = new Gtk.Label (\"On the left, a vertical separator.\");\n"
+"\n"
+"\t\tvar hseparator = new Gtk.Separator (Gtk.Orientation.HORIZONTAL);\n"
+"\t\tvar vseparator = new Gtk.Separator (Gtk.Orientation.VERTICAL);\n"
+"\n"
+"\t\tvar grid = new Gtk.Grid();\n"
+"\n"
+"\t\tgrid.attach (label1, 0, 0, 3, 1);\n"
+"\t\tgrid.attach (hseparator, 0, 1, 3, 1);\n"
+"\t\tgrid.attach (label2, 0, 2, 1, 1);\n"
+"\t\tgrid.attach (vseparator, 1, 2, 1, 1);\n"
+"\t\tgrid.attach (label3, 2, 2, 1, 1);\n"
+"\n"
+"\t\tgrid.set_column_homogeneous(true);\n"
+"\n"
+"\t\twindow.add (grid);\n"
+"\t\tthis.add_window (window);\n"
+"\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates the application and runs it.*/\n"
+"int main (string[] args) {\n"
+"\tvar app = new Application ();\n"
+"\treturn app.run (args);\n"
+"}\n"
+msgstr ""
+"/* This is the application. */\n"
+"public class Application : Gtk.Application {\n"
+"\n"
+"\tpublic Application () {\n"
+"\t\tObject (application_id: \"org.example.window\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application,\n"
+"\t * which is inherited by Gtk.Application. */\n"
+"\tpublic override void activate () {\n"
+"\n"
+"\t\tvar window = new Gtk.Window ();\n"
+"\t\twindow.title = \"Separator Example\";\n"
+"\n"
+"\t\tvar label1 = new Gtk.Label (\"Below, a horizontal separator.\");\n"
+"\t\tvar label2 = new Gtk.Label (\"On the right, a vertical separator.\");\n"
+"\t\tvar label3 = new Gtk.Label (\"On the left, a vertical separator.\");\n"
+"\n"
+"\t\tvar hseparator = new Gtk.Separator (Gtk.Orientation.HORIZONTAL);\n"
+"\t\tvar vseparator = new Gtk.Separator (Gtk.Orientation.VERTICAL);\n"
+"\n"
+"\t\tvar grid = new Gtk.Grid();\n"
+"\n"
+"\t\tgrid.attach (label1, 0, 0, 3, 1);\n"
+"\t\tgrid.attach (hseparator, 0, 1, 3, 1);\n"
+"\t\tgrid.attach (label2, 0, 2, 1, 1);\n"
+"\t\tgrid.attach (vseparator, 1, 2, 1, 1);\n"
+"\t\tgrid.attach (label3, 2, 2, 1, 1);\n"
+"\n"
+"\t\tgrid.set_column_homogeneous(true);\n"
+"\n"
+"\t\twindow.add (grid);\n"
+"\t\tthis.add_window (window);\n"
+"\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates the application and runs it.*/\n"
+"int main (string[] args) {\n"
+"\tvar app = new Application ();\n"
+"\treturn app.run (args);\n"
+"}\n"
+
+#: C/separator.vala.page:40(item/p)
+#, fuzzy
+#| msgid ""
+#| "The widget <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.html";
+#| "\">Gtk.Window</link>"
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.html\";>GtkWindow</"
+"link>"
+msgstr ""
+"El widget <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.html\";>Gtk."
+"Window</link>"
+
+#: C/separator.vala.page:41(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Stock.html\";>Gtk.Stock</"
+#| "link>"
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Separator.html";
+"\">GtkSeparator</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Stock.html\";>Gtk.Stock</"
+"link>"
+
+#: C/separator.vala.page:42(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Grid.html\";>Gtk.Grid</"
+#| "link>"
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Grid.html\";>GtkGrid</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Grid.html\";>Gtk.Grid</link>"
+
+#: C/separator.vala.page:43(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Label.html\";>Gtk.Label</"
+#| "link>"
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Label.html\";>GtkLabel</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Label.html\";>Gtk.Label</"
+"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
@@ -37451,19 +41008,18 @@ 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."
+"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 ""
@@ -37769,10 +41325,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 ""
@@ -37960,12 +41516,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 ""
@@ -38027,8 +41582,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
@@ -38571,8 +42126,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> "
@@ -38588,11 +42143,11 @@ msgid ""
 "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>«value-changed»</code> se conecta a la "
-"función de retorno de llamada <code>spin_selected()</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."
+"En la línea 23, la señal <code>«value-changed»</code> se conecta a la función "
+"de retorno de llamada <code>spin_selected()</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/spinbutton.py.page:38(item/p)
 msgid ""
@@ -39676,8 +43231,12 @@ msgstr ""
 "}\n"
 
 #: C/statusbar.c.page:37(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://developer.gnome.org/gtk3/stable/GtkStatusbar.htmll";
+#| "\">GtkStatusBar</link>"
 msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkStatusbar.htmll";
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkStatusbar.html";
 "\">GtkStatusBar</link>"
 msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkStatusbar.htmll";
@@ -39838,15 +43397,24 @@ msgstr ""
 "            orientation: Gtk.Orientation.VERTICAL });\n"
 
 #: C/statusbar.js.page:83(section/p)
+#, fuzzy
+#| msgid ""
+#| "The _buildUI function is where we put all the code to create the "
+#| "application's user interface. The first step is creating a new <link href="
+#| "\"GtkApplicationWindow.js.page\">Gtk.ApplicationWindow</link> to put all "
+#| "our widgets into. The next step is to create a vertically-oriented <link "
+#| "href=\"paned.js.page\">Gtk.Paned</link> interface, to divide the window "
+#| "up into two sections. This way the statusbar looks like those used in "
+#| "other applications, and it stays at the bottom of the window, even if the "
+#| "user resizes it."
 msgid ""
 "The _buildUI function is where we put all the code to create the "
 "application's user interface. The first step is creating a new <link href="
 "\"GtkApplicationWindow.js.page\">Gtk.ApplicationWindow</link> to put all our "
-"widgets into. The next step is to create a vertically-oriented <link href="
-"\"paned.js.page\">Gtk.Paned</link> interface, to divide the window up into "
-"two sections. This way the statusbar looks like those used in other "
-"applications, and it stays at the bottom of the window, even if the user "
-"resizes it."
+"widgets into. The next step is to create a vertically-oriented Gtk.Paned "
+"interface, to divide the window up into two sections. This way the statusbar "
+"looks like those used in other applications, and it stays at the bottom of "
+"the window, even if the user resizes it."
 msgstr ""
 "La función «_buildUI» es donde se pone todo el código para crear la interfaz "
 "de usuario de la aplicación. El primer paso es crear una <link href="
@@ -39901,20 +43469,28 @@ msgstr ""
 "        this._clearButton.connect (\"clicked\", Lang.bind (this, this._clear));\n"
 
 #: C/statusbar.js.page:106(section/p)
+#, fuzzy
+#| msgid ""
+#| "This code creates the three <link href=\"button.js.page\">Gtk.Buttons</"
+#| "link> we'll use to push a new message to the statusbar, pop the last one "
+#| "off, and clear all existing messages. The \"back\" and \"clear\" buttons "
+#| "are <link href=\"http://developer.gnome.org/gtk/2.24/gtk-Stock-Items.html";
+#| "\">stock buttons</link>, which are automatically translated into any "
+#| "language GNOME supports."
 msgid ""
 "This code creates the three <link href=\"button.js.page\">Gtk.Buttons</link> "
 "we'll use to push a new message to the statusbar, pop the last one off, and "
 "clear all existing messages. The \"back\" and \"clear\" buttons are <link "
-"href=\"http://developer.gnome.org/gtk/2.24/gtk-Stock-Items.html\";>stock "
+"href=\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html\";>stock "
 "buttons</link>, which are automatically translated into any language GNOME "
 "supports."
 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
@@ -40040,8 +43616,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
@@ -42941,9 +46517,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 "
@@ -42962,13 +46537,22 @@ msgstr ""
 "de cuánto texto hay."
 
 #: C/textview.js.page:30(item/p)
+#, fuzzy
+#| msgid ""
+#| "Since the automatic resizing can make a TextView unwieldy, you normally "
+#| "place it inside of a <link xref=\"scrolledwindow.js\">ScrolledWindow</"
+#| "link>. Despite the name, it's not an actual window in terms of having a "
+#| "title bar and an X button; it's a widget you put on the application "
+#| "you're making, which acts like a window onto a more manageable chunk of a "
+#| "TextView. If the text in the buffer is too big to fit, scrollbars will "
+#| "appear."
 msgid ""
 "Since the automatic resizing can make a TextView unwieldy, you normally "
-"place it inside of a <link xref=\"scrolledwindow.js\">ScrolledWindow</link>. "
-"Despite the name, it's not an actual window in terms of having a title bar "
-"and an X button; it's a widget you put on the application you're making, "
-"which acts like a window onto a more manageable chunk of a TextView. If the "
-"text in the buffer is too big to fit, scrollbars will appear."
+"place it inside of a ScrolledWindow. Despite the name, it's not an actual "
+"window in terms of having a title bar and an X button; it's a widget you put "
+"on the application you're making, which acts like a window onto a more "
+"manageable chunk of a TextView. If the text in the buffer is too big to fit, "
+"scrollbars will appear."
 msgstr ""
 "Dado que el cambio de tamaño automático puede hacer un «TextView» difícil de "
 "manejar, normalmente se ubica dentro de una <link xref=\"scrolledwindow.js"
@@ -42986,9 +46570,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."
 
@@ -43159,9 +46743,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 ""
@@ -43208,12 +46792,18 @@ msgstr ""
 "        this._scrolled.add_with_viewport (this._textView);\n"
 
 #: C/textview.js.page:127(section/p)
-msgid ""
-"Here we create a <link xref=\"scrolledwindow.js\">ScrolledWindow</link>, and "
-"set it to automatically scroll if it gets to be too big horizontally or "
-"vertically. We also give it a nice-looking ETCHED_IN border. After that, we "
-"put our TextView inside, and tell the ScrolledWindow to give us a viewport "
-"onto it."
+#, fuzzy
+#| msgid ""
+#| "Here we create a <link xref=\"scrolledwindow.js\">ScrolledWindow</link>, "
+#| "and set it to automatically scroll if it gets to be too big horizontally "
+#| "or vertically. We also give it a nice-looking ETCHED_IN border. After "
+#| "that, we put our TextView inside, and tell the ScrolledWindow to give us "
+#| "a viewport onto it."
+msgid ""
+"Here we create a ScrolledWindow, and set it to automatically scroll if it "
+"gets to be too big horizontally or vertically. We also give it a nice-"
+"looking ETCHED_IN border. After that, we put our TextView inside, and tell "
+"the ScrolledWindow to give us a viewport onto it."
 msgstr ""
 "Aquí se crea una <link xref=\"scrolledwindow.js\">ScrolledWindow</link>, y "
 "se configura para que se desplace automáticamente si se vuelve demasiado "
@@ -43461,8 +47051,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
@@ -43983,8 +47573,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."
 
@@ -44057,8 +47647,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."
 
@@ -44196,13 +47786,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 ""
@@ -44592,8 +48182,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."
@@ -44729,9 +48319,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
@@ -46932,6 +50521,7 @@ msgstr ""
 "}\n"
 
 #: C/toolbar.vala.page:33(item/p) C/toolbar_builder.vala.page:150(item/p)
+#: C/tooltip.vala.page:38(item/p)
 msgid ""
 "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Toolbar.html\";>Gtk.Toolbar</"
 "link>"
@@ -47195,8 +50785,8 @@ 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:81(item/p) C/toolbar_builder.vala.page:64(item/p)
 msgid "Under <gui>Hierarchy</gui> tab, click <gui>Add</gui>."
@@ -47335,15 +50925,15 @@ 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:141(item/p)
 #: C/toolbar_builder.vala.page:124(item/p)
@@ -47370,9 +50960,9 @@ 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:150(item/code)
@@ -47918,13 +51508,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
@@ -48141,30 +51730,409 @@ 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: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.
+#.
+#. 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/tooltip.js.page:22(media) C/tooltip.py.page:23(media)
+#: C/tooltip.vala.page:22(media)
+#, fuzzy
+#| msgctxt "_"
+#| msgid ""
+#| "external ref='media/tooltip.png' md5='6950da5f4444aa941ecc2f0fc5951d52'"
 msgctxt "_"
-msgid "external ref='media/tooltip.png' md5='6950da5f4444aa941ecc2f0fc5951d52'"
+msgid "external ref='media/tooltip.png' md5='41e35860a51e39cb48c71e57bb8fb1d0'"
 msgstr ""
 "external ref='media/tooltip.png' md5='6950da5f4444aa941ecc2f0fc5951d52'"
 
-#: C/tooltip.py.page:7(info/title)
+#: C/tooltip.js.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Toolbar (JavaScript)"
 msgctxt "text"
-msgid "Tooltip (Python)"
-msgstr "Consejo (Python)"
+msgid "Tooltip (JavaScript)"
+msgstr "Toolbar (JavaScript)"
 
-#: C/tooltip.py.page:19(info/desc)
+#: C/tooltip.js.page:18(info/desc) C/tooltip.py.page:19(info/desc)
+#: C/tooltip.vala.page:18(info/desc)
 msgid "Add tips to your widgets"
 msgstr "Añadir consejos a sus widgets"
 
-#: C/tooltip.py.page:22(page/title)
+#: C/tooltip.js.page:21(page/title) C/tooltip.py.page:22(page/title)
+#: C/tooltip.vala.page:21(page/title)
 msgid "Tooltip"
 msgstr "Consejo"
 
-#: C/tooltip.py.page:24(page/p)
+#: C/tooltip.js.page:23(page/p) C/tooltip.py.page:24(page/p)
+#: C/tooltip.vala.page:23(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.js.page:28(section/code)
+#, no-wrap
+msgid ""
+"//!/usr/bin/gjs\n"
+"\n"
+"const Gdk = imports.gi.Gdk;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk; \n"
+"const Lang = imports.lang;\n"
+"\n"
+"const TooltipExample = new Lang.Class ({\n"
+"    Name: 'Tooltip Example',\n"
+"\n"
+"    // Create the application \n"
+"    _init: function () {\n"
+"        this.application = new Gtk.Application ({ application_id: 'org.example.jstooltip' });\n"
+"\n"
+"        // Connect 'activate' and 'startup' signals to the callback functions\n"
+"        this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+"        this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+"    },\n"
+"\n"
+"    // Callback function for 'activate' signal presents windows when active\n"
+"    _onActivate: function() {\n"
+"        this.window.present();\n"
+"    },\n"
+"\n"
+"    // Callback function for 'startup' signal builds the UI\n"
+"    _onStartup: function () {\n"
+"        this._buildUI ();\n"
+"    },\n"
+"\n"
+"    // Build the application's UI\n"
+"    _buildUI: function () {\n"
+"\n"
+"        // Create the application window\n"
+"        this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+"                                                   window_position: Gtk.WindowPosition.CENTER,\n"
+"                                                   title: \"Toolbar with Tooltips Example\",\n"
+"                                                   default_width: 400,\n"
+"                                                   default_height: 200,\n"
+"                                                   border_width: 10 });\n"
+"\n"
+"        this.grid = new Gtk.Grid();\n"
+"\n"
+"        this.toolbar = this._createToolbar();\n"
+"        this.toolbar.set_hexpand(true);\n"
+"        this.toolbar.show();\n"
+"\n"
+"        this.grid.attach(this.toolbar, 0, 0, 1, 1);\n"
+"\n"
+"        this.window.add(this.grid);\n"
+"\n"
+"        this._newAction = new Gio.SimpleAction({ name: \"new\" });\n"
+"        this._newAction.connect(\"activate\", Lang.bind(this, this._newCallback));\n"
+"        this.window.add_action(this._newAction);\n"
+"\n"
+"        this._openAction = new Gio.SimpleAction({ name: \"open\" });\n"
+"        this._openAction.connect(\"activate\", Lang.bind(this, this._openCallback));\n"
+"        this.window.add_action(this._openAction);\n"
+"\n"
+"        this._undoAction = new Gio.SimpleAction({ name: \"undo\" });\n"
+"        this._undoAction.connect(\"activate\", Lang.bind(this, this._undoCallback));\n"
+"        this.window.add_action(this._undoAction);\n"
+"\n"
+"        this._fullScreenAction = new Gio.SimpleAction({ name: \"fullscreenToggle\" });\n"
+"        this._fullScreenAction.connect(\"activate\", Lang.bind(this, this._fullScreenCallback));\n"
+"        this.window.add_action(this._fullScreenAction);\n"
+"\n"
+"        this.window.show_all();\n"
+"   },\n"
+"\n"
+"     _createToolbar: function(){\n"
+"        this.toolbar = new Gtk.Toolbar();\n"
+"        this.toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+"        // button for the \"new\" action\n"
+"        this.newButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW);\n"
+"        // with a tooltip with a given text        \n"
+"        this.newButton.set_tooltip_text(\"Create a new file\");\n"
+"        this.newButton.set_is_important(true);\n"
+"        this.toolbar.insert(this.newButton, 0);\n"
+"        this.newButton.show();\n"
+"        this.newButton.set_action_name(\"win.new\");\n"
+"\n"
+"        // button for the \"open\" action\n"
+"        this.openButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN);\n"
+"        // with a tooltip with a given text in the Pango markup language        \n"
+"        this.openButton.set_tooltip_markup(\"Open an &lt;i&gt;existing&lt;/i&gt; file\");\n"
+"        this.openButton.set_is_important(true);\n"
+"        this.toolbar.insert(this.openButton, 1);\n"
+"        this.openButton.show();\n"
+"        this.openButton.set_action_name(\"win.open\");\n"
+"\n"
+"        // button for the \"undo\" action\n"
+"        this.undoButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO);\n"
+"        // with a tooltip with an image\n"
+"        // set true the property \"has-tooltip\"        \n"
+"        this.undoButton.set_property(\"has-tooltip\", true);\n"
+"        // connect to the callback function that for the tooltip\n"
+"        // with the signal \"query-tooltip\"\n"
+"        this.undoButton.connect(\"query-tooltip\", Lang.bind(this, this._undoTooltipCallback));\n"
+"        this.undoButton.set_is_important(true);\n"
+"        this.toolbar.insert(this.undoButton, 2);\n"
+"        this.undoButton.show();\n"
+"        this.undoButton.set_action_name(\"win.undo\");\n"
+"\n"
+"        // button for the \"fullscreen/leave fullscreen\" action\n"
+"        this.fullscreenButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_FULLSCREEN);\n"
+"        this.fullscreenButton.set_is_important(true);\n"
+"        this.toolbar.insert(this.fullscreenButton, 3);\n"
+"        this.fullscreenButton.set_action_name(\"win.fullscreenToggle\");\n"
+"\n"
+"        return this.toolbar;\n"
+"    },\n"
+"\n"
+"    _newCallback: function(action, parameter) {\n"
+"        print(\"You clicked \\\"New\\\".\");\n"
+"    },\n"
+"\n"
+"    _openCallback: function(action, parameter) {\n"
+"        print(\"You clicked \\\"Open\\\".\");\n"
+"    },\n"
+"\n"
+"    // the callback function for the tooltip of the \"undo\" button\n"
+"    _undoTooltipCallback: function(widget, x, y, keyboard_mode, tooltip) {\n"
+"        // set the text for the tooltip\n"
+"        tooltip.set_text(\"Undo your last action\");\n"
+"        // set an icon fot the tooltip\n"
+"        tooltip.set_icon_from_stock(Gtk.STOCK_UNDO, Gtk.IconSize.MENU);\n"
+"        // show the tooltip\n"
+"        return true;\n"
+"    },\n"
+"\n"
+"    _undoCallback: function(action, parameter) {\n"
+"        print(\"You clicked \\\"Undo\\\".\");\n"
+"    },\n"
+"\n"
+"    _fullScreenCallback: function() {\n"
+"        if ((this.window.get_window().get_state() &amp; Gdk.WindowState.FULLSCREEN) != 0 ){\n"
+"            this.fullscreenButton.set_stock_id(Gtk.STOCK_FULLSCREEN);\n"
+"            this.fullscreenButton.set_tooltip_text(\"Make your window fullscreen\");\n"
+"            this.window.unfullscreen();\n"
+"        } else {\n"
+"            this.fullscreenButton.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN);\n"
+"            this.fullscreenButton.set_tooltip_text(\"Leave fullscreen\");\n"
+"            this.window.fullscreen();\n"
+"        }\n"
+"    }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new TooltipExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"//!/usr/bin/gjs\n"
+"\n"
+"const Gdk = imports.gi.Gdk;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk; \n"
+"const Lang = imports.lang;\n"
+"\n"
+"const TooltipExample = new Lang.Class ({\n"
+"    Name: 'Tooltip Example',\n"
+"\n"
+"    // Create the application \n"
+"    _init: function () {\n"
+"        this.application = new Gtk.Application ({ application_id: 'org.example.jstooltip' });\n"
+"\n"
+"        // Connect 'activate' and 'startup' signals to the callback functions\n"
+"        this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+"        this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+"    },\n"
+"\n"
+"    // Callback function for 'activate' signal presents windows when active\n"
+"    _onActivate: function() {\n"
+"        this.window.present();\n"
+"    },\n"
+"\n"
+"    // Callback function for 'startup' signal builds the UI\n"
+"    _onStartup: function () {\n"
+"        this._buildUI ();\n"
+"    },\n"
+"\n"
+"    // Build the application's UI\n"
+"    _buildUI: function () {\n"
+"\n"
+"        // Create the application window\n"
+"        this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+"                                                   window_position: Gtk.WindowPosition.CENTER,\n"
+"                                                   title: \"Toolbar with Tooltips Example\",\n"
+"                                                   default_width: 400,\n"
+"                                                   default_height: 200,\n"
+"                                                   border_width: 10 });\n"
+"\n"
+"        this.grid = new Gtk.Grid();\n"
+"\n"
+"        this.toolbar = this._createToolbar();\n"
+"        this.toolbar.set_hexpand(true);\n"
+"        this.toolbar.show();\n"
+"\n"
+"        this.grid.attach(this.toolbar, 0, 0, 1, 1);\n"
+"\n"
+"        this.window.add(this.grid);\n"
+"\n"
+"        this._newAction = new Gio.SimpleAction({ name: \"new\" });\n"
+"        this._newAction.connect(\"activate\", Lang.bind(this, this._newCallback));\n"
+"        this.window.add_action(this._newAction);\n"
+"\n"
+"        this._openAction = new Gio.SimpleAction({ name: \"open\" });\n"
+"        this._openAction.connect(\"activate\", Lang.bind(this, this._openCallback));\n"
+"        this.window.add_action(this._openAction);\n"
+"\n"
+"        this._undoAction = new Gio.SimpleAction({ name: \"undo\" });\n"
+"        this._undoAction.connect(\"activate\", Lang.bind(this, this._undoCallback));\n"
+"        this.window.add_action(this._undoAction);\n"
+"\n"
+"        this._fullScreenAction = new Gio.SimpleAction({ name: \"fullscreenToggle\" });\n"
+"        this._fullScreenAction.connect(\"activate\", Lang.bind(this, this._fullScreenCallback));\n"
+"        this.window.add_action(this._fullScreenAction);\n"
+"\n"
+"        this.window.show_all();\n"
+"   },\n"
+"\n"
+"     _createToolbar: function(){\n"
+"        this.toolbar = new Gtk.Toolbar();\n"
+"        this.toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+"        // button for the \"new\" action\n"
+"        this.newButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW);\n"
+"        // with a tooltip with a given text        \n"
+"        this.newButton.set_tooltip_text(\"Create a new file\");\n"
+"        this.newButton.set_is_important(true);\n"
+"        this.toolbar.insert(this.newButton, 0);\n"
+"        this.newButton.show();\n"
+"        this.newButton.set_action_name(\"win.new\");\n"
+"\n"
+"        // button for the \"open\" action\n"
+"        this.openButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN);\n"
+"        // with a tooltip with a given text in the Pango markup language        \n"
+"        this.openButton.set_tooltip_markup(\"Open an &lt;i&gt;existing&lt;/i&gt; file\");\n"
+"        this.openButton.set_is_important(true);\n"
+"        this.toolbar.insert(this.openButton, 1);\n"
+"        this.openButton.show();\n"
+"        this.openButton.set_action_name(\"win.open\");\n"
+"\n"
+"        // button for the \"undo\" action\n"
+"        this.undoButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO);\n"
+"        // with a tooltip with an image\n"
+"        // set true the property \"has-tooltip\"        \n"
+"        this.undoButton.set_property(\"has-tooltip\", true);\n"
+"        // connect to the callback function that for the tooltip\n"
+"        // with the signal \"query-tooltip\"\n"
+"        this.undoButton.connect(\"query-tooltip\", Lang.bind(this, this._undoTooltipCallback));\n"
+"        this.undoButton.set_is_important(true);\n"
+"        this.toolbar.insert(this.undoButton, 2);\n"
+"        this.undoButton.show();\n"
+"        this.undoButton.set_action_name(\"win.undo\");\n"
+"\n"
+"        // button for the \"fullscreen/leave fullscreen\" action\n"
+"        this.fullscreenButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_FULLSCREEN);\n"
+"        this.fullscreenButton.set_is_important(true);\n"
+"        this.toolbar.insert(this.fullscreenButton, 3);\n"
+"        this.fullscreenButton.set_action_name(\"win.fullscreenToggle\");\n"
+"\n"
+"        return this.toolbar;\n"
+"    },\n"
+"\n"
+"    _newCallback: function(action, parameter) {\n"
+"        print(\"You clicked \\\"New\\\".\");\n"
+"    },\n"
+"\n"
+"    _openCallback: function(action, parameter) {\n"
+"        print(\"You clicked \\\"Open\\\".\");\n"
+"    },\n"
+"\n"
+"    // the callback function for the tooltip of the \"undo\" button\n"
+"    _undoTooltipCallback: function(widget, x, y, keyboard_mode, tooltip) {\n"
+"        // set the text for the tooltip\n"
+"        tooltip.set_text(\"Undo your last action\");\n"
+"        // set an icon fot the tooltip\n"
+"        tooltip.set_icon_from_stock(Gtk.STOCK_UNDO, Gtk.IconSize.MENU);\n"
+"        // show the tooltip\n"
+"        return true;\n"
+"    },\n"
+"\n"
+"    _undoCallback: function(action, parameter) {\n"
+"        print(\"You clicked \\\"Undo\\\".\");\n"
+"    },\n"
+"\n"
+"    _fullScreenCallback: function() {\n"
+"        if ((this.window.get_window().get_state() &amp; Gdk.WindowState.FULLSCREEN) != 0 ){\n"
+"            this.fullscreenButton.set_stock_id(Gtk.STOCK_FULLSCREEN);\n"
+"            this.fullscreenButton.set_tooltip_text(\"Make your window fullscreen\");\n"
+"            this.window.unfullscreen();\n"
+"        } else {\n"
+"            this.fullscreenButton.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN);\n"
+"            this.fullscreenButton.set_tooltip_text(\"Leave fullscreen\");\n"
+"            this.window.fullscreen();\n"
+"        }\n"
+"    }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new TooltipExample ();\n"
+"app.application.run (ARGV);\n"
+
+#: C/tooltip.js.page:35(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Toolbar.";
+#| "html\">Gtk.Toolbar</link>"
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Tooltip.html";
+"\">GtkTooltip</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Toolbar.html";
+"\">Gtk.Toolbar</link>"
+
+#: C/tooltip.js.page:36(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Toolbar.";
+#| "html\">Gtk.Toolbar</link>"
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Toolbar.html";
+"\">GtkToolbar</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Toolbar.html";
+"\">Gtk.Toolbar</link>"
+
+#: C/tooltip.js.page:37(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Window.html";
+#| "\">Gtk.Window</link>"
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Widget.html";
+"\">GtkWidget</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Window.html";
+"\">Gtk.Window</link>"
+
+#: C/tooltip.js.page:38(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>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Stock-Items.html";
+"\">Elementos del almacén</link>"
+
+#: C/tooltip.py.page:7(info/title)
+msgctxt "text"
+msgid "Tooltip (Python)"
+msgstr "Consejo (Python)"
+
 #: C/tooltip.py.page:30(section/code)
 #, no-wrap
 msgid ""
@@ -48523,10 +52491,504 @@ msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/GtkWidget.html";
 "\">GtkWidget</link>"
 
-#: C/tooltip.py.page:60(item/p)
+#: C/tooltip.vala.page:7(info/title)
+#, fuzzy
+#| msgctxt "text"
+#| msgid "Toolbar (Vala)"
+msgctxt "text"
+msgid "Tooltip (Vala)"
+msgstr "Barra de herramientas (Vala)"
+
+#: C/tooltip.vala.page:29(section/code)
+#, no-wrap
+#| msgid ""
+#| "/* This is the Window */\n"
+#| "class MyWindow : Gtk.ApplicationWindow {\n"
+#| "\n"
+#| "\t/* Instance variables belonging to the window */\n"
+#| "\tGtk.Toolbar toolbar;\n"
+#| "\tGtk.ToolButton new_button;\n"
+#| "\tGtk.ToolButton open_button;\n"
+#| "\tGtk.ToolButton undo_button;\n"
+#| "\tGtk.ToolButton fullscreen_button;\n"
+#| "\tGtk.ToolButton leave_fullscreen_button;\n"
+#| "\n"
+#| "\t/* Contstructor */\n"
+#| "\tinternal MyWindow (MyApplication app) {\n"
+#| "\t\tObject (application: app, title: \"Toolbar Example\");\n"
+#| "\n"
+#| "\t\tthis.set_default_size (400, 200);\n"
+#| "\t\tvar grid = new Gtk.Grid ();\n"
+#| "\t\tthis.add (grid);\n"
+#| "\t\tgrid.show ();\n"
+#| "\n"
+#| "\t\tcreate_toolbar ();\n"
+#| "\t\ttoolbar.set_hexpand (true);\n"
+#| "\t\tgrid.attach (toolbar, 0, 0, 1, 1);\n"
+#| "\t\ttoolbar.show ();\n"
+#| "\n"
+#| "\t\t/* create the \"undo\" window action action */\n"
+#| "\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
+#| "\t\tundo_action.activate.connect (undo_callback);\n"
+#| "\t\tthis.add_action (undo_action);\n"
+#| "\n"
+#| "\t\t/* create the \"fullscreen\" window action */\n"
+#| "\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
+#| "\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
+#| "\t\tthis.add_action (fullscreen_action);\n"
+#| "\t}\n"
+#| "\n"
+#| "\t/* This function creates the toolbar, its  ToolButtons,\n"
+#| "\t * and assigns the actions names to the ToolButtons.*/\n"
+#| "\tvoid create_toolbar () {\n"
+#| "\t\ttoolbar = new Gtk.Toolbar ();\n"
+#| "\t\ttoolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+#| "\n"
+#| "\t\tnew_button = new Gtk.ToolButton.from_stock (Gtk.Stock.NEW);\n"
+#| "\t\tnew_button.is_important = true; //decides whether to show the label\n"
+#| "\t\ttoolbar.add (new_button);\n"
+#| "\t\tnew_button.show ();\n"
+#| "\t\tnew_button.action_name = \"app.new\";\n"
+#| "\n"
+#| "\t\topen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.OPEN);\n"
+#| "\t\topen_button.is_important = true;\n"
+#| "\t\ttoolbar.add (open_button);\n"
+#| "\t\topen_button.show ();\n"
+#| "\t\topen_button.action_name = \"app.open\";\n"
+#| "\n"
+#| "\t\tundo_button = new Gtk.ToolButton.from_stock (Gtk.Stock.UNDO);\n"
+#| "\t\tundo_button.is_important = true;\n"
+#| "\t\ttoolbar.add (undo_button);\n"
+#| "\t\tundo_button.show ();\n"
+#| "\t\tundo_button.action_name = \"win.undo\";\n"
+#| "\n"
+#| "\t\tfullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.FULLSCREEN);\n"
+#| "\t\tfullscreen_button.is_important = true;\n"
+#| "\t\ttoolbar.add (fullscreen_button);\n"
+#| "\t\tfullscreen_button.show ();\n"
+#| "\t\tfullscreen_button.action_name = \"win.fullscreen\";\n"
+#| "\n"
+#| "\t\tleave_fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.LEAVE_FULLSCREEN)\n"
+#| ";\n"
+#| "\t\tleave_fullscreen_button.is_important = true;\n"
+#| "\t\ttoolbar.add (leave_fullscreen_button);\n"
+#| "\n"
+#| "\t\tleave_fullscreen_button.action_name = \"win.fullscreen\";\n"
+#| "\t}\n"
+#| "\n"
+#| "\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
+#| "\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
+#| "\t}\n"
+#| "\n"
+#| "\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
+#| "\t\tif ((this.get_window ().get_state () &amp; Gdk.WindowState.FULLSCREEN) != 0) {\n"
+#| "\t\t\tthis.unfullscreen ();\n"
+#| "\t\t\tleave_fullscreen_button.hide ();\n"
+#| "\t\t\tfullscreen_button.show ();\n"
+#| "\t\t}\n"
+#| "\t\telse {\n"
+#| "\t\t\tthis.fullscreen ();\n"
+#| "\t\t\tfullscreen_button.hide ();\n"
+#| "\t\t\tleave_fullscreen_button.show ();\n"
+#| "\t\t}\n"
+#| "\t}\n"
+#| "}\n"
+#| "\n"
+#| "/* This is the application */\n"
+#| "class MyApplication : Gtk.Application {\n"
+#| "\tprotected override void activate () {\n"
+#| "\t\tnew MyWindow (this).show ();\n"
+#| "\t}\n"
+#| "\n"
+#| "\tprotected override void startup () {\n"
+#| "\t\tbase.startup ();\n"
+#| "\n"
+#| "\t\t/* Create the \"new\" action and add it to the app*/\n"
+#| "\t\tvar new_action = new SimpleAction (\"new\", null);\n"
+#| "\t\tnew_action.activate.connect (new_callback);\n"
+#| "\t\tthis.add_action (new_action);\n"
+#| "\n"
+#| "\t\t/* Create the \"open\" action, and add it to the app */\n"
+#| "\t\tvar open_action = new SimpleAction (\"open\", null);\n"
+#| "\t\topen_action.activate.connect (open_callback);\n"
+#| "\t\tthis.add_action (open_action);\n"
+#| "\n"
+#| "\t\t/* You could also add the action to the app menu\n"
+#| "\t\t * if you wanted to.\n"
+#| "\t\t */\n"
+#| "\t\t//var menu = new Menu ();\n"
+#| "\t\t//menu.append (\"New\", \"app.new\");\n"
+#| "\t\t//this.app_menu = menu;\n"
+#| "\t}\n"
+#| "\n"
+#| "\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
+#| "\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
+#| "\t}\n"
+#| "\n"
+#| "\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
+#| "\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
+#| "\t}\n"
+#| "}\n"
+#| "\n"
+#| "/* The main function creates the application and runs it. */\n"
+#| "int main (string[] args) {\n"
+#| "\treturn new MyApplication ().run (args);\n"
+#| "}\n"
 msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Stock-Items.html";
-"\">Stock Items</link>"
+"/* This is the Window */\n"
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Instance variables belonging to the window */\n"
+"\tGtk.Toolbar toolbar;\n"
+"\tGtk.ToolButton new_button;\n"
+"\tGtk.ToolButton open_button;\n"
+"\tGtk.ToolButton undo_button;\n"
+"\tGtk.ToolButton fullscreen_button;\n"
+"\tGtk.ToolButton leave_fullscreen_button;\n"
+"\n"
+"\t/* Contstructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Toolbar with Tooltips Example\");\n"
+"\n"
+"\t\tthis.set_default_size (400, 200);\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tthis.add (grid);\n"
+"\t\tgrid.show ();\n"
+"\n"
+"\t\tcreate_toolbar ();\n"
+"\t\ttoolbar.set_hexpand (true);\n"
+"\t\tgrid.attach (toolbar, 0, 0, 1, 1);\n"
+"\t\ttoolbar.show ();\n"
+"\n"
+"\t\t/* create the \"undo\" window action action */\n"
+"\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
+"\t\tundo_action.activate.connect (undo_callback);\n"
+"\t\tthis.add_action (undo_action);\n"
+"\n"
+"\t\t/* create the \"fullscreen\" window action */\n"
+"\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
+"\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
+"\t\tthis.add_action (fullscreen_action);\n"
+"\t}\n"
+"\n"
+"\t/* Callback for query_tooltip signal */\n"
+"\tbool undo_tooltip_callback (int x, int y, bool keyboard_tooltip, Gtk.Tooltip tooltip) {\n"
+"\n"
+"\t\t/* set the text for the tooltip */\n"
+"        \ttooltip.set_text (\"Undo your last action\");\n"
+"\t\t\n"
+"\t\t/* set an icon fot the tooltip */\n"
+"\t\ttooltip.set_icon_from_stock(\"gtk-undo\", Gtk.IconSize.MENU);\n"
+"\n"
+"        \t/* show the tooltip */\n"
+"        \treturn true;\n"
+"\t}\n"
+"\n"
+"\t/* This function creates the toolbar, its  ToolButtons,\n"
+"\t * and assigns the actions names to the ToolButtons.*/\n"
+"\tvoid create_toolbar () {\n"
+"\t\ttoolbar = new Gtk.Toolbar ();\n"
+"\t\ttoolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+"\t\tnew_button = new Gtk.ToolButton.from_stock (Gtk.Stock.NEW);\n"
+"\n"
+"\t\t/* tooltip with text */\n"
+"\t\tnew_button.set_tooltip_text (\"Create a new file\");\n"
+"\n"
+"\t\tnew_button.is_important = true; //decides whether to show the label\n"
+"\t\ttoolbar.add (new_button);\n"
+"\t\tnew_button.show ();\n"
+"\t\tnew_button.action_name = \"app.new\";\n"
+"\n"
+"\t\topen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.OPEN);\n"
+"\n"
+"\t\t/* a tooltip using Pango markup language */\n"
+"\t\topen_button.set_tooltip_markup (\"Open an &lt;i&gt;existing&lt;/i&gt; file\");\n"
+"\n"
+"\t\topen_button.is_important = true;\n"
+"\t\ttoolbar.add (open_button);\n"
+"\t\topen_button.show ();\n"
+"\t\topen_button.action_name = \"app.open\";\n"
+"\n"
+"\t\tundo_button = new Gtk.ToolButton.from_stock (Gtk.Stock.UNDO);\n"
+"\t\n"
+"\t\t/* For a tooltip to have an image, first we must set_has_tooltip to be 'true' */\t\n"
+"\t\t(undo_button as Gtk.Widget).set_has_tooltip (true);\n"
+"\n"
+"\t\t/* Connect the query_tooltip signal to the callback */\n"
+"\t\tundo_button.query_tooltip.connect (undo_tooltip_callback);\n"
+"\t\n"
+"\t\tundo_button.is_important = true;\n"
+"\t\ttoolbar.add (undo_button);\n"
+"\t\tundo_button.show ();\n"
+"\t\tundo_button.action_name = \"win.undo\";\n"
+"\n"
+"\t\tfullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.FULLSCREEN);\n"
+"\t\tfullscreen_button.is_important = true;\n"
+"\t\ttoolbar.add (fullscreen_button);\n"
+"\t\tfullscreen_button.show ();\n"
+"\t\tfullscreen_button.action_name = \"win.fullscreen\";\n"
+"\n"
+"\t\tleave_fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.LEAVE_FULLSCREEN)\n"
+";\n"
+"\t\tleave_fullscreen_button.is_important = true;\n"
+"\t\ttoolbar.add (leave_fullscreen_button);\n"
+"\n"
+"\t\tleave_fullscreen_button.action_name = \"win.fullscreen\";\n"
+"\t}\n"
+"\n"
+"\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\tif ((this.get_window ().get_state () &amp; Gdk.WindowState.FULLSCREEN) != 0) {\n"
+"\t\t\tthis.unfullscreen ();\n"
+"\t\t\tleave_fullscreen_button.hide ();\n"
+"\t\t\tfullscreen_button.show ();\n"
+"\t\t}\n"
+"\t\telse {\n"
+"\t\t\tthis.fullscreen ();\n"
+"\t\t\tfullscreen_button.hide ();\n"
+"\t\t\tleave_fullscreen_button.show ();\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application */\n"
+"class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\t/* Create the \"new\" action and add it to the app*/\n"
+"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
+"\t\tnew_action.activate.connect (new_callback);\n"
+"\t\tthis.add_action (new_action);\n"
+"\n"
+"\t\t/* Create the \"open\" action, and add it to the app */\n"
+"\t\tvar open_action = new SimpleAction (\"open\", null);\n"
+"\t\topen_action.activate.connect (open_callback);\n"
+"\t\tthis.add_action (open_action);\n"
+"\n"
+"\t\t/* You could also add the action to the app menu\n"
+"\t\t * if you wanted to.\n"
+"\t\t */\n"
+"\t\t//var menu = new Menu ();\n"
+"\t\t//menu.append (\"New\", \"app.new\");\n"
+"\t\t//this.app_menu = menu;\n"
+"\t}\n"
+"\n"
+"\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates the application and runs it. */\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"/* This is the Window */\n"
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Instance variables belonging to the window */\n"
+"\tGtk.Toolbar toolbar;\n"
+"\tGtk.ToolButton new_button;\n"
+"\tGtk.ToolButton open_button;\n"
+"\tGtk.ToolButton undo_button;\n"
+"\tGtk.ToolButton fullscreen_button;\n"
+"\tGtk.ToolButton leave_fullscreen_button;\n"
+"\n"
+"\t/* Contstructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Toolbar with Tooltips Example\");\n"
+"\n"
+"\t\tthis.set_default_size (400, 200);\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tthis.add (grid);\n"
+"\t\tgrid.show ();\n"
+"\n"
+"\t\tcreate_toolbar ();\n"
+"\t\ttoolbar.set_hexpand (true);\n"
+"\t\tgrid.attach (toolbar, 0, 0, 1, 1);\n"
+"\t\ttoolbar.show ();\n"
+"\n"
+"\t\t/* create the \"undo\" window action action */\n"
+"\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
+"\t\tundo_action.activate.connect (undo_callback);\n"
+"\t\tthis.add_action (undo_action);\n"
+"\n"
+"\t\t/* create the \"fullscreen\" window action */\n"
+"\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
+"\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
+"\t\tthis.add_action (fullscreen_action);\n"
+"\t}\n"
+"\n"
+"\t/* Callback for query_tooltip signal */\n"
+"\tbool undo_tooltip_callback (int x, int y, bool keyboard_tooltip, Gtk.Tooltip tooltip) {\n"
+"\n"
+"\t\t/* set the text for the tooltip */\n"
+"        \ttooltip.set_text (\"Undo your last action\");\n"
+"\t\t\n"
+"\t\t/* set an icon fot the tooltip */\n"
+"\t\ttooltip.set_icon_from_stock(\"gtk-undo\", Gtk.IconSize.MENU);\n"
+"\n"
+"        \t/* show the tooltip */\n"
+"        \treturn true;\n"
+"\t}\n"
+"\n"
+"\t/* This function creates the toolbar, its  ToolButtons,\n"
+"\t * and assigns the actions names to the ToolButtons.*/\n"
+"\tvoid create_toolbar () {\n"
+"\t\ttoolbar = new Gtk.Toolbar ();\n"
+"\t\ttoolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+"\t\tnew_button = new Gtk.ToolButton.from_stock (Gtk.Stock.NEW);\n"
+"\n"
+"\t\t/* tooltip with text */\n"
+"\t\tnew_button.set_tooltip_text (\"Create a new file\");\n"
+"\n"
+"\t\tnew_button.is_important = true; //decides whether to show the label\n"
+"\t\ttoolbar.add (new_button);\n"
+"\t\tnew_button.show ();\n"
+"\t\tnew_button.action_name = \"app.new\";\n"
+"\n"
+"\t\topen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.OPEN);\n"
+"\n"
+"\t\t/* a tooltip using Pango markup language */\n"
+"\t\topen_button.set_tooltip_markup (\"Open an &lt;i&gt;existing&lt;/i&gt; file\");\n"
+"\n"
+"\t\topen_button.is_important = true;\n"
+"\t\ttoolbar.add (open_button);\n"
+"\t\topen_button.show ();\n"
+"\t\topen_button.action_name = \"app.open\";\n"
+"\n"
+"\t\tundo_button = new Gtk.ToolButton.from_stock (Gtk.Stock.UNDO);\n"
+"\t\n"
+"\t\t/* For a tooltip to have an image, first we must set_has_tooltip to be 'true' */\t\n"
+"\t\t(undo_button as Gtk.Widget).set_has_tooltip (true);\n"
+"\n"
+"\t\t/* Connect the query_tooltip signal to the callback */\n"
+"\t\tundo_button.query_tooltip.connect (undo_tooltip_callback);\n"
+"\t\n"
+"\t\tundo_button.is_important = true;\n"
+"\t\ttoolbar.add (undo_button);\n"
+"\t\tundo_button.show ();\n"
+"\t\tundo_button.action_name = \"win.undo\";\n"
+"\n"
+"\t\tfullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.FULLSCREEN);\n"
+"\t\tfullscreen_button.is_important = true;\n"
+"\t\ttoolbar.add (fullscreen_button);\n"
+"\t\tfullscreen_button.show ();\n"
+"\t\tfullscreen_button.action_name = \"win.fullscreen\";\n"
+"\n"
+"\t\tleave_fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.LEAVE_FULLSCREEN)\n"
+";\n"
+"\t\tleave_fullscreen_button.is_important = true;\n"
+"\t\ttoolbar.add (leave_fullscreen_button);\n"
+"\n"
+"\t\tleave_fullscreen_button.action_name = \"win.fullscreen\";\n"
+"\t}\n"
+"\n"
+"\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\tif ((this.get_window ().get_state () &amp; Gdk.WindowState.FULLSCREEN) != 0) {\n"
+"\t\t\tthis.unfullscreen ();\n"
+"\t\t\tleave_fullscreen_button.hide ();\n"
+"\t\t\tfullscreen_button.show ();\n"
+"\t\t}\n"
+"\t\telse {\n"
+"\t\t\tthis.fullscreen ();\n"
+"\t\t\tfullscreen_button.hide ();\n"
+"\t\t\tleave_fullscreen_button.show ();\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application */\n"
+"class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\t/* Create the \"new\" action and add it to the app*/\n"
+"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
+"\t\tnew_action.activate.connect (new_callback);\n"
+"\t\tthis.add_action (new_action);\n"
+"\n"
+"\t\t/* Create the \"open\" action, and add it to the app */\n"
+"\t\tvar open_action = new SimpleAction (\"open\", null);\n"
+"\t\topen_action.activate.connect (open_callback);\n"
+"\t\tthis.add_action (open_action);\n"
+"\n"
+"\t\t/* You could also add the action to the app menu\n"
+"\t\t * if you wanted to.\n"
+"\t\t */\n"
+"\t\t//var menu = new Menu ();\n"
+"\t\t//menu.append (\"New\", \"app.new\");\n"
+"\t\t//this.app_menu = menu;\n"
+"\t}\n"
+"\n"
+"\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates the application and runs it. */\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#: C/tooltip.vala.page:37(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Toolbar.html\";>Gtk."
+#| "Toolbar</link>"
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Tooltip.html\";>Gtk.Tooltip</"
+"link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Toolbar.html\";>Gtk.Toolbar</"
+"link>"
+
+#: C/tooltip.vala.page:39(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Widget.html\";>Gtk."
+#| "Widget</link>"
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Widget.query_tooltip.html";
+"\">Gtk.Widget.query_tooltip</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Widget.html\";>Gtk.Widget</"
+"link>"
+
+#: C/tooltip.vala.page:40(item/p)
+#, fuzzy
+#| msgid ""
+#| "<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Stock-Items.html";
+#| "\">Stock Items</link>"
+msgid ""
+"<link href=\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html#GTK-";
+"STOCK-UNDO:CAPS\">Stock Items</link>"
 msgstr ""
 "<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Stock-Items.html";
 "\">Elementos del almacén</link>"
@@ -49501,8 +53963,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."
 
@@ -51020,8 +55482,8 @@ 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."
 
@@ -51556,8 +56018,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."
@@ -52967,8 +57429,7 @@ msgstr ""
 #~ "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>"
+#~ "cellrenderers.html\">El tutorial de GTK+ 3 en Python: «CellRenderer»</link>"
 
 #~ msgid ""
 #~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/";
@@ -53375,8 +57836,8 @@ msgstr ""
 #~ "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 "
+#~ "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, "
@@ -53421,8 +57882,8 @@ msgstr ""
 #~ "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."
+#~ "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/";



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