[gnome-devel-docs] Updated Spanish translation



commit cd2523ea82b34aaf7f66b108d4578108910ae3f7
Author: Daniel Mustieles <daniel mustieles gmail com>
Date:   Sun Jan 22 20:44:51 2012 +0100

    Updated Spanish translation

 platform-demos/es/es.po | 2254 +++++++++++++++++++++++++++--------------------
 1 files changed, 1320 insertions(+), 934 deletions(-)
---
diff --git a/platform-demos/es/es.po b/platform-demos/es/es.po
index 6689b82..f760c85 100644
--- a/platform-demos/es/es.po
+++ b/platform-demos/es/es.po
@@ -3,13 +3,13 @@
 # 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.
+# Daniel Mustieles <daniel mustieles gmail com>, 2011, 2012.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: gnome-devel-docs.platform-demos.master\n"
-"POT-Creation-Date: 2011-10-06 22:26+0000\n"
-"PO-Revision-Date: 2011-12-16 17:58+0100\n"
+"POT-Creation-Date: 2012-01-21 22:17+0000\n"
+"PO-Revision-Date: 2012-01-22 20:41+0100\n"
 "Last-Translator: Daniel Mustieles <daniel mustieles gmail com>\n"
 "Language-Team: EspaÃol <gnome-es-list gnome org>\n"
 "MIME-Version: 1.0\n"
@@ -18,84 +18,6 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: KBabel 1.11.4\n"
 
-#: C/index.page:7(name)
-msgid "GNOME Documentation Team"
-msgstr "Equipo de documentaciÃn de GNOME"
-
-#: C/index.page:8(email) C/record-collection.js.page:13(email)
-#: C/image-viewer.cpp.page:13(email) C/image-viewer.c.page:13(email)
-#: C/guitar-tuner.vala.page:13(email) C/guitar-tuner.py.page:13(email)
-#: C/guitar-tuner.cpp.page:13(email) C/guitar-tuner.c.page:13(email)
-#: C/getting-ready.page:13(email)
-msgid "gnome-doc-list gnome org"
-msgstr "gnome-doc-list gnome org"
-
-#: C/index.page:9(years)
-msgid "2010, 2011"
-msgstr "2010, 2011"
-
-#: C/index.page:12(name) C/message-board.c.page:13(name)
-msgid "Shaun McCance"
-msgstr "Shaun McCance"
-
-#: C/index.page:13(email) C/message-board.c.page:14(email)
-msgid "shaunm gnome org"
-msgstr "shaunm gnome org"
-
-#: C/index.page:14(years) C/message-board.c.page:15(years)
-msgid "2010"
-msgstr "2010"
-
-#: C/index.page:17(name) C/record-collection.js.page:16(name)
-#: C/photo-wall.c.page:15(name) C/magic-mirror.vala.page:16(name)
-#: C/image-viewer.js.page:17(name) C/image-viewer.py.page:17(name)
-#: C/image-viewer.cpp.page:16(name) C/image-viewer.c.page:16(name)
-#: C/guitar-tuner.vala.page:16(name) C/guitar-tuner.py.page:16(name)
-#: C/guitar-tuner.cpp.page:16(name) C/guitar-tuner.c.page:16(name)
-msgid "Johannes Schmid"
-msgstr "Johannes Schmid"
-
-#: C/index.page:18(email) C/record-collection.js.page:17(email)
-#: C/photo-wall.c.page:16(email) C/magic-mirror.vala.page:17(email)
-#: C/image-viewer.js.page:18(email) C/image-viewer.py.page:18(email)
-#: C/image-viewer.cpp.page:17(email) C/image-viewer.c.page:17(email)
-#: C/guitar-tuner.vala.page:17(email) C/guitar-tuner.py.page:17(email)
-#: C/guitar-tuner.cpp.page:17(email) C/guitar-tuner.c.page:17(email)
-msgid "jhs gnome org"
-msgstr "jhs gnome org"
-
-#: C/index.page:19(years)
-msgid "2011"
-msgstr "2011"
-
-#: C/index.page:24(title)
-msgid "GNOME Developer Platform Demos"
-msgstr "Demostraciones de la plataforma de desarrollo de GNOME"
-
-#: C/index.page:27(title)
-msgid "Getting Ready"
-msgstr "CoÌmo empezar"
-
-#: C/index.page:31(title)
-msgid "C"
-msgstr "C"
-
-#: C/index.page:35(title)
-msgid "C++"
-msgstr "C++"
-
-#: C/index.page:39(title)
-msgid "JavaScript"
-msgstr "JavaScript"
-
-#: C/index.page:43(title)
-msgid "Python"
-msgstr "Python"
-
-#: C/index.page:47(title)
-msgid "Vala"
-msgstr "Vala"
-
 #. When image changes, this message will be marked fuzzy or untranslated for you.
 #. It doesn't matter what you translate it to: it's not used at all.
 #: C/record-collection.js.page:62(None)
@@ -110,19 +32,50 @@ msgstr ""
 "Cree una pequeÃa aplicaciÃn con una base de datos para ordenar su colecciÃn "
 "de mÃsica"
 
-#: C/record-collection.js.page:12(name) C/image-viewer.cpp.page:12(name)
-#: C/image-viewer.c.page:12(name) C/guitar-tuner.vala.page:12(name)
-#: C/guitar-tuner.py.page:12(name) C/guitar-tuner.cpp.page:12(name)
-#: C/guitar-tuner.c.page:12(name) C/getting-ready.page:12(name)
+#: C/record-collection.js.page:12(name) C/image-viewer.vala.page:12(name)
+#: C/image-viewer.cpp.page:12(name) C/image-viewer.c.page:12(name)
+#: C/guitar-tuner.vala.page:12(name) C/guitar-tuner.py.page:12(name)
+#: C/guitar-tuner.cpp.page:12(name) C/guitar-tuner.c.page:12(name)
+#: C/getting-ready.page:12(name) C/audio-player.vala.page:12(name)
 msgid "GNOME Documentation Project"
 msgstr "Proyecto de documentaciÃn de GNOME"
 
+#: C/record-collection.js.page:13(email) C/index.page:8(email)
+#: C/image-viewer.vala.page:13(email) C/image-viewer.cpp.page:13(email)
+#: C/image-viewer.c.page:13(email) C/guitar-tuner.vala.page:13(email)
+#: C/guitar-tuner.py.page:13(email) C/guitar-tuner.cpp.page:13(email)
+#: C/guitar-tuner.c.page:13(email) C/getting-ready.page:13(email)
+#: C/audio-player.vala.page:13(email)
+msgid "gnome-doc-list gnome org"
+msgstr "gnome-doc-list gnome org"
+
+#: C/record-collection.js.page:16(name) C/photo-wall.c.page:15(name)
+#: C/magic-mirror.vala.page:16(name) C/index.page:17(name)
+#: C/image-viewer.vala.page:16(name) C/image-viewer.py.page:17(name)
+#: C/image-viewer.js.page:17(name) C/image-viewer.cpp.page:16(name)
+#: C/image-viewer.c.page:16(name) C/guitar-tuner.vala.page:16(name)
+#: C/guitar-tuner.py.page:16(name) C/guitar-tuner.cpp.page:16(name)
+#: C/guitar-tuner.c.page:16(name)
+msgid "Johannes Schmid"
+msgstr "Johannes Schmid"
+
+#: C/record-collection.js.page:17(email) C/photo-wall.c.page:16(email)
+#: C/magic-mirror.vala.page:17(email) C/index.page:18(email)
+#: C/image-viewer.vala.page:17(email) C/image-viewer.py.page:18(email)
+#: C/image-viewer.js.page:18(email) C/image-viewer.cpp.page:17(email)
+#: C/image-viewer.c.page:17(email) C/guitar-tuner.vala.page:17(email)
+#: C/guitar-tuner.py.page:17(email) C/guitar-tuner.cpp.page:17(email)
+#: C/guitar-tuner.c.page:17(email)
+msgid "jhs gnome org"
+msgstr "jhs gnome org"
+
 #: C/record-collection.js.page:21(title)
 msgid "Record Collection"
 msgstr "ColecciÃn de mÃsica"
 
 #: C/record-collection.js.page:24(p) C/message-board.c.page:23(p)
-#: C/image-viewer.cpp.page:24(p) C/image-viewer.c.page:24(p)
+#: C/image-viewer.vala.page:28(p) C/image-viewer.cpp.page:24(p)
+#: C/image-viewer.c.page:24(p)
 msgid "In this tutorial, you will learn:"
 msgstr "En este tutorial aprenderÃ:"
 
@@ -182,19 +135,20 @@ msgstr ""
 
 #: C/record-collection.js.page:45(title) C/photo-wall.c.page:44(title)
 #: C/message-board.c.page:40(title) C/magic-mirror.vala.page:42(title)
-#: C/image-viewer.js.page:44(title) C/image-viewer.py.page:43(title)
-#: C/image-viewer.cpp.page:34(title) C/image-viewer.c.page:34(title)
-#: C/guitar-tuner.vala.page:40(title) C/guitar-tuner.py.page:40(title)
-#: C/guitar-tuner.cpp.page:40(title) C/guitar-tuner.c.page:40(title)
+#: C/image-viewer.vala.page:38(title) C/image-viewer.py.page:43(title)
+#: C/image-viewer.js.page:44(title) C/image-viewer.cpp.page:34(title)
+#: C/image-viewer.c.page:34(title) C/guitar-tuner.vala.page:40(title)
+#: C/guitar-tuner.py.page:40(title) C/guitar-tuner.cpp.page:40(title)
+#: C/guitar-tuner.c.page:40(title)
 msgid "Create a project in Anjuta"
 msgstr "Crear un proyecto en Anjuta"
 
 #: C/record-collection.js.page:46(p) C/photo-wall.c.page:45(p)
-#: C/magic-mirror.vala.page:43(p) C/image-viewer.js.page:45(p)
-#: C/image-viewer.py.page:44(p) C/image-viewer.cpp.page:35(p)
-#: C/image-viewer.c.page:35(p) C/guitar-tuner.vala.page:41(p)
-#: C/guitar-tuner.py.page:41(p) C/guitar-tuner.cpp.page:41(p)
-#: C/guitar-tuner.c.page:41(p)
+#: C/magic-mirror.vala.page:43(p) C/image-viewer.vala.page:39(p)
+#: C/image-viewer.py.page:44(p) C/image-viewer.js.page:45(p)
+#: C/image-viewer.cpp.page:35(p) C/image-viewer.c.page:35(p)
+#: C/guitar-tuner.vala.page:41(p) C/guitar-tuner.py.page:41(p)
+#: C/guitar-tuner.cpp.page:41(p) C/guitar-tuner.c.page:41(p)
 msgid ""
 "Before you start coding, you'll need to set up a new project in Anjuta. This "
 "will create all of the files you need to build and run the code later on. "
@@ -205,11 +159,11 @@ msgstr ""
 "cÃdigo mÃs adelante. TambiÃn es Ãtil para mantener todo ordenado."
 
 #: C/record-collection.js.page:49(p) C/photo-wall.c.page:48(p)
-#: C/magic-mirror.vala.page:46(p) C/image-viewer.js.page:48(p)
-#: C/image-viewer.py.page:47(p) C/image-viewer.cpp.page:38(p)
-#: C/image-viewer.c.page:38(p) C/guitar-tuner.vala.page:44(p)
-#: C/guitar-tuner.py.page:44(p) C/guitar-tuner.cpp.page:44(p)
-#: C/guitar-tuner.c.page:44(p)
+#: C/magic-mirror.vala.page:46(p) C/image-viewer.vala.page:44(p)
+#: C/image-viewer.py.page:47(p) C/image-viewer.js.page:48(p)
+#: C/image-viewer.cpp.page:38(p) C/image-viewer.c.page:38(p)
+#: C/guitar-tuner.vala.page:44(p) C/guitar-tuner.py.page:44(p)
+#: C/guitar-tuner.cpp.page:44(p) C/guitar-tuner.c.page:44(p)
 msgid ""
 "Start Anjuta and click <guiseq><gui>File</gui><gui>New</gui><gui>Project</"
 "gui></guiseq> to open the project wizard."
@@ -383,8 +337,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:190(p)
 msgid ""
@@ -668,8 +622,8 @@ msgstr ""
 "parÃmetros, consulte la <link href=\"http://library.gnome.org/devel/libgda/";
 "stable/\">documentaciÃn de GDA</link>."
 
-#: C/record-collection.js.page:284(title) C/image-viewer.js.page:305(title)
-#: C/image-viewer.py.page:219(title) C/guitar-tuner.py.page:221(title)
+#: C/record-collection.js.page:284(title) C/image-viewer.py.page:219(title)
+#: C/image-viewer.js.page:305(title) C/guitar-tuner.py.page:221(title)
 msgid "Run the application"
 msgstr "Ejecutar la aplicaciÃn"
 
@@ -683,11 +637,11 @@ msgstr ""
 "registros."
 
 #: C/record-collection.js.page:289(title) C/photo-wall.c.page:377(title)
-#: C/magic-mirror.vala.page:142(title) C/image-viewer.js.page:310(title)
-#: C/image-viewer.py.page:224(title) C/image-viewer.cpp.page:212(title)
-#: C/image-viewer.c.page:220(title) C/guitar-tuner.vala.page:243(title)
-#: C/guitar-tuner.py.page:226(title) C/guitar-tuner.cpp.page:255(title)
-#: C/guitar-tuner.c.page:255(title)
+#: C/magic-mirror.vala.page:142(title) C/image-viewer.vala.page:222(title)
+#: C/image-viewer.py.page:224(title) C/image-viewer.js.page:310(title)
+#: C/image-viewer.cpp.page:212(title) C/image-viewer.c.page:220(title)
+#: C/guitar-tuner.vala.page:243(title) C/guitar-tuner.py.page:226(title)
+#: C/guitar-tuner.cpp.page:255(title) C/guitar-tuner.c.page:255(title)
 msgid "Reference Implementation"
 msgstr "ImplementaciÃn de referencia"
 
@@ -1354,9 +1308,10 @@ msgstr ""
 "LÃnea 7: dependiendo de quà valor booleano se pasa, el <code>ClutterActor</"
 "code> se establecerà para que responda o no a eventos."
 
-#: C/photo-wall.c.page:369(title) C/image-viewer.cpp.page:206(title)
-#: C/image-viewer.c.page:214(title) C/guitar-tuner.vala.page:237(title)
-#: C/guitar-tuner.cpp.page:249(title) C/guitar-tuner.c.page:249(title)
+#: C/photo-wall.c.page:369(title) C/image-viewer.vala.page:214(title)
+#: C/image-viewer.cpp.page:206(title) C/image-viewer.c.page:214(title)
+#: C/guitar-tuner.vala.page:237(title) C/guitar-tuner.cpp.page:249(title)
+#: C/guitar-tuner.c.page:249(title)
 msgid "Build and run the application"
 msgstr "Construir y ejecutar la aplicaciÃn"
 
@@ -1423,6 +1378,18 @@ msgstr ""
 msgid "A simple program using WebKitGTK+ and the DOM."
 msgstr "Un programa sencillo usando WebKitGTK+ y el DOM."
 
+#: C/message-board.c.page:13(name) C/index.page:12(name)
+msgid "Shaun McCance"
+msgstr "Shaun McCance"
+
+#: C/message-board.c.page:14(email) C/index.page:13(email)
+msgid "shaunm gnome org"
+msgstr "shaunm gnome org"
+
+#: C/message-board.c.page:15(years) C/index.page:14(years)
+msgid "2010"
+msgstr "2010"
+
 #: C/message-board.c.page:20(title)
 msgid "Message Board"
 msgstr "Cuadro de mensajes"
@@ -2119,15 +2086,15 @@ msgstr ""
 msgid "Grab photos off your webcam"
 msgstr "Obtener las fotos de su cÃmara web"
 
-#: C/magic-mirror.vala.page:31(p) C/image-viewer.js.page:33(p)
-#: C/image-viewer.py.page:33(p) C/guitar-tuner.vala.page:30(p)
+#: C/magic-mirror.vala.page:31(p) C/image-viewer.py.page:33(p)
+#: C/image-viewer.js.page:33(p) C/guitar-tuner.vala.page:30(p)
 #: C/guitar-tuner.py.page:30(p) C/guitar-tuner.cpp.page:30(p)
 #: C/guitar-tuner.c.page:30(p)
 msgid "You'll need the following to be able to follow this tutorial:"
 msgstr "Necesitarà lo siguiente para poder seguir este tutorial:"
 
-#: C/magic-mirror.vala.page:33(p) C/image-viewer.js.page:35(p)
-#: C/image-viewer.py.page:35(p) C/guitar-tuner.vala.page:32(p)
+#: C/magic-mirror.vala.page:33(p) C/image-viewer.py.page:35(p)
+#: C/image-viewer.js.page:35(p) C/guitar-tuner.vala.page:32(p)
 #: C/guitar-tuner.py.page:32(p) C/guitar-tuner.cpp.page:32(p)
 #: C/guitar-tuner.c.page:32(p)
 msgid "An installed copy of the <link xref=\"getting-ready\">Anjuta IDE</link>"
@@ -2183,9 +2150,10 @@ msgstr ""
 "magico.vala</file> desde las pestanÌas <gui>Proyecto</gui> o <gui>Archivo</"
 "gui>. DeberiÌa ver algo de coÌdigo que comience con las liÌneas:"
 
-#: C/magic-mirror.vala.page:70(title) C/image-viewer.cpp.page:60(title)
-#: C/image-viewer.c.page:58(title) C/guitar-tuner.vala.page:63(title)
-#: C/guitar-tuner.cpp.page:63(title) C/guitar-tuner.c.page:63(title)
+#: C/magic-mirror.vala.page:70(title) C/image-viewer.vala.page:66(title)
+#: C/image-viewer.cpp.page:60(title) C/image-viewer.c.page:58(title)
+#: C/guitar-tuner.vala.page:63(title) C/guitar-tuner.cpp.page:63(title)
+#: C/guitar-tuner.c.page:63(title)
 msgid "Build the code for the first time"
 msgstr "Construir el cÃdigo por primera vez"
 
@@ -2226,14 +2194,15 @@ 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:85(p) C/image-viewer.cpp.page:76(p)
-#: C/image-viewer.c.page:77(p) C/guitar-tuner.vala.page:79(p)
-#: C/guitar-tuner.cpp.page:78(p) C/guitar-tuner.c.page:82(p)
+#: C/magic-mirror.vala.page:85(p) C/image-viewer.vala.page:86(p)
+#: C/image-viewer.cpp.page:76(p) C/image-viewer.c.page:77(p)
+#: C/guitar-tuner.vala.page:79(p) C/guitar-tuner.cpp.page:78(p)
+#: C/guitar-tuner.c.page:82(p)
 msgid ""
 "This code is ready to be used, so you can compile it by clicking "
 "<guiseq><gui>Build</gui><gui>Build Project</gui></guiseq> (or press "
@@ -2243,7 +2212,8 @@ msgstr ""
 "<guiseq><gui>Construir</gui><gui>Construir proyecto</gui></guiseq> (o "
 "pulsando <keyseq><key>MayÃs</key><key>F7</key></keyseq>)."
 
-#: C/magic-mirror.vala.page:86(p) C/guitar-tuner.vala.page:80(p)
+#: C/magic-mirror.vala.page:86(p) C/image-viewer.vala.page:87(p)
+#: C/guitar-tuner.vala.page:80(p)
 msgid ""
 "Change the <gui>Configuration</gui> to <gui>Default</gui> and then press "
 "<gui>Execute</gui> to configure the build directory. You only need to do "
@@ -2356,447 +2326,739 @@ msgstr ""
 "impresionar a sus amigos y colegas con una impresionante aplicaciÃn que ha "
 "hecho en 15 minutos."
 
+#: C/index.page:7(name)
+msgid "GNOME Documentation Team"
+msgstr "Equipo de documentaciÃn de GNOME"
+
+#: C/index.page:9(years)
+msgid "2010, 2011"
+msgstr "2010, 2011"
+
+#: C/index.page:19(years)
+msgid "2011"
+msgstr "2011"
+
+#: C/index.page:24(title)
+msgid "GNOME Developer Platform Demos"
+msgstr "Demostraciones de la plataforma de desarrollo de GNOME"
+
+#: C/index.page:27(title)
+msgid "Getting Ready"
+msgstr "CoÌmo empezar"
+
+#: C/index.page:31(title)
+msgid "C"
+msgstr "C"
+
+#: C/index.page:35(title)
+msgid "C++"
+msgstr "C++"
+
+#: C/index.page:39(title)
+msgid "JavaScript"
+msgstr "JavaScript"
+
+#: C/index.page:43(title)
+msgid "Python"
+msgstr "Python"
+
+#: C/index.page:47(title)
+msgid "Vala"
+msgstr "Vala"
+
 #. When image changes, this message will be marked fuzzy or untranslated for you.
 #. It doesn't matter what you translate it to: it's not used at all.
-#: C/image-viewer.js.page:41(None) C/image-viewer.py.page:40(None)
-#: C/image-viewer.cpp.page:31(None) C/image-viewer.c.page:31(None)
+#: C/image-viewer.vala.page:35(None) C/image-viewer.py.page:40(None)
+#: C/image-viewer.js.page:41(None) C/image-viewer.cpp.page:31(None)
+#: C/image-viewer.c.page:31(None)
 msgid "@@image: 'media/image-viewer.png'; md5=7720360611243b14283b83527be968c2"
 msgstr ""
 "@@image: 'media/image-viewer.png'; md5=7720360611243b14283b83527be968c2"
 
-#: C/image-viewer.js.page:9(desc)
-msgid ""
-"A little bit more than a simple \"Hello world\" application - write an image "
-"viewer in GTK. Includes an introduction to the JavaScript language."
-msgstr ""
-"Algo mÃs que una sencilla aplicaciÃn ÂHola mundoÂ; escribir un visor de "
-"imÃgenes en GTK. Incluye una introducciÃn al lenguaje JavaScript."
+#: C/image-viewer.vala.page:8(desc) C/image-viewer.c.page:8(desc)
+msgid "A little bit more than a simple \"Hello world\" Gtk application."
+msgstr "Algo mÃs que una sencilla aplicaciÃn ÂHola mundo en GTK."
 
-#: C/image-viewer.js.page:13(name) C/image-viewer.py.page:13(name)
-msgid "Jonh Wendell"
-msgstr "Jonh Wendell"
+#: C/image-viewer.vala.page:20(name)
+msgid "Philip Chimento"
+msgstr "Philip Chimento"
 
-#: C/image-viewer.js.page:14(email) C/image-viewer.py.page:14(email)
-msgid "jwendell gnome org"
-msgstr "jwendell gnome org"
+#: C/image-viewer.vala.page:21(email)
+msgid "philip chimento gmail com"
+msgstr "philip chimento gmail com"
 
-#: C/image-viewer.js.page:23(title) C/image-viewer.py.page:23(title)
-#: C/image-viewer.cpp.page:21(title) C/image-viewer.c.page:21(title)
+#: C/image-viewer.vala.page:25(title) C/image-viewer.py.page:23(title)
+#: C/image-viewer.js.page:23(title) C/image-viewer.cpp.page:21(title)
+#: C/image-viewer.c.page:21(title)
 msgid "Image Viewer"
 msgstr "Visor de imÃgenes"
 
-#: C/image-viewer.js.page:26(p) C/image-viewer.py.page:26(p)
-msgid ""
-"In this tutorial, we're going to write a very simple GTK application that "
-"loads and displays an image file. You will learn how to:"
-msgstr ""
-"En este tutorial se va a escribir una aplicaciÃn GTK+ muy sencilla que carga "
-"un archivo e imagen y lo muestra. Aprenderà a:"
-
-#: C/image-viewer.js.page:28(p)
-msgid "Write a basic GTK user interface in JavaScript"
-msgstr "Escribir una interfaz GTK+ de usuario bÃsica usando JavaScript"
-
-#: C/image-viewer.js.page:29(p) C/image-viewer.py.page:29(p)
-msgid "Deal with events by connecting signals to signal handlers"
-msgstr "Trabajar con eventos conectando seÃales a manejadores de seÃales"
-
-#: C/image-viewer.js.page:30(p) C/image-viewer.py.page:30(p)
-msgid "Lay out GTK user interfaces using containers"
-msgstr "La disposiciÃn de las interfaces de usuario usando contenedores"
-
-#: C/image-viewer.js.page:31(p) C/image-viewer.py.page:31(p)
-msgid "Load and display image files"
-msgstr "Cargar y mostrar archivos de imagen"
-
-#: C/image-viewer.js.page:36(p)
-msgid "An installed copy of the <em>gjs</em> interpreter"
-msgstr "Una copia instalada del intÃrprete <em>gjs</em>"
+#: C/image-viewer.vala.page:30(p)
+#, fuzzy
+#| msgid "Some basic concepts of C/GObject programming"
+msgid "Some basic concepts of GObject programming"
+msgstr "Algunos conceptos bÃsicos de programaciÃn en C/GObject"
 
-#: C/image-viewer.js.page:37(p)
-msgid "Basic knowledge of any object-orientated programming language"
-msgstr ""
-"Conocimiento bÃsico de cualquier lenguaje de programaciÃn orientado a objetos"
+#: C/image-viewer.vala.page:31(p)
+#, fuzzy
+#| msgid "How to write a Gtk application in C"
+msgid "How to write a Gtk application in Vala"
+msgstr "CoÌmo escribir una aplicacioÌn GTK en C"
 
-#: C/image-viewer.js.page:51(p)
+#: C/image-viewer.vala.page:47(p)
+#, fuzzy
+#| msgid ""
+#| "Choose <gui>Gtk+ (Simple)</gui> from the <gui>C</gui> tab, click "
+#| "<gui>Forward</gui>, and fill out your details on the next few pages. Use "
+#| "<file>image-viewer</file> as project name and directory."
 msgid ""
-"Choose <gui>Generic Javascript</gui> from the <gui>JS</gui> tab, click "
+"Choose <gui>Gtk+ (Simple)</gui> from the <gui>Vala</gui> tab, click "
 "<gui>Forward</gui>, and fill out your details on the next few pages. Use "
 "<file>image-viewer</file> as project name and directory."
 msgstr ""
-"Elija <gui>Javascript genÃrico</gui> de la pestaÃa <gui>JS</gui>, pulse "
-"<gui>Adelante</gui> y rellene los detalles en las siguientes pÃginas. Use "
-"<file>visor-imÃgenes</file> como nombre de proyecto y de carpeta."
+"Seleccione <gui>Gtk+ (simple)</gui> en la pestaÃa <gui>C</gui>, pulse "
+"<gui>Siguiente</gui>, y rellene los detalles en las siguientes pÃginas. Use "
+"<file>visor-imagenes</file> como nombre del proyecto y de la carpeta."
 
-#: C/image-viewer.js.page:54(p)
+#: C/image-viewer.vala.page:51(p)
+#, fuzzy
+#| msgid ""
+#| "Make sure that <gui>Use GtkBuilder for user interface</gui> is disabled "
+#| "as we will create the UI manually in this tutorial. Check the <link xref="
+#| "\"guitar-tuner.c\">Guitar-Tuner</link> tutorial if you want to learn how "
+#| "to use the interface builder."
 msgid ""
-"Click <gui>Apply</gui> and the project will be created for you. Open "
-"<file>src/main.js</file> from the <gui>Project</gui> or <gui>File</gui> "
-"tabs. It contains very basic example code."
+"Make sure that <gui>Use GtkBuilder for user interface</gui> is disabled as "
+"we will create the UI manually in this tutorial. Check the <link xref="
+"\"guitar-tuner.vala\">Guitar-Tuner</link> tutorial if you want to learn how "
+"to use the interface builder."
 msgstr ""
-"Pulse <gui>Aplicar</gui> y se crearaÌ el proyecto. Abra <file>src/main.js</"
-"file> desde las pestanÌas <gui>Proyecto</gui> o <gui>Archivo</gui>. Contiene "
-"un ejemplo de cÃdigo muy bÃsico:"
-
-#: C/image-viewer.js.page:61(title)
-msgid "JavaScript basics: Hello World"
-msgstr "JavaScript bÃsico: hola mundo"
+"AsegÃrese de que <gui>Usar GtkBuilder para la interfaz del usuario</gui> "
+"està desactivado, ya que, en este tutorial, la IU se crearà manualmente. "
+"Revise el tutorial del <link xref=\"guitar-tuner.c\">afinador de guitarra</"
+"link> si quiere aprender a usar el constructor de interfaces."
 
-#: C/image-viewer.js.page:62(p)
+#: C/image-viewer.vala.page:55(p)
+#, fuzzy
+#| msgid ""
+#| "Click <gui>Apply</gui> and the project will be created for you. Open "
+#| "<file>src/main.c</file> from the <gui>Project</gui> or <gui>File</gui> "
+#| "tabs. You should see some code which starts with the lines:"
 msgid ""
-"Before we start writing the image viewer, let's find out more about the way "
-"JavaScript is used in GNOME. Of course, your very first contact with any "
-"programming language should be the Hello World program which can already be "
-"found in <file>main.js</file>:"
+"Click <gui>Apply</gui> and the project will be created for you. Open "
+"<file>src/main.vala</file> from the <gui>Project</gui> or <gui>File</gui> "
+"tabs. You should see some code which starts with the lines:"
 msgstr ""
-"Antes de empezar a escribir el visor de imÃgenes, averigÃe algo mÃs sobre "
-"cÃmo se usa JavaScript en GNOME. Por supuesto que su primer contacto con un "
-"lenguaje de programaciÃn debe ser el programa ÂHola mundoÂ, que se puede "
-"encontrar en el archivo <file>main.js</file>:"
-
-#: C/image-viewer.js.page:63(code)
-#, no-wrap
-msgid "print (\"Hello world!\");"
-msgstr "print (\"ÂHola mundo!\");"
+"Pulse <gui>Aplicar</gui> y se crearà el proyecto. Abra <file>src/main.c</"
+"file> desde las pestaÃas <gui>Proyecto</gui> o <gui>Archivo</gui>. DeberÃa "
+"ver algo de cÃdigo que comience con las lÃneas:"
 
-#: C/image-viewer.js.page:64(p)
+#: C/image-viewer.vala.page:67(p) C/guitar-tuner.vala.page:64(p)
 msgid ""
-"This should look quite natural if you're familiar with almost any other "
-"programming language. The function <code>print</code> is called with the "
-"argument <code>\"Hello world!\"</code>, which will be printed on the screen. "
-"Note that each line of code ends with a semicolon."
+"The code loads an (empty) window from the user interface description file "
+"and shows it. More details are given below; skip this list if you understand "
+"the basics:"
 msgstr ""
-"Esto deberÃa resultarle natural si està familiarizado con la mayorÃa del "
-"resto de lenguajes de programaciÃn. La funciÃn <code>print</code> se llama "
-"con el argumento <code>\"ÂHola mundo!\"</code>, que se mostrarà en la "
-"pantalla. Tenga en cuenta que cada lÃnea de cÃdigo termina en Â;Â."
-
-#: C/image-viewer.js.page:68(title)
-msgid "Classes in JavaScript"
-msgstr "Clases en JavaScript"
-
-#: C/image-viewer.js.page:69(p)
-msgid "This is the standard way to define a class in JavaScript:"
-msgstr "Esta es la manera estÃndar de definir una clase en JavaScript:"
+"El cÃdigo carga una ventana (vacÃa) desde el archivo de descripciÃn de "
+"interfaz de usuario y la muestra. Se ofrecen mÃs detalles a continuaciÃn; "
+"omita esta lista si entiende los conceptos bÃsicos:"
 
-#: C/image-viewer.js.page:92(p)
+#: C/image-viewer.vala.page:72(p)
+#, fuzzy
+#| msgid ""
+#| "The two <code>using</code> lines import namespaces so we don't have to "
+#| "name them explicitly."
 msgid ""
-"This defines a class called <code>MyClass</code>. Let's go through each part "
-"of the class definition:"
+"The two <code>using</code> lines at the top import namespaces so we don't "
+"have to name them explicitly."
 msgstr ""
-"Esto define una clase llamada <code>MyClass</code>. Vea cada una de las "
-"partes de la definiciÃn de la clase:"
+"Las dos lÃneas <code>using</code> importan espacios de nombres, por lo que "
+"no hay que nombrarlas explÃcitamente."
 
-#: C/image-viewer.js.page:95(p)
+#: C/image-viewer.vala.page:75(p)
+#, fuzzy
+#| msgid ""
+#| "The <code>create_window</code> function creates a new (empty) window and "
+#| "connects a signal to exit the application when that window is closed."
 msgid ""
-"<code>function MyClass</code> is the constructor of the class â its name "
-"must match the class's name. You can access any member of the class by using "
-"the <code>this</code> object; here, the constructor calls the class's "
-"<code>_init</code> method."
+"The constructor of the <code>Main</code> class creates a new (empty) window "
+"and connects a signal to exit the application when that window is closed."
 msgstr ""
-"<code>function MyClass</code> es el constructor de la clase; su nombre debe "
-"coincidir con el de la clase. Puede acceder a cualquier miembro de la clase "
-"usando el objeto <code>this</code>; aquÃ, el constructor llama al mÃtodo "
-"<code>_init</code> de la clase."
+"La funciÃn <code>create_window</code> crea una ventana (vacÃa) nueva y "
+"conecta una seÃal para salir de la aplicaciÃn cuando se cierra esa ventana."
 
-#: C/image-viewer.js.page:98(p)
+#: C/image-viewer.vala.page:76(p) C/image-viewer.c.page:67(p)
+#: C/guitar-tuner.vala.page:72(p) C/guitar-tuner.c.page:72(p)
 msgid ""
-"The <code>MyClass.prototype</code> block is where you define the "
-"<em>structure</em> of the class. Each class is made up of methods "
-"(functions) and fields (variables); there are three methods and two fields "
-"in this example."
+"Connecting signals is how you define what happens when you push a button, or "
+"when some other event happens. Here, the <code>destroy</code> function is "
+"called (and quits the app) when you close the window."
 msgstr ""
-"El bloque <code>MyClass.prototype</code> es donde define la <em>estructura</"
-"em> de la clase. Cada clase se compone de mÃtodos (funciones) y campos "
-"(variables); en este ejemplo, hay tres mÃtodos y dos campos."
+"Conectar seÃales es como se define lo que pasa cuando pulsa un botÃn, o "
+"cuando ocurre algÃn otro evento. AquÃ, se llama a la funciÃn <code>destroy</"
+"code> (y se sale de la aplicaciÃn) cuando cierra la ventana."
 
-#: C/image-viewer.js.page:101(p)
-msgid ""
-"The first method defined here is called <code>_init</code>, and we specify "
-"that it is a function with no arguments:"
+#: C/image-viewer.vala.page:80(p)
+#, fuzzy
+#| msgid ""
+#| "The static <code>main</code> function is run by default when you start a "
+#| "Vala application. It calls a few functions which create the Main class, "
+#| "set up and then run the application. The <code>Gtk.main</code> function "
+#| "starts the GTK main loop, which runs the user interface and starts "
+#| "listening for events (like clicks and key presses)."
+msgid ""
+"The <code>static main</code> function is run by default when you start a "
+"Vala application. It calls a few functions which create the <code>Main</"
+"code> class, set up and then run the application. The <code>Gtk.main</code> "
+"function starts the GTK main loop, which runs the user interface and starts "
+"listening for events (like clicks and key presses)."
 msgstr ""
-"El primer mÃtodo definido se llama <code>_init</code>, y se especifica que "
-"es una funciÃn sin argumentos:"
+"La funciÃn estÃtica <code>main</code> se ejecuta de manera predeterminada "
+"cuando inicia una aplicaciÃn en Vala. Llama a algunas funciones que crean la "
+"clase ÂMain y 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/image-viewer.js.page:102(code)
-#, no-wrap
-msgid "_init: function ()"
-msgstr "_init: function ()"
+#: C/image-viewer.vala.page:92(title) C/image-viewer.cpp.page:81(title)
+#: C/image-viewer.c.page:82(title)
+msgid "Creating the user interface"
+msgstr "Crear la interfaz de usuario"
 
-#: C/image-viewer.js.page:103(p)
+#: C/image-viewer.vala.page:93(p)
+#, fuzzy
+#| msgid ""
+#| "Now we will bring life into the empty window. GTK organizes the user "
+#| "interface with <code>GtkContainer</code>s that can contain other widgets "
+#| "and even other containers. Here we will use the simplest available "
+#| "container, a <code>GtkBox</code>:"
 msgid ""
-"We write the function inside some curly braces. Two fields are defined here, "
-"<code>propertyA</code> and <code>propertyB</code>. The first is set to a "
-"string and the second is set to an integer (10). The function doesn't return "
-"any value."
+"Now we will bring life into the empty window. GTK organizes the user "
+"interface with <code>Gtk.Container</code>s that can contain other widgets "
+"and even other containers. Here we will use the simplest available "
+"container, a <code>Gtk.Box</code>. Add the following lines to the top of the "
+"<code>Main</code> class instead of the constructor that is already there:"
 msgstr ""
-"Se escribe la funciÃn entre corchetes. Aquà se definen dos campos, "
-"<code>propertyA</code> y <code>propertyB</code>. La primera se establece "
-"como una cadena, y la segunda se establece como un entero (10). La funciÃn "
-"no retorna ningÃn valor."
+"Ahora se darà vida a la ventana vacÃa. GTK+ organiza la interfaz de usuario "
+"con varios <code>GtkContainer</code> que pueden contener otros widgets e "
+"incluso otros contenedores. Aquà se usarà el contenedor mÃs sencillo "
+"disponible, una <code>GtkBox</code>:"
 
-#: C/image-viewer.js.page:106(p)
+#: C/image-viewer.vala.page:124(p)
 msgid ""
-"The next method is called <code>aMethod</code> and has two arguments, which "
-"it prints out when you call it. The final method is <code>dumpProperties</"
-"code>, and prints the fields <code>propertyA</code> and <code>propertyB</"
-"code>."
+"The first two lines are the parts of the GUI that we will need to access "
+"from more than one method. We declare them up here so that they are "
+"accessible throughout the class instead of only in the method where they are "
+"created."
 msgstr ""
-"El siguiente mÃtodo se llama <code>aMethod</code> y tiene dos argumentos que "
-"imprime cuando se invoca. El Ãltimo mÃtodo es <code>dumpProperties</code>, "
-"que imprime los campos <code>propertyA</code> y <code>propertyB</code>."
 
-#: C/image-viewer.js.page:109(p)
+#: C/image-viewer.vala.page:128(p)
+#, fuzzy
+#| msgid ""
+#| "The first lines create the widgets we want to use: a button for opening "
+#| "up an image, the image view widget itself and the box we will use as a "
+#| "container."
 msgid ""
-"Note how the class definition (prototype) is arranged; each function "
-"definition is separated by a comma."
+"The first lines of the constructor are similar to the lines that were "
+"already there to create the empty window. The next lines create the widgets "
+"we want to use: a button for opening up an image, the image view widget "
+"itself and the box we will use as a container."
 msgstr ""
-"Tenga en cuenta cÃmo se ordena la definiciÃn de la clase (prototipo); cada "
-"definiciÃn de funciÃn se separa con una coma."
-
-#: C/image-viewer.js.page:113(p)
-msgid "Now that MyClass has been defined, we can play with it:"
-msgstr "Ahora que ÂMyClass se ha definido, se puede jugar con ella:"
+"La primera lÃnea crea los widgets que se quieren usar: un botÃn para abrir "
+"una imagen, el widget del visor de imÃgenes en sà y la caja que se usarà "
+"como contenedor."
 
-#: C/image-viewer.js.page:119(p)
+#: C/image-viewer.vala.page:132(p)
+#, fuzzy
+#| msgid ""
+#| "The calls to <code>pack_start</code> add the two widgets to the box and "
+#| "define their behaviour. The image will expand into any available space "
+#| "while the button will just be as big as needed. You will notice that we "
+#| "don't set explicit sizes on the widgets. In GTKmm this is usually not "
+#| "needed as it makes it much easier to have a layout that looks good in "
+#| "different window sizes. Next, the box is added to the window."
 msgid ""
-"This code creates a new instance of the class called <code>o</code>, runs "
-"<code>aMethod</code>, changes <code>propertyA</code> to a different string, "
-"and then calls <code>dumpProperties</code> (which outputs the fields)."
+"The calls to <code>pack_start</code> add the two widgets to the box and "
+"define their behaviour. The image will expand into any available space "
+"whereas the button will just be as big as needed. You will notice that we "
+"don't set explicit sizes on the widgets. In GTK this is usually not needed "
+"as it makes it much easier to have a layout that looks good in different "
+"window sizes. Next, the box is added to the window."
 msgstr ""
-"Este cÃdigo crear una instancia nueva de la clase llamada <code>o</code>, "
-"ejecuta <code>aMethod</code>, cambia <code>propertyA</code> a una cadena "
-"diferente y entonces llama a <code>dumpProperties</code> (que muestra los "
-"campos)."
+"Las llamadas a <code>pack_start</code> aÃaden los dos widgets a la caja y "
+"definen su comportamiento. La imagen se expandirà en cualquier espacio "
+"disponible, mientras que el botÃn serà tan grande como se necesite. Se darà "
+"cuenta de que no se establecen tamaÃos explÃcitos de los widgets. "
+"Generalmente, en GTKmm no se necesita ya que hace que sea mucho mÃs sencillo "
+"tener una distribuciÃn que se ve bien con diferentes tamaÃos de la ventana. "
+"A continuaciÃn, se aÃade la caja a la ventana."
 
-#: C/image-viewer.js.page:120(p)
+#: C/image-viewer.vala.page:139(p)
+#, fuzzy
+#| msgid ""
+#| "We need to define what happens when the user clicks on the button. GTK "
+#| "uses the concept of <em>signals</em>. When the button is clicked, it "
+#| "fires the <em>clicked</em> signal, which we can connect to some action. "
+#| "This is done using the <code>g_signal_connect</code> function which tells "
+#| "GTK to call the <code>on_image_open</code> function when the button is "
+#| "clicked and to pass the image as an additional argument to that function. "
+#| "We will define the <em>callback</em> in the next section."
 msgid ""
-"Save the code in the <file>main.js</file> and then run it by using "
-"<guiseq><gui>Run</gui><gui>Execute</gui></guiseq> from the menu or using the "
-"toolbar."
+"We need to define what happens when the user clicks on the button. GTK uses "
+"the concept of <em>signals</em>. When the button is clicked, it fires the "
+"<code>clicked</code> signal, which we can connect to some action. This is "
+"done using the <code>connect</code> method of the button's <code>clicked</"
+"code> signal, which tells GTK to call the <code>on_image_open</code> method "
+"when the button is clicked. We will define the <em>callback</em> in the next "
+"section. In the callback, we need to access the <code>window</code> and "
+"<code>image</code> widgets, which is why we defined them as private members "
+"at the top of our class."
 msgstr ""
-"Guarde el cÃdigo en el archivo <file>main.js</file> y ejecÃtelo usando "
-"<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq> desde el menà o "
-"usando la barra de herramientas."
-
-#: C/image-viewer.js.page:125(title) C/image-viewer.py.page:64(title)
-msgid "A first Gtk application"
-msgstr "Una primera aplicaciÃn en GTK"
+"Se debe definir queÌ sucede cuando el usuario pulsa el botoÌn. GTK+ usa el "
+"concepto de <em>senÌales</em>. Cuando se pulsa el botoÌn, emite la senÌal "
+"<em>clicked</em>, que se puede conectar a alguna accioÌn. Esto se ha hecho "
+"usando el meÌtodo <code>g_signal_connect</code>, que indica a GTK+ que llame "
+"a la funcioÌn <code>on_image_open</code> cuando se pulsa el botoÌn y que pase "
+"la imagen como un argumento adicional a la funcioÌn. El <em>retorno de la "
+"llamada</em> se definiraÌ en la siguiente seccioÌn."
 
-#: C/image-viewer.js.page:126(p)
-msgid "Let's see what a very basic Gtk application looks like in JavaScript:"
-msgstr "Vea como queda una aplicaciÃn GTK+ muy bÃsica en JavaScript:"
+#: C/image-viewer.vala.page:146(p)
+msgid ""
+"The last <code>connect</code> call makes sure that the application exits "
+"when the window is closed. The code generated by Anjuta called an "
+"<code>on_destroy</code> method which called <code>Gtk.main_quit</code>, but "
+"just connecting our signal to <code>main_quit</code> directly is easier. You "
+"can delete the <code>on_destroy</code> method."
+msgstr ""
 
-#: C/image-viewer.js.page:136(p) C/image-viewer.py.page:89(p)
-msgid "Let's take a look at what's happening:"
-msgstr "Eche un vistazo a lo que està pasando:"
+#: C/image-viewer.vala.page:153(title) C/image-viewer.cpp.page:141(title)
+#: C/image-viewer.c.page:147(title)
+msgid "Showing the image"
+msgstr "Mostrar la imagen"
 
-#: C/image-viewer.js.page:139(p) C/image-viewer.py.page:92(p)
+#: C/image-viewer.vala.page:154(p)
+#, fuzzy
+#| msgid ""
+#| "We will now define the signal handler for the <em>clicked</em> signal or "
+#| "the button we mentioned before. Add this code before the <code>main</"
+#| "code> method."
 msgid ""
-"The first line imports the Gtk namespace (that is, it includes the Gtk "
-"library). The libraries are provided by GObject Introspection (gi), which "
-"provides language bindings for many GNOME libraries."
+"We will now define the signal handler for the <code>clicked</code> signal "
+"for the button we mentioned before. Add this code after the constructor:"
 msgstr ""
-"La primera lÃnea importa el espacio de nombres de GTK+ (es decir, incluye la "
-"biblioteca GTK+). Las bibliotecas las proporciona ÂGObject Introspection "
-"(gi)Â, que implementa asociaciones de lenguajes para la mayorÃa de las "
-"bilbiotecas de GNOME."
+"Ahora se definirà el manejador de la seÃal <em>clicked</em> para el botÃn "
+"mencionado anteriormente. AÃada este cÃdigo antes del mÃtodo <code>main</"
+"code>."
 
-#: C/image-viewer.js.page:142(p)
+#: C/image-viewer.vala.page:181(p) C/image-viewer.py.page:191(p)
+#: C/image-viewer.js.page:277(p) C/image-viewer.cpp.page:172(p)
+#: C/image-viewer.c.page:184(p)
 msgid ""
-"<code>Gtk.init</code> initializes the Gtk library; this statement is "
-"mandatory for all Gtk programs."
+"This is a bit more complicated than anything we've attempted so far, so "
+"let's break it down:"
 msgstr ""
-"<code>Gtk.init</code> inicializa la biblioteca GTK; esta sentencia es "
-"obligatoria para todos los programas GTK."
+"Esto es un poco mÃs complicado que todo lo que se ha intentado hasta ahora, "
+"asà que se puede desglosar:"
 
-#: C/image-viewer.js.page:145(p)
+#: C/image-viewer.vala.page:184(p)
+#, fuzzy
+#| msgid ""
+#| "The argument to the signal is the image object that we passed while "
+#| "connecting the signal. Sometimes there are other arguments related to the "
+#| "signal, but <em>clicked</em> doesn't have any."
 msgid ""
-"The next line creates the main window by creating a new <code>Gtk.Window</"
-"code> object. You can pass several properties to the window's constructor by "
-"using the syntax <code>{property: value, property: value, ...}</code>. In "
-"this case we are setting the title of the window."
+"The first argument of the signal is always the widget that sent the signal. "
+"Sometimes other arguments related to the signal come after that, but "
+"<em>clicked</em> doesn't have any."
 msgstr ""
-"La siguiente lÃnea crea la ventana principal creando un objeto <code>Gtk."
-"Window</code>. Puede pasar varias propiedades al constructor de la ventana "
-"usando la sintaxis <code>{property: value, property: value, ...}</code>. En "
-"este caso, se està estableciendo el tÃtulo de la ventana."
+"El argumento de la seÃal es el objeto de imagen que se pasa al conectar la "
+"seÃal. A veces hay otros argumentos relativos a la seÃal, pero <em>clicked</"
+"em> no tiene ninguno."
 
-#: C/image-viewer.js.page:146(p)
+#: C/image-viewer.vala.page:188(p)
+#, fuzzy
+#| msgid ""
+#| "The next interesting line is where the dialog for choosing the file is "
+#| "created using <code>gtk_file_chooser_dialog_new</code>. The function "
+#| "takes the title of the dialog, the parent window of the dialog and "
+#| "several options like the number of buttons and their corresponding values."
 msgid ""
-"The next line explicitly shows the window. In Gtk, every widget is hidden by "
-"default."
+"The next interesting line is where the dialog for choosing the file is "
+"created. <code>FileChooserDialog</code>'s constructor takes the title of the "
+"dialog, the parent window of the dialog and several options like the number "
+"of buttons and their corresponding values."
 msgstr ""
-"La siguiente lÃnea muestra explÃcitamente la ventana. En GTK+, cada widget "
-"està oculto de manera predeterminada."
+"La siguiente lÃnea interesante es en la que se crea el diÃlogo para elegir "
+"el archivo usando <code>gtk_file_chooser_dialog_new</code>. La funciÃn toma "
+"el tÃtulo del diÃlogo, la ventana padre del diÃlogo y varias opciones como "
+"el nÃmero de botones y sus valores correspondientes."
 
-#: C/image-viewer.js.page:147(p)
+#: C/image-viewer.vala.page:190(p) C/image-viewer.py.page:198(p)
+#: C/image-viewer.js.page:284(p) C/image-viewer.cpp.page:182(p)
+#: C/image-viewer.c.page:196(p)
 msgid ""
-"Finally, <code>Gtk.main</code> runs the main loop â in other words, it "
-"executes the program. The main loop listens for events (signals) from the "
-"user interface and then calls a signal handler which will do something "
-"useful. We'll learn more about signals shortly."
+"Notice that we are using <em>stock</em> button names from Gtk, instead of "
+"manually typing \"Cancel\" or \"Open\". The advantage of using stock names "
+"is that the button labels will already be translated into the user's "
+"language."
 msgstr ""
-"Finalmente, <code>Gtk.main</code> ejecuta el bucle principal; en otras "
-"palabras, ejecuta el programa. El bucle principal escucha los eventos "
-"(seÃales) de la interfaz del usuario y llama a un manejador de la seÃal que "
-"harà algo Ãtil. En breve aprenderà mÃs cosas sobre las seÃales."
-
-#: C/image-viewer.js.page:150(p)
+"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."
+
+#: C/image-viewer.vala.page:194(p)
+#, fuzzy
+#| msgid ""
+#| "The next two lines restrict the <gui>Open</gui> dialog to only display "
+#| "files which can be opened by GtkImage. A filter object is created first; "
+#| "we then add all kinds of files supported by <code>GdkPixbuf</code> (which "
+#| "includes most image formats like PNG and JPEG) to the filter. Finally, we "
+#| "set this filter to be the <gui>Open</gui> dialog's filter."
 msgid ""
-"Save the code in <file>main.js</file> and run it. You will notice that the "
-"application does not quit when you close the window. This is because we "
-"haven't set up a signal handler to deal with the window's <code>destroy</"
-"code> (close) signal yet. We'll do this shortly, but for now you can just "
-"hit <keyseq><key>Ctrl</key><key>C</key></keyseq> in the terminal window to "
-"quit the program."
+"The next two lines restrict the <gui>Open</gui> dialog to only display files "
+"which can be opened by GtkImage. A filter object is created first; we then "
+"add all kinds of files supported by <code>Gdk.Pixbuf</code> (which includes "
+"most image formats like PNG and JPEG) to the filter. Finally, we set this "
+"filter to be the <gui>Open</gui> dialog's filter."
 msgstr ""
-"Guarde el cÃdigo en <file>main.js</file> y ejecÃtelo. Notarà que la "
-"aplicaciÃn no termina cuando cierra la ventana. Esto es porque todavÃa no se "
-"ha configurado un manejador de seÃal para gestionar la seÃal <code>destroy</"
-"code> (cerrar) de la ventana. Esto se harà en breve, pero por el momento "
-"puede pulsar <keyseq><key>Ctrl</key><key>C</key></keyseq> en la ventana de "
-"la terminal para salir del programa."
-
-#: C/image-viewer.js.page:155(title)
-msgid "Adding classes"
-msgstr "AÃadir clases"
+"Las dos liÌneas siguientes restringen el diaÌlogo <gui>Abrir</gui> para que "
+"soÌlo muestre archivos que se puedan abrir con ÂGtkImageÂ. Primero se crea un "
+"objeto de filtro; luego se anÌaden los tipos de archivos soportados por el "
+"<code>GdkPixbuf</code> (que incluye la mayoriÌa de los formatos de imagen "
+"como PNG y JPEG) al filtro. Por uÌltimo, se establece que este filtro sea el "
+"filtro del diaÌlogo <gui>Abrir</gui>."
 
-#: C/image-viewer.js.page:156(p)
+#: C/image-viewer.vala.page:199(p)
+#, fuzzy
+#| msgid ""
+#| "<code>dialog.run</code> displays the <gui>Open</gui> dialog. The dialog "
+#| "will wait for the user to choose an image; when they do, <code>dialog."
+#| "run</code> will return the value <code>Gtk::RESPONSE_ACCEPT</code> (it "
+#| "would return <code>Gtk::RESPONSE_CANCEL</code> if the user clicked "
+#| "<gui>Cancel</gui>). The <code>switch</code> statement tests for this."
 msgid ""
-"The proper way of doing Gtk programming is by using classes. Let's rewrite "
-"the simple code you just wrote using classes:"
+"<code>dialog.run</code> displays the <gui>Open</gui> dialog. The dialog will "
+"wait for the user to choose an image; when they do, <code>dialog.run</code> "
+"will return the value <code>ResponseType.ACCEPT</code> (it would return "
+"<code>ResponseType.CANCEL</code> if the user clicked <gui>Cancel</gui>). The "
+"<code>switch</code> statement tests for this."
 msgstr ""
-"La manera correcta de programar en GTK+ es usando clases. Reescriba el "
-"cÃdigo que acaba de escribir usando clases:"
+"<code>dialog.run</code> muestra el diÃlogo <gui>Abrir</gui>. El diÃlogo "
+"esperarà a que el usuario seleccione una imagen; cuando lo haga, "
+"<code>dialog.run</code> devolverà el valor <code>Gtk::RESPONSE_ACCEPT</code> "
+"(devolverÃa <code>Gtk::RESPONSE_CANCEL</code> si el usuario pulsara "
+"<gui>Cancel</gui>). La sentencia <code>switch</code> comprueba esto."
 
-#. FIXME: Throws an error, "JS ERROR: !!!   Unhandled type int32 releasing GArgument" on Ubuntu 10.10
-#: C/image-viewer.js.page:175(p)
+#: C/image-viewer.vala.page:204(p)
+#, fuzzy
+#| msgid ""
+#| "Assuming that the user did click <gui>Open</gui>, the next line sets the "
+#| "<code>file</code> property of the <code>Gtk.Image</code> to the filename "
+#| "of the image selected by the user. The <code>Gtk.Image</code> will then "
+#| "load and display the chosen image."
 msgid ""
-"Notice that the program is the same; we just moved the window creation code "
-"to our own <code>ImageViewer</code> class. The class's constructor calls the "
-"<code>_init</code> method, which creates and shows the window. We then "
-"create an instance of the class before running the main loop (<code>Gtk."
-"main</code>)."
+"Assuming that the user did click <gui>Open</gui>, the next lines get the "
+"filename of the image selected by the user, and tell the <code>Gtk.Image</"
+"code> to load and display the selected image."
 msgstr ""
-"Tenga en cuenta que el programa es el mismo; simplemente se ha movido el "
-"cÃdigo de creaciÃn de la ventana a la clase <code>ImageViewer</code>. El "
-"constructor de la clase llama al mÃtodo <code>_init</code>, que crea y "
-"muestra la ventana. Se crea entonces una instancia de la clase antes de "
-"ejecutar el bucle principal (<code>Gtk.main</code>)."
+"Asumiendo que el usuario pulsà <gui>Abrir</gui>, la siguiente lÃnea "
+"establece la propiedad <code>file</code> de la <code>Gtk.Image</code> al "
+"nombre del archivo de imagen seleccionada por el usuario. La <code>Gtk."
+"Image</code> cargarà y mostrarà la imagen elegida."
 
-#: C/image-viewer.js.page:176(p)
+#: C/image-viewer.vala.page:207(p) C/image-viewer.c.page:207(p)
 msgid ""
-"This code is modular and can be split into multiple files easily. This makes "
-"it cleaner and easier to read."
+"In the final line of this method, we destroy the <gui>Open</gui> dialog "
+"because we don't need it any more. Destroying automatically hides the dialog."
 msgstr ""
-"El cÃdigo es modular y se puede dividir el varios archivos fÃcilmente. Esto "
-"hace que sea mÃs limpio y fÃcil de leer."
-
-#: C/image-viewer.js.page:180(title) C/image-viewer.py.page:113(title)
-msgid "Signals"
-msgstr "SeÃales"
+"Al final de la lÃnea de este mÃtodo, se destruye el diÃlogo <gui>Abrir</gui> "
+"porque ya no se necesita mÃs. El diÃlogo se oculta automÃticamente al "
+"destruirlo."
 
-#: C/image-viewer.js.page:181(p) C/image-viewer.py.page:114(p)
+#: C/image-viewer.vala.page:215(p) C/image-viewer.cpp.page:207(p)
+#: C/image-viewer.c.page:215(p) C/guitar-tuner.c.page:250(p)
 msgid ""
-"Signals are one of the key concepts in Gtk programming. Whenever something "
-"happens to an object, it emits a signal; for example, when a button is "
-"clicked it gives off the <code>clicked</code> signal. If you want your "
-"program to do something when that event occurs, you must connect a function "
-"(a \"signal handler\") to that signal. Here's an example:"
+"All of the code should now be ready to go. Click <guiseq><gui>Build</"
+"gui><gui>Build Project</gui></guiseq> to build everything again, and then "
+"<guiseq><gui>Run</gui><gui>Execute</gui></guiseq> to start the application."
 msgstr ""
-"Las seÃales son un concepto clave en la programaciÃn en GTK. Cuando pasa "
-"algo en un objeto, emite una seÃal; por ejemplo, cuando se pulsa un botÃn, "
-"emite la seÃal <code>clicked</code>. Si quiere que su programa haga algo "
-"cuando ocurre ese evento, debe conectar una funciÃn (un Âmanejador de la "
-"seÃalÂ) a esa seÃal. Aquà hay un ejemplo:"
+"Todo el cÃdigo deberÃa estar listo para ejecutarse. Pulse "
+"<guiseq><gui>Construir</gui><gui>Construir proyecto</gui></guiseq> para "
+"construir todo otra vez y pulse <guiseq><gui>Ejecutar</gui><gui>Ejecutar</"
+"gui></guiseq> para iniciar la aplicaciÃn."
 
-#: C/image-viewer.js.page:188(p) C/image-viewer.py.page:121(p)
+#: C/image-viewer.vala.page:217(p)
+#, fuzzy
+#| msgid ""
+#| "If you haven't already done so, choose the <file>Debug/src/image-viewer</"
+#| "file> application in the dialog that appears. Finally, hit <gui>Run</gui> "
+#| "and enjoy!"
 msgid ""
-"The last two lines create a <code>Gtk.Button</code> called <code>b</code> "
-"and connect its <code>clicked</code> signal to the <code>button_clicked</"
-"code> function, which is defined above. Every time the button is clicked, "
-"the code in the <code>button_clicked</code> function will be executed. It "
-"just prints a message here."
+"If you haven't already done so, choose the <file>src/image-viewer</file> "
+"application in the dialog that appears. Finally, hit <gui>Run</gui> and "
+"enjoy!"
 msgstr ""
-"Las dos Ãltimas lÃneas crean un <code>Gtk.Button</code> llamado <code>b</"
-"code> y conectan su seÃal <code>clicked</code> con la funciÃn "
-"<code>button_clicked</code> que se ha definido anteriormente. Cada vez que "
-"se pulsa un botÃn, se ejecuta el cÃdigo de la funciÃn <code>button_clicked</"
-"code>. Esto sÃlo imprime un mensaje aquÃ."
+"Si todavÃa no lo ha hecho, elija la aplicaciÃn <file>Debug/src/visor-"
+"imagenes</file> en el diÃlogo que aparece. Finalmente, pulse <gui>Ejecutar</"
+"gui> y disfrute."
 
-#: C/image-viewer.js.page:189(p)
-msgid "The syntax for connecting any signal to a function is:"
-msgstr "La sintaxis para conectar cualquier seÃal a una funciÃn es:"
+#: C/image-viewer.vala.page:223(p)
+#, fuzzy
+#| msgid ""
+#| "If you run into problems with the tutorial, compare your code with this "
+#| "<link href=\"image-viewer/image-viewer.c\">reference code</link>."
+msgid ""
+"If you run into problems with the tutorial, compare your code with this "
+"<link href=\"image-viewer/image-viewer.vala\">reference code</link>."
+msgstr ""
+"Si tiene problemas con este tutorial, compare su coÌdigo con este <link href="
+"\"image-viewer/image-viewer.c\">coÌdigo de referencia</link>."
 
-#: C/image-viewer.js.page:192(p)
+#: C/image-viewer.vala.page:227(title) C/image-viewer.py.page:229(title)
+#: C/image-viewer.js.page:315(title) C/image-viewer.cpp.page:217(title)
+#: C/image-viewer.c.page:225(title) C/guitar-tuner.vala.page:254(title)
+#: C/guitar-tuner.py.page:231(title) C/guitar-tuner.cpp.page:268(title)
+#: C/guitar-tuner.c.page:260(title)
+msgid "Next steps"
+msgstr "Siguientes pasos"
+
+#: C/image-viewer.vala.page:228(p) C/image-viewer.py.page:230(p)
+#: C/image-viewer.js.page:316(p) C/image-viewer.cpp.page:218(p)
+#: C/image-viewer.c.page:226(p) C/guitar-tuner.vala.page:255(p)
+#: C/guitar-tuner.py.page:232(p) C/guitar-tuner.cpp.page:269(p)
+#: C/guitar-tuner.c.page:261(p)
+msgid "Here are some ideas for how you can extend this simple demonstration:"
+msgstr ""
+"Aquà hay algunas ideas sobre cÃmo puede extender esta sencilla demostraciÃn:"
+
+#: C/image-viewer.vala.page:231(p) C/image-viewer.py.page:233(p)
+#: C/image-viewer.js.page:319(p) C/image-viewer.cpp.page:221(p)
+#: C/image-viewer.c.page:229(p)
 msgid ""
-"You can find signal definitions for any object in the <link href=\"http://";
-"library.gnome.org/devel/gtk/stable/ch01.html\">GTK class reference</link>."
+"Have the user select a directory rather than a file, and provide controls to "
+"cycle through all of the images in a directory."
 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 "
-"clases de GTK+</link>."
+"Haga que el usuario selecciona una carpeta en vez de un archivo, y "
+"proporcione controles para moverse por todas las imÃgenes de una carpeta."
 
-#: C/image-viewer.js.page:195(p)
+#: C/image-viewer.vala.page:234(p) C/image-viewer.py.page:236(p)
+#: C/image-viewer.js.page:322(p) C/image-viewer.cpp.page:224(p)
+#: C/image-viewer.c.page:232(p)
 msgid ""
-"You can simplify the code by making use of an inline function definition:"
-msgstr "Puede simplificar el cÃdigo usando una definiciÃn de funciÃn en lÃnea:"
+"Apply random filters and effects to the image when it is loaded and allow "
+"the user to save the modified image."
+msgstr ""
+"Aplicar filtros aleatorios y efectos a la imagen cuando se carga y permitir "
+"al usuario guardar la imagen modificada."
 
-#: C/image-viewer.js.page:203(title)
-msgid "Closing the window"
-msgstr "Cerrar la ventana"
+#: C/image-viewer.vala.page:235(p) C/image-viewer.py.page:237(p)
+#: C/image-viewer.js.page:323(p) C/image-viewer.cpp.page:225(p)
+#: C/image-viewer.c.page:233(p)
+msgid ""
+"<link href=\"http://www.gegl.org/api.html\";>GEGL</link> provides powerful "
+"image manipulation capabilities."
+msgstr ""
+"<link href=\"http://www.gegl.org/api.html\";>GEGL</link> proporciona la "
+"capacidad de manipular imÃgenes de manera potente."
 
-#: C/image-viewer.js.page:204(p)
+#: C/image-viewer.vala.page:238(p) C/image-viewer.py.page:240(p)
+#: C/image-viewer.js.page:326(p) C/image-viewer.cpp.page:228(p)
+#: C/image-viewer.c.page:236(p)
 msgid ""
-"When you close a Gtk window it's not really closed, it's hidden. This allows "
-"you to keep the window around (which is useful if you want to ask the user "
-"if they really want to close the window, for example)."
+"Allow the user to load images from network shares, scanners, and other more "
+"complicated sources."
 msgstr ""
-"Cuando cierra una ventana de GTK, realmente no se cierra, se oculta. Esto le "
-"permite mantener la ventana (lo que es Ãtil si quiere preguntar al usuario "
-"si realmente quiere cerrar la ventana, por ejemplo)."
+"Permitir al usuario cargar imÃgenes desde recursos de red compartidos, "
+"escÃneres y otras fuentes mÃs complicadas."
 
-#: C/image-viewer.js.page:205(p)
+#: C/image-viewer.vala.page:239(p) C/image-viewer.py.page:241(p)
+#: C/image-viewer.js.page:327(p) C/image-viewer.cpp.page:229(p)
+#: C/image-viewer.c.page:237(p)
 msgid ""
-"In our case, we really do just want to close the window. The simplest way of "
-"doing this is by connecting the <code>hide</code> signal of the GtkWindow "
-"object to a function that closes the application. Go back to the <file>image-"
-"viewer.js</file> file and add the following code to the <code>_init</code> "
-"method, on the line above <code>this.window.show</code>:"
+"You can use <link href=\"http://library.gnome.org/devel/gio/unstable/\";>GIO</"
+"link> to handle network file tranfers and the like, and <link href=\"http://";
+"library.gnome.org/devel/gnome-scan/unstable/\">GNOME Scan</link> to handle "
+"scanning."
 msgstr ""
-"En este caso, simplemente se quiere cerrar la ventana. La manera mÃs "
-"sencilla de hacerlo es conectar la seÃal <code>hide</code> del objeto "
-"GtkWindow a una funciÃn que cierra la aplicaciÃn. Vuelva al archivo "
-"<file>image-viewer.js</file> y aÃada el siguiente cÃdigo al mÃtodo "
-"<code>_init</code>, en la lÃnea anterior a <code>this.window.show</code>:"
+"Puede usar <link href=\"http://library.gnome.org/devel/gio/unstable/\";>GIO</"
+"link> para gestionar transferencias de archivos de red y similares, y <link "
+"href=\"http://library.gnome.org/devel/gnome-scan/unstable/\";>GNOME Scan</"
+"link> para gestionar el escaneado."
 
-#: C/image-viewer.js.page:206(code)
-#, no-wrap
-msgid "this.window.connect (\"hide\", Gtk.main_quit);"
-msgstr "this.window.connect (\"hide\", Gtk.main_quit);"
+#: C/image-viewer.py.page:9(desc)
+msgid ""
+"A little bit more than a simple \"Hello world\" application - write an image "
+"viewer in GTK."
+msgstr ""
+"Algo mÃs que una sencilla aplicaciÃn ÂHola mundoÂ; escribir un visor de "
+"imÃgenes en GTK."
 
-#: C/image-viewer.js.page:207(p)
+#: C/image-viewer.py.page:13(name) C/image-viewer.js.page:13(name)
+msgid "Jonh Wendell"
+msgstr "Jonh Wendell"
+
+#: C/image-viewer.py.page:14(email) C/image-viewer.js.page:14(email)
+msgid "jwendell gnome org"
+msgstr "jwendell gnome org"
+
+#: C/image-viewer.py.page:26(p) C/image-viewer.js.page:26(p)
 msgid ""
-"This connects the <code>hide</code> signal of the window to Gtk's "
-"<code>main_quit</code> function, which ends the execution of the Gtk main "
-"loop. Once the main loop finishes, the function <code>Gtk.main</code> "
-"returns. Our program would continue to run any code written after the "
-"<code>Gtk.main ();</code> line, but since we don't have any code after that "
-"point, the program just ends."
+"In this tutorial, we're going to write a very simple GTK application that "
+"loads and displays an image file. You will learn how to:"
 msgstr ""
-"Esto conecta la seÃal <code>hide</code> de la ventana con la funciÃn "
-"<code>main_quit</code> de GTK, que termina la ejecuciÃn del bucle principal "
-"de GTK. Una vez que el bucle principal termina, la funciÃn <code>Gtk.main</"
-"code> retorna. El programa puede continuar ejecutando cualquier cÃdigo que "
-"haya despuÃs de la lÃnea <code>Gtk.main ();</code>, pero como no hay ningÃn "
-"cÃdigo despuÃs de ese punto, el programa simplemente termina."
+"En este tutorial se va a escribir una aplicaciÃn GTK+ muy sencilla que carga "
+"un archivo e imagen y lo muestra. Aprenderà a:"
+
+#: C/image-viewer.py.page:28(p)
+msgid "Write a basic GTK user interface in Python"
+msgstr "Escribir una interfaz de usuario bÃsica en Python"
+
+#: C/image-viewer.py.page:29(p) C/image-viewer.js.page:29(p)
+msgid "Deal with events by connecting signals to signal handlers"
+msgstr "Trabajar con eventos conectando seÃales a manejadores de seÃales"
+
+#: C/image-viewer.py.page:30(p) C/image-viewer.js.page:30(p)
+msgid "Lay out GTK user interfaces using containers"
+msgstr "La disposiciÃn de las interfaces de usuario usando contenedores"
+
+#: C/image-viewer.py.page:31(p) C/image-viewer.js.page:31(p)
+msgid "Load and display image files"
+msgstr "Cargar y mostrar archivos de imagen"
+
+#: C/image-viewer.py.page:36(p)
+msgid "Basic knowledge of the python programming language"
+msgstr "Conocimiento bÃsico del lenguaje de programaciÃn Python"
+
+#: C/image-viewer.py.page:50(p)
+msgid ""
+"Choose <gui>PyGTK (automake)</gui> from the <gui>Python</gui> tab, click "
+"<gui>Forward</gui>, and fill out your details on the next few pages. Use "
+"<file>image-viewer</file> as project name and directory."
+msgstr ""
+"Seleccione <gui>PyGTK (automake)</gui> en la pestaÃa <gui>Python</gui>, "
+"pulse <gui>Siguiente</gui>, y rellene los detalles en las siguientes "
+"pÃginas. Use <file>visor-imagenes</file> como nombre del proyecto y de la "
+"carpeta."
+
+#: C/image-viewer.py.page:53(p)
+msgid ""
+"Be sure to disable <gui>Use GtkBuilder for user interface</gui> as we will "
+"build the user interface manually in this example. For an example of using "
+"the interface designer, check the <link xref=\"guitar-tuner.py\">Guitar-"
+"Tuner demo</link>."
+msgstr ""
+"AsegÃrese de desactivar <gui>Usar GtkBuilder para la interfaz del usuario</"
+"gui>, ya que, en este ejemplo, la interfaz de usuario se construirà "
+"manualmente. Para obtener un ejemplo del uso de diseÃador de interfaces. "
+"revise la <link xref=\"guitar-tuner.py\">demostraciÃn de afinador de "
+"guitarra</link>."
+
+#: C/image-viewer.py.page:58(p)
+msgid ""
+"Click <gui>Apply</gui> and the project will be created for you. Open "
+"<file>src/image_viewer.py</file> from the <gui>Project</gui> or <gui>File</"
+"gui> tabs. It contains very basic example code."
+msgstr ""
+"Pulse <gui>Aplicar</gui> y se crearaÌ el proyecto. Abra <file>src/visor-"
+"imagenes.py</file> desde las pestanÌas <gui>Proyecto</gui> o <gui>Archivo</"
+"gui>. Contiene un ejemplo de cÃdigo muy bÃsico:"
+
+#: C/image-viewer.py.page:64(title) C/image-viewer.js.page:125(title)
+msgid "A first Gtk application"
+msgstr "Una primera aplicaciÃn en GTK"
+
+#: C/image-viewer.py.page:65(p)
+msgid "Let's see what a very basic Gtk application looks like in Python:"
+msgstr "Vea como queda una aplicacioÌn GTK+ muy baÌsica en Python:"
+
+#: C/image-viewer.py.page:89(p) C/image-viewer.js.page:136(p)
+msgid "Let's take a look at what's happening:"
+msgstr "Eche un vistazo a lo que està pasando:"
+
+#: C/image-viewer.py.page:92(p) C/image-viewer.js.page:139(p)
+msgid ""
+"The first line imports the Gtk namespace (that is, it includes the Gtk "
+"library). The libraries are provided by GObject Introspection (gi), which "
+"provides language bindings for many GNOME libraries."
+msgstr ""
+"La primera lÃnea importa el espacio de nombres de GTK+ (es decir, incluye la "
+"biblioteca GTK+). Las bibliotecas las proporciona ÂGObject Introspection "
+"(gi)Â, que implementa asociaciones de lenguajes para la mayorÃa de las "
+"bilbiotecas de GNOME."
+
+#: C/image-viewer.py.page:95(p)
+msgid ""
+"In the <code>__init__</code> method of the <code>GUI</code> class creates an "
+"(empty) <code>Gtk.Window</code>, sets its title and then connects a signal "
+"to quit the application once the window is closed. That's pretty simple "
+"overall, more on signals later."
+msgstr ""
+"En el mÃtodo <code>__init__</code> de la clase <code>GUI</code> se crea un "
+"<code>Gtk.Window</code> (vacÃa), establece su tÃtulo y despuÃs conecta una "
+"seÃal para salir de la aplicaciÃn una vez que se cierra la ventana. Es "
+"bastante simple, mÃs acerca de seÃales en adelante."
+
+#: C/image-viewer.py.page:100(p)
+msgid ""
+"Next, <code>destroy</code> is defined which just quits the application. It "
+"is called by the <code>destroy</code> signal connected above."
+msgstr ""
+"DespuÃs se define <code>destroy</code> que simplemente sale de la "
+"aplicaciÃn. Se le llama a travÃs de la seÃal <code>destroy</code> conectada "
+"anteriormente."
+
+#: C/image-viewer.py.page:104(p)
+msgid "The rest of the file does initialisation for Gtk and displays the GUI."
+msgstr ""
+"El resto del archivo realiza la inicializaciÃn de GTK+ y muestra la IGU."
+
+#: C/image-viewer.py.page:108(p)
+msgid ""
+"This code is ready to run, so try it using <guiseq><gui>Run</"
+"gui><gui>Execute</gui></guiseq>. It should show you an empty window."
+msgstr ""
+"Este cÃdigo està listo para usarse, por lo que puede probarlo usando "
+"<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq>. DeberÃa mostrar una "
+"ventana vacÃa."
+
+#: C/image-viewer.py.page:113(title) C/image-viewer.js.page:180(title)
+msgid "Signals"
+msgstr "SeÃales"
+
+#: C/image-viewer.py.page:114(p) C/image-viewer.js.page:181(p)
+msgid ""
+"Signals are one of the key concepts in Gtk programming. Whenever something "
+"happens to an object, it emits a signal; for example, when a button is "
+"clicked it gives off the <code>clicked</code> signal. If you want your "
+"program to do something when that event occurs, you must connect a function "
+"(a \"signal handler\") to that signal. Here's an example:"
+msgstr ""
+"Las seÃales son un concepto clave en la programaciÃn en GTK. Cuando pasa "
+"algo en un objeto, emite una seÃal; por ejemplo, cuando se pulsa un botÃn, "
+"emite la seÃal <code>clicked</code>. Si quiere que su programa haga algo "
+"cuando ocurre ese evento, debe conectar una funciÃn (un Âmanejador de la "
+"seÃalÂ) a esa seÃal. Aquà hay un ejemplo:"
+
+#: C/image-viewer.py.page:121(p) C/image-viewer.js.page:188(p)
+msgid ""
+"The last two lines create a <code>Gtk.Button</code> called <code>b</code> "
+"and connect its <code>clicked</code> signal to the <code>button_clicked</"
+"code> function, which is defined above. Every time the button is clicked, "
+"the code in the <code>button_clicked</code> function will be executed. It "
+"just prints a message here."
+msgstr ""
+"Las dos Ãltimas lÃneas crean un <code>Gtk.Button</code> llamado <code>b</"
+"code> y conectan su seÃal <code>clicked</code> con la funciÃn "
+"<code>button_clicked</code> que se ha definido anteriormente. Cada vez que "
+"se pulsa un botÃn, se ejecuta el cÃdigo de la funciÃn <code>button_clicked</"
+"code>. Esto sÃlo imprime un mensaje aquÃ."
 
-#: C/image-viewer.js.page:211(title) C/image-viewer.py.page:125(title)
+#: C/image-viewer.py.page:125(title) C/image-viewer.js.page:211(title)
 msgid "Containers: Laying-out the user interface"
 msgstr "Contenedores: diseÃar la interfaz de usuario"
 
-#: C/image-viewer.js.page:212(p) C/image-viewer.py.page:126(p)
+#: C/image-viewer.py.page:126(p) C/image-viewer.js.page:212(p)
 msgid ""
 "Widgets (controls, such as buttons and labels) can be arranged in the window "
 "by making use of <em>containers</em>. You can organize the layout by mixing "
@@ -2806,7 +3068,7 @@ msgstr ""
 "ventana usando <em>contenedores</em>. Puede organizar el diseÃo mezclando "
 "diferentes tipos de contenedores, como cajas y rejillas."
 
-#: C/image-viewer.js.page:213(p) C/image-viewer.py.page:127(p)
+#: C/image-viewer.py.page:127(p) C/image-viewer.js.page:213(p)
 msgid ""
 "A <code>Gtk.Window</code> is itself a type of container, but you can only "
 "put one widget directly into it. We would like to have two widgets, an image "
@@ -2828,7 +3090,7 @@ msgstr ""
 "widgets, organizados horizontal o verticalmente. Se pueden hacer diseÃos mÃs "
 "complejos poniendo varias cajas dentro de otras, y asà sucesivamente."
 
-#: C/image-viewer.js.page:215(p) C/image-viewer.py.page:129(p)
+#: C/image-viewer.py.page:129(p) C/image-viewer.js.page:215(p)
 msgid ""
 "There is a graphical user interface designer called <app>Glade</app> "
 "integrated in <app>Anjuta</app> which makes UI design really easy. For this "
@@ -2838,31 +3100,32 @@ msgstr ""
 "en <app>Anjuta</app> que hace que el diseÃo de IU sea realmente fÃcil. Sin "
 "embargo, para este ejemplo, se va a codificar todo manualmente."
 
-#: C/image-viewer.js.page:217(p)
+#: C/image-viewer.py.page:131(p)
 msgid ""
 "Let's add the box and widgets to the window. Insert the following code into "
-"the <code>_init</code> method, immediately above the <code>this.window.show</"
-"code> line:"
+"the <code>__init__</code> method, immediately after the <code>window."
+"connect_after</code> line:"
 msgstr ""
 "AÃada la caja y los widgets a la ventana. Inserte el siguiente cÃdigo en el "
-"mÃtodo <code>_init</code>, justo debajo de la lÃnea <code>this.window.show</"
-"code>:"
+"mÃtodo <code>__init__</code>, justo debajo de la lÃnea <code>window."
+"connect_after</code>:"
 
-#: C/image-viewer.js.page:221(p)
+#: C/image-viewer.py.page:139(p)
 msgid ""
-"The first line creates a <code>Gtk.Box</code> called <code>main_box</code> "
-"and sets two of its properties: the <code>orientation</code> is set to "
-"vertical (so widgets are arranged in a column), and the <code>spacing</code> "
-"between the widgets is set to 0 pixels. The next line then adds the newly-"
-"created <code>Gtk.Box</code> to the window."
+"The first line creates a <code>Gtk.Box</code> called <code>box</code> and "
+"the following lines set two of its properties: the <code>orientation</code> "
+"is set to vertical (so the widgets are arranged in a column), and the "
+"<code>spacing</code> between the widgets is set to 5 pixels. The next line "
+"then adds the newly-created <code>Gtk.Box</code> to the window."
 msgstr ""
-"La primera lÃnea crea una <code>Gtk.Box</code> llamada <code>main_box</code> "
-"y establece dos de sus propiedades: la <code>orientation</code> se establece "
-"a Âvertical (por lo que los widgets se ordenan en columna), y el "
-"<code>spacing</code> entre los widgets, que se establece a 0 pÃxeles. La "
-"siguiente lÃnea aÃade la <code>Gtk.Box</code> reciÃn creada a la ventana."
+"La primera lÃnea crea una <code>Gtk.Box</code> llamada <code>box</code> y "
+"las siguientes lÃneas establecen dos de sus propiedades: la orientaciÃn "
+"(<code>orientation</code>) se establece a Âvertical (por lo que los widgets "
+"se colocan en columna), y el espaciado (<code>spacing</code>) entre los "
+"widgets se establece a 5 pÃxeles. La siguiente lÃnea aÃade la <code>Gtk.Box</"
+"code> reciÃn creada a la ventana."
 
-#: C/image-viewer.js.page:222(p) C/image-viewer.py.page:140(p)
+#: C/image-viewer.py.page:140(p) C/image-viewer.js.page:222(p)
 msgid ""
 "So far the window only contains an empty <code>Gtk.Box</code>, and if you "
 "run the program now you will see no changes at all (the <code>Gtk.Box</code> "
@@ -2872,53 +3135,56 @@ msgstr ""
 "ejecuta el programa ahora no verà ningÃn cambio (la <code>Gtk.Box</code> es "
 "un contenedor transparente, por lo que no puede que està ahÃ)."
 
-#: C/image-viewer.js.page:226(title) C/image-viewer.py.page:144(title)
+#: C/image-viewer.py.page:144(title) C/image-viewer.js.page:226(title)
 msgid "Packing: Adding widgets to the container"
 msgstr "Empaquetado: aÃadir widgets al contenedor"
 
-#: C/image-viewer.js.page:227(p)
+#: C/image-viewer.py.page:145(p)
 msgid ""
 "To add some widgets to the <code>Gtk.Box</code>, insert the following code "
-"directly below the <code>this.window.add (main_box)</code> line:"
+"directly below the <code>window.add (box)</code> line:"
 msgstr ""
 "Para aÃadir algunos widgets a la <code>Gtk.Box</code>, inserte el siguiente "
-"cÃdigo justo debajo de la lÃnea <code>this.window.add (main_box)</code>:"
+"cÃdigo justo debajo de la lÃnea <code>window.add (box)</code>:"
 
-#: C/image-viewer.js.page:231(p)
+#: C/image-viewer.py.page:149(p)
 msgid ""
 "The first line creates a new <code>Gtk.Image</code> called <code>image</"
-"code>, which will be used to display an image file. Then, the image widget "
-"is added (<em>packed</em>) into the <code>main_box</code> container using "
-"<code>Gtk.Box</code>'s <link href=\"http://library.gnome.org/devel/gtk/";
-"stable/GtkBox.html#gtk-box-pack-start\"><code>pack_start</code></link> "
+"code>, which will be used to display an image file. As we need that later on "
+"in the signal handler, we will define it as a class-wide variable. You need "
+"to add <code>image = 0</code> to the beginning of the <code>GUI</code> "
+"class. Then, the image widget is added (<em>packed</em>) into the <code>box</"
+"code> container using GtkBox's <link href=\"http://library.gnome.org/devel/";
+"gtk/stable/GtkBox.html#gtk-box-pack-start\"><code>pack_start</code></link> "
 "method."
 msgstr ""
-"La primera lÃnea crea una <code>Gtk.Image</code> nueva llamada <code>image</"
-"code>, que se usarà para mostrar un archivo de imagen. Entonces, se aÃade el "
-"widget de imagen (<em>packed</em>) al contenedor <code>main_box</code> "
-"usando el mÃtodo <link href=\"http://library.gnome.org/devel/gtk/stable/";
-"GtkBox.html#gtk-box-pack-start\"><code>pack_start</code></link> de <code>Gtk."
-"Box</code>."
+"La primera lÃnea crea una <code>Gtk.Image</code> llamada <code>image</code>, "
+"que se usarà para mostrar un archivo de imagen. Como se necesitarà mÃs tarde "
+"en el manejador de la seÃal, se definirà como variable a nivel de clase. "
+"Deberà aÃadir <code>image = 0</code> al principio de la clase <code>GUI</"
+"code>. Entonces se aÃade el widget de imagen (<em>packed</em>) en el "
+"contenedor <code>box</code> usando el mÃtodo <link href=\"http://library.";
+"gnome.org/devel/gtk/stable/GtkBox.html#gtk-box-pack-start"
+"\"><code>pack_start</code></link> de GtkBox."
 
-#: C/image-viewer.js.page:232(p)
+#: C/image-viewer.py.page:151(p)
 msgid ""
 "<code>pack_start</code> takes 4 arguments: the widget that is to be added to "
-"the <code>Gtk.Box</code> (<code>child</code>); whether the <code>Gtk.Box</"
-"code> should grow larger when the new widget is added (<code>expand</code>); "
-"whether the new widget should take up all of the extra space created if the "
-"<code>Gtk.Box</code> gets bigger (<code>fill</code>); and how much space "
-"there should be, in pixels, between the widget and its neighbors inside the "
-"<code>Gtk.Box</code> (<code>padding</code>)."
+"the GtkBox (<code>child</code>); whether the <code>Gtk.Box</code> should "
+"grow larger when the new widget is added (<code>expand</code>); whether the "
+"new widget should take up all of the extra space created if the <code>Gtk."
+"Box</code> gets bigger (<code>fill</code>); and how much space there should "
+"be, in pixels, between the widget and its neighbors inside the <code>Gtk."
+"Box</code> (<code>padding</code>)."
 msgstr ""
-"<code>pack_start</code> toma 4 argumentos: el widget que aÃadir a la "
-"<code>Gtk.Box</code> (<code>child</code>); indica si la <code>Gtk.Box</code> "
-"debe crecer a lo largo cuando se aÃade el widget nuevo (<code>expand</"
-"code>); indica si el widget nuevo debe tomar todo el espacio adicional "
-"creado si la <code>Gtk.Box</code> se hace mÃs grande (<code>fill</code>); y "
-"cuÃnto espacio debe haber, en pÃxeles, entre el widget y los demÃs widgets "
-"dentro de la <code>Gtk.Box</code> (<code>padding</code>)."
+"<code>pack_start</code> toma 4 argumentos: el widget que aÃadir a la GtkBox "
+"(<code>child</code>); si la <code>Gtk.Box</code> debe crecer cuando aÃada el "
+"widget nuevo (<code>expand</code>); si el widget nuevo debe tomar todo el "
+"espacio adicional creado si la <code>Gtk.Box</code> crece (<code>fill</"
+"code>); y cuÃnto espacio debe haber, en pÃxeles, entre el widget y sus "
+"vecinos dentro de la <code>Gtk.Box</code> (<code>padding</code>)."
 
-#: C/image-viewer.js.page:233(p) C/image-viewer.py.page:152(p)
+#: C/image-viewer.py.page:152(p) C/image-viewer.js.page:233(p)
 msgid ""
 "Gtk containers (and widgets) dynamically expand to fill the available space, "
 "if you let them. You don't position widgets by giving them a precise x,y-"
@@ -2933,7 +3199,7 @@ msgstr ""
 "sea mÃs fÃcil, y que los widgets tengan un tamaÃo sensible automÃtica en la "
 "mayorÃa de las situaciones."
 
-#: C/image-viewer.js.page:234(p) C/image-viewer.py.page:153(p)
+#: C/image-viewer.py.page:153(p) C/image-viewer.js.page:234(p)
 msgid ""
 "Also note how the widgets are organized in a hierarchy. Once packed in the "
 "<code>Gtk.Box</code>, the <code>Gtk.Image</code> is considered a <em>child</"
@@ -2948,145 +3214,97 @@ msgstr ""
 "ocultar la <code>Gtk.Box</code>, lo que harÃa que tambiÃn se ocultaran todos "
 "sus hijos a la vez."
 
-#: C/image-viewer.js.page:235(p) C/image-viewer.py.page:154(p)
+#: C/image-viewer.py.page:154(p) C/image-viewer.js.page:235(p)
 msgid "Now insert these two lines, below the two you just added:"
 msgstr ""
 "Ahora inserte estas dos lÃneas, justo debajo de las dos que acaba de aÃadir."
 
-#: C/image-viewer.js.page:239(p)
+#: C/image-viewer.py.page:159(p)
 msgid ""
 "These lines are similar to the first two, but this time they create a "
-"<code>Gtk.Button</code> and add it to <code>main_box</code>. Notice that we "
-"are setting the <code>expand</code> argument (the second one) to "
-"<code>false</code> here, whereas it was set to <code>true</code> for the "
-"<code>Gtk.Image</code>. This will cause the image to take up all available "
-"space and the button to take only the space it needs. When you maximize the "
-"window, the button size will remain the same, but the image size will "
-"increase, taking up all of the rest of the window."
-msgstr ""
-"Estas lÃneas son similares a las dos primeras, pero esta vez crean un "
-"<code>Gtk.Button</code> y lo aÃaden a la <code>main_box</code>. Tenga en "
-"cuenta que aquà se està estableciendo el argumento <code>expand</code> (el "
-"segundo) a <code>false</code>, mientras que para la <code>Gtk.Image</code> "
-"se establecià a <code>true</code>. Esto harà que la imagen tome todo el "
-"espacio disponible y que el botÃn tome sÃlo el espacio que necesite. Cuando "
-"se maximiza la ventana, el tamaÃo del botÃn serà el mismo, pero el tamaÃo de "
-"la imagen aumentarà junto con el resto de la ventana."
-
-#: C/image-viewer.js.page:240(p)
-msgid ""
-"Finally, we must change the <code>this.window.show ();</code> line to read:"
-msgstr ""
-"Finalmente, se debe cambiar la lÃnea <code>this.window.show ();</code> para "
-"leer:"
-
-#: C/image-viewer.js.page:241(code)
-#, no-wrap
-msgid "this.window.show_all ();"
-msgstr "this.window.show_all ();"
-
-#: C/image-viewer.js.page:242(p)
-msgid ""
-"This will show the child of the Gtk window, and all of its children, and its "
-"children's children, and so on. (Remember that Gtk widgets are all hidden by "
-"default.)"
+"<code>Gtk.Button</code> and add it to <code>box</code>. Notice that we are "
+"setting the <code>expand</code> argument (the second one) to <code>False</"
+"code> here, whereas it was set to <code>True</code> for the <code>Gtk.Image</"
+"code>. This will cause the image to take up all available space and the "
+"button to take only the space it needs. When you maximize the window, the "
+"button size will remain the same, but the image size will increase, taking "
+"up all of the rest of the window."
 msgstr ""
-"Esto mostrarà el hijo de la ventana de GTK, y todos sus hijos, y los hijos "
-"de sus hijos, etcÃtera. (Recuerde que los widgets de GTK estÃn ocultos de "
-"manera predeterminada.)"
+"Estas liÌneas son similares a las dos primeras, pero esta vez crean un "
+"<code>Gtk.Button</code> y lo anÌaden a la <code>box</code>. Tenga en cuenta "
+"que se estaÌ estableciendo el argumento <code>expand</code> (el segundo) a "
+"<code>False</code>, mientras que para la <code>Gtk.Image</code> se "
+"establecià a <code>True</code>. Esto haraÌ que la imagen tome todo el espacio "
+"disponible y que el botoÌn tome soÌlo el espacio que necesite. Cuando se "
+"maximiza la ventana, el tamanÌo del botoÌn seraÌ el mismo, pero el tamanÌo de la "
+"imagen aumentaraÌ junto con el resto de la ventana."
 
-#: C/image-viewer.js.page:246(title) C/image-viewer.py.page:163(title)
+#: C/image-viewer.py.page:163(title) C/image-viewer.js.page:246(title)
 msgid ""
 "Loading the image: Connecting to the button's <code>clicked</code> signal"
 msgstr "Cargar la imagen: conectar con la seÃal <code>clicked</code> del botÃn"
 
-#: C/image-viewer.js.page:247(p)
+#: C/image-viewer.py.page:164(p)
 msgid ""
-"When the user clicks on the <gui>Open</gui> button, a dialog should appear "
-"so that the user can choose a picture. Once chosen, the picture should be "
-"loaded and shown in the image widget."
+"When the user clicks on the <gui>Open Image...</gui> button, a dialog should "
+"appear so that the user can choose a picture. Once chosen, the picture "
+"should be loaded and shown in the image widget."
 msgstr ""
-"Cuando el usuario pulse en el botÃn <gui>Abrir</gui>, debe aparecer un "
-"diÃlogo en el que el usuario pueda elegir una imagen. una vez elegida, la "
-"imagen se debe cargar y mostrar en el widget de imagen."
+"Cuando el usuario pulse sobre el botÃn <gui>Abrir imagen...</gui>, deberÃa "
+"aparece un diÃlogo en el que el usuario pueda elegir una imagen. una vez "
+"elegida, la imagen deberÃa cargarse y mostrarse en el widget de imagen."
 
-#: C/image-viewer.js.page:248(p)
+#: C/image-viewer.py.page:165(p)
 msgid ""
 "The first step is to connect the <code>clicked</code> signal of the button "
-"to a signal handler function, which we call <code>_openClicked</code>. Put "
-"this code immediately after the <code>var open_button = new Gtk.Button</"
-"code> line where the button was created:"
+"to a signal handler function, which we call <code>on_open_clicked</code>. "
+"Put this code immediately after the <code>button = Gtk.Button()</code> line "
+"where the button was created:"
 msgstr ""
 "El primer paso es conectar la seÃal <code>clicked</code> del botÃn a una "
-"funciÃn manejadora de la seÃal, llamada <code>_openClicked</code>. Ponga "
-"este cÃdigo inmediatamente despuÃs de la lÃnea <code>var open_button = new "
-"Gtk.Button</code> en la que se creà el botÃn:"
+"funciÃn manejadora de la seÃal, llamada <code>on_open_clicked</code>. Ponga "
+"este cÃdigo inmediatamente despuÃs de la lÃnea <code>button = Gtk.Button()</"
+"code> en la que se creà el botÃn:"
 
-#: C/image-viewer.js.page:251(p)
+#: C/image-viewer.py.page:169(p)
 msgid ""
-"We are using the <em>Lang</em> JavaScript helper here. It allows us to "
-"connect a <em>class method</em> to the signal, rather than a plain function "
-"(without a class) which we had used before for the window's <code>hide</"
-"code> signal. Don't worry about this for now, it's just a technical detail. "
-"For it to work, you also need to put the following line at the top of the "
-"file:"
+"This will connect the <code>clicked</code> signal to <code>on_open_clicked</"
+"code> method that we will define below."
 msgstr ""
-"Aquà se està usando el JavaScript auxiliar <em>Lang</em>. Permite conectar "
-"un <em>mÃtodo de clase</em> a la seÃal, en vez de una funciÃn normal (sin "
-"clase) que se haya usado anteriormente para seÃal <code>hide</code> de la "
-"ventana. No se preocupe por esto ahora, es sÃlo un detalle tÃcnico. Para que "
-"funcione, debe poner tambiÃn la siguiente lÃnea en la parte superior del "
-"archivo:"
-
-#: C/image-viewer.js.page:252(code)
-#, no-wrap
-msgid "const Lang = imports.lang;"
-msgstr "const Lang = imports.lang;"
+"Esto conectarà la seÃal <code>clicked</code> al mÃtodo "
+"<code>on_open_clicked</code> que se definirà mÃs adelante."
 
-#: C/image-viewer.js.page:256(title) C/image-viewer.py.page:174(title)
+#: C/image-viewer.py.page:174(title) C/image-viewer.js.page:256(title)
 msgid "Loading the image: Writing the signal's callback"
 msgstr "Cargar la imagen: escribir la llamada de retorno de la seÃal"
 
-#: C/image-viewer.js.page:257(p)
-msgid ""
-"Now we can create the <code>_openClicked()</code> method. Insert the "
-"following into the <code>ImageViewer.prototype</code> code block, after the "
-"<code>_init</code> method (and not forgetting the comma):"
-msgstr ""
-"Ahora se puede crear el mÃtodo <code>_openClicked()</code>. Inserte el "
-"siguiente cÃdigo en el bloque de cÃdigo de <code>ImageViewer.prototype</"
-"code>, despuÃs del mÃtodo <code>_init</code> (y no olvide la coma):"
-
-#: C/image-viewer.js.page:277(p) C/image-viewer.py.page:191(p)
-#: C/image-viewer.cpp.page:172(p) C/image-viewer.c.page:184(p)
+#: C/image-viewer.py.page:175(p)
 msgid ""
-"This is a bit more complicated than anything we've attempted so far, so "
-"let's break it down:"
+"Now we can create the <code>on_open_clicked</code> method. Insert the "
+"following into the <code>GUI</code> class code block, after the "
+"<code>__init__</code> method:"
 msgstr ""
-"Esto es un poco mÃs complicado que todo lo que se ha intentado hasta ahora, "
-"asà que se puede desglosar:"
+"Ahora se puede crear el mÃtodo <code>on_open_clicked</code>. Inserte lo "
+"siguente dentro del bloque de clase <code>GUI</code>, despuÃs del mÃtodo "
+"<code>__init__</code>:"
 
-#: C/image-viewer.js.page:280(p)
+#: C/image-viewer.py.page:194(p)
 msgid ""
-"The line beginning with <code>var chooser</code> creates an <gui>Open</gui> "
-"dialog, which the user can use to choose files. We set four properties: the "
+"The line beginning with <code>dialog</code> creates an <gui>Open</gui> "
+"dialog, which the user can use to choose files. We set three properties: the "
 "title of the dialog; the action (type) of the dialog (it's an \"open\" "
 "dialog, but we could have used <code>SAVE</code> if the intention was to "
-"save a file; <code>transient_for</code>, which sets the parent window of the "
-"dialog; and <code>modal</code> which, if set to <code>true</code>, prevents "
-"the user from clicking on another area of the application until the dialog "
-"is closed."
+"save a file; and <code>transient_for</code>, which sets the parent window of "
+"the dialog."
 msgstr ""
-"La lÃnea que comienza por <code>var chooser</code> crear un diÃlogo "
-"<gui>Abrir</gui>, que el usuario puede utilizar para elegir archivos. Se "
-"establecen cuatro propiedades: el tÃtulo del diÃlogo, la acciÃn (tipo) del "
-"diÃlogo (es un diÃlogo ÂopenÂ, pero se podrÃa haber usado <code>SAVE</code> "
-"si la intenciÃn hubiese sido guardar un archivo; <code>transient_for</code>, "
-"que establece la ventana padre del diÃlogo; y <code>modal</code>, que si se "
-"establecer a <code>true</code> evita que el usuario pueda pulsar en otra "
-"Ãrea de la aplicaciÃn hasta que no se cierre el diÃlogo."
+"La lÃnea que empieza por <code>dialog</code> crea un diÃlogo <gui>Abrir</"
+"gui>, que el usuario puede utilizar para abrir archivos. Se establecen tres "
+"propiedades: el tÃtulo del diÃlogo; la acciÃn (tipo) del diÃlogo (es un "
+"diÃlogo ÂopenÂ, pero se podrÃa haber usado <code>SAVE</code> si se quisiese "
+"guardar un archivo; y <code>transient_for</code>, que establecer la ventana "
+"padre del diÃlogo."
 
-#: C/image-viewer.js.page:283(p) C/image-viewer.py.page:197(p)
+#: C/image-viewer.py.page:197(p) C/image-viewer.js.page:283(p)
 msgid ""
 "The next two lines add <gui>Cancel</gui> and <gui>Open</gui> buttons to the "
 "dialog. The second argument of the <code>add_button</code> method is the "
@@ -3098,20 +3316,7 @@ msgstr ""
 "<code>add_button</code> es el valor (entero) que se devuelve cuando se pulsa "
 "el botÃn: 0 para <gui>Cancelar</gui> y 1 para <gui>Abrir</gui>."
 
-#: C/image-viewer.js.page:284(p) C/image-viewer.py.page:198(p)
-#: C/image-viewer.cpp.page:182(p) C/image-viewer.c.page:196(p)
-msgid ""
-"Notice that we are using <em>stock</em> button names from Gtk, instead of "
-"manually typing \"Cancel\" or \"Open\". The advantage of using stock names "
-"is that the button labels will already be translated into the user's "
-"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."
-
-#: C/image-viewer.js.page:287(p) C/image-viewer.py.page:201(p)
+#: C/image-viewer.py.page:201(p) C/image-viewer.js.page:287(p)
 msgid ""
 "<code>set_default_response</code> determines the button that will be "
 "activated if the user double-clicks a file or presses <key>Enter</key>. In "
@@ -3120,9 +3325,10 @@ 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:290(p) C/image-viewer.py.page:204(p)
+#: C/image-viewer.py.page:204(p) C/image-viewer.js.page:290(p)
 msgid ""
 "The next three lines restrict the <gui>Open</gui> dialog to only display "
 "files which can be opened by <code>Gtk.Image</code>. A filter object is "
@@ -3137,21 +3343,21 @@ msgstr ""
 "formatos de imagen como PNG y JPEG) al filtro. Por Ãltimo, se establece que "
 "este filtro sea el filtro del diÃlogo <gui>Abrir</gui>."
 
-#: C/image-viewer.js.page:293(p)
+#: C/image-viewer.py.page:207(p)
 msgid ""
-"<code>chooser.run</code> displays the <gui>Open</gui> dialog. The dialog "
-"will wait for the user to choose an image; when they do, <code>chooser.run</"
-"code> will return the value <output>1</output> (it would return <output>0</"
-"output> if the user clicked <gui>Cancel</gui>). The <code>if</code> "
-"statement tests for this."
+"<code>dialog.run</code> displays the <gui>Open</gui> dialog. The dialog will "
+"wait for the user to choose an image; when they do, <code>dialog.run</code> "
+"will return the value <output>1</output> (it would return <output>0</output> "
+"if the user clicked <gui>Cancel</gui>). The <code>if</code> statement tests "
+"for this."
 msgstr ""
-"<code>chooser.run</code> muestra el diÃlogo <gui>Abrir</gui>. El diÃlogo "
-"esperarà a que el usuario elija una imagen; cuando lo haga, <code>chooser."
+"<code>dialog.run</code> muestra el diÃlogo <gui>Abrir</gui>. El diÃlogo "
+"esperarà a que el usuario elija una imagen; cuando lo haga, <code>dialog."
 "run</code> devolverà el valor <output>1</output> (devolverÃa <output>0</"
 "output> si el usuario pulsara <gui>Cancelar</gui>). La sentencia <code>if</"
 "code> comprueba esto."
 
-#: C/image-viewer.js.page:295(p) C/image-viewer.py.page:209(p)
+#: C/image-viewer.py.page:209(p) C/image-viewer.js.page:295(p)
 msgid ""
 "Assuming that the user did click <gui>Open</gui>, the next line sets the "
 "<code>file</code> property of the <code>Gtk.Image</code> to the filename of "
@@ -3163,7 +3369,7 @@ msgstr ""
 "nombre del archivo de imagen seleccionada por el usuario. La <code>Gtk."
 "Image</code> cargarà y mostrarà la imagen elegida."
 
-#: C/image-viewer.js.page:298(p) C/image-viewer.py.page:212(p)
+#: C/image-viewer.py.page:212(p) C/image-viewer.js.page:298(p)
 msgid ""
 "In the final line of this method, we destroy the <gui>Open</gui> dialog "
 "because we don't need it any more."
@@ -3171,356 +3377,582 @@ msgstr ""
 "En la Ãltima lÃnea de este mÃtodo se destruye el diÃlogo <gui>Abrir</gui> "
 "porque ya no se necesita."
 
-#: C/image-viewer.js.page:306(p)
+#: C/image-viewer.py.page:220(p)
 msgid ""
 "All of the code you need should now be in place, so try running the code. "
 "That should be it; a fully-functioning image viewer (and a whistlestop tour "
-"of JavaScript and Gtk) in not much time at all!"
+"of Python and Gtk) in not much time at all!"
 msgstr ""
 "Todo el cÃdigo que necesita debe estar en su lugar, asà que trate de "
 "ejecutar el cÃdigo. Esto deberÃa ser todo; un visor de imÃgenes "
-"completamente funcional (y un completo tour sobre JavaScript y GTK+) en poco "
+"completamente funcional (y un completo tour sobre Python y GTK+) en poco "
 "tiempo."
 
-#: C/image-viewer.js.page:311(p)
+#: C/image-viewer.py.page:225(p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
-"<link href=\"image-viewer/image-viewer.js\">reference code</link>."
+"<link href=\"image-viewer/image-viewer.py\">reference code</link>."
 msgstr ""
 "Si tiene problemas con este tutorial, compare su coÌdigo con este <link href="
-"\"image-viewer/image-viewer.js\">coÌdigo de referencia</link>."
+"\"image-viewer/image-viewer.py\">coÌdigo de referencia</link>."
 
-#: C/image-viewer.js.page:315(title) C/image-viewer.py.page:229(title)
-#: C/image-viewer.cpp.page:217(title) C/image-viewer.c.page:225(title)
-#: C/guitar-tuner.vala.page:254(title) C/guitar-tuner.py.page:231(title)
-#: C/guitar-tuner.cpp.page:268(title) C/guitar-tuner.c.page:260(title)
-msgid "Next steps"
-msgstr "Siguientes pasos"
+#: C/image-viewer.js.page:9(desc)
+msgid ""
+"A little bit more than a simple \"Hello world\" application - write an image "
+"viewer in GTK. Includes an introduction to the JavaScript language."
+msgstr ""
+"Algo mÃs que una sencilla aplicaciÃn ÂHola mundoÂ; escribir un visor de "
+"imÃgenes en GTK. Incluye una introducciÃn al lenguaje JavaScript."
 
-#: C/image-viewer.js.page:316(p) C/image-viewer.py.page:230(p)
-#: C/image-viewer.cpp.page:218(p) C/image-viewer.c.page:226(p)
-#: C/guitar-tuner.vala.page:255(p) C/guitar-tuner.py.page:232(p)
-#: C/guitar-tuner.cpp.page:269(p) C/guitar-tuner.c.page:261(p)
-msgid "Here are some ideas for how you can extend this simple demonstration:"
+#: C/image-viewer.js.page:28(p)
+msgid "Write a basic GTK user interface in JavaScript"
+msgstr "Escribir una interfaz GTK+ de usuario bÃsica usando JavaScript"
+
+#: C/image-viewer.js.page:36(p)
+msgid "An installed copy of the <em>gjs</em> interpreter"
+msgstr "Una copia instalada del intÃrprete <em>gjs</em>"
+
+#: C/image-viewer.js.page:37(p)
+msgid "Basic knowledge of any object-orientated programming language"
 msgstr ""
-"Aquà hay algunas ideas sobre cÃmo puede extender esta sencilla demostraciÃn:"
+"Conocimiento bÃsico de cualquier lenguaje de programaciÃn orientado a objetos"
 
-#: C/image-viewer.js.page:319(p) C/image-viewer.py.page:233(p)
-#: C/image-viewer.cpp.page:221(p) C/image-viewer.c.page:229(p)
+#: C/image-viewer.js.page:51(p)
 msgid ""
-"Have the user select a directory rather than a file, and provide controls to "
-"cycle through all of the images in a directory."
+"Choose <gui>Generic Javascript</gui> from the <gui>JS</gui> tab, click "
+"<gui>Forward</gui>, and fill out your details on the next few pages. Use "
+"<file>image-viewer</file> as project name and directory."
 msgstr ""
-"Haga que el usuario selecciona una carpeta en vez de un archivo, y "
-"proporcione controles para moverse por todas las imÃgenes de una carpeta."
+"Elija <gui>Javascript genÃrico</gui> de la pestaÃa <gui>JS</gui>, pulse "
+"<gui>Adelante</gui> y rellene los detalles en las siguientes pÃginas. Use "
+"<file>visor-imÃgenes</file> como nombre de proyecto y de carpeta."
 
-#: C/image-viewer.js.page:322(p) C/image-viewer.py.page:236(p)
-#: C/image-viewer.cpp.page:224(p) C/image-viewer.c.page:232(p)
+#: C/image-viewer.js.page:54(p)
 msgid ""
-"Apply random filters and effects to the image when it is loaded and allow "
-"the user to save the modified image."
+"Click <gui>Apply</gui> and the project will be created for you. Open "
+"<file>src/main.js</file> from the <gui>Project</gui> or <gui>File</gui> "
+"tabs. It contains very basic example code."
 msgstr ""
-"Aplicar filtros aleatorios y efectos a la imagen cuando se carga y permitir "
-"al usuario guardar la imagen modificada."
+"Pulse <gui>Aplicar</gui> y se crearaÌ el proyecto. Abra <file>src/main.js</"
+"file> desde las pestanÌas <gui>Proyecto</gui> o <gui>Archivo</gui>. Contiene "
+"un ejemplo de cÃdigo muy bÃsico:"
 
-#: C/image-viewer.js.page:323(p) C/image-viewer.py.page:237(p)
-#: C/image-viewer.cpp.page:225(p) C/image-viewer.c.page:233(p)
+#: C/image-viewer.js.page:61(title)
+msgid "JavaScript basics: Hello World"
+msgstr "JavaScript bÃsico: hola mundo"
+
+#: C/image-viewer.js.page:62(p)
 msgid ""
-"<link href=\"http://www.gegl.org/api.html\";>GEGL</link> provides powerful "
-"image manipulation capabilities."
+"Before we start writing the image viewer, let's find out more about the way "
+"JavaScript is used in GNOME. Of course, your very first contact with any "
+"programming language should be the Hello World program which can already be "
+"found in <file>main.js</file>:"
 msgstr ""
-"<link href=\"http://www.gegl.org/api.html\";>GEGL</link> proporciona la "
-"capacidad de manipular imÃgenes de manera potente."
+"Antes de empezar a escribir el visor de imÃgenes, averigÃe algo mÃs sobre "
+"cÃmo se usa JavaScript en GNOME. Por supuesto que su primer contacto con un "
+"lenguaje de programaciÃn debe ser el programa ÂHola mundoÂ, que se puede "
+"encontrar en el archivo <file>main.js</file>:"
+
+#: C/image-viewer.js.page:63(code)
+#, no-wrap
+msgid "print (\"Hello world!\");"
+msgstr "print (\"ÂHola mundo!\");"
 
-#: C/image-viewer.js.page:326(p) C/image-viewer.py.page:240(p)
-#: C/image-viewer.cpp.page:228(p) C/image-viewer.c.page:236(p)
+#: C/image-viewer.js.page:64(p)
 msgid ""
-"Allow the user to load images from network shares, scanners, and other more "
-"complicated sources."
+"This should look quite natural if you're familiar with almost any other "
+"programming language. The function <code>print</code> is called with the "
+"argument <code>\"Hello world!\"</code>, which will be printed on the screen. "
+"Note that each line of code ends with a semicolon."
 msgstr ""
-"Permitir al usuario cargar imÃgenes desde recursos de red compartidos, "
-"escÃneres y otras fuentes mÃs complicadas."
+"Esto deberÃa resultarle natural si està familiarizado con la mayorÃa del "
+"resto de lenguajes de programaciÃn. La funciÃn <code>print</code> se llama "
+"con el argumento <code>\"ÂHola mundo!\"</code>, que se mostrarà en la "
+"pantalla. Tenga en cuenta que cada lÃnea de cÃdigo termina en Â;Â."
 
-#: C/image-viewer.js.page:327(p) C/image-viewer.py.page:241(p)
-#: C/image-viewer.cpp.page:229(p) C/image-viewer.c.page:237(p)
+#: C/image-viewer.js.page:68(title)
+msgid "Classes in JavaScript"
+msgstr "Clases en JavaScript"
+
+#: C/image-viewer.js.page:69(p)
+msgid "This is the standard way to define a class in JavaScript:"
+msgstr "Esta es la manera estÃndar de definir una clase en JavaScript:"
+
+#: C/image-viewer.js.page:92(p)
 msgid ""
-"You can use <link href=\"http://library.gnome.org/devel/gio/unstable/\";>GIO</"
-"link> to handle network file tranfers and the like, and <link href=\"http://";
-"library.gnome.org/devel/gnome-scan/unstable/\">GNOME Scan</link> to handle "
-"scanning."
+"This defines a class called <code>MyClass</code>. Let's go through each part "
+"of the class definition:"
 msgstr ""
-"Puede usar <link href=\"http://library.gnome.org/devel/gio/unstable/\";>GIO</"
-"link> para gestionar transferencias de archivos de red y similares, y <link "
-"href=\"http://library.gnome.org/devel/gnome-scan/unstable/\";>GNOME Scan</"
-"link> para gestionar el escaneado."
+"Esto define una clase llamada <code>MyClass</code>. Vea cada una de las "
+"partes de la definiciÃn de la clase:"
 
-#: C/image-viewer.py.page:9(desc)
+#: C/image-viewer.js.page:95(p)
 msgid ""
-"A little bit more than a simple \"Hello world\" application - write an image "
-"viewer in GTK."
+"<code>function MyClass</code> is the constructor of the class â its name "
+"must match the class's name. You can access any member of the class by using "
+"the <code>this</code> object; here, the constructor calls the class's "
+"<code>_init</code> method."
 msgstr ""
-"Algo mÃs que una sencilla aplicaciÃn ÂHola mundoÂ; escribir un visor de "
-"imÃgenes en GTK."
+"<code>function MyClass</code> es el constructor de la clase; su nombre debe "
+"coincidir con el de la clase. Puede acceder a cualquier miembro de la clase "
+"usando el objeto <code>this</code>; aquÃ, el constructor llama al mÃtodo "
+"<code>_init</code> de la clase."
 
-#: C/image-viewer.py.page:28(p)
-msgid "Write a basic GTK user interface in Python"
-msgstr "Escribir una interfaz de usuario bÃsica en Python"
+#: C/image-viewer.js.page:98(p)
+msgid ""
+"The <code>MyClass.prototype</code> block is where you define the "
+"<em>structure</em> of the class. Each class is made up of methods "
+"(functions) and fields (variables); there are three methods and two fields "
+"in this example."
+msgstr ""
+"El bloque <code>MyClass.prototype</code> es donde define la <em>estructura</"
+"em> de la clase. Cada clase se compone de mÃtodos (funciones) y campos "
+"(variables); en este ejemplo, hay tres mÃtodos y dos campos."
 
-#: C/image-viewer.py.page:36(p)
-msgid "Basic knowledge of the python programming language"
-msgstr "Conocimiento bÃsico del lenguaje de programaciÃn Python"
+#: C/image-viewer.js.page:101(p)
+msgid ""
+"The first method defined here is called <code>_init</code>, and we specify "
+"that it is a function with no arguments:"
+msgstr ""
+"El primer mÃtodo definido se llama <code>_init</code>, y se especifica que "
+"es una funciÃn sin argumentos:"
 
-#: C/image-viewer.py.page:50(p)
+#: C/image-viewer.js.page:102(code)
+#, no-wrap
+msgid "_init: function ()"
+msgstr "_init: function ()"
+
+#: C/image-viewer.js.page:103(p)
 msgid ""
-"Choose <gui>PyGTK (automake)</gui> from the <gui>Python</gui> tab, click "
-"<gui>Forward</gui>, and fill out your details on the next few pages. Use "
-"<file>image-viewer</file> as project name and directory."
+"We write the function inside some curly braces. Two fields are defined here, "
+"<code>propertyA</code> and <code>propertyB</code>. The first is set to a "
+"string and the second is set to an integer (10). The function doesn't return "
+"any value."
 msgstr ""
-"Seleccione <gui>PyGTK (automake)</gui> en la pestaÃa <gui>Python</gui>, "
-"pulse <gui>Siguiente</gui>, y rellene los detalles en las siguientes "
-"pÃginas. Use <file>visor-imagenes</file> como nombre del proyecto y de la "
-"carpeta."
+"Se escribe la funciÃn entre corchetes. Aquà se definen dos campos, "
+"<code>propertyA</code> y <code>propertyB</code>. La primera se establece "
+"como una cadena, y la segunda se establece como un entero (10). La funciÃn "
+"no retorna ningÃn valor."
 
-#: C/image-viewer.py.page:53(p)
+#: C/image-viewer.js.page:106(p)
 msgid ""
-"Be sure to disable <gui>Use GtkBuilder for user interface</gui> as we will "
-"build the user interface manually in this example. For an example of using "
-"the interface designer, check the <link xref=\"guitar-tuner.py\">Guitar-"
-"Tuner demo</link>."
+"The next method is called <code>aMethod</code> and has two arguments, which "
+"it prints out when you call it. The final method is <code>dumpProperties</"
+"code>, and prints the fields <code>propertyA</code> and <code>propertyB</"
+"code>."
 msgstr ""
-"AsegÃrese de desactivar <gui>Usar GtkBuilder para la interfaz del usuario</"
-"gui>, ya que, en este ejemplo, la interfaz de usuario se construirà "
-"manualmente. Para obtener un ejemplo del uso de diseÃador de interfaces. "
-"revise la <link xref=\"guitar-tuner.py\">demostraciÃn de afinador de "
-"guitarra</link>."
+"El siguiente mÃtodo se llama <code>aMethod</code> y tiene dos argumentos que "
+"imprime cuando se invoca. El Ãltimo mÃtodo es <code>dumpProperties</code>, "
+"que imprime los campos <code>propertyA</code> y <code>propertyB</code>."
 
-#: C/image-viewer.py.page:58(p)
+#: C/image-viewer.js.page:109(p)
 msgid ""
-"Click <gui>Apply</gui> and the project will be created for you. Open "
-"<file>src/image_viewer.py</file> from the <gui>Project</gui> or <gui>File</"
-"gui> tabs. It contains very basic example code."
+"Note how the class definition (prototype) is arranged; each function "
+"definition is separated by a comma."
 msgstr ""
-"Pulse <gui>Aplicar</gui> y se crearaÌ el proyecto. Abra <file>src/visor-"
-"imagenes.py</file> desde las pestanÌas <gui>Proyecto</gui> o <gui>Archivo</"
-"gui>. Contiene un ejemplo de cÃdigo muy bÃsico:"
+"Tenga en cuenta cÃmo se ordena la definiciÃn de la clase (prototipo); cada "
+"definiciÃn de funciÃn se separa con una coma."
 
-#: C/image-viewer.py.page:65(p)
-msgid "Let's see what a very basic Gtk application looks like in Python:"
-msgstr "Vea como queda una aplicacioÌn GTK+ muy baÌsica en Python:"
+#: C/image-viewer.js.page:113(p)
+msgid "Now that MyClass has been defined, we can play with it:"
+msgstr "Ahora que ÂMyClass se ha definido, se puede jugar con ella:"
 
-#: C/image-viewer.py.page:95(p)
+#: C/image-viewer.js.page:119(p)
 msgid ""
-"In the <code>__init__</code> method of the <code>GUI</code> class creates an "
-"(empty) <code>Gtk.Window</code>, sets its title and then connects a signal "
-"to quit the application once the window is closed. That's pretty simple "
-"overall, more on signals later."
+"This code creates a new instance of the class called <code>o</code>, runs "
+"<code>aMethod</code>, changes <code>propertyA</code> to a different string, "
+"and then calls <code>dumpProperties</code> (which outputs the fields)."
 msgstr ""
-"En el mÃtodo <code>__init__</code> de la clase <code>GUI</code> se crea un "
-"<code>Gtk.Window</code> (vacÃa), establece su tÃtulo y despuÃs conecta una "
-"seÃal para salir de la aplicaciÃn una vez que se cierra la ventana. Es "
-"bastante simple, mÃs acerca de seÃales en adelante."
+"Este cÃdigo crear una instancia nueva de la clase llamada <code>o</code>, "
+"ejecuta <code>aMethod</code>, cambia <code>propertyA</code> a una cadena "
+"diferente y entonces llama a <code>dumpProperties</code> (que muestra los "
+"campos)."
 
-#: C/image-viewer.py.page:100(p)
+#: C/image-viewer.js.page:120(p)
 msgid ""
-"Next, <code>destroy</code> is defined which just quits the application. It "
-"is called by the <code>destroy</code> signal connected above."
+"Save the code in the <file>main.js</file> and then run it by using "
+"<guiseq><gui>Run</gui><gui>Execute</gui></guiseq> from the menu or using the "
+"toolbar."
 msgstr ""
-"DespuÃs se define <code>destroy</code> que simplemente sale de la "
-"aplicaciÃn. Se le llama a travÃs de la seÃal <code>destroy</code> conectada "
-"anteriormente."
+"Guarde el cÃdigo en el archivo <file>main.js</file> y ejecÃtelo usando "
+"<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq> desde el menà o "
+"usando la barra de herramientas."
 
-#: C/image-viewer.py.page:104(p)
-msgid "The rest of the file does initialisation for Gtk and displays the GUI."
+#: C/image-viewer.js.page:126(p)
+msgid "Let's see what a very basic Gtk application looks like in JavaScript:"
+msgstr "Vea como queda una aplicaciÃn GTK+ muy bÃsica en JavaScript:"
+
+#: C/image-viewer.js.page:142(p)
+msgid ""
+"<code>Gtk.init</code> initializes the Gtk library; this statement is "
+"mandatory for all Gtk programs."
 msgstr ""
-"El resto del archivo realiza la inicializaciÃn de GTK+ y muestra la IGU."
+"<code>Gtk.init</code> inicializa la biblioteca GTK; esta sentencia es "
+"obligatoria para todos los programas GTK."
 
-#: C/image-viewer.py.page:108(p)
+#: C/image-viewer.js.page:145(p)
 msgid ""
-"This code is ready to run, so try it using <guiseq><gui>Run</"
-"gui><gui>Execute</gui></guiseq>. It should show you an empty window."
+"The next line creates the main window by creating a new <code>Gtk.Window</"
+"code> object. You can pass several properties to the window's constructor by "
+"using the syntax <code>{property: value, property: value, ...}</code>. In "
+"this case we are setting the title of the window."
 msgstr ""
-"Este cÃdigo està listo para usarse, por lo que puede probarlo usando "
-"<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq>. DeberÃa mostrar una "
-"ventana vacÃa."
+"La siguiente lÃnea crea la ventana principal creando un objeto <code>Gtk."
+"Window</code>. Puede pasar varias propiedades al constructor de la ventana "
+"usando la sintaxis <code>{property: value, property: value, ...}</code>. En "
+"este caso, se està estableciendo el tÃtulo de la ventana."
 
-#: C/image-viewer.py.page:131(p)
+#: C/image-viewer.js.page:146(p)
+msgid ""
+"The next line explicitly shows the window. In Gtk, every widget is hidden by "
+"default."
+msgstr ""
+"La siguiente lÃnea muestra explÃcitamente la ventana. En GTK+, cada widget "
+"està oculto de manera predeterminada."
+
+#: C/image-viewer.js.page:147(p)
+msgid ""
+"Finally, <code>Gtk.main</code> runs the main loop â in other words, it "
+"executes the program. The main loop listens for events (signals) from the "
+"user interface and then calls a signal handler which will do something "
+"useful. We'll learn more about signals shortly."
+msgstr ""
+"Finalmente, <code>Gtk.main</code> ejecuta el bucle principal; en otras "
+"palabras, ejecuta el programa. El bucle principal escucha los eventos "
+"(seÃales) de la interfaz del usuario y llama a un manejador de la seÃal que "
+"harà algo Ãtil. En breve aprenderà mÃs cosas sobre las seÃales."
+
+#: C/image-viewer.js.page:150(p)
+msgid ""
+"Save the code in <file>main.js</file> and run it. You will notice that the "
+"application does not quit when you close the window. This is because we "
+"haven't set up a signal handler to deal with the window's <code>destroy</"
+"code> (close) signal yet. We'll do this shortly, but for now you can just "
+"hit <keyseq><key>Ctrl</key><key>C</key></keyseq> in the terminal window to "
+"quit the program."
+msgstr ""
+"Guarde el cÃdigo en <file>main.js</file> y ejecÃtelo. Notarà que la "
+"aplicaciÃn no termina cuando cierra la ventana. Esto es porque todavÃa no se "
+"ha configurado un manejador de seÃal para gestionar la seÃal <code>destroy</"
+"code> (cerrar) de la ventana. Esto se harà en breve, pero por el momento "
+"puede pulsar <keyseq><key>Ctrl</key><key>C</key></keyseq> en la ventana de "
+"la terminal para salir del programa."
+
+#: C/image-viewer.js.page:155(title)
+msgid "Adding classes"
+msgstr "AÃadir clases"
+
+#: C/image-viewer.js.page:156(p)
+msgid ""
+"The proper way of doing Gtk programming is by using classes. Let's rewrite "
+"the simple code you just wrote using classes:"
+msgstr ""
+"La manera correcta de programar en GTK+ es usando clases. Reescriba el "
+"cÃdigo que acaba de escribir usando clases:"
+
+#. FIXME: Throws an error, "JS ERROR: !!!   Unhandled type int32 releasing GArgument" on Ubuntu 10.10
+#: C/image-viewer.js.page:175(p)
+msgid ""
+"Notice that the program is the same; we just moved the window creation code "
+"to our own <code>ImageViewer</code> class. The class's constructor calls the "
+"<code>_init</code> method, which creates and shows the window. We then "
+"create an instance of the class before running the main loop (<code>Gtk."
+"main</code>)."
+msgstr ""
+"Tenga en cuenta que el programa es el mismo; simplemente se ha movido el "
+"cÃdigo de creaciÃn de la ventana a la clase <code>ImageViewer</code>. El "
+"constructor de la clase llama al mÃtodo <code>_init</code>, que crea y "
+"muestra la ventana. Se crea entonces una instancia de la clase antes de "
+"ejecutar el bucle principal (<code>Gtk.main</code>)."
+
+#: C/image-viewer.js.page:176(p)
+msgid ""
+"This code is modular and can be split into multiple files easily. This makes "
+"it cleaner and easier to read."
+msgstr ""
+"El cÃdigo es modular y se puede dividir el varios archivos fÃcilmente. Esto "
+"hace que sea mÃs limpio y fÃcil de leer."
+
+#: C/image-viewer.js.page:189(p)
+msgid "The syntax for connecting any signal to a function is:"
+msgstr "La sintaxis para conectar cualquier seÃal a una funciÃn es:"
+
+#: C/image-viewer.js.page:192(p)
+msgid ""
+"You can find signal definitions for any object in the <link href=\"http://";
+"library.gnome.org/devel/gtk/stable/ch01.html\">GTK class reference</link>."
+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 "
+"clases de GTK+</link>."
+
+#: C/image-viewer.js.page:195(p)
+msgid ""
+"You can simplify the code by making use of an inline function definition:"
+msgstr "Puede simplificar el cÃdigo usando una definiciÃn de funciÃn en lÃnea:"
+
+#: C/image-viewer.js.page:203(title)
+msgid "Closing the window"
+msgstr "Cerrar la ventana"
+
+#: C/image-viewer.js.page:204(p)
+msgid ""
+"When you close a Gtk window it's not really closed, it's hidden. This allows "
+"you to keep the window around (which is useful if you want to ask the user "
+"if they really want to close the window, for example)."
+msgstr ""
+"Cuando cierra una ventana de GTK, realmente no se cierra, se oculta. Esto le "
+"permite mantener la ventana (lo que es Ãtil si quiere preguntar al usuario "
+"si realmente quiere cerrar la ventana, por ejemplo)."
+
+#: C/image-viewer.js.page:205(p)
+msgid ""
+"In our case, we really do just want to close the window. The simplest way of "
+"doing this is by connecting the <code>hide</code> signal of the GtkWindow "
+"object to a function that closes the application. Go back to the <file>image-"
+"viewer.js</file> file and add the following code to the <code>_init</code> "
+"method, on the line above <code>this.window.show</code>:"
+msgstr ""
+"En este caso, simplemente se quiere cerrar la ventana. La manera mÃs "
+"sencilla de hacerlo es conectar la seÃal <code>hide</code> del objeto "
+"GtkWindow a una funciÃn que cierra la aplicaciÃn. Vuelva al archivo "
+"<file>image-viewer.js</file> y aÃada el siguiente cÃdigo al mÃtodo "
+"<code>_init</code>, en la lÃnea anterior a <code>this.window.show</code>:"
+
+#: C/image-viewer.js.page:206(code)
+#, no-wrap
+msgid "this.window.connect (\"hide\", Gtk.main_quit);"
+msgstr "this.window.connect (\"hide\", Gtk.main_quit);"
+
+#: C/image-viewer.js.page:207(p)
+msgid ""
+"This connects the <code>hide</code> signal of the window to Gtk's "
+"<code>main_quit</code> function, which ends the execution of the Gtk main "
+"loop. Once the main loop finishes, the function <code>Gtk.main</code> "
+"returns. Our program would continue to run any code written after the "
+"<code>Gtk.main ();</code> line, but since we don't have any code after that "
+"point, the program just ends."
+msgstr ""
+"Esto conecta la seÃal <code>hide</code> de la ventana con la funciÃn "
+"<code>main_quit</code> de GTK, que termina la ejecuciÃn del bucle principal "
+"de GTK. Una vez que el bucle principal termina, la funciÃn <code>Gtk.main</"
+"code> retorna. El programa puede continuar ejecutando cualquier cÃdigo que "
+"haya despuÃs de la lÃnea <code>Gtk.main ();</code>, pero como no hay ningÃn "
+"cÃdigo despuÃs de ese punto, el programa simplemente termina."
+
+#: C/image-viewer.js.page:217(p)
 msgid ""
 "Let's add the box and widgets to the window. Insert the following code into "
-"the <code>__init__</code> method, immediately after the <code>window."
-"connect_after</code> line:"
+"the <code>_init</code> method, immediately above the <code>this.window.show</"
+"code> line:"
 msgstr ""
 "AÃada la caja y los widgets a la ventana. Inserte el siguiente cÃdigo en el "
-"mÃtodo <code>__init__</code>, justo debajo de la lÃnea <code>window."
-"connect_after</code>:"
+"mÃtodo <code>_init</code>, justo debajo de la lÃnea <code>this.window.show</"
+"code>:"
 
-#: C/image-viewer.py.page:139(p)
+#: C/image-viewer.js.page:221(p)
 msgid ""
-"The first line creates a <code>Gtk.Box</code> called <code>box</code> and "
-"the following lines set two of its properties: the <code>orientation</code> "
-"is set to vertical (so the widgets are arranged in a column), and the "
-"<code>spacing</code> between the widgets is set to 5 pixels. The next line "
-"then adds the newly-created <code>Gtk.Box</code> to the window."
+"The first line creates a <code>Gtk.Box</code> called <code>main_box</code> "
+"and sets two of its properties: the <code>orientation</code> is set to "
+"vertical (so widgets are arranged in a column), and the <code>spacing</code> "
+"between the widgets is set to 0 pixels. The next line then adds the newly-"
+"created <code>Gtk.Box</code> to the window."
 msgstr ""
-"La primera lÃnea crea una <code>Gtk.Box</code> llamada <code>box</code> y "
-"las siguientes lÃneas establecen dos de sus propiedades: la orientaciÃn "
-"(<code>orientation</code>) se establece a Âvertical (por lo que los widgets "
-"se colocan en columna), y el espaciado (<code>spacing</code>) entre los "
-"widgets se establece a 5 pÃxeles. La siguiente lÃnea aÃade la <code>Gtk.Box</"
-"code> reciÃn creada a la ventana."
+"La primera lÃnea crea una <code>Gtk.Box</code> llamada <code>main_box</code> "
+"y establece dos de sus propiedades: la <code>orientation</code> se establece "
+"a Âvertical (por lo que los widgets se ordenan en columna), y el "
+"<code>spacing</code> entre los widgets, que se establece a 0 pÃxeles. La "
+"siguiente lÃnea aÃade la <code>Gtk.Box</code> reciÃn creada a la ventana."
+
+#: C/image-viewer.js.page:227(p)
+msgid ""
+"To add some widgets to the <code>Gtk.Box</code>, insert the following code "
+"directly below the <code>this.window.add (main_box)</code> line:"
+msgstr ""
+"Para aÃadir algunos widgets a la <code>Gtk.Box</code>, inserte el siguiente "
+"cÃdigo justo debajo de la lÃnea <code>this.window.add (main_box)</code>:"
+
+#: C/image-viewer.js.page:231(p)
+msgid ""
+"The first line creates a new <code>Gtk.Image</code> called <code>image</"
+"code>, which will be used to display an image file. Then, the image widget "
+"is added (<em>packed</em>) into the <code>main_box</code> container using "
+"<code>Gtk.Box</code>'s <link href=\"http://library.gnome.org/devel/gtk/";
+"stable/GtkBox.html#gtk-box-pack-start\"><code>pack_start</code></link> "
+"method."
+msgstr ""
+"La primera lÃnea crea una <code>Gtk.Image</code> nueva llamada <code>image</"
+"code>, que se usarà para mostrar un archivo de imagen. Entonces, se aÃade el "
+"widget de imagen (<em>packed</em>) al contenedor <code>main_box</code> "
+"usando el mÃtodo <link href=\"http://library.gnome.org/devel/gtk/stable/";
+"GtkBox.html#gtk-box-pack-start\"><code>pack_start</code></link> de <code>Gtk."
+"Box</code>."
+
+#: C/image-viewer.js.page:232(p)
+msgid ""
+"<code>pack_start</code> takes 4 arguments: the widget that is to be added to "
+"the <code>Gtk.Box</code> (<code>child</code>); whether the <code>Gtk.Box</"
+"code> should grow larger when the new widget is added (<code>expand</code>); "
+"whether the new widget should take up all of the extra space created if the "
+"<code>Gtk.Box</code> gets bigger (<code>fill</code>); and how much space "
+"there should be, in pixels, between the widget and its neighbors inside the "
+"<code>Gtk.Box</code> (<code>padding</code>)."
+msgstr ""
+"<code>pack_start</code> toma 4 argumentos: el widget que aÃadir a la "
+"<code>Gtk.Box</code> (<code>child</code>); indica si la <code>Gtk.Box</code> "
+"debe crecer a lo largo cuando se aÃade el widget nuevo (<code>expand</"
+"code>); indica si el widget nuevo debe tomar todo el espacio adicional "
+"creado si la <code>Gtk.Box</code> se hace mÃs grande (<code>fill</code>); y "
+"cuÃnto espacio debe haber, en pÃxeles, entre el widget y los demÃs widgets "
+"dentro de la <code>Gtk.Box</code> (<code>padding</code>)."
 
-#: C/image-viewer.py.page:145(p)
+#: C/image-viewer.js.page:239(p)
 msgid ""
-"To add some widgets to the <code>Gtk.Box</code>, insert the following code "
-"directly below the <code>window.add (box)</code> line:"
+"These lines are similar to the first two, but this time they create a "
+"<code>Gtk.Button</code> and add it to <code>main_box</code>. Notice that we "
+"are setting the <code>expand</code> argument (the second one) to "
+"<code>false</code> here, whereas it was set to <code>true</code> for the "
+"<code>Gtk.Image</code>. This will cause the image to take up all available "
+"space and the button to take only the space it needs. When you maximize the "
+"window, the button size will remain the same, but the image size will "
+"increase, taking up all of the rest of the window."
 msgstr ""
-"Para aÃadir algunos widgets a la <code>Gtk.Box</code>, inserte el siguiente "
-"cÃdigo justo debajo de la lÃnea <code>window.add (box)</code>:"
+"Estas lÃneas son similares a las dos primeras, pero esta vez crean un "
+"<code>Gtk.Button</code> y lo aÃaden a la <code>main_box</code>. Tenga en "
+"cuenta que aquà se està estableciendo el argumento <code>expand</code> (el "
+"segundo) a <code>false</code>, mientras que para la <code>Gtk.Image</code> "
+"se establecià a <code>true</code>. Esto harà que la imagen tome todo el "
+"espacio disponible y que el botÃn tome sÃlo el espacio que necesite. Cuando "
+"se maximiza la ventana, el tamaÃo del botÃn serà el mismo, pero el tamaÃo de "
+"la imagen aumentarà junto con el resto de la ventana."
 
-#: C/image-viewer.py.page:149(p)
+#: C/image-viewer.js.page:240(p)
 msgid ""
-"The first line creates a new <code>Gtk.Image</code> called <code>image</"
-"code>, which will be used to display an image file. As we need that later on "
-"in the signal handler, we will define it as a class-wide variable. You need "
-"to add <code>image = 0</code> to the beginning of the <code>GUI</code> "
-"class. Then, the image widget is added (<em>packed</em>) into the <code>box</"
-"code> container using GtkBox's <link href=\"http://library.gnome.org/devel/";
-"gtk/stable/GtkBox.html#gtk-box-pack-start\"><code>pack_start</code></link> "
-"method."
+"Finally, we must change the <code>this.window.show ();</code> line to read:"
 msgstr ""
-"La primera lÃnea crea una <code>Gtk.Image</code> llamada <code>image</code>, "
-"que se usarà para mostrar un archivo de imagen. Como se necesitarà mÃs tarde "
-"en el manejador de la seÃal, se definirà como variable a nivel de clase. "
-"Deberà aÃadir <code>image = 0</code> al principio de la clase <code>GUI</"
-"code>. Entonces se aÃade el widget de imagen (<em>packed</em>) en el "
-"contenedor <code>box</code> usando el mÃtodo <link href=\"http://library.";
-"gnome.org/devel/gtk/stable/GtkBox.html#gtk-box-pack-start"
-"\"><code>pack_start</code></link> de GtkBox."
+"Finalmente, se debe cambiar la lÃnea <code>this.window.show ();</code> para "
+"leer:"
 
-#: C/image-viewer.py.page:151(p)
-msgid ""
-"<code>pack_start</code> takes 4 arguments: the widget that is to be added to "
-"the GtkBox (<code>child</code>); whether the <code>Gtk.Box</code> should "
-"grow larger when the new widget is added (<code>expand</code>); whether the "
-"new widget should take up all of the extra space created if the <code>Gtk."
-"Box</code> gets bigger (<code>fill</code>); and how much space there should "
-"be, in pixels, between the widget and its neighbors inside the <code>Gtk."
-"Box</code> (<code>padding</code>)."
-msgstr ""
-"<code>pack_start</code> toma 4 argumentos: el widget que aÃadir a la GtkBox "
-"(<code>child</code>); si la <code>Gtk.Box</code> debe crecer cuando aÃada el "
-"widget nuevo (<code>expand</code>); si el widget nuevo debe tomar todo el "
-"espacio adicional creado si la <code>Gtk.Box</code> crece (<code>fill</"
-"code>); y cuÃnto espacio debe haber, en pÃxeles, entre el widget y sus "
-"vecinos dentro de la <code>Gtk.Box</code> (<code>padding</code>)."
+#: C/image-viewer.js.page:241(code)
+#, no-wrap
+msgid "this.window.show_all ();"
+msgstr "this.window.show_all ();"
 
-#: C/image-viewer.py.page:159(p)
+#: C/image-viewer.js.page:242(p)
 msgid ""
-"These lines are similar to the first two, but this time they create a "
-"<code>Gtk.Button</code> and add it to <code>box</code>. Notice that we are "
-"setting the <code>expand</code> argument (the second one) to <code>False</"
-"code> here, whereas it was set to <code>True</code> for the <code>Gtk.Image</"
-"code>. This will cause the image to take up all available space and the "
-"button to take only the space it needs. When you maximize the window, the "
-"button size will remain the same, but the image size will increase, taking "
-"up all of the rest of the window."
+"This will show the child of the Gtk window, and all of its children, and its "
+"children's children, and so on. (Remember that Gtk widgets are all hidden by "
+"default.)"
 msgstr ""
-"Estas liÌneas son similares a las dos primeras, pero esta vez crean un "
-"<code>Gtk.Button</code> y lo anÌaden a la <code>box</code>. Tenga en cuenta "
-"que se estaÌ estableciendo el argumento <code>expand</code> (el segundo) a "
-"<code>False</code>, mientras que para la <code>Gtk.Image</code> se "
-"establecià a <code>True</code>. Esto haraÌ que la imagen tome todo el espacio "
-"disponible y que el botoÌn tome soÌlo el espacio que necesite. Cuando se "
-"maximiza la ventana, el tamanÌo del botoÌn seraÌ el mismo, pero el tamanÌo de la "
-"imagen aumentaraÌ junto con el resto de la ventana."
+"Esto mostrarà el hijo de la ventana de GTK, y todos sus hijos, y los hijos "
+"de sus hijos, etcÃtera. (Recuerde que los widgets de GTK estÃn ocultos de "
+"manera predeterminada.)"
 
-#: C/image-viewer.py.page:164(p)
+#: C/image-viewer.js.page:247(p)
 msgid ""
-"When the user clicks on the <gui>Open Image...</gui> button, a dialog should "
-"appear so that the user can choose a picture. Once chosen, the picture "
-"should be loaded and shown in the image widget."
+"When the user clicks on the <gui>Open</gui> button, a dialog should appear "
+"so that the user can choose a picture. Once chosen, the picture should be "
+"loaded and shown in the image widget."
 msgstr ""
-"Cuando el usuario pulse sobre el botÃn <gui>Abrir imagen...</gui>, deberÃa "
-"aparece un diÃlogo en el que el usuario pueda elegir una imagen. una vez "
-"elegida, la imagen deberÃa cargarse y mostrarse en el widget de imagen."
+"Cuando el usuario pulse en el botÃn <gui>Abrir</gui>, debe aparecer un "
+"diÃlogo en el que el usuario pueda elegir una imagen. una vez elegida, la "
+"imagen se debe cargar y mostrar en el widget de imagen."
 
-#: C/image-viewer.py.page:165(p)
+#: C/image-viewer.js.page:248(p)
 msgid ""
 "The first step is to connect the <code>clicked</code> signal of the button "
-"to a signal handler function, which we call <code>on_open_clicked</code>. "
-"Put this code immediately after the <code>button = Gtk.Button()</code> line "
-"where the button was created:"
+"to a signal handler function, which we call <code>_openClicked</code>. Put "
+"this code immediately after the <code>var open_button = new Gtk.Button</"
+"code> line where the button was created:"
 msgstr ""
 "El primer paso es conectar la seÃal <code>clicked</code> del botÃn a una "
-"funciÃn manejadora de la seÃal, llamada <code>on_open_clicked</code>. Ponga "
-"este cÃdigo inmediatamente despuÃs de la lÃnea <code>button = Gtk.Button()</"
-"code> en la que se creà el botÃn:"
+"funciÃn manejadora de la seÃal, llamada <code>_openClicked</code>. Ponga "
+"este cÃdigo inmediatamente despuÃs de la lÃnea <code>var open_button = new "
+"Gtk.Button</code> en la que se creà el botÃn:"
 
-#: C/image-viewer.py.page:169(p)
+#: C/image-viewer.js.page:251(p)
 msgid ""
-"This will connect the <code>clicked</code> signal to <code>on_open_clicked</"
-"code> method that we will define below."
+"We are using the <em>Lang</em> JavaScript helper here. It allows us to "
+"connect a <em>class method</em> to the signal, rather than a plain function "
+"(without a class) which we had used before for the window's <code>hide</"
+"code> signal. Don't worry about this for now, it's just a technical detail. "
+"For it to work, you also need to put the following line at the top of the "
+"file:"
 msgstr ""
-"Esto conectarà la seÃal <code>clicked</code> al mÃtodo "
-"<code>on_open_clicked</code> que se definirà mÃs adelante."
+"Aquà se està usando el JavaScript auxiliar <em>Lang</em>. Permite conectar "
+"un <em>mÃtodo de clase</em> a la seÃal, en vez de una funciÃn normal (sin "
+"clase) que se haya usado anteriormente para seÃal <code>hide</code> de la "
+"ventana. No se preocupe por esto ahora, es sÃlo un detalle tÃcnico. Para que "
+"funcione, debe poner tambiÃn la siguiente lÃnea en la parte superior del "
+"archivo:"
 
-#: C/image-viewer.py.page:175(p)
+#: C/image-viewer.js.page:252(code)
+#, no-wrap
+msgid "const Lang = imports.lang;"
+msgstr "const Lang = imports.lang;"
+
+#: C/image-viewer.js.page:257(p)
 msgid ""
-"Now we can create the <code>on_open_clicked</code> method. Insert the "
-"following into the <code>GUI</code> class code block, after the "
-"<code>__init__</code> method:"
+"Now we can create the <code>_openClicked()</code> method. Insert the "
+"following into the <code>ImageViewer.prototype</code> code block, after the "
+"<code>_init</code> method (and not forgetting the comma):"
 msgstr ""
-"Ahora se puede crear el mÃtodo <code>on_open_clicked</code>. Inserte lo "
-"siguente dentro del bloque de clase <code>GUI</code>, despuÃs del mÃtodo "
-"<code>__init__</code>:"
+"Ahora se puede crear el mÃtodo <code>_openClicked()</code>. Inserte el "
+"siguiente cÃdigo en el bloque de cÃdigo de <code>ImageViewer.prototype</"
+"code>, despuÃs del mÃtodo <code>_init</code> (y no olvide la coma):"
 
-#: C/image-viewer.py.page:194(p)
+#: C/image-viewer.js.page:280(p)
 msgid ""
-"The line beginning with <code>dialog</code> creates an <gui>Open</gui> "
-"dialog, which the user can use to choose files. We set three properties: the "
+"The line beginning with <code>var chooser</code> creates an <gui>Open</gui> "
+"dialog, which the user can use to choose files. We set four properties: the "
 "title of the dialog; the action (type) of the dialog (it's an \"open\" "
 "dialog, but we could have used <code>SAVE</code> if the intention was to "
-"save a file; and <code>transient_for</code>, which sets the parent window of "
-"the dialog."
+"save a file; <code>transient_for</code>, which sets the parent window of the "
+"dialog; and <code>modal</code> which, if set to <code>true</code>, prevents "
+"the user from clicking on another area of the application until the dialog "
+"is closed."
 msgstr ""
-"La lÃnea que empieza por <code>dialog</code> crea un diÃlogo <gui>Abrir</"
-"gui>, que el usuario puede utilizar para abrir archivos. Se establecen tres "
-"propiedades: el tÃtulo del diÃlogo; la acciÃn (tipo) del diÃlogo (es un "
-"diÃlogo ÂopenÂ, pero se podrÃa haber usado <code>SAVE</code> si se quisiese "
-"guardar un archivo; y <code>transient_for</code>, que establecer la ventana "
-"padre del diÃlogo."
+"La lÃnea que comienza por <code>var chooser</code> crear un diÃlogo "
+"<gui>Abrir</gui>, que el usuario puede utilizar para elegir archivos. Se "
+"establecen cuatro propiedades: el tÃtulo del diÃlogo, la acciÃn (tipo) del "
+"diÃlogo (es un diÃlogo ÂopenÂ, pero se podrÃa haber usado <code>SAVE</code> "
+"si la intenciÃn hubiese sido guardar un archivo; <code>transient_for</code>, "
+"que establece la ventana padre del diÃlogo; y <code>modal</code>, que si se "
+"establecer a <code>true</code> evita que el usuario pueda pulsar en otra "
+"Ãrea de la aplicaciÃn hasta que no se cierre el diÃlogo."
 
-#: C/image-viewer.py.page:207(p)
+#: C/image-viewer.js.page:293(p)
 msgid ""
-"<code>dialog.run</code> displays the <gui>Open</gui> dialog. The dialog will "
-"wait for the user to choose an image; when they do, <code>dialog.run</code> "
-"will return the value <output>1</output> (it would return <output>0</output> "
-"if the user clicked <gui>Cancel</gui>). The <code>if</code> statement tests "
-"for this."
+"<code>chooser.run</code> displays the <gui>Open</gui> dialog. The dialog "
+"will wait for the user to choose an image; when they do, <code>chooser.run</"
+"code> will return the value <output>1</output> (it would return <output>0</"
+"output> if the user clicked <gui>Cancel</gui>). The <code>if</code> "
+"statement tests for this."
 msgstr ""
-"<code>dialog.run</code> muestra el diÃlogo <gui>Abrir</gui>. El diÃlogo "
-"esperarà a que el usuario elija una imagen; cuando lo haga, <code>dialog."
+"<code>chooser.run</code> muestra el diÃlogo <gui>Abrir</gui>. El diÃlogo "
+"esperarà a que el usuario elija una imagen; cuando lo haga, <code>chooser."
 "run</code> devolverà el valor <output>1</output> (devolverÃa <output>0</"
 "output> si el usuario pulsara <gui>Cancelar</gui>). La sentencia <code>if</"
 "code> comprueba esto."
 
-#: C/image-viewer.py.page:220(p)
+#: C/image-viewer.js.page:306(p)
 msgid ""
 "All of the code you need should now be in place, so try running the code. "
 "That should be it; a fully-functioning image viewer (and a whistlestop tour "
-"of Python and Gtk) in not much time at all!"
+"of JavaScript and Gtk) in not much time at all!"
 msgstr ""
 "Todo el cÃdigo que necesita debe estar en su lugar, asà que trate de "
 "ejecutar el cÃdigo. Esto deberÃa ser todo; un visor de imÃgenes "
-"completamente funcional (y un completo tour sobre Python y GTK+) en poco "
+"completamente funcional (y un completo tour sobre JavaScript y GTK+) en poco "
 "tiempo."
 
-#: C/image-viewer.py.page:225(p)
+#: C/image-viewer.js.page:311(p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
-"<link href=\"image-viewer/image-viewer.py\">reference code</link>."
+"<link href=\"image-viewer/image-viewer.js\">reference code</link>."
 msgstr ""
 "Si tiene problemas con este tutorial, compare su coÌdigo con este <link href="
-"\"image-viewer/image-viewer.py\">coÌdigo de referencia</link>."
+"\"image-viewer/image-viewer.js\">coÌdigo de referencia</link>."
 
 #: C/image-viewer.cpp.page:8(desc)
 msgid "A little bit more than a simple \"Hello world\" GTKmm application."
@@ -3617,10 +4049,6 @@ msgstr ""
 "configurar una construcciÃn de depuraciÃn. Esto sÃlo necesita hacer una vez "
 "para la primera construcciÃn."
 
-#: C/image-viewer.cpp.page:81(title) C/image-viewer.c.page:82(title)
-msgid "Creating the user interface"
-msgstr "Crear la interfaz de usuario"
-
 #: C/image-viewer.cpp.page:82(p)
 msgid ""
 "Now we will bring life into the empty window. GTKmm organizes the user "
@@ -3688,10 +4116,6 @@ msgstr ""
 "<code>show_all()</code>. Esto es equivalente a usar el mÃtodo <code>show()</"
 "code> en cada uno de los widgets."
 
-#: C/image-viewer.cpp.page:141(title) C/image-viewer.c.page:147(title)
-msgid "Showing the image"
-msgstr "Mostrar la imagen"
-
 #: C/image-viewer.cpp.page:142(p)
 msgid ""
 "We will now define the signal handler for the <em>clicked</em> signal or the "
@@ -3799,18 +4223,6 @@ msgstr ""
 "sÃlo es una variable local, y se destruye (y por lo tanto se oculta) cuando "
 "el Ãmbito termina."
 
-#: C/image-viewer.cpp.page:207(p) C/image-viewer.c.page:215(p)
-#: C/guitar-tuner.c.page:250(p)
-msgid ""
-"All of the code should now be ready to go. Click <guiseq><gui>Build</"
-"gui><gui>Build Project</gui></guiseq> to build everything again, and then "
-"<guiseq><gui>Run</gui><gui>Execute</gui></guiseq> to start the application."
-msgstr ""
-"Todo el cÃdigo deberÃa estar listo para ejecutarse. Pulse "
-"<guiseq><gui>Construir</gui><gui>Construir proyecto</gui></guiseq> para "
-"construir todo otra vez y pulse <guiseq><gui>Ejecutar</gui><gui>Ejecutar</"
-"gui></guiseq> para iniciar la aplicaciÃn."
-
 #: C/image-viewer.cpp.page:208(p) C/image-viewer.c.page:216(p)
 msgid ""
 "If you haven't already done so, choose the <file>Debug/src/image-viewer</"
@@ -3829,10 +4241,6 @@ msgstr ""
 "Si tiene problemas con este tutorial, compare su coÌdigo con este <link href="
 "\"image-viewer/image-viewer.cc\">coÌdigo de referencia</link>."
 
-#: C/image-viewer.c.page:8(desc)
-msgid "A little bit more than a simple \"Hello world\" Gtk application."
-msgstr "Algo mÃs que una sencilla aplicaciÃn ÂHola mundo en GTK."
-
 #: C/image-viewer.c.page:26(p)
 msgid "Some basic concepts of C/GObject programming"
 msgstr "Algunos conceptos bÃsicos de programaciÃn en C/GObject"
@@ -3896,17 +4304,6 @@ msgstr ""
 "La funciÃn <code>create_window</code> crea una ventana (vacÃa) nueva y "
 "conecta una seÃal para salir de la aplicaciÃn cuando se cierra esa ventana."
 
-#: C/image-viewer.c.page:67(p) C/guitar-tuner.vala.page:72(p)
-#: C/guitar-tuner.c.page:72(p)
-msgid ""
-"Connecting signals is how you define what happens when you push a button, or "
-"when some other event happens. Here, the <code>destroy</code> function is "
-"called (and quits the app) when you close the window."
-msgstr ""
-"Conectar seÃales es como se define lo que pasa cuando pulsa un botÃn, o "
-"cuando ocurre algÃn otro evento. AquÃ, se llama a la funciÃn <code>destroy</"
-"code> (y se sale de la aplicaciÃn) cuando cierra la ventana."
-
 #: C/image-viewer.c.page:70(p) C/guitar-tuner.c.page:75(p)
 msgid ""
 "The <code>main</code> function is run by default when you start a C "
@@ -4088,15 +4485,6 @@ msgstr ""
 "archivo de imagen seleccionado por el usuario. La ÂGtkImage cargarà y "
 "mostrarà la imagen elegida."
 
-#: C/image-viewer.c.page:207(p)
-msgid ""
-"In the final line of this method, we destroy the <gui>Open</gui> dialog "
-"because we don't need it any more. Destroying automatically hides the dialog."
-msgstr ""
-"Al final de la lÃnea de este mÃtodo, se destruye el diÃlogo <gui>Abrir</gui> "
-"porque ya no se necesita mÃs. El diÃlogo se oculta automÃticamente al "
-"destruirlo."
-
 #: C/image-viewer.c.page:221(p)
 msgid ""
 "If you run into problems with the tutorial, compare your code with this "
@@ -4205,16 +4593,6 @@ msgstr ""
 "guitarra.vala</file> desde las pestanÌas <gui>Proyecto</gui> o <gui>Archivo</"
 "gui>. DeberiÌa ver algo de coÌdigo que comience con las liÌneas:"
 
-#: C/guitar-tuner.vala.page:64(p)
-msgid ""
-"The code loads an (empty) window from the user interface description file "
-"and shows it. More details are given below; skip this list if you understand "
-"the basics:"
-msgstr ""
-"El cÃdigo carga una ventana (vacÃa) desde el archivo de descripciÃn de "
-"interfaz de usuario y la muestra. Se ofrecen mÃs detalles a continuaciÃn; "
-"omita esta lista si entiende los conceptos bÃsicos:"
-
 #: C/guitar-tuner.vala.page:71(p)
 msgid ""
 "The constructor of the <code>Main</code> class creates a new window by "
@@ -4497,8 +4875,8 @@ msgstr ""
 "GStreamer (<code>Gst.Element</code>), y un elemento de tuberÃa (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)."
 
@@ -5736,6 +6114,14 @@ msgstr ""
 "Por supuesto, cualquier versiÃn mÃs moderna tambiÃn funcionarÃ. Ahora, le "
 "deseamos que disfrute con las <link xref=\"index\">demostraciones</link>."
 
+#: C/audio-player.vala.page:8(desc)
+msgid "XXXX"
+msgstr ""
+
+#: C/audio-player.vala.page:17(title)
+msgid "Audio Player"
+msgstr "Reproductor de sonido"
+
 #. Put one translator per line, in the form of NAME <EMAIL>, YEAR1, YEAR2
 #: C/index.page:0(None)
 msgid "translator-credits"



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