[gnome-devel-docs] Updated Spanish translation
- From: Daniel Mustieles García <dmustieles src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-devel-docs] Updated Spanish translation
- Date: Tue, 22 Sep 2015 17:28:14 +0000 (UTC)
commit 506a4103d7b4d3c558b7db5f4552582da3f25e8a
Author: Daniel Mustieles <daniel mustieles gmail com>
Date: Tue Sep 22 19:28:04 2015 +0200
Updated Spanish translation
platform-demos/es/es.po |124635 +++++++++++++++++++++++------------------------
1 files changed, 61536 insertions(+), 63099 deletions(-)
---
diff --git a/platform-demos/es/es.po b/platform-demos/es/es.po
index 9f7513b..c7e1447 100644
--- a/platform-demos/es/es.po
+++ b/platform-demos/es/es.po
@@ -4,63104 +4,61541 @@
# This file is distributed under the same license as the gnome-devel-docs package.
# Jorge González <jorgegonz svn gnome org>, 2011.
# Nicolás Satragno <nsatragno gnome org>, 2012, 2013.
-# Daniel Mustieles <daniel mustieles gmail com>, 2011, 2012, 2013, 2014, 2015.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-devel-docs.platform-demos.master\n"
-"POT-Creation-Date: 2015-07-13 06:58+0000\n"
-"PO-Revision-Date: 2015-07-13 \n"
-"Last-Translator: Daniel Mustieles <daniel mustieles gmail com>\n"
-"Language-Team: Español; Castellano <gnome-es-list gnome org>\n"
-"Language: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Gtranslator 2.91.6\n"
-
-#. Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2
-msgctxt "_"
-msgid "translator-credits"
-msgstr ""
-"Daniel Mustieles <daniel mustieles gmail com>, 2011 - 2015\n"
-"Nicolás Satragno <nsatragno gmail com>, 2012 - 2013\n"
-"Jorge González <jorgegonz svn gnome org>, 2011"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/02_welcome_to_the_grid.js.page:95
-msgctxt "_"
-msgid ""
-"external ref='media/02_jsgrid_01.png' md5='3fdc22d361cf801f71557fdc76ae5b49'"
-msgstr ""
-"external ref='media/02_jsgrid_01.png' md5='3fdc22d361cf801f71557fdc76ae5b49'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/02_welcome_to_the_grid.js.page:150
-msgctxt "_"
-msgid ""
-"external ref='media/02_jsgrid_02.png' md5='07db86b0043ba5c3c24a90d7322bd81e'"
-msgstr ""
-"external ref='media/02_jsgrid_02.png' md5='07db86b0043ba5c3c24a90d7322bd81e'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/02_welcome_to_the_grid.js.page:167
-msgctxt "_"
-msgid ""
-"external ref='media/02_jsgrid_03.png' md5='817351e73c687d47253c56ed06b6629f'"
-msgstr ""
-"external ref='media/02_jsgrid_03.png' md5='817351e73c687d47253c56ed06b6629f'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/02_welcome_to_the_grid.js.page:197
-msgctxt "_"
-msgid ""
-"external ref='media/02_jsgrid_04.png' md5='eeaead27cee2851877fc3cfe66177f07'"
-msgstr ""
-"external ref='media/02_jsgrid_04.png' md5='eeaead27cee2851877fc3cfe66177f07'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/02_welcome_to_the_grid.js.page:206
-msgctxt "_"
-msgid ""
-"external ref='media/02_jsgrid_05.png' md5='a3ad12f432d5977fc1f66302ad5b7498'"
-msgstr ""
-"external ref='media/02_jsgrid_05.png' md5='a3ad12f432d5977fc1f66302ad5b7498'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/02_welcome_to_the_grid.js.page:217
-msgctxt "_"
-msgid ""
-"external ref='media/02_jsgrid_06.png' md5='450e48dbf6b8f5ce1c208e4812e1714b'"
-msgstr ""
-"external ref='media/02_jsgrid_06.png' md5='450e48dbf6b8f5ce1c208e4812e1714b'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/02_welcome_to_the_grid.js.page:227
-msgctxt "_"
-msgid ""
-"external ref='media/02_jsgrid_07.png' md5='0b304d70728903fbb2601d55bf00fdb9'"
-msgstr ""
-"external ref='media/02_jsgrid_07.png' md5='0b304d70728903fbb2601d55bf00fdb9'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/02_welcome_to_the_grid.js.page:249
-msgctxt "_"
-msgid ""
-"external ref='media/02_jsgrid_08.png' md5='78890beb47bd11360154b8ca4d50d1ff'"
-msgstr ""
-"external ref='media/02_jsgrid_08.png' md5='78890beb47bd11360154b8ca4d50d1ff'"
-
-#. (itstool) path: credit/name
-#: C/02_welcome_to_the_grid.js.page:15 C/03_getting_the_signal.js.page:16
-#: C/aboutdialog.js.page:12 C/button.js.page:13 C/checkbutton.js.page:13
-#: C/comboboxtext.js.page:15 C/combobox.js.page:17 C/dialog.js.page:13
-#: C/entry.js.page:13 C/grid.js.page:18 C/hellognome.js.page:12
-#: C/image.js.page:12 C/label.js.page:13 C/linkbutton.js.page:13
-#: C/messagedialog.js.page:16 C/progressbar.js.page:12
-#: C/radiobutton.js.page:13 C/scale.js.page:13 C/set-up-gedit.js.page:12
-#: C/spinbutton.js.page:16 C/spinner.js.page:13 C/statusbar.js.page:13
-#: C/switch.js.page:13 C/textview.js.page:17 C/togglebutton.js.page:13
-#: C/treeview_simple_liststore.js.page:16 C/window.js.page:13
-msgid "Taryn Fox"
-msgstr "Taryn Fox"
-
-#. (itstool) path: credit/years
-#: C/02_welcome_to_the_grid.js.page:17 C/03_getting_the_signal.js.page:18
-#: C/aboutdialog.c.page:17 C/aboutdialog.js.page:14 C/aboutdialog.py.page:16
-#: C/aboutdialog.vala.page:17 C/beginner.js.page:13 C/button.c.page:17
-#: C/button.js.page:15 C/button.py.page:17 C/button.vala.page:16
-#: C/buttonbox.py.page:17 C/checkbutton.c.page:15 C/checkbutton.js.page:15
-#: C/checkbutton.py.page:16 C/checkbutton.vala.page:15
-#: C/colorbutton.py.page:16 C/colorbutton.vala.page:17
-#: C/comboboxtext.js.page:17 C/combobox.c.page:15 C/combobox.js.page:19
-#: C/combobox.py.page:17 C/combobox.vala.page:15
-#: C/combobox_multicolumn.py.page:16 C/dialog.c.page:17 C/dialog.js.page:15
-#: C/dialog.py.page:17 C/dialog.vala.page:15 C/entry.c.page:15
-#: C/entry.js.page:15 C/entry.py.page:17 C/entry.vala.page:15
-#: C/filechooserdialog.py.page:19 C/filechooserdialog.vala.page:18
-#: C/fontchooserwidget.py.page:17 C/gmenu.c.page:15 C/gmenu.js.page:15
-#: C/gmenu.py.page:17 C/gmenu.py.page:23 C/gmenu.vala.page:16 C/grid.c.page:15
-#: C/grid.js.page:15 C/grid.py.page:17 C/grid.py.page:23 C/grid.vala.page:17
-#: C/GtkApplicationWindow.c.page:15 C/GtkApplicationWindow.js.page:15
-#: C/GtkApplicationWindow.py.page:17 C/GtkApplicationWindow.py.page:22
-#: C/GtkApplicationWindow.vala.page:15 C/guitar-tuner.js.page:14
-#: C/hellognome.js.page:14 C/hello-world.c.page:17 C/hello-world.js.page:17
-#: C/hello-world.py.page:17 C/hello-world.vala.page:17 C/image.c.page:15
-#: C/image.js.page:14 C/image.py.page:17 C/image.vala.page:15
-#: C/label.c.page:16 C/label.js.page:15 C/label.py.page:19 C/label.py.page:24
-#: C/label.vala.page:15 C/linkbutton.c.page:15 C/linkbutton.js.page:15
-#: C/linkbutton.py.page:16 C/linkbutton.vala.page:15 C/menubar.c.page:17
-#: C/menubar.py.page:17 C/menubar.py.page:22 C/menubar.vala.page:17
-#: C/menubutton.js.page:15 C/menubutton.py.page:16 C/menubutton.py.page:22
-#: C/menubutton.vala.page:15 C/messagedialog.c.page:16
-#: C/messagedialog.js.page:18 C/messagedialog.py.page:16
-#: C/messagedialog.vala.page:15 C/model-view-controller.py.page:23
-#: C/paned.c.page:15 C/paned.py.page:16 C/progressbar.c.page:16
-#: C/progressbar.js.page:14 C/progressbar.py.page:16
-#: C/progressbar.vala.page:15 C/properties.py.page:23 C/radiobutton.c.page:17
-#: C/radiobutton.js.page:15 C/radiobutton.py.page:17
-#: C/radiobutton.vala.page:18 C/response-type.page:11 C/scale.c.page:17
-#: C/scale.js.page:15 C/scale.py.page:17 C/scale.vala.page:17
-#: C/scrolledwindow.c.page:17 C/scrolledwindow.py.page:16
-#: C/scrolledwindow.vala.page:16 C/separator.py.page:17
-#: C/set-up-gedit.js.page:14 C/signals-callbacks.py.page:23
-#: C/spinbutton.c.page:18 C/spinbutton.js.page:18 C/spinbutton.py.page:17
-#: C/spinbutton.vala.page:17 C/spinner.c.page:16 C/spinner.js.page:15
-#: C/spinner.py.page:16 C/spinner.vala.page:15 C/statusbar.c.page:19
-#: C/statusbar.js.page:15 C/statusbar.py.page:17 C/statusbar.vala.page:18
-#: C/strings.py.page:23 C/switch.c.page:15 C/switch.js.page:15
-#: C/switch.py.page:16 C/switch.vala.page:19 C/textview.c.page:15
-#: C/textview.js.page:19 C/textview.py.page:24 C/textview.vala.page:15
-#: C/togglebutton.c.page:19 C/togglebutton.js.page:15
-#: C/togglebutton.py.page:16 C/togglebutton.vala.page:18 C/toolbar.c.page:17
-#: C/toolbar.js.page:15 C/toolbar.py.page:17 C/toolbar.vala.page:16
-#: C/toolbar_builder.py.page:18 C/toolbar_builder.py.page:24
-#: C/toolbar_builder.vala.page:17 C/tooltip.py.page:17
-#: C/treeview_advanced_liststore.py.page:16
-#: C/treeview_cellrenderertoggle.py.page:16
-#: C/treeview_simple_liststore.js.page:18
-#: C/treeview_simple_liststore.py.page:17
-#: C/treeview_simple_liststore.vala.page:17 C/treeview_treestore.py.page:17
-#: C/tutorial.py.page:17 C/weatherApp.js.page:14 C/weatherAppMain.js.page:13
-#: C/weatherAutotools.js.page:13 C/weatherGeonames.js.page:13
-#: C/window.c.page:15 C/window.js.page:15 C/window.py.page:17
-#: C/window.py.page:22 C/window.vala.page:15
-msgid "2012"
-msgstr "2012"
-
-#. (itstool) path: info/desc
-#: C/02_welcome_to_the_grid.js.page:20
-msgid "Learn how to lay out UI components, like Images and Labels."
-msgstr ""
-"Aprenda cómo distribuir componentes de la IU, como imágenes y etiquetas."
-
-#. (itstool) path: page/title
-#: C/02_welcome_to_the_grid.js.page:23
-msgid "2. Welcome to the Grid"
-msgstr "2. Bienvenido a la rejilla"
-
-#. (itstool) path: synopsis/p
-#: C/02_welcome_to_the_grid.js.page:25
-msgid ""
-"This tutorial will show you how to create basic widgets, or parts of the "
-"GNOME user interface, like Images and Labels. You'll then learn how to "
-"arrange them all in a Grid, which lets you put widgets exactly where you "
-"want them."
-msgstr ""
-"Este tutorial le mostrará cómo crear widgets básicos, o partes de la "
-"interfaz de usuario de GNOME, como imágenes y etiquetas. Después aprenderá "
-"cómo ordenarlas en una rejilla, que le permite poner widgets exactamente "
-"donde los quiere."
-
-#. (itstool) path: note/p
-#: C/02_welcome_to_the_grid.js.page:26
-msgid ""
-"Have you taken <link xref=\"hellognome.js\">the first tutorial in this "
-"series</link> already? You'll want to do so before continuing."
-msgstr ""
-"¿Ya ha hecho <link xref=\"hellognome.js\">el primer tutorial en esta serie</"
-"link>? Querrá hacerlo antes de continuar."
-
-#. (itstool) path: section/title
-#: C/02_welcome_to_the_grid.js.page:32
-msgid "Going native"
-msgstr "Pasar a nativo"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:34
-msgid ""
-"In the last tutorial, we created what was basically a GNOME window frame for "
-"a web app. All the GNOME-specific code we needed to learn revolved around "
-"putting the WebView -- the widget containing our application -- into an "
-"ApplicationWindow, and telling it to display. The application itself was "
-"written in HTML and JavaScript, just like most pages on the web."
-msgstr ""
-"En el último tutorial, se creó básicamente una ventana de GNOME como marco "
-"para una aplicación web. Todo el código específico de GNOME que necesitó "
-"aprender trataba del poner la «WebView» (el widget que contenía la "
-"aplicación) en una «ApplicationWindow», y decirle que la muestre. La "
-"aplicación en sí estaba escrita en HTML y JavaScript, al igual que la "
-"mayoría de las páginas en la web."
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:35
-msgid ""
-"This time, we're going to use only native GNOME widgets. A widget is just a "
-"thing, like a checkbox or picture, and GNOME has a wide variety of them to "
-"choose from. We call them \"native\" widgets to distinguish them from things "
-"like the button and header in the web app we wrote. Because instead of using "
-"web code, these are going to be 100 percent GNOME, using GTK+."
-msgstr ""
-"Esta vez, solo se van a usar widgets nativos de GNOME. Un widget sólo es una "
-"cosa, como una casilla de verificación o una imagen, y GNOME tiene una "
-"amplia variedad para elegir. Se llaman widgets «nativos» para distinguirlos "
-"de cosas como el botón y la cabecera en la aplicación web que escribió. "
-"Porque en lugar de usar código web, estos van a ser 100% GNOME, usando GTK+."
-
-#. (itstool) path: note/p
-#: C/02_welcome_to_the_grid.js.page:36
-msgid ""
-"GTK+ stands for \"GIMP Toolkit\". It's like a toolbox of widgets that you "
-"can reach into, while building your applications. It was originally written "
-"for <link href=\"http://www.gimp.org/\">the GIMP</link>, which is a free "
-"software image editor."
-msgstr ""
-"GTK+ significa «GIMP Toolkit». Es como una caja de herramientas de widgets a "
-"la que puede acceder cuando construye sus aplicaciones. Originalmente se "
-"escribió para <link href=\"http://www.gimp.org/\">GIMP</link>, que es un "
-"editor de imágenes de software libre."
-
-#. (itstool) path: section/title
-#: C/02_welcome_to_the_grid.js.page:40
-msgid "Setting up our application"
-msgstr "Creando la aplicación"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:42
-msgid ""
-"Before we dig out any widgets from the GTK+ toolbox, we first need to write "
-"the basic boilerplate code that our application requires."
-msgstr ""
-"Antes de sacar ningún widget de la caja de herramientas de GTK+, se necesita "
-"escribir el código básico plantilla que la aplicación requiere."
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:43 C/comboboxtext.js.page:31
-#: C/textview.js.page:39
-#, no-wrap
-msgid ""
-"\n"
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-msgstr ""
-"\n"
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:49
-msgid ""
-"This part always goes at the start of your code. Depending on what you'll be "
-"doing with it, you may want to declare more imports here. What we're writing "
-"today is pretty basic, so these are all we need; Gtk for the widgets, and "
-"Lang so we can use Lang.bind to connect our application's activate and "
-"startup signals to the requisite functions."
-msgstr ""
-"Esta parte siempre va al inicio del código. Dependiendo de qué va a hacer "
-"con él, puede querer declarar más importaciones aquí. Este ejemplo es "
-"bastante básico, por lo que esto es todo lo que necesita; «Gtk» para los "
-"widgets, y «Lang» para poder usar «Lang.bind» para conectar las señales de "
-"activación e inicio de la aplicación a las funciones requeridas."
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:50
-msgid "Speaking of which:"
-msgstr "Hablando de eso:"
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:51
-#, no-wrap
-msgid ""
-"\n"
-"const WelcomeToTheGrid = new Lang.Class({\n"
-" Name: 'Welcome to the Grid',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-"const WelcomeToTheGrid = new Lang.Class({\n"
-" Name: 'Welcome to the Grid',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:74
-msgid ""
-"This is the start of the application itself, and the _init function which "
-"creates it. It tells _buildUI to create an ApplicationWindow, which we're "
-"going to call _window, and it tells our window to present itself whenever "
-"needed."
-msgstr ""
-"Este es el inicio de la aplicación en sí, y la función «_init» que la crea. "
-"Le dice a «_buildUI» que cree una «ApplicationWindow», a la que se llamará "
-"«_window», y le dice a la ventana que se presente cuando se la necesite."
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:75
-msgid ""
-"This part, again, is pretty much copy-and-paste, but you always want to give "
-"your application a unique name."
-msgstr ""
-"Esta parte, nuevamente, es principalmente copiar y pegar, pero siempre "
-"querrá darle a su aplicación un nombre único."
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:77
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 10,\n"
-" title: \"Welcome to the Grid\"});\n"
-msgstr ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 10,\n"
-" title: \"Welcome to the Grid\"});\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:88
-msgid ""
-"Finally, we start off the _buildUI function by creating a new "
-"ApplicationWindow. We specify that it goes with this application, that it "
-"should appear in the center of the screen, and that there should be at least "
-"10 pixels between the outside edge and any widgets inside of it. We also "
-"give it a title, which will appear at the top of the window."
-msgstr ""
-"Finalmente, se arranca la función «_buildUI» creando una «ApplicationWindow» "
-"nueva. Se especifica que va con esta aplicación, que debe aparecer en el "
-"centro de la pantalla, y que debe haber al menos 10 píxeles entre el borde "
-"exterior y cualquier widget dentro de ella. También se le da un título, que "
-"aparecerá en la parte superior de la ventana."
-
-#. (itstool) path: section/title
-#: C/02_welcome_to_the_grid.js.page:92
-msgid "Reaching into the GTK+ toolbox"
-msgstr "Usar la caja de herramientas de GTK+"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:93
-msgid ""
-"What widgets should we use? Well, let's say we want to write an application "
-"that looks like this:"
-msgstr ""
-"¿Qué widgets deben usarse? Bueno, si quiere escribir una aplicación que se "
-"vea así:"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:97
-msgid ""
-"We're going to need, at the very least, a picture and a text label to go "
-"with it. Let's start with the picture:"
-msgstr ""
-"Necesitará, al menos, una imagen y una etiqueta de texto para acompañarla. "
-"Comience con la imagen:"
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:98
-#, no-wrap
-msgid ""
-"\n"
-" // Create an image\n"
-" this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n"
-msgstr ""
-"\n"
-" // Create an image\n"
-" this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:103
-msgid ""
-"You can download the image file used in this example <link href=\"https://"
-"live.gnome.org/TarynFox?action=AttachFile&do=get&target=gnome-image."
-"png\">here</link>. Be sure to put it in the same directory as the code "
-"you're writing."
-msgstr ""
-"Puede descargar el archivo de imagen usado en este ejemplo <link href="
-"\"https://live.gnome.org/TarynFox?action=AttachFile&do=get&"
-"target=gnome-image.png\">aquí</link>. Asegúrese de ponerlo en la misma "
-"carpeta que el código que está escribiendo."
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:105
-#, no-wrap
-msgid ""
-"\n"
-" // Create a label\n"
-" this._label = new Gtk.Label ({ label: \"Welcome to GNOME, too!\" });\n"
-msgstr ""
-"\n"
-" // Create a label\n"
-" this._label = new Gtk.Label ({ label: \"Welcome to GNOME, too!\" });\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:109
-msgid ""
-"That code adds in the label beneath. You can see how we create widgets, "
-"here; each one is a part of Gtk, and we can give it properties that "
-"customize how it behaves. In this case, we set the Image's file property to "
-"be the filename of the picture we want, and the Label's label property to be "
-"the sentence that we want beneath the picture."
-msgstr ""
-"Ese código añade la etiqueta debajo. Puede ver cómo se crean los widgets "
-"aquí; cada uno es una parte de GTK+, y se le pueden dar propiedades que "
-"personalizan cómo se comportan. En este caso, se establece la propiedad "
-"«file» de la imagen al nombre de archivo de la imagen que se desea, y la "
-"propiedad «label» de la etiqueta a la oración que se quiere bajo la imagen."
-
-#. (itstool) path: note/p
-#: C/02_welcome_to_the_grid.js.page:110
-msgid ""
-"Yes, it sounds redundant for a Label to have a label property, but it's not. "
-"Other widgets that contain text have a label property, so it's "
-"<em>consistent</em> for the Label widget to have one too."
-msgstr ""
-"Sí, suena redundante que un objeto «Label» tenga una propiedad «label», pero "
-"no lo es. Otros widgets que contienen texto también tienen una propiedad "
-"«label», por lo que es <em>consistente</em> que un widget «Label» también "
-"tenga una."
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:111
-msgid ""
-"We can't just add these widgets to our window in order, though, the same way "
-"HTML elements appear in the order you write them. That's because an "
-"ApplicationWindow can only contain one widget."
-msgstr ""
-"Sin embargo, no se pueden simplemente añadir estos widgets a la ventana en "
-"orden, como los elementos HTML aparecen en el orden en el que los escribe. "
-"Eso es porque una «ApplicationWindow» sólo puede contener un widget."
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:112
-msgid ""
-"How do we get around that? By making that one widget a container widget, "
-"which can hold more than one widget and organize them inside it. Behold: The "
-"Grid."
-msgstr ""
-"¿Cómo se resuelve eso? Haciendo que ese widget sea un widget contenedor, que "
-"puede contener más de un widget y organizarlos dentro. Observe la rejilla."
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:113
-#, no-wrap
-msgid ""
-"\n"
-" // Create the Grid\n"
-" this._grid = new Gtk.Grid ();\n"
-msgstr ""
-"\n"
-" // Create the Grid\n"
-" this._grid = new Gtk.Grid ();\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:118
-msgid ""
-"We're not giving it any properties yet. Those will come later, as we learn "
-"how to use the Grid's powers. First, let's attach the Image and Label we "
-"made to our Grid."
-msgstr ""
-"Todavía no se le da ninguna propiedad. Estas vendrán después, cuando aprenda "
-"cómo usar los poderes de la rejilla. Primero, adjúntele a su rejilla la "
-"imagen y la etiqueta que hizo."
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:119
-#, no-wrap
-msgid ""
-"\n"
-" // Attach the image and label to the grid\n"
-" this._grid.attach (this._image, 0, 0, 1, 1);\n"
-" this._grid.attach (this._label, 0, 1, 1, 1);\n"
-msgstr ""
-"\n"
-" // Attach the image and label to the grid\n"
-" this._grid.attach (this._image, 0, 0, 1, 1);\n"
-" this._grid.attach (this._label, 0, 1, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:125
-msgid ""
-"This code looks awfully complicated, but it's not. Here's what those numbers "
-"mean:"
-msgstr ""
-"Este código se ve terriblemente complicado, pero no lo es. Aquí está lo que "
-"esos números significan:"
-
-#. (itstool) path: item/p
-#: C/02_welcome_to_the_grid.js.page:127
-msgid ""
-"The <em>first</em> number is what left-to-right position to put things in, "
-"starting from 0. Any widget that uses a 0 here goes all the way to the left."
-msgstr ""
-"El <em>primer</em> número es en qué posición de izquierda a derecha se ponen "
-"las cosas, comenzando desde 0. Cualquier widget que use un 0 aquí va todo a "
-"la izquierda."
-
-#. (itstool) path: item/p
-#: C/02_welcome_to_the_grid.js.page:128
-msgid ""
-"The <em>second</em> number is what top-to-bottom position to put a given "
-"widget in, starting from 0. The Label goes beneath the Image, so we give the "
-"Image a 0 and the Label a 1 here."
-msgstr ""
-"El <em>segundo</em> número es en qué posición de arriba a abajo se pone un "
-"widget dado, comenzando desde 0. La etiqueta va debajo de la imagen, por lo "
-"que se le da a la imagen un 0 y a la etiqueta un 1 aquí."
-
-#. (itstool) path: item/p
-#: C/02_welcome_to_the_grid.js.page:129
-msgid ""
-"The <em>third</em> and <em>fourth</em> numbers are how many columns and rows "
-"a widget should take up. We'll see how these work in a minute."
-msgstr ""
-"Los números <em>tercero</em> y <em>cuarto</em> son cuántas columnas y filas "
-"debe ocupar un widget. Se verá cómo funciona esto en un minuto."
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:132
-#, no-wrap
-msgid ""
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new WelcomeToTheGrid ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new WelcomeToTheGrid ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:146
-msgid ""
-"Now that we've created the Grid and attached all our widgets to it, we add "
-"it to the window and tell the window to show itself, as the last part of the "
-"_buildUI function. As always, to finish up we create a new instance of the "
-"application's class and tell it to run."
-msgstr ""
-"Ahora que ha creado la rejilla y le ha adjuntado todos los widgets, se añade "
-"a la ventana y se le dice que se muestre, como la última parte de la función "
-"«_buildUI». Como siempre, para finalizar se crea una instancia nueva de la "
-"clase de la aplicación y se le dice que se ejecute."
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:147
-msgid ""
-"Save your application as welcome_to_the_grid.js. Then, to run your "
-"application just open a terminal, go to the directory where your application "
-"is at, and type"
-msgstr ""
-"Guarde su aplicación como «welcome_to_the_grid.js». Después, para ejecutar su "
-"aplicación simplemente abra una terminal, vaya a la carpeta en la que está, "
-"y escriba"
-
-#. (itstool) path: section/screen
-#: C/02_welcome_to_the_grid.js.page:148
-#, no-wrap
-msgid " <output style=\"prompt\">$ </output>gjs welcome_to_the_grid.js "
-msgstr " <output style=\"prompt\">$ </output>gjs welcome_to_the_grid.js "
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:152
-msgid ""
-"There we go! But wait. That doesn't look right. Why is the Label crammed up "
-"next to the Image like that? That doesn't look as nice, and it makes it "
-"harder to read. What can we do about this?"
-msgstr ""
-"¡Allí va! Pero espere. Eso no se ve bien. ¿Por qué la etiqueta está pegada a "
-"la imagen así? Eso no se ve tan bien, y la hace difícil de leer. ¿Qué puede "
-"hacer acerca de esto?"
-
-#. (itstool) path: section/title
-#: C/02_welcome_to_the_grid.js.page:156
-msgid "Tweaking the Grid"
-msgstr "Configurar la rejilla"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:158
-msgid ""
-"One thing we can do, is we can give the Label a margin_top property when we "
-"create it. This works sort of like setting a margin for an HTML element "
-"using inline CSS styling."
-msgstr ""
-"Una cosa que puede hacer, es darle a la etiqueta una propiedad «margin_top» "
-"cuando la crea. Esto funciona de manera similar a establecer un margen para "
-"un elemento HTML usando estilos CSS en línea."
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:159
-#, no-wrap
-msgid ""
-"\n"
-" // Create a label\n"
-" this._label = new Gtk.Label ({\n"
-" label: \"Welcome to GNOME, too!\",\n"
-" margin_top: 20 });\n"
-msgstr ""
-"\n"
-" // Create a label\n"
-" this._label = new Gtk.Label ({\n"
-" label: \"Welcome to GNOME, too!\",\n"
-" margin_top: 20 });\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:166
-msgid ""
-"Of course, if we do that then if we replace the Label with something else -- "
-"or add in another widget -- then we have to repeat the margin_top on it too. "
-"Otherwise we end up with something like this:"
-msgstr ""
-"Por supuesto, si hace eso y después remplaza la etiqueta con otra cosa (o "
-"añade otro widget), entonces tendrá que repetir el «margin_top». De lo "
-"contrario, acabará con algo así:"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:169
-msgid ""
-"We could give the Image a margin_bottom property, but that won't work when "
-"the new Label is in a separate column. So how about we try this instead:"
-msgstr ""
-"Le podría dar una propiedad «margin_bottom» a la imagen, pero no funcionará "
-"cuando la etiqueta nueva esté en una columna separada. Entonces, mejor "
-"probar esto:"
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:170
-#, no-wrap
-msgid ""
-"\n"
-" // Create the Grid\n"
-" this._grid = new Gtk.Grid ({\n"
-" row_spacing: 20 });\n"
-msgstr ""
-"\n"
-" // Create the Grid\n"
-" this._grid = new Gtk.Grid ({\n"
-" row_spacing: 20 });\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:176
-msgid ""
-"That makes it so that there are always 20 pixels of space in between each "
-"horizontal row."
-msgstr ""
-"Eso hace que siempre hayan 20 píxeles de espacio entre cada fila horizontal."
-
-#. (itstool) path: note/p
-#: C/02_welcome_to_the_grid.js.page:177
-msgid ""
-"Yes, you can also set the column_spacing property on a Grid, or the "
-"margin_left and margin_right properties on any widget. Try them out, if you "
-"like!"
-msgstr ""
-"Sí, también puede establecer la propiedad «column_spacing» en una rejilla, o "
-"las propiedades «margin_left» y «margin_right» en cualquier widget. Pruébelas, "
-"si quiere."
-
-#. (itstool) path: section/title
-#: C/02_welcome_to_the_grid.js.page:181
-msgid "Adding more widgets"
-msgstr "Añadir más widgets"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:183
-msgid ""
-"If we did want to add a second Label, how would we do it so that it actually "
-"looked like it belonged there? One way is to center the Image on top, so "
-"that it's above both Labels instead of just the one on the left. That's "
-"where those other numbers in the Grid's attach method come in:"
-msgstr ""
-"Si quisiera añadir una segunda etiqueta, ¿cómo lo haría para que realmente "
-"se vea integrada? Una manera es centrar la imagen en la parte superior, para "
-"que esté encima de ambas etiquetas en lugar de sólo de la que está en la "
-"izquierda. Allí es donde los otros números en el método «attach» de la "
-"rejilla entran:"
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:184
-#, no-wrap
-msgid ""
-"\n"
-" // Create a second label\n"
-" this._labelTwo = new Gtk.Label ({\n"
-" label: \"The cake is a pie.\" });\n"
-"\n"
-" // Attach the image and labels to the grid\n"
-" this._grid.attach (this._image, 0, 0, 2, 1);\n"
-" this._grid.attach (this._label, 0, 1, 1, 1);\n"
-" this._grid.attach (this._labelTwo, 1, 1, 1, 1);\n"
-msgstr ""
-"\n"
-" // Create a second label\n"
-" this._labelTwo = new Gtk.Label ({\n"
-" label: \"The cake is a pie.\" });\n"
-"\n"
-" // Attach the image and labels to the grid\n"
-" this._grid.attach (this._image, 0, 0, 2, 1);\n"
-" this._grid.attach (this._label, 0, 1, 1, 1);\n"
-" this._grid.attach (this._labelTwo, 1, 1, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:195
-msgid ""
-"After we create the second Label, we attach it to the Grid to the right of "
-"the first Label. Remember, the first two numbers count columns and rows from "
-"left to right and top to bottom, starting with 0. So if the first Label is "
-"in column 0 and row 1, we can put the second in column 1 and row 1 to put it "
-"to the right of the first Label."
-msgstr ""
-"Después de haber creado la segunda etiqueta, se añade a la rejilla a la "
-"derecha de la primera. Recuerde, los primeros dos números cuentan columnas y "
-"filas de izquierda a derecha y de arriba a abajo, comenzando desde 0. Por lo "
-"que si la primera etiqueta está en la columna 0 y fila 1, se puede poner la "
-"segunda en la columna 1 y fila 1 para ponerla a la derecha de la primera."
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:196
-msgid ""
-"Note the number 2 in the attach statement for the Image. That's what does "
-"the trick here. That number is how many columns the Image spans, remember? "
-"So when we put it together, we get something like this:"
-msgstr ""
-"Tenga en cuenta el número 2 en la declaración «attach» de la imagen. Eso es "
-"lo que hace el truco. Ese número indica cuántas columnas ocupa la imagen, "
-"¿recuerda? Entonces, cuando se junta todo, se obtiene algo así:"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:199
-msgid "There are two things you should take note of, here."
-msgstr "Hay dos cosas de las que debe tomar nota, aquí."
-
-#. (itstool) path: item/p
-#: C/02_welcome_to_the_grid.js.page:201
-msgid ""
-"Setting the Image to span two columns doesn't stretch the picture itself "
-"horizontally. Instead, it stretches the invisible box taken up by the Image "
-"widget to fill both columns, then places the Image in the center of that box."
-msgstr ""
-"Configurar la imagen para que ocupe dos columnas no la estrecha en sí "
-"horizontalmente. En vez de eso, estrecha la caja invisible que el widget "
-"«Image» ocupa para llenar ambas columnas, y luego pone la imagen en el centro "
-"de esa caja."
-
-#. (itstool) path: item/p
-#: C/02_welcome_to_the_grid.js.page:202
-msgid ""
-"Even though we've set the Grid's row_spacing and the ApplicationWindow's "
-"border_width properties, we haven't yet set anything that puts a border in "
-"between the two Labels. They were separate earlier when the Image was in "
-"only one column, but now that it spans both GNOME doesn't see a reason to "
-"keep them apart."
-msgstr ""
-"Incluso a pesar de que ha establecido las propiedades «row_spacing» de la "
-"rejilla y «border_with» de la ventana de la aplicación, todavía no ha "
-"establecido nada que ponga un borde entre las dos etiquetas. Estaban "
-"separadas anteriormente cuando la imagen estaba en una sola columna, pero "
-"ahora que ocupa ambas GNOME no ve una razón para mantenerlas separadas."
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:205
-msgid ""
-"There are at least three ways we can get around that last one. First, we can "
-"set a margin_left or margin_right on one of the Labels:"
-msgstr ""
-"Existen por lo menos tres maneras de solucionar esto último. Primero, se "
-"puede establecer «margin_left» o «margin_right» en una de las etiquetas:"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:208
-msgid "Second, we can set the Grid's column_homogeneous property to true."
-msgstr ""
-"Segundo, se puede establecer la propiedad «column_homogenous» de la rejilla a "
-"«true»."
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:209
-#, no-wrap
-msgid ""
-"\n"
-" // Create the Grid\n"
-" this._grid = new Gtk.Grid ({\n"
-" column_homogeneous: true,\n"
-" row_spacing: 20 });\n"
-msgstr ""
-"\n"
-" // Create the Grid\n"
-" this._grid = new Gtk.Grid ({\n"
-" column_homogeneous: true,\n"
-" row_spacing: 20 });\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:216
-msgid "That makes it look something like this:"
-msgstr "Eso hace que se vea algo así:"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:219
-msgid ""
-"And third, we can set the Grid's column_spacing property, the same way we "
-"set its row_spacing."
-msgstr ""
-"Y tercero, se puede establecer la propiedad «column_spacing» de la rejilla, "
-"de la misma manera que «row_spacing»."
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:220
-#, no-wrap
-msgid ""
-"\n"
-" // Create the Grid\n"
-" this._grid = new Gtk.Grid ({\n"
-" column_spacing: 20,\n"
-" row_spacing: 20 });\n"
-msgstr ""
-"\n"
-" // Create the Grid\n"
-" this._grid = new Gtk.Grid ({\n"
-" column_spacing: 20,\n"
-" row_spacing: 20 });\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:226
-msgid "That makes it look like this:"
-msgstr "Esto hace que se vea así:"
-
-#. (itstool) path: section/title
-#: C/02_welcome_to_the_grid.js.page:231
-msgid "Using stock images"
-msgstr "Usar imágenes del almacén"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:233
-msgid ""
-"GNOME has a lot of stock images on hand already, that we can use if we don't "
-"feel like creating our own or if we want a universally-recognized icon. "
-"Here's how we create a stock image, compared to how we create a normal one:"
-msgstr ""
-"GNOME tiene muchas imágenes del almacén disponibles que se pueden usar si no "
-"quiere crear las suyas o si quiere usar un icono universalmente reconocido. "
-"Aquí se muestra cómo crear una imagen del almacén, comparado con crear una "
-"normal:"
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:234
-#, no-wrap
-msgid ""
-"\n"
-" // Create an image\n"
-" this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n"
-"\n"
-" // Create a second image using a stock icon\n"
-" this._icon = new Gtk.Image ({ stock: 'gtk-about' });\n"
-msgstr ""
-"\n"
-" // Create an image\n"
-" this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n"
-"\n"
-" // Create a second image using a stock icon\n"
-" this._icon = new Gtk.Image ({ stock: 'gtk-about' });\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:241
-msgid ""
-"After that, we attach it to the Grid to the left of the first Label. (We "
-"aren't using the second one for this example.)"
-msgstr ""
-"Después de eso, se añade a la rejilla, a la izquierda de la primera etiqueta "
-"(todavía no se usa la segunda en este ejemplo)."
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:242
-#, no-wrap
-msgid ""
-"\n"
-" // Attach the images and label to the grid\n"
-" this._grid.attach (this._image, 0, 0, 2, 1);\n"
-" this._grid.attach (this._icon, 0, 1, 1, 1);\n"
-" this._grid.attach (this._label, 1, 1, 1, 1);\n"
-msgstr ""
-"\n"
-" // Attach the images and label to the grid\n"
-" this._grid.attach (this._image, 0, 0, 2, 1);\n"
-" this._grid.attach (this._icon, 0, 1, 1, 1);\n"
-" this._grid.attach (this._label, 1, 1, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:248
-msgid "That gives us this, when we run it:"
-msgstr "Eso da esto, cuando se ejecuta:"
-
+#
+# Daniel Mustieles <daniel mustieles gmail com>, 2011, 2012, 2013, 2014, 2015., 2015.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome-devel-docs.platform-demos.master\n"
+"POT-Creation-Date: 2015-09-21 19:21+0000\n"
+"PO-Revision-Date: 2015-09-22 15:45+0200\n"
+"Last-Translator: Daniel Mustieles <daniel mustieles gmail com>\n"
+"Language-Team: Español; Castellano <gnome-es-list gnome org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 2.91.6\n"
+
+#. Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2
+msgctxt "_"
+msgid "translator-credits"
+msgstr ""
+"Daniel Mustieles <daniel mustieles gmail com>, 2011 - 2015\n"
+"Nicolás Satragno <nsatragno gmail com>, 2012 - 2013\n"
+"Jorge González <jorgegonz svn gnome org>, 2011"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/02_welcome_to_the_grid.js.page:95
+msgctxt "_"
+msgid ""
+"external ref='media/02_jsgrid_01.png' md5='3fdc22d361cf801f71557fdc76ae5b49'"
+msgstr ""
+"external ref='media/02_jsgrid_01.png' md5='3fdc22d361cf801f71557fdc76ae5b49'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/02_welcome_to_the_grid.js.page:150
+msgctxt "_"
+msgid ""
+"external ref='media/02_jsgrid_02.png' md5='07db86b0043ba5c3c24a90d7322bd81e'"
+msgstr ""
+"external ref='media/02_jsgrid_02.png' md5='07db86b0043ba5c3c24a90d7322bd81e'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/02_welcome_to_the_grid.js.page:167
+msgctxt "_"
+msgid ""
+"external ref='media/02_jsgrid_03.png' md5='817351e73c687d47253c56ed06b6629f'"
+msgstr ""
+"external ref='media/02_jsgrid_03.png' md5='817351e73c687d47253c56ed06b6629f'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/02_welcome_to_the_grid.js.page:197
+msgctxt "_"
+msgid ""
+"external ref='media/02_jsgrid_04.png' md5='eeaead27cee2851877fc3cfe66177f07'"
+msgstr ""
+"external ref='media/02_jsgrid_04.png' md5='eeaead27cee2851877fc3cfe66177f07'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/02_welcome_to_the_grid.js.page:206
+msgctxt "_"
+msgid ""
+"external ref='media/02_jsgrid_05.png' md5='a3ad12f432d5977fc1f66302ad5b7498'"
+msgstr ""
+"external ref='media/02_jsgrid_05.png' md5='a3ad12f432d5977fc1f66302ad5b7498'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/02_welcome_to_the_grid.js.page:217
+msgctxt "_"
+msgid ""
+"external ref='media/02_jsgrid_06.png' md5='450e48dbf6b8f5ce1c208e4812e1714b'"
+msgstr ""
+"external ref='media/02_jsgrid_06.png' md5='450e48dbf6b8f5ce1c208e4812e1714b'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/02_welcome_to_the_grid.js.page:227
+msgctxt "_"
+msgid ""
+"external ref='media/02_jsgrid_07.png' md5='0b304d70728903fbb2601d55bf00fdb9'"
+msgstr ""
+"external ref='media/02_jsgrid_07.png' md5='0b304d70728903fbb2601d55bf00fdb9'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/02_welcome_to_the_grid.js.page:249
+msgctxt "_"
+msgid ""
+"external ref='media/02_jsgrid_08.png' md5='78890beb47bd11360154b8ca4d50d1ff'"
+msgstr ""
+"external ref='media/02_jsgrid_08.png' md5='78890beb47bd11360154b8ca4d50d1ff'"
+
+#. (itstool) path: credit/name
+#: C/02_welcome_to_the_grid.js.page:15 C/03_getting_the_signal.js.page:16
+#: C/aboutdialog.js.page:12 C/button.js.page:13 C/checkbutton.js.page:13
+#: C/comboboxtext.js.page:15 C/combobox.js.page:17 C/dialog.js.page:13
+#: C/entry.js.page:13 C/grid.js.page:18 C/hellognome.js.page:12
+#: C/image.js.page:12 C/label.js.page:13 C/linkbutton.js.page:13
+#: C/messagedialog.js.page:16 C/progressbar.js.page:12
+#: C/radiobutton.js.page:13 C/scale.js.page:13 C/set-up-gedit.js.page:12
+#: C/spinbutton.js.page:16 C/spinner.js.page:13 C/statusbar.js.page:13
+#: C/switch.js.page:13 C/textview.js.page:17 C/togglebutton.js.page:13
+#: C/treeview_simple_liststore.js.page:16 C/window.js.page:13
+msgid "Taryn Fox"
+msgstr "Taryn Fox"
+
+#. (itstool) path: credit/years
+#: C/02_welcome_to_the_grid.js.page:17 C/03_getting_the_signal.js.page:18
+#: C/aboutdialog.c.page:17 C/aboutdialog.js.page:14 C/aboutdialog.py.page:16
+#: C/aboutdialog.vala.page:17 C/beginner.js.page:13 C/button.c.page:17
+#: C/button.js.page:15 C/button.py.page:17 C/button.vala.page:16
+#: C/buttonbox.py.page:17 C/checkbutton.c.page:15 C/checkbutton.js.page:15
+#: C/checkbutton.py.page:16 C/checkbutton.vala.page:15
+#: C/colorbutton.py.page:16 C/colorbutton.vala.page:17
+#: C/comboboxtext.js.page:17 C/combobox.c.page:15 C/combobox.js.page:19
+#: C/combobox.py.page:17 C/combobox.vala.page:15
+#: C/combobox_multicolumn.py.page:16 C/dialog.c.page:17 C/dialog.js.page:15
+#: C/dialog.py.page:17 C/dialog.vala.page:15 C/entry.c.page:15
+#: C/entry.js.page:15 C/entry.py.page:17 C/entry.vala.page:15
+#: C/filechooserdialog.py.page:19 C/filechooserdialog.vala.page:18
+#: C/fontchooserwidget.py.page:17 C/gmenu.c.page:15 C/gmenu.js.page:15
+#: C/gmenu.py.page:17 C/gmenu.py.page:23 C/gmenu.vala.page:16 C/grid.c.page:15
+#: C/grid.js.page:15 C/grid.py.page:17 C/grid.py.page:23 C/grid.vala.page:17
+#: C/GtkApplicationWindow.c.page:15 C/GtkApplicationWindow.js.page:15
+#: C/GtkApplicationWindow.py.page:17 C/GtkApplicationWindow.py.page:22
+#: C/GtkApplicationWindow.vala.page:15 C/guitar-tuner.js.page:14
+#: C/hellognome.js.page:14 C/hello-world.c.page:17 C/hello-world.js.page:17
+#: C/hello-world.py.page:17 C/hello-world.vala.page:17 C/image.c.page:15
+#: C/image.js.page:14 C/image.py.page:17 C/image.vala.page:15
+#: C/label.c.page:16 C/label.js.page:15 C/label.py.page:19 C/label.py.page:24
+#: C/label.vala.page:15 C/linkbutton.c.page:15 C/linkbutton.js.page:15
+#: C/linkbutton.py.page:16 C/linkbutton.vala.page:15 C/menubar.c.page:17
+#: C/menubar.py.page:17 C/menubar.py.page:22 C/menubar.vala.page:17
+#: C/menubutton.js.page:15 C/menubutton.py.page:16 C/menubutton.py.page:22
+#: C/menubutton.vala.page:15 C/messagedialog.c.page:16
+#: C/messagedialog.js.page:18 C/messagedialog.py.page:16
+#: C/messagedialog.vala.page:15 C/model-view-controller.py.page:23
+#: C/paned.c.page:15 C/paned.py.page:16 C/progressbar.c.page:16
+#: C/progressbar.js.page:14 C/progressbar.py.page:16
+#: C/progressbar.vala.page:15 C/properties.py.page:23 C/radiobutton.c.page:17
+#: C/radiobutton.js.page:15 C/radiobutton.py.page:17
+#: C/radiobutton.vala.page:18 C/response-type.page:11 C/scale.c.page:17
+#: C/scale.js.page:15 C/scale.py.page:17 C/scale.vala.page:17
+#: C/scrolledwindow.c.page:17 C/scrolledwindow.py.page:16
+#: C/scrolledwindow.vala.page:16 C/separator.py.page:17
+#: C/set-up-gedit.js.page:14 C/signals-callbacks.py.page:23
+#: C/spinbutton.c.page:18 C/spinbutton.js.page:18 C/spinbutton.py.page:17
+#: C/spinbutton.vala.page:17 C/spinner.c.page:16 C/spinner.js.page:15
+#: C/spinner.py.page:16 C/spinner.vala.page:15 C/statusbar.c.page:19
+#: C/statusbar.js.page:15 C/statusbar.py.page:17 C/statusbar.vala.page:18
+#: C/strings.py.page:23 C/switch.c.page:15 C/switch.js.page:15
+#: C/switch.py.page:16 C/switch.vala.page:19 C/textview.c.page:15
+#: C/textview.js.page:19 C/textview.py.page:24 C/textview.vala.page:15
+#: C/togglebutton.c.page:19 C/togglebutton.js.page:15
+#: C/togglebutton.py.page:16 C/togglebutton.vala.page:18 C/toolbar.c.page:17
+#: C/toolbar.js.page:15 C/toolbar.py.page:17 C/toolbar.vala.page:16
+#: C/toolbar_builder.py.page:18 C/toolbar_builder.py.page:24
+#: C/toolbar_builder.vala.page:17 C/tooltip.py.page:17
+#: C/treeview_advanced_liststore.py.page:16
+#: C/treeview_cellrenderertoggle.py.page:16
+#: C/treeview_simple_liststore.js.page:18
+#: C/treeview_simple_liststore.py.page:17
+#: C/treeview_simple_liststore.vala.page:17 C/treeview_treestore.py.page:17
+#: C/tutorial.py.page:17 C/weatherApp.js.page:14 C/weatherAppMain.js.page:13
+#: C/weatherAutotools.js.page:13 C/weatherGeonames.js.page:13
+#: C/window.c.page:15 C/window.js.page:15 C/window.py.page:17
+#: C/window.py.page:22 C/window.vala.page:15
+msgid "2012"
+msgstr "2012"
+
+#. (itstool) path: info/desc
+#: C/02_welcome_to_the_grid.js.page:20
+msgid "Learn how to lay out UI components, like Images and Labels."
+msgstr ""
+"Aprenda cómo distribuir componentes de la IU, como imágenes y etiquetas."
+
+#. (itstool) path: page/title
+#: C/02_welcome_to_the_grid.js.page:23
+msgid "2. Welcome to the Grid"
+msgstr "2. Bienvenido a la rejilla"
+
+#. (itstool) path: synopsis/p
+#: C/02_welcome_to_the_grid.js.page:25
+msgid ""
+"This tutorial will show you how to create basic widgets, or parts of the "
+"GNOME user interface, like Images and Labels. You'll then learn how to "
+"arrange them all in a Grid, which lets you put widgets exactly where you "
+"want them."
+msgstr ""
+"Este tutorial le mostrará cómo crear widgets básicos, o partes de la "
+"interfaz de usuario de GNOME, como imágenes y etiquetas. Después aprenderá "
+"cómo ordenarlas en una rejilla, que le permite poner widgets exactamente "
+"donde los quiere."
+
+#. (itstool) path: note/p
+#: C/02_welcome_to_the_grid.js.page:26
+msgid ""
+"Have you taken <link xref=\"hellognome.js\">the first tutorial in this "
+"series</link> already? You'll want to do so before continuing."
+msgstr ""
+"¿Ya ha hecho <link xref=\"hellognome.js\">el primer tutorial en esta serie</"
+"link>? Querrá hacerlo antes de continuar."
+
+#. (itstool) path: section/title
+#: C/02_welcome_to_the_grid.js.page:32
+msgid "Going native"
+msgstr "Pasar a nativo"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:34
+msgid ""
+"In the last tutorial, we created what was basically a GNOME window frame for "
+"a web app. All the GNOME-specific code we needed to learn revolved around "
+"putting the WebView -- the widget containing our application -- into an "
+"ApplicationWindow, and telling it to display. The application itself was "
+"written in HTML and JavaScript, just like most pages on the web."
+msgstr ""
+"En el último tutorial, se creó básicamente una ventana de GNOME como marco "
+"para una aplicación web. Todo el código específico de GNOME que necesitó "
+"aprender trataba del poner la «WebView» (el widget que contenía la "
+"aplicación) en una «ApplicationWindow», y decirle que la muestre. La "
+"aplicación en sí estaba escrita en HTML y JavaScript, al igual que la "
+"mayoría de las páginas en la web."
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:35
+msgid ""
+"This time, we're going to use only native GNOME widgets. A widget is just a "
+"thing, like a checkbox or picture, and GNOME has a wide variety of them to "
+"choose from. We call them \"native\" widgets to distinguish them from things "
+"like the button and header in the web app we wrote. Because instead of using "
+"web code, these are going to be 100 percent GNOME, using GTK+."
+msgstr ""
+"Esta vez, solo se van a usar widgets nativos de GNOME. Un widget sólo es una "
+"cosa, como una casilla de verificación o una imagen, y GNOME tiene una "
+"amplia variedad para elegir. Se llaman widgets «nativos» para distinguirlos "
+"de cosas como el botón y la cabecera en la aplicación web que escribió. "
+"Porque en lugar de usar código web, estos van a ser 100% GNOME, usando GTK+."
+
+#. (itstool) path: note/p
+#: C/02_welcome_to_the_grid.js.page:36
+msgid ""
+"GTK+ stands for \"GIMP Toolkit\". It's like a toolbox of widgets that you "
+"can reach into, while building your applications. It was originally written "
+"for <link href=\"http://www.gimp.org/\">the GIMP</link>, which is a free "
+"software image editor."
+msgstr ""
+"GTK+ significa «GIMP Toolkit». Es como una caja de herramientas de widgets a "
+"la que puede acceder cuando construye sus aplicaciones. Originalmente se "
+"escribió para <link href=\"http://www.gimp.org/\">GIMP</link>, que es un "
+"editor de imágenes de software libre."
+
+#. (itstool) path: section/title
+#: C/02_welcome_to_the_grid.js.page:40
+msgid "Setting up our application"
+msgstr "Creando la aplicación"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:42
+msgid ""
+"Before we dig out any widgets from the GTK+ toolbox, we first need to write "
+"the basic boilerplate code that our application requires."
+msgstr ""
+"Antes de sacar ningún widget de la caja de herramientas de GTK+, se necesita "
+"escribir el código básico plantilla que la aplicación requiere."
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:43 C/comboboxtext.js.page:31
+#: C/textview.js.page:39
+#, no-wrap
+msgid ""
+"\n"
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+msgstr ""
+"\n"
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:49
+msgid ""
+"This part always goes at the start of your code. Depending on what you'll be "
+"doing with it, you may want to declare more imports here. What we're writing "
+"today is pretty basic, so these are all we need; Gtk for the widgets, and "
+"Lang so we can use Lang.bind to connect our application's activate and "
+"startup signals to the requisite functions."
+msgstr ""
+"Esta parte siempre va al inicio del código. Dependiendo de qué va a hacer "
+"con él, puede querer declarar más importaciones aquí. Este ejemplo es "
+"bastante básico, por lo que esto es todo lo que necesita; «Gtk» para los "
+"widgets, y «Lang» para poder usar «Lang.bind» para conectar las señales de "
+"activación e inicio de la aplicación a las funciones requeridas."
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:50
+msgid "Speaking of which:"
+msgstr "Hablando de eso:"
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:51
+#, no-wrap
+msgid ""
+"\n"
+"const WelcomeToTheGrid = new Lang.Class({\n"
+" Name: 'Welcome to the Grid',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+"const WelcomeToTheGrid = new Lang.Class({\n"
+" Name: 'Welcome to the Grid',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:74
+msgid ""
+"This is the start of the application itself, and the _init function which "
+"creates it. It tells _buildUI to create an ApplicationWindow, which we're "
+"going to call _window, and it tells our window to present itself whenever "
+"needed."
+msgstr ""
+"Este es el inicio de la aplicación en sí, y la función «_init» que la crea. "
+"Le dice a «_buildUI» que cree una «ApplicationWindow», a la que se llamará "
+"«_window», y le dice a la ventana que se presente cuando se la necesite."
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:75
+msgid ""
+"This part, again, is pretty much copy-and-paste, but you always want to give "
+"your application a unique name."
+msgstr ""
+"Esta parte, nuevamente, es principalmente copiar y pegar, pero siempre "
+"querrá darle a su aplicación un nombre único."
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:77
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 10,\n"
+" title: \"Welcome to the Grid\"});\n"
+msgstr ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 10,\n"
+" title: \"Welcome to the Grid\"});\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:88
+msgid ""
+"Finally, we start off the _buildUI function by creating a new "
+"ApplicationWindow. We specify that it goes with this application, that it "
+"should appear in the center of the screen, and that there should be at least "
+"10 pixels between the outside edge and any widgets inside of it. We also "
+"give it a title, which will appear at the top of the window."
+msgstr ""
+"Finalmente, se arranca la función «_buildUI» creando una «ApplicationWindow» "
+"nueva. Se especifica que va con esta aplicación, que debe aparecer en el "
+"centro de la pantalla, y que debe haber al menos 10 píxeles entre el borde "
+"exterior y cualquier widget dentro de ella. También se le da un título, que "
+"aparecerá en la parte superior de la ventana."
+
+#. (itstool) path: section/title
+#: C/02_welcome_to_the_grid.js.page:92
+msgid "Reaching into the GTK+ toolbox"
+msgstr "Usar la caja de herramientas de GTK+"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:93
+msgid ""
+"What widgets should we use? Well, let's say we want to write an application "
+"that looks like this:"
+msgstr ""
+"¿Qué widgets deben usarse? Bueno, si quiere escribir una aplicación que se "
+"vea así:"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:97
+msgid ""
+"We're going to need, at the very least, a picture and a text label to go "
+"with it. Let's start with the picture:"
+msgstr ""
+"Necesitará, al menos, una imagen y una etiqueta de texto para acompañarla. "
+"Comience con la imagen:"
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:98
+#, no-wrap
+msgid ""
+"\n"
+" // Create an image\n"
+" this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n"
+msgstr ""
+"\n"
+" // Create an image\n"
+" this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:103
+msgid ""
+"You can download the image file used in this example <link href=\"https://"
+"live.gnome.org/TarynFox?action=AttachFile&do=get&target=gnome-image."
+"png\">here</link>. Be sure to put it in the same directory as the code "
+"you're writing."
+msgstr ""
+"Puede descargar el archivo de imagen usado en este ejemplo <link href="
+"\"https://live.gnome.org/TarynFox?action=AttachFile&do=get&"
+"target=gnome-image.png\">aquí</link>. Asegúrese de ponerlo en la misma "
+"carpeta que el código que está escribiendo."
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:105
+#, no-wrap
+msgid ""
+"\n"
+" // Create a label\n"
+" this._label = new Gtk.Label ({ label: \"Welcome to GNOME, too!\" });\n"
+msgstr ""
+"\n"
+" // Create a label\n"
+" this._label = new Gtk.Label ({ label: \"Welcome to GNOME, too!\" });\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:109
+msgid ""
+"That code adds in the label beneath. You can see how we create widgets, "
+"here; each one is a part of Gtk, and we can give it properties that "
+"customize how it behaves. In this case, we set the Image's file property to "
+"be the filename of the picture we want, and the Label's label property to be "
+"the sentence that we want beneath the picture."
+msgstr ""
+"Ese código añade la etiqueta debajo. Puede ver cómo se crean los widgets "
+"aquí; cada uno es una parte de GTK+, y se le pueden dar propiedades que "
+"personalizan cómo se comportan. En este caso, se establece la propiedad "
+"«file» de la imagen al nombre de archivo de la imagen que se desea, y la "
+"propiedad «label» de la etiqueta a la oración que se quiere bajo la imagen."
+
+#. (itstool) path: note/p
+#: C/02_welcome_to_the_grid.js.page:110
+msgid ""
+"Yes, it sounds redundant for a Label to have a label property, but it's not. "
+"Other widgets that contain text have a label property, so it's "
+"<em>consistent</em> for the Label widget to have one too."
+msgstr ""
+"Sí, suena redundante que un objeto «Label» tenga una propiedad «label», pero "
+"no lo es. Otros widgets que contienen texto también tienen una propiedad "
+"«label», por lo que es <em>consistente</em> que un widget «Label» también "
+"tenga una."
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:111
+msgid ""
+"We can't just add these widgets to our window in order, though, the same way "
+"HTML elements appear in the order you write them. That's because an "
+"ApplicationWindow can only contain one widget."
+msgstr ""
+"Sin embargo, no se pueden simplemente añadir estos widgets a la ventana en "
+"orden, como los elementos HTML aparecen en el orden en el que los escribe. "
+"Eso es porque una «ApplicationWindow» sólo puede contener un widget."
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:112
+msgid ""
+"How do we get around that? By making that one widget a container widget, "
+"which can hold more than one widget and organize them inside it. Behold: The "
+"Grid."
+msgstr ""
+"¿Cómo se resuelve eso? Haciendo que ese widget sea un widget contenedor, que "
+"puede contener más de un widget y organizarlos dentro. Observe la rejilla."
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:113
+#, no-wrap
+msgid ""
+"\n"
+" // Create the Grid\n"
+" this._grid = new Gtk.Grid ();\n"
+msgstr ""
+"\n"
+" // Create the Grid\n"
+" this._grid = new Gtk.Grid ();\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:118
+msgid ""
+"We're not giving it any properties yet. Those will come later, as we learn "
+"how to use the Grid's powers. First, let's attach the Image and Label we "
+"made to our Grid."
+msgstr ""
+"Todavía no se le da ninguna propiedad. Estas vendrán después, cuando aprenda "
+"cómo usar los poderes de la rejilla. Primero, adjúntele a su rejilla la "
+"imagen y la etiqueta que hizo."
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:119
+#, no-wrap
+msgid ""
+"\n"
+" // Attach the image and label to the grid\n"
+" this._grid.attach (this._image, 0, 0, 1, 1);\n"
+" this._grid.attach (this._label, 0, 1, 1, 1);\n"
+msgstr ""
+"\n"
+" // Attach the image and label to the grid\n"
+" this._grid.attach (this._image, 0, 0, 1, 1);\n"
+" this._grid.attach (this._label, 0, 1, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:125
+msgid ""
+"This code looks awfully complicated, but it's not. Here's what those numbers "
+"mean:"
+msgstr ""
+"Este código se ve terriblemente complicado, pero no lo es. Aquí está lo que "
+"esos números significan:"
+
+#. (itstool) path: item/p
+#: C/02_welcome_to_the_grid.js.page:127
+msgid ""
+"The <em>first</em> number is what left-to-right position to put things in, "
+"starting from 0. Any widget that uses a 0 here goes all the way to the left."
+msgstr ""
+"El <em>primer</em> número es en qué posición de izquierda a derecha se ponen "
+"las cosas, comenzando desde 0. Cualquier widget que use un 0 aquí va todo a "
+"la izquierda."
+
+#. (itstool) path: item/p
+#: C/02_welcome_to_the_grid.js.page:128
+msgid ""
+"The <em>second</em> number is what top-to-bottom position to put a given "
+"widget in, starting from 0. The Label goes beneath the Image, so we give the "
+"Image a 0 and the Label a 1 here."
+msgstr ""
+"El <em>segundo</em> número es en qué posición de arriba a abajo se pone un "
+"widget dado, comenzando desde 0. La etiqueta va debajo de la imagen, por lo "
+"que se le da a la imagen un 0 y a la etiqueta un 1 aquí."
+
+#. (itstool) path: item/p
+#: C/02_welcome_to_the_grid.js.page:129
+msgid ""
+"The <em>third</em> and <em>fourth</em> numbers are how many columns and rows "
+"a widget should take up. We'll see how these work in a minute."
+msgstr ""
+"Los números <em>tercero</em> y <em>cuarto</em> son cuántas columnas y filas "
+"debe ocupar un widget. Se verá cómo funciona esto en un minuto."
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:132
+#, no-wrap
+msgid ""
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new WelcomeToTheGrid ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new WelcomeToTheGrid ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:146
+msgid ""
+"Now that we've created the Grid and attached all our widgets to it, we add "
+"it to the window and tell the window to show itself, as the last part of the "
+"_buildUI function. As always, to finish up we create a new instance of the "
+"application's class and tell it to run."
+msgstr ""
+"Ahora que ha creado la rejilla y le ha adjuntado todos los widgets, se añade "
+"a la ventana y se le dice que se muestre, como la última parte de la función "
+"«_buildUI». Como siempre, para finalizar se crea una instancia nueva de la "
+"clase de la aplicación y se le dice que se ejecute."
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:147
+msgid ""
+"Save your application as welcome_to_the_grid.js. Then, to run your "
+"application just open a terminal, go to the directory where your application "
+"is at, and type"
+msgstr ""
+"Guarde su aplicación como «welcome_to_the_grid.js». Después, para ejecutar "
+"su aplicación simplemente abra una terminal, vaya a la carpeta en la que "
+"está, y escriba"
+
+#. (itstool) path: section/screen
+#: C/02_welcome_to_the_grid.js.page:148
+#, no-wrap
+msgid " <output style=\"prompt\">$ </output>gjs welcome_to_the_grid.js "
+msgstr " <output style=\"prompt\">$ </output>gjs welcome_to_the_grid.js "
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:152
+msgid ""
+"There we go! But wait. That doesn't look right. Why is the Label crammed up "
+"next to the Image like that? That doesn't look as nice, and it makes it "
+"harder to read. What can we do about this?"
+msgstr ""
+"¡Allí va! Pero espere. Eso no se ve bien. ¿Por qué la etiqueta está pegada a "
+"la imagen así? Eso no se ve tan bien, y la hace difícil de leer. ¿Qué puede "
+"hacer acerca de esto?"
+
+#. (itstool) path: section/title
+#: C/02_welcome_to_the_grid.js.page:156
+msgid "Tweaking the Grid"
+msgstr "Configurar la rejilla"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:158
+msgid ""
+"One thing we can do, is we can give the Label a margin_top property when we "
+"create it. This works sort of like setting a margin for an HTML element "
+"using inline CSS styling."
+msgstr ""
+"Una cosa que puede hacer, es darle a la etiqueta una propiedad «margin_top» "
+"cuando la crea. Esto funciona de manera similar a establecer un margen para "
+"un elemento HTML usando estilos CSS en línea."
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:159
+#, no-wrap
+msgid ""
+"\n"
+" // Create a label\n"
+" this._label = new Gtk.Label ({\n"
+" label: \"Welcome to GNOME, too!\",\n"
+" margin_top: 20 });\n"
+msgstr ""
+"\n"
+" // Create a label\n"
+" this._label = new Gtk.Label ({\n"
+" label: \"Welcome to GNOME, too!\",\n"
+" margin_top: 20 });\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:166
+msgid ""
+"Of course, if we do that then if we replace the Label with something else -- "
+"or add in another widget -- then we have to repeat the margin_top on it too. "
+"Otherwise we end up with something like this:"
+msgstr ""
+"Por supuesto, si hace eso y después remplaza la etiqueta con otra cosa (o "
+"añade otro widget), entonces tendrá que repetir el «margin_top». De lo "
+"contrario, acabará con algo así:"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:169
+msgid ""
+"We could give the Image a margin_bottom property, but that won't work when "
+"the new Label is in a separate column. So how about we try this instead:"
+msgstr ""
+"Le podría dar una propiedad «margin_bottom» a la imagen, pero no funcionará "
+"cuando la etiqueta nueva esté en una columna separada. Entonces, mejor "
+"probar esto:"
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:170
+#, no-wrap
+msgid ""
+"\n"
+" // Create the Grid\n"
+" this._grid = new Gtk.Grid ({\n"
+" row_spacing: 20 });\n"
+msgstr ""
+"\n"
+" // Create the Grid\n"
+" this._grid = new Gtk.Grid ({\n"
+" row_spacing: 20 });\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:176
+msgid ""
+"That makes it so that there are always 20 pixels of space in between each "
+"horizontal row."
+msgstr ""
+"Eso hace que siempre hayan 20 píxeles de espacio entre cada fila horizontal."
+
+#. (itstool) path: note/p
+#: C/02_welcome_to_the_grid.js.page:177
+msgid ""
+"Yes, you can also set the column_spacing property on a Grid, or the "
+"margin_left and margin_right properties on any widget. Try them out, if you "
+"like!"
+msgstr ""
+"Sí, también puede establecer la propiedad «column_spacing» en una rejilla, o "
+"las propiedades «margin_left» y «margin_right» en cualquier widget. "
+"Pruébelas, si quiere."
+
+#. (itstool) path: section/title
+#: C/02_welcome_to_the_grid.js.page:181
+msgid "Adding more widgets"
+msgstr "Añadir más widgets"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:183
+msgid ""
+"If we did want to add a second Label, how would we do it so that it actually "
+"looked like it belonged there? One way is to center the Image on top, so "
+"that it's above both Labels instead of just the one on the left. That's "
+"where those other numbers in the Grid's attach method come in:"
+msgstr ""
+"Si quisiera añadir una segunda etiqueta, ¿cómo lo haría para que realmente "
+"se vea integrada? Una manera es centrar la imagen en la parte superior, para "
+"que esté encima de ambas etiquetas en lugar de sólo de la que está en la "
+"izquierda. Allí es donde los otros números en el método «attach» de la "
+"rejilla entran:"
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:184
+#, no-wrap
+msgid ""
+"\n"
+" // Create a second label\n"
+" this._labelTwo = new Gtk.Label ({\n"
+" label: \"The cake is a pie.\" });\n"
+"\n"
+" // Attach the image and labels to the grid\n"
+" this._grid.attach (this._image, 0, 0, 2, 1);\n"
+" this._grid.attach (this._label, 0, 1, 1, 1);\n"
+" this._grid.attach (this._labelTwo, 1, 1, 1, 1);\n"
+msgstr ""
+"\n"
+" // Create a second label\n"
+" this._labelTwo = new Gtk.Label ({\n"
+" label: \"The cake is a pie.\" });\n"
+"\n"
+" // Attach the image and labels to the grid\n"
+" this._grid.attach (this._image, 0, 0, 2, 1);\n"
+" this._grid.attach (this._label, 0, 1, 1, 1);\n"
+" this._grid.attach (this._labelTwo, 1, 1, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:195
+msgid ""
+"After we create the second Label, we attach it to the Grid to the right of "
+"the first Label. Remember, the first two numbers count columns and rows from "
+"left to right and top to bottom, starting with 0. So if the first Label is "
+"in column 0 and row 1, we can put the second in column 1 and row 1 to put it "
+"to the right of the first Label."
+msgstr ""
+"Después de haber creado la segunda etiqueta, se añade a la rejilla a la "
+"derecha de la primera. Recuerde, los primeros dos números cuentan columnas y "
+"filas de izquierda a derecha y de arriba a abajo, comenzando desde 0. Por lo "
+"que si la primera etiqueta está en la columna 0 y fila 1, se puede poner la "
+"segunda en la columna 1 y fila 1 para ponerla a la derecha de la primera."
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:196
+msgid ""
+"Note the number 2 in the attach statement for the Image. That's what does "
+"the trick here. That number is how many columns the Image spans, remember? "
+"So when we put it together, we get something like this:"
+msgstr ""
+"Tenga en cuenta el número 2 en la declaración «attach» de la imagen. Eso es "
+"lo que hace el truco. Ese número indica cuántas columnas ocupa la imagen, "
+"¿recuerda? Entonces, cuando se junta todo, se obtiene algo así:"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:199
+msgid "There are two things you should take note of, here."
+msgstr "Hay dos cosas de las que debe tomar nota, aquí."
+
+#. (itstool) path: item/p
+#: C/02_welcome_to_the_grid.js.page:201
+msgid ""
+"Setting the Image to span two columns doesn't stretch the picture itself "
+"horizontally. Instead, it stretches the invisible box taken up by the Image "
+"widget to fill both columns, then places the Image in the center of that box."
+msgstr ""
+"Configurar la imagen para que ocupe dos columnas no la estrecha en sí "
+"horizontalmente. En vez de eso, estrecha la caja invisible que el widget "
+"«Image» ocupa para llenar ambas columnas, y luego pone la imagen en el "
+"centro de esa caja."
+
+#. (itstool) path: item/p
+#: C/02_welcome_to_the_grid.js.page:202
+msgid ""
+"Even though we've set the Grid's row_spacing and the ApplicationWindow's "
+"border_width properties, we haven't yet set anything that puts a border in "
+"between the two Labels. They were separate earlier when the Image was in "
+"only one column, but now that it spans both GNOME doesn't see a reason to "
+"keep them apart."
+msgstr ""
+"Incluso a pesar de que ha establecido las propiedades «row_spacing» de la "
+"rejilla y «border_with» de la ventana de la aplicación, todavía no ha "
+"establecido nada que ponga un borde entre las dos etiquetas. Estaban "
+"separadas anteriormente cuando la imagen estaba en una sola columna, pero "
+"ahora que ocupa ambas GNOME no ve una razón para mantenerlas separadas."
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:205
+msgid ""
+"There are at least three ways we can get around that last one. First, we can "
+"set a margin_left or margin_right on one of the Labels:"
+msgstr ""
+"Existen por lo menos tres maneras de solucionar esto último. Primero, se "
+"puede establecer «margin_left» o «margin_right» en una de las etiquetas:"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:208
+msgid "Second, we can set the Grid's column_homogeneous property to true."
+msgstr ""
+"Segundo, se puede establecer la propiedad «column_homogenous» de la rejilla "
+"a «true»."
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:209
+#, no-wrap
+msgid ""
+"\n"
+" // Create the Grid\n"
+" this._grid = new Gtk.Grid ({\n"
+" column_homogeneous: true,\n"
+" row_spacing: 20 });\n"
+msgstr ""
+"\n"
+" // Create the Grid\n"
+" this._grid = new Gtk.Grid ({\n"
+" column_homogeneous: true,\n"
+" row_spacing: 20 });\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:216
+msgid "That makes it look something like this:"
+msgstr "Eso hace que se vea algo así:"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:219
+msgid ""
+"And third, we can set the Grid's column_spacing property, the same way we "
+"set its row_spacing."
+msgstr ""
+"Y tercero, se puede establecer la propiedad «column_spacing» de la rejilla, "
+"de la misma manera que «row_spacing»."
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:220
+#, no-wrap
+msgid ""
+"\n"
+" // Create the Grid\n"
+" this._grid = new Gtk.Grid ({\n"
+" column_spacing: 20,\n"
+" row_spacing: 20 });\n"
+msgstr ""
+"\n"
+" // Create the Grid\n"
+" this._grid = new Gtk.Grid ({\n"
+" column_spacing: 20,\n"
+" row_spacing: 20 });\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:226
+msgid "That makes it look like this:"
+msgstr "Esto hace que se vea así:"
+
+#. (itstool) path: section/title
+#: C/02_welcome_to_the_grid.js.page:231
+msgid "Using stock images"
+msgstr "Usar imágenes del almacén"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:233
+msgid ""
+"GNOME has a lot of stock images on hand already, that we can use if we don't "
+"feel like creating our own or if we want a universally-recognized icon. "
+"Here's how we create a stock image, compared to how we create a normal one:"
+msgstr ""
+"GNOME tiene muchas imágenes del almacén disponibles que se pueden usar si no "
+"quiere crear las suyas o si quiere usar un icono universalmente reconocido. "
+"Aquí se muestra cómo crear una imagen del almacén, comparado con crear una "
+"normal:"
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:234
+#, no-wrap
+msgid ""
+"\n"
+" // Create an image\n"
+" this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n"
+"\n"
+" // Create a second image using a stock icon\n"
+" this._icon = new Gtk.Image ({ stock: 'gtk-about' });\n"
+msgstr ""
+"\n"
+" // Create an image\n"
+" this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n"
+"\n"
+" // Create a second image using a stock icon\n"
+" this._icon = new Gtk.Image ({ stock: 'gtk-about' });\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:241
+msgid ""
+"After that, we attach it to the Grid to the left of the first Label. (We "
+"aren't using the second one for this example.)"
+msgstr ""
+"Después de eso, se añade a la rejilla, a la izquierda de la primera etiqueta "
+"(todavía no se usa la segunda en este ejemplo)."
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:242
+#, no-wrap
+msgid ""
+"\n"
+" // Attach the images and label to the grid\n"
+" this._grid.attach (this._image, 0, 0, 2, 1);\n"
+" this._grid.attach (this._icon, 0, 1, 1, 1);\n"
+" this._grid.attach (this._label, 1, 1, 1, 1);\n"
+msgstr ""
+"\n"
+" // Attach the images and label to the grid\n"
+" this._grid.attach (this._image, 0, 0, 2, 1);\n"
+" this._grid.attach (this._icon, 0, 1, 1, 1);\n"
+" this._grid.attach (this._label, 1, 1, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:248
+msgid "That gives us this, when we run it:"
+msgstr "Eso da esto, cuando se ejecuta:"
+
# Dejo las comillas "" porque así están en la página citada (que no está disponible en castellano,
aparentemente).
# Nicolás.
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:251
-msgid ""
-"That's what the stock \"About\" icon looks like. You can see a list of all "
-"the stock items starting with gtk-about in <link href=\"https://developer."
-"gnome.org/gtk3/3.4/gtk3-Stock-Items.html#GTK-STOCK-ABOUT:CAPS\">GNOME's "
-"developer documentation</link>. It was written for C programmers, but you "
-"don't need to know C to use it; just look at the part in quotation marks, "
-"like \"gtk-about\", and copy that part to use the icon next to it."
-msgstr ""
-"Así se ve el icono del almacén «About». Puede ver una lista de todos los "
-"elementos del almacén comenzando con «gtk-about» en la <link href=\"https://"
-"developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html#GTK-STOCK-ABOUT:CAPS"
-"\">documentación del desarrollador de GNOME</link>. Se escribió para "
-"programadores de C, pero no necesita saber C para usarla; simplemente "
-"consulte la parte entre comillas, como \"gtk-about\", y copie esa parte para "
-"usar el icono junto a ella."
-
-#. (itstool) path: note/p
-#: C/02_welcome_to_the_grid.js.page:252
-msgid ""
-"We put single quotes around 'gtk-about' here because, unlike text strings "
-"that have double quotes around them, that part will never need to be "
-"translated into another language. In fact, if it <em>were</em> translated "
-"it'd break the icon, because its name is still \"gtk-about\" no matter which "
-"language you speak."
-msgstr ""
-"Se ponen comillas simples alrededor de «gtk-about» aquí porque, a diferencia "
-"de cadenas de texto que tienen comillas dobles, esa parte nunca necesitará "
-"traducirse a otro lenguaje. En realidad, si se <em>tradujera</em> rompería "
-"el icono, porque su nombre todavía es «gtk-about» sin importar el lenguaje en "
-"el que habla."
-
-#. (itstool) path: section/title
-#: C/02_welcome_to_the_grid.js.page:257 C/03_getting_the_signal.js.page:338
-#: C/hellognome.js.page:187
-msgid "What's next?"
-msgstr "¿Qué viene ahora?"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:258
-msgid ""
-"Before we go on to the next tutorial, let's try something a little different:"
-msgstr ""
-"Antes de continuar con el siguiente tutorial, intente algo un poco diferente:"
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:259
-#, no-wrap
-msgid ""
-"\n"
-" // Create a button\n"
-" this._button = new Gtk.Button ({\n"
-" label: \"Welcome to GNOME, too!\"});\n"
-"\n"
-" // Attach the images and button to the grid\n"
-" this._grid.attach (this._image, 0, 0, 2, 1);\n"
-" this._grid.attach (this._icon, 0, 1, 1, 1);\n"
-" this._grid.attach (this._button, 1, 1, 1, 1);\n"
-msgstr ""
-"\n"
-" // Create a button\n"
-" this._button = new Gtk.Button ({\n"
-" label: \"Welcome to GNOME, too!\"});\n"
-"\n"
-" // Attach the images and button to the grid\n"
-" this._grid.attach (this._image, 0, 0, 2, 1);\n"
-" this._grid.attach (this._icon, 0, 1, 1, 1);\n"
-" this._grid.attach (this._button, 1, 1, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:270
-msgid ""
-"That's right, we turned the Label into a Button just by changing the name! "
-"If you run the application and click on it, though, you'll find that it "
-"doesn't do anything. How do we make our Button do something? That's what "
-"we'll find out, in <link xref=\"03_getting_the_signal.js\">our next "
-"tutorial</link>."
-msgstr ""
-"Así es, se convirtió la etiqueta en un botón simplemente cambiándole el "
-"nombre. Si ejecuta la aplicación y la pulsa, sin embargo, verá que no hace "
-"nada. ¿Cómo hacer para que el botón haga algo? Eso es lo que descubrirá, en "
-"<link xref=\"03_getting_the_signal.js\">el próximo tutorial</link>."
-
-#. (itstool) path: section/p
-#: C/02_welcome_to_the_grid.js.page:271
-msgid ""
-"If you like, feel free to spend some time experimenting with Grids, Labels, "
-"and Images, including stock images."
-msgstr ""
-"Si quiere, siéntase libre de experimentar con rejillas, etiquetas, e "
-"imágenes, incluyendo imágenes del almacén."
-
-#. (itstool) path: note/p
-#: C/02_welcome_to_the_grid.js.page:272
-msgid ""
-"One trick you can use to make more complex layouts is to nest Grids inside "
-"of each other. This lets you group together related widgets, and rearrange "
-"them easily. Take a look at the <link xref=\"radiobutton.js\">RadioButton</"
-"link> code sample if you'd like to see how this is done."
-msgstr ""
-"Un truco que puede usar para hacer distribuciones más complejas es anidar "
-"rejillas una dentro de otra. Esto le permite agrupar widgets "
-"interrelacionados, y reorganizarlos fácilmente. Eche un vistazo a la muestra "
-"de código del <link xref=\"radiobutton.js\">botón de radio</link> si quiere "
-"ver cómo se hace esto."
-
-#. (itstool) path: section/title
-#: C/02_welcome_to_the_grid.js.page:276 C/checkbutton.js.page:131
-#: C/comboboxtext.js.page:171 C/combobox.js.page:228 C/hellognome.js.page:194
-#: C/messagedialog.js.page:184 C/radiobutton.js.page:269 C/scale.js.page:203
-#: C/spinbutton.js.page:194 C/statusbar.js.page:216 C/switch.js.page:259
-#: C/textview.js.page:243 C/togglebutton.js.page:148
-#: C/treeview_simple_liststore.js.page:267
-msgid "Complete code sample"
-msgstr "Código de ejemplo completo"
-
-#. (itstool) path: section/code
-#: C/02_welcome_to_the_grid.js.page:277
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const WelcomeToTheGrid = new Lang.Class({\n"
-" Name: 'Welcome to the Grid',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 10,\n"
-" title: \"Welcome to the Grid\"});\n"
-"\n"
-" // Create the Grid\n"
-" this._grid = new Gtk.Grid ({\n"
-" // column_homogeneous: true,\n"
-" // column_spacing: 20,\n"
-" row_spacing: 20 });\n"
-"\n"
-" // Create an image\n"
-" this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n"
-"\n"
-" // Create a second image using a stock icon\n"
-" this._icon = new Gtk.Image ({ stock: 'gtk-about' });\n"
-"\n"
-" // Create a label\n"
-" this._label = new Gtk.Label ({\n"
-" label: \"Welcome to GNOME, too!\",\n"
-" /* margin_top: 20 */ });\n"
-"\n"
-" /* Create a second label\n"
-" this._labelTwo = new Gtk.Label ({\n"
-" label: \"The cake is a pie.\" }); */\n"
-"\n"
-" /* Create a button\n"
-" this._button = new Gtk.Button ({\n"
-" label: \"Welcome to GNOME, too!\"}); */\n"
-"\n"
-" // Attach the images and button to the grid\n"
-" this._grid.attach (this._image, 0, 0, 2, 1);\n"
-" this._grid.attach (this._icon, 0, 1, 1, 1);\n"
-" this._grid.attach (this._label, 1, 1, 1, 1);\n"
-"\n"
-" // this._grid.attach (this._label, 0, 1, 1, 1);\n"
-" // this._grid.attach (this._labelTwo, 1, 1, 1, 1);\n"
-"\n"
-" // this._grid.attach (this._button, 1, 1, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new WelcomeToTheGrid ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const WelcomeToTheGrid = new Lang.Class({\n"
-" Name: 'Welcome to the Grid',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 10,\n"
-" title: \"Welcome to the Grid\"});\n"
-"\n"
-" // Create the Grid\n"
-" this._grid = new Gtk.Grid ({\n"
-" // column_homogeneous: true,\n"
-" // column_spacing: 20,\n"
-" row_spacing: 20 });\n"
-"\n"
-" // Create an image\n"
-" this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n"
-"\n"
-" // Create a second image using a stock icon\n"
-" this._icon = new Gtk.Image ({ stock: 'gtk-about' });\n"
-"\n"
-" // Create a label\n"
-" this._label = new Gtk.Label ({\n"
-" label: \"Welcome to GNOME, too!\",\n"
-" /* margin_top: 20 */ });\n"
-"\n"
-" /* Create a second label\n"
-" this._labelTwo = new Gtk.Label ({\n"
-" label: \"The cake is a pie.\" }); */\n"
-"\n"
-" /* Create a button\n"
-" this._button = new Gtk.Button ({\n"
-" label: \"Welcome to GNOME, too!\"}); */\n"
-"\n"
-" // Attach the images and button to the grid\n"
-" this._grid.attach (this._image, 0, 0, 2, 1);\n"
-" this._grid.attach (this._icon, 0, 1, 1, 1);\n"
-" this._grid.attach (this._label, 1, 1, 1, 1);\n"
-"\n"
-" // this._grid.attach (this._label, 0, 1, 1, 1);\n"
-" // this._grid.attach (this._labelTwo, 1, 1, 1, 1);\n"
-"\n"
-" // this._grid.attach (this._button, 1, 1, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new WelcomeToTheGrid ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/03_getting_the_signal.js.page:37 C/03_getting_the_signal.js.page:351
-msgctxt "_"
-msgid ""
-"external ref='media/03_jssignal_01.png' "
-"md5='8d6ecab185f4af4534cc255d62b58b8e'"
-msgstr ""
-"external ref='media/03_jssignal_01.png' "
-"md5='8d6ecab185f4af4534cc255d62b58b8e'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/03_getting_the_signal.js.page:157 C/03_getting_the_signal.js.page:357
-msgctxt "_"
-msgid ""
-"external ref='media/03_jssignal_02.png' "
-"md5='ba941390fbafc4a0f653c8f70bca92c0'"
-msgstr ""
-"external ref='media/03_jssignal_02.png' "
-"md5='ba941390fbafc4a0f653c8f70bca92c0'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/03_getting_the_signal.js.page:231 C/03_getting_the_signal.js.page:363
-msgctxt "_"
-msgid ""
-"external ref='media/03_jssignal_03.png' "
-"md5='49ecf251b0bf57543c8d79a77b6f306d'"
-msgstr ""
-"external ref='media/03_jssignal_03.png' "
-"md5='49ecf251b0bf57543c8d79a77b6f306d'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/03_getting_the_signal.js.page:302 C/03_getting_the_signal.js.page:369
-msgctxt "_"
-msgid ""
-"external ref='media/03_jssignal_04.png' "
-"md5='dfc5221ca15ca9fba7d3c76a73804e2d'"
-msgstr ""
-"external ref='media/03_jssignal_04.png' "
-"md5='dfc5221ca15ca9fba7d3c76a73804e2d'"
-
-#. (itstool) path: info/desc
-#: C/03_getting_the_signal.js.page:21
-msgid "Create Buttons and other widgets that do things when you click on them."
-msgstr "Crear botones y otros widgets que efectúan acciones cuando los pulsa."
-
-#. (itstool) path: page/title
-#: C/03_getting_the_signal.js.page:24
-msgid "3. Getting the Signal"
-msgstr "3. Obtener la señal"
-
-#. (itstool) path: synopsis/p
-#: C/03_getting_the_signal.js.page:26
-msgid ""
-"In the last tutorial, we learned how to create widgets like Labels, Images, "
-"and Buttons. Here, we'll learn how to make Buttons and other input widgets "
-"actually do things, by writing functions which handle the signals they send "
-"when they are clicked on or interacted with."
-msgstr ""
-"En el último tutorial, aprendió cómo crear widgets como etiquetas, imágenes "
-"y botones. Aquí, aprenderá cómo hacer que los botones y otros widgets de "
-"entrada hagan cosas realmente, escribiendo funciones que manejen las señales "
-"que envían cuando se pulsan o interactúan."
-
-#. (itstool) path: section/title
-#: C/03_getting_the_signal.js.page:32
-msgid "A basic application"
-msgstr "Una aplicación básica"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:33
-msgid ""
-"In GNOME, widgets that you can interact with, like Buttons and Switches, "
-"send out signals when they are clicked on or activated. A Button, for "
-"instance, sends out the \"clicked\" signal when somebody clicks on it. When "
-"this happens, GNOME looks for the part in your code that says what to do."
-msgstr ""
-"En GNOME, los widgets con los que puede interactuar, como los botones y los "
-"interruptores, envían señales cuando se pulsan o activan. Un botón, por "
-"ejemplo, envía la señal «clicked» cuando alguien lo pulsa. Cuando esto "
-"sucede, GNOME busca la parte de su código que dice qué hacer."
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:34
-msgid ""
-"How do we write that code? By connecting that Button's \"clicked\" signal to "
-"a callback function, which is a function you write just to handle that "
-"signal. So whenever it gives off that signal, the function connected to that "
-"signal is run."
-msgstr ""
-"¿Cómo se escribe ese código? Conectando la señal «clicked» del botón a una "
-"función de retorno de llamada, que es una función que se escribe sólo para "
-"manejar esa señal. Entonces, cuando se envía esa señal, la función conectada "
-"se ejecuta."
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:35
-msgid "Here is an extremely basic example:"
-msgstr "Aquí hay un ejemplo extremadamente básico:"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:39
-msgid ""
-"This ApplicationWindow has a Button and a Label inside it, arranged in a "
-"Grid. Whenever the Button is clicked, a variable that holds the number of "
-"cookies is increased by 1, and the Label that shows how many cookies there "
-"are is updated."
-msgstr ""
-"La ApplicationWindow tiene un botón y una etiqueta dentro, ordenados en una "
-"rejilla. Cuando se pulsa el botón, una variable que guarda el número de "
-"galletas se incrementa en 1, y la etiqueta que muestra cuántas galletas hay "
-"se actualiza."
-
-#. (itstool) path: note/p
-#: C/03_getting_the_signal.js.page:40
-msgid ""
-"The cookies in this example are not the same as the cookies that you get "
-"from websites, which store your login information and may keep track of "
-"which sites you've visited. They're just imaginary treats. You may bake some "
-"real ones if you like."
-msgstr ""
-"Las galletas en este ejemplo no son las «cookies» que obtiene de sitios web, "
-"que almacenan su información de sesión y pueden rastrear qué sitios visitó. "
-"Son solamente utilería imaginaria. Puede hornear algunas reales, si quiere."
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:41
-msgid ""
-"Here is the basic, boilerplate code that goes at the start of the "
-"application, before we start creating the window and widgets. Besides the "
-"application having a unique name, the biggest change from the usual "
-"boilerplate is that we create a global variable right near the beginning, to "
-"hold the number of cookies."
-msgstr ""
-"Aquí está el código básico y repetitivo que va al inicio de la aplicación, "
-"antes de comenzar a crear la ventana y los widgets. Además de que la "
-"aplicación tiene un nombre único, el cambio más grande respecto del código "
-"usual es que se crea una variable global cerca del principio, para guardar "
-"el número de galletas."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:42
-#, no-wrap
-msgid ""
-"\n"
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"// We start out with 0 cookies\n"
-"var cookies = 0;\n"
-"\n"
-"const GettingTheSignal = new Lang.Class({\n"
-" Name: 'Getting the Signal',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"// We start out with 0 cookies\n"
-"var cookies = 0;\n"
-"\n"
-"const GettingTheSignal = new Lang.Class({\n"
-" Name: 'Getting the Signal',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:73
-msgid ""
-"Take a look at the part that uses our application's connect method and Lang."
-"bind, to connect its activate and startup signals to the functions that "
-"present the window and build the UI. We're going to do the same thing with "
-"our Button when we get to it, except that we're going to connect its "
-"\"clicked\" signal instead."
-msgstr ""
-"Eche un vistazo a la parte que usa el método «connect» de la aplicación y "
-"«Lang.bind», para conectar sus señales «activate» y «startup» a las funciones "
-"que presentan la ventana y construyen la IU. Va a hacer lo mismo con el "
-"botón cuando llegue a él, excepto que conectará la señal «clicked» en su "
-"lugar."
-
-#. (itstool) path: section/title
-#: C/03_getting_the_signal.js.page:77
-msgid "Click the button"
-msgstr "Pulsar el botón"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:79
-msgid ""
-"As usual, we'll put all the code to create our Button and other widgets "
-"inside the _buildUI function, which is called when the application starts up."
-msgstr ""
-"Como siempre, se pondrá todo el código para crear el botón y los otros "
-"widgets dentro de la función «_buildUI», que se llama cuando la aplicación "
-"arranca."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:80
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-msgstr ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:85
-msgid "First, we create the window itself:"
-msgstr "Primero, se crea la ventana en sí:"
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:86
-#, no-wrap
-msgid ""
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" title: \"Click the button to get a cookie!\"});\n"
-msgstr ""
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" title: \"Click the button to get a cookie!\"});\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:95
-msgid ""
-"Note that we've set its default_height and default_width properties. These "
-"let us control how tall and wide the ApplicationWindow will be, in pixels."
-msgstr ""
-"Tenga en cuenta que se han establecido sus propiedades «default_height» y "
-"«default_width». Estas le permiten controlar qué tan alta y ancha será la "
-"«ApplicationWindow», en píxeles."
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:96
-msgid ""
-"Next, we'll create the Label that shows us the number of cookies. We can use "
-"the cookies variable as part of the Label's label property."
-msgstr ""
-"A continuación, se creará la etiqueta que muestra el número de galletas. Se "
-"puede usar la variable de las galletas como parte de la propiedad «label» de "
-"la etiqueta."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:97
-#, no-wrap
-msgid ""
-"\n"
-" // Create the label\n"
-" this._cookieLabel = new Gtk.Label ({\n"
-" label: \"Number of cookies: \" + cookies });\n"
-msgstr ""
-"\n"
-" // Create the label\n"
-" this._cookieLabel = new Gtk.Label ({\n"
-" label: \"Number of cookies: \" + cookies });\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:103
-msgid ""
-"Now we'll create the Button. We set its label property to show the text that "
-"we want on the Button, and we connect its \"clicked\" signal to a function "
-"called _getACookie, which we'll write after we're done building our "
-"application's UI."
-msgstr ""
-"Ahora se creará el botón. Se configura su propiedad «label» para que muestre "
-"el texto que quiere en el botón, y se conecta su señal «clicked» a una "
-"función llamada «_getACookie», que se escribirá después de haber construido "
-"la IU de la aplicación."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:104
-#, no-wrap
-msgid ""
-"\n"
-" // Create the cookie button\n"
-" this._cookieButton = new Gtk.Button ({ label: \"Get a cookie\" });\n"
-"\n"
-" // Connect the cookie button to the function that handles clicking it\n"
-" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
-msgstr ""
-"\n"
-" // Create the cookie button\n"
-" this._cookieButton = new Gtk.Button ({ label: \"Get a cookie\" });\n"
-"\n"
-" // Connect the cookie button to the function that handles clicking it\n"
-" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:111
-msgid ""
-"Finally, we create a Grid, attach the Label and Button to it, add it to the "
-"window and tell the window to show itself and its contents. That's all we "
-"need inside the _buildUI function, so we close it with a bracket, as well as "
-"a comma that tells GNOME to go on to the next function. Note that even "
-"though we wrote the code for the Label first, we can still attach it to the "
-"Grid in a way that will put it on the bottom."
-msgstr ""
-"Finalmente, se crea una rejilla, se le adjuntan la etiqueta y el botón, se "
-"añade a la ventana y se le dice que se muestre con su contenido. Eso es todo "
-"lo que necesita dentro de la función «_buildUI», por lo que se cierra con un "
-"paréntesis y un punto y coma que le dice a GNOME que continúe con la "
-"siguiente función. Tenga en cuenta que incluso a pesar de que se escribió el "
-"código de la etiqueta primero, igual se puede adjuntar a la rejilla de forma "
-"tal que quede en la parte inferior."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:112
-#, no-wrap
-msgid ""
-"\n"
-" // Create a grid to arrange everything inside\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" row_spacing: 20 });\n"
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 1, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-"\n"
-" },\n"
-msgstr ""
-"\n"
-" // Create a grid to arrange everything inside\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" row_spacing: 20 });\n"
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 1, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-"\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:131
-msgid ""
-"Now, we write the _getACookie function. Whenever our Button sends out its "
-"\"clicked\" signal, the code in this function will run. In this case, all it "
-"does is increase the number of cookies by 1, and update the Label to show "
-"the new number of cookies. We do this using the Label's set_label method."
-msgstr ""
-"Ahora, se escribe la función «_getACookie». Cada vez que el botón envíe su "
-"señal «clicked», se ejecutará el código de esta función. En este caso, todo "
-"lo que hace es incrementar el número de galletas en 1, y actualizar la "
-"etiqueta para que muestre el número nuevo. Esto se hace usando el método "
-"«set_label» de la etiqueta."
-
-#. (itstool) path: note/p
-#: C/03_getting_the_signal.js.page:132
-msgid ""
-"Many widgets have the same properties and methods. Both Labels and Buttons, "
-"for instance, have a label property that says what text is inside them, and "
-"get_label and set_label methods that let you check what that text is and "
-"change it, respectively. So if you learn how one widget works, you'll also "
-"know how others like it work."
-msgstr ""
-"Muchos widgets tienen las mismas propiedades y métodos. Tanto las etiquetas "
-"como los botones, por ejemplo, tienen una propiedad «label» que dice qué "
-"texto va dentro de ellos, y métodos «get_label» y «set_label» que le permiten "
-"verificar cuál es el texto y cambiarlo, respectivamente. Por lo que si "
-"aprende cómo funciona un widget, también aprenderá cómo funcionan otros "
-"similares."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:133
-#, no-wrap
-msgid ""
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-msgstr ""
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:145
-msgid ""
-"Finally, we run the application, using the same kind of code as in our last "
-"tutorial."
-msgstr ""
-"Finalmente, se ejecuta la aplicación, usando el mismo tipo de código que en "
-"el tutorial anterior."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:146
-#, no-wrap
-msgid ""
-"\n"
-"// Run the application\n"
-"let app = new GettingTheSignal ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"// Run the application\n"
-"let app = new GettingTheSignal ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/title
-#: C/03_getting_the_signal.js.page:154
-msgid "Flip the switch"
-msgstr "Pulsar el interruptor"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:155
-msgid ""
-"Buttons aren't the only input widgets in our GTK+ toolbox. We can also use "
-"switches, like the one in this example. Switches don't have a label "
-"property, so we have to create a separate Label that says what it does to go "
-"next to it."
-msgstr ""
-"Los botones no son el único widget de entrada de la caja de herramientas de "
-"GTK+. También se pueden usar interruptores, como el de este ejemplo. Los "
-"interruptores no tienen una propiedad «label», por lo que hay que crear una "
-"etiqueta separada que diga qué hace a su lado."
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:159
-msgid ""
-"A Switch has two positions, Off and On. When a Switch is turned on, its text "
-"and background color change, so you can tell which position it's in."
-msgstr ""
-"Un interruptor tiene dos posiciones, «apagado» y «encendido». Cuando un "
-"interruptor está encendido, su texto y color de fondo cambian, indicando en "
-"qué posición está."
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:161
-msgid ""
-"You may have seen Switches like these in GNOME's accessibility menu, which "
-"let you turn features like large text and the on-screen keyboard on and off. "
-"In this case, the Switch controls our imaginary cookie dispenser. If the "
-"Switch is turned on, you can get cookies by clicking the \"Get a cookie\" "
-"Button. If it's turned off, clicking the Button won't do anything."
-msgstr ""
-"Puede haber visto interruptores como estos en el menú de accesibilidad de "
-"GNOME, que le permiten conmutar características como texto grande y el "
-"teclado en pantalla. En este caso, el interruptor controla un dispensador de "
-"galletas imaginario. Si el interruptor está encendido, puede obtener "
-"galletas pulsando el botón «Get a cookie». Si está apagado, pulsar el botón "
-"no hará nada."
-
-#. (itstool) path: note/p
-#: C/03_getting_the_signal.js.page:162
-msgid ""
-"You can get to the accessibility menu by clicking on the outline of a human, "
-"near your name in the upper-right corner of the screen."
-msgstr ""
-"Puede llegar al menú de accesibilidad pulsando el contorno de un humano, "
-"cerca de su nombre en la esquina superior derecha de la pantalla."
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:163
-msgid "Here's how we create the Switch:"
-msgstr "Aquí se muestra cómo crear el interruptor:"
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:164
-#, no-wrap
-msgid ""
-"\n"
-" // Create the switch that controls whether or not you can win\n"
-" this._cookieSwitch = new Gtk.Switch ();\n"
-msgstr ""
-"\n"
-" // Create the switch that controls whether or not you can win\n"
-" this._cookieSwitch = new Gtk.Switch ();\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:169
-msgid ""
-"We don't actually need to connect the Switch to anything. All we need to do "
-"is write an if statement in our _getACookie function, to check to see if the "
-"Switch is turned on. If we wanted to make something happen as soon as you "
-"flip the Switch, though, we would connect its notify::active signal, like so:"
-msgstr ""
-"En realidad no se necesita conectar el interruptor a nada. Todo lo que hay "
-"que hacer es escribir una declaración «if» en la función «_getACookie», para "
-"verificar si el interruptor está encendido. Si quisiera hacer que algo "
-"suceda tan pronto como se acciona el interruptor, conectaría su señal "
-"«notify::active», así:"
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:170
-#, no-wrap
-msgid ""
-"\n"
-" // Connect the switch to the function that handles it\n"
-" this._cookieSwitch.connect ('notify::active', Lang.bind (this, this._cookieDispenser));\n"
-msgstr ""
-"\n"
-" // Connect the switch to the function that handles it\n"
-" this._cookieSwitch.connect ('notify::active', Lang.bind (this, this._cookieDispenser));\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:175
-msgid ""
-"A Switch is set to the off position by default. If we wanted the Switch to "
-"start out turned on, we would set the value of its active property to true "
-"when we create it."
-msgstr ""
-"De manera predeterminada, un interruptor está apagado. Si quisiera que el "
-"interruptor arrancara encendido, establecería el valor de su propiedad "
-"«active» a «true» cuando lo crea."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:176
-#, no-wrap
-msgid ""
-"\n"
-" this._cookieSwitch = new Gtk.Switch ({ active: true });\n"
-msgstr ""
-"\n"
-" this._cookieSwitch = new Gtk.Switch ({ active: true });\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:180
-msgid ""
-"Let's just create it normally, though, and then create the Label that goes "
-"with it. We want the Switch and the Label to be kept right next to each "
-"other, so we'll create a Grid just for them, then put that Grid in our "
-"larger Grid that holds all the widgets inside it. Here's what the code looks "
-"like to create all that:"
-msgstr ""
-"Por ahora sólo se creará normalmente, y después se creará la etiqueta que lo "
-"acompaña. Se quiere que el interruptor y la etiqueta estén lado a lado, por "
-"lo que se creará una rejilla sólo para ellos, y después se pondrá esa "
-"rejilla en la rejilla más grande que contiene todos los widgets. Aquí está "
-"cómo se ve el código para crear todo eso:"
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:181
-#, no-wrap
-msgid ""
-"\n"
-" // Create the switch that controls whether or not you can win\n"
-" this._cookieSwitch = new Gtk.Switch ();\n"
-"\n"
-" // Create the label to go with the switch\n"
-" this._switchLabel = new Gtk.Label ({\n"
-" label: \"Cookie dispenser\" });\n"
-"\n"
-" // Create a grid for the switch and its label\n"
-" this._switchGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Put the switch and its label inside that grid\n"
-" this._switchGrid.attach (this._switchLabel, 0, 0, 1, 1);\n"
-" this._switchGrid.attach (this._cookieSwitch, 1, 0, 1, 1);\n"
-msgstr ""
-"\n"
-" // Create the switch that controls whether or not you can win\n"
-" this._cookieSwitch = new Gtk.Switch ();\n"
-"\n"
-" // Create the label to go with the switch\n"
-" this._switchLabel = new Gtk.Label ({\n"
-" label: \"Cookie dispenser\" });\n"
-"\n"
-" // Create a grid for the switch and its label\n"
-" this._switchGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Put the switch and its label inside that grid\n"
-" this._switchGrid.attach (this._switchLabel, 0, 0, 1, 1);\n"
-" this._switchGrid.attach (this._cookieSwitch, 1, 0, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:199
-msgid "And now we arrange everything in the larger Grid like so."
-msgstr "Y ahora se organiza todo en la rejilla más grande así."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:200
-#, no-wrap
-msgid ""
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
-" this._grid.attach (this._switchGrid, 0, 1, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
-msgstr ""
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
-" this._grid.attach (this._switchGrid, 0, 1, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:207
-msgid ""
-"Now we change the _getACookie function so that it checks to see if the "
-"cookie dispenser is turned on. We do that by using the Switch's get_active "
-"method. It returns true if the Switch is turned on, and false if the Switch "
-"is turned off."
-msgstr ""
-"Ahora se cambia la función «_getACookie» para que verifique si el dispensador "
-"de galletas está encendido. Se hace usando el método «get_active» del "
-"interruptor. Devuelve «true» si está encendido, y «false» si está apagado."
-
-#. (itstool) path: note/p
-#: C/03_getting_the_signal.js.page:208
-msgid ""
-"When a method is used in an if statement like this, the code inside the if "
-"statement is executed if the method returns true."
-msgstr ""
-"Cuando un método se usa en una declaración «if» como esta, el código dentro "
-"de la declaración «if» se ejecuta si el método devuelve «true»."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:209
-#, no-wrap
-msgid ""
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Is the cookie dispenser turned on?\n"
-" if (this._cookieSwitch.get_active()) {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-msgstr ""
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Is the cookie dispenser turned on?\n"
-" if (this._cookieSwitch.get_active()) {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-
-#. (itstool) path: section/title
-#: C/03_getting_the_signal.js.page:227
-msgid "Tuning the radio"
-msgstr "Sintonizar la radio"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:229
-msgid ""
-"Another type of input widget we can use is called the RadioButton. You "
-"create them in groups, and then only one RadioButton in a group can be "
-"selected at a time. They're called RadioButtons because they work like the "
-"channel preset button in old-style car radios. The radio could only be tuned "
-"to one station at a time, so whenever you pressed one button in, another "
-"would pop back out."
-msgstr ""
-"Otro tipo de widget de entrada que puede usar se llama botón de radio. Se "
-"crean en grupos, y sólo un botón de radio en un grupo puede seleccionarse "
-"por vez. Se llaman botones de radio porque funcionan como los botones de "
-"selección de canal en las radios de coches viejos. La radio sólo podía "
-"sintonizarse con una estación a la vez, por lo que cada vez que presionaba "
-"un botón, otro saltaba hacia arriba."
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:233
-msgid ""
-"First off, let's change our ApplicationWindow's name and increase its "
-"border_width property, so that our widgets aren't packed in too tightly. The "
-"border_width is the number of pixels between any widget and the edge of the "
-"window."
-msgstr ""
-"Primero, cambie el nombre de la «ApplicationWindow» e incremente su propiedad "
-"«border_width», para que los widgets no se empaqueten demasiado apretados. El "
-"«border_width» es el número de píxeles entre cualquier widget y el borde de "
-"la ventana."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:234
-#, no-wrap
-msgid ""
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" border_width: 20,\n"
-" title: \"Choose the one that says 'cookie'!\"});\n"
-msgstr ""
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" border_width: 20,\n"
-" title: \"Choose the one that says 'cookie'!\"});\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:245
-msgid ""
-"After that, we create the RadioButtons. Remember how they're created in "
-"groups? The way we do that, is we set each new RadioButton's group property "
-"to the name of another RadioButton."
-msgstr ""
-"Después de eso, se crean los botones de radio. ¿Recuerda cómo se crean en "
-"grupos? Eso se hace estableciendo la propiedad «group» de cada botón de radio "
-"al nombre de otro."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:246
-#, no-wrap
-msgid ""
-"\n"
-" // Create the radio buttons\n"
-" this._cookieRadio = new Gtk.RadioButton ({ label: \"Cookie\" });\n"
-" this._notCookieOne = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
-" group: this._cookieRadio });\n"
-" this._notCookieTwo = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
-" group: this._cookieRadio });\n"
-msgstr ""
-"\n"
-" // Create the radio buttons\n"
-" this._cookieRadio = new Gtk.RadioButton ({ label: \"Cookie\" });\n"
-" this._notCookieOne = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
-" group: this._cookieRadio });\n"
-" this._notCookieTwo = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
-" group: this._cookieRadio });\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:255
-msgid ""
-"Next, we create a Grid for the RadioButtons. Remember, we don't have to "
-"arrange things in Grids in the same order that we create them in."
-msgstr ""
-"A continuación, se crea una rejilla para los botones de radio. Recuerde, no "
-"es necesario ordenar cosas en rejillas en el mismo orden que se crean."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:256
-#, no-wrap
-msgid ""
-"\n"
-" // Arrange the radio buttons in their own grid\n"
-" this._radioGrid = new Gtk.Grid ();\n"
-" this._radioGrid.attach (this._notCookieOne, 0, 0, 1, 1);\n"
-" this._radioGrid.attach (this._cookieRadio, 0, 1, 1, 1);\n"
-" this._radioGrid.attach (this._notCookieTwo, 0, 2, 1, 1);\n"
-msgstr ""
-"\n"
-" // Arrange the radio buttons in their own grid\n"
-" this._radioGrid = new Gtk.Grid ();\n"
-" this._radioGrid.attach (this._notCookieOne, 0, 0, 1, 1);\n"
-" this._radioGrid.attach (this._cookieRadio, 0, 1, 1, 1);\n"
-" this._radioGrid.attach (this._notCookieTwo, 0, 2, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:264
-msgid ""
-"Normally, the RadioButton that's selected by default is the one that's the "
-"name of the group. We want the first \"Not cookie\" button to be selected by "
-"default, though, so we use its set_active method."
-msgstr ""
-"Normalmente, el botón de radio que está seleccionado de manera "
-"predeterminada es el del nombre del grupo. Sin embargo, se quiere que el "
-"primer botón «Not cookie» esté seleccionado de manera predeterminada, por lo "
-"que se usa su método «set_active»."
-
-#. (itstool) path: note/p
-#: C/03_getting_the_signal.js.page:265
-msgid "We could also set its active property to true when we create it."
-msgstr ""
-"También se podría establecer su propiedad «active» a «true» cuando se crea."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:266
-#, no-wrap
-msgid ""
-"\n"
-" // Set the button that will be at the top to be active by default\n"
-" this._notCookieOne.set_active (true);\n"
-msgstr ""
-"\n"
-" // Set the button that will be at the top to be active by default\n"
-" this._notCookieOne.set_active (true);\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:271
-msgid "Now we arrange everything in our main Grid like usual ..."
-msgstr "Ahora se organiza todo en la rejilla principal como siempre…"
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:272
-#, no-wrap
-msgid ""
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._radioGrid, 0, 0, 1, 1);\n"
-" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
-msgstr ""
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._radioGrid, 0, 0, 1, 1);\n"
-" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:279
-msgid ""
-"And then we change our _getACookie function to test to see if the cookie "
-"button is the one that's selected."
-msgstr ""
-"Y después se cambia la función «_getACookie» para probar si el botón de la "
-"galleta es el que está seleccionado."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:280
-#, no-wrap
-msgid ""
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Did you select \"cookie\" instead of \"not cookie\"?\n"
-" if (this._cookieRadio.get_active()) {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-msgstr ""
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Did you select \"cookie\" instead of \"not cookie\"?\n"
-" if (this._cookieRadio.get_active()) {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-
-#. (itstool) path: section/title
-#: C/03_getting_the_signal.js.page:298
-msgid "Can you spell \"cookie\"?"
-msgstr "¿Puede deletrear «cookie»?"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:300
-msgid ""
-"The last input widget we're going to cover is the Entry widget, which is "
-"used for single-line text entry."
-msgstr ""
-"El último widget de entrada que se va a cubrir es el widget «Entry», que se "
-"usa para entrada de texto de una sola línea."
-
-#. (itstool) path: note/p
-#: C/03_getting_the_signal.js.page:301
-msgid ""
-"If you need to be able to enter in a whole paragraph or more, like if you "
-"are building a text editor, you'll want to look at the much more "
-"customizable <link xref=\"textview.js\">TextView</link> widget."
-msgstr ""
-"Si necesita poder introducir un párrafo entero o más, como si estuviera "
-"construyendo un editor de texto, querrá echar un vistazo al widget <link "
-"xref=\"textview.js\">TextView</link>, mucho más configurable."
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:304
-msgid "After we change the window's name, we create the Entry widget."
-msgstr "Después de cambiar el nombre de la ventana, se crea el widget «Entry»."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:305
-#, no-wrap
-msgid ""
-"\n"
-" // Create the text entry field\n"
-" this._spellCookie = new Gtk.Entry ();\n"
-msgstr ""
-"\n"
-" // Create the text entry field\n"
-" this._spellCookie = new Gtk.Entry ();\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:310
-msgid "Next, we arrange everything in the Grid ..."
-msgstr "A continuación, se organiza todo en la rejilla…"
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:311
-#, no-wrap
-msgid ""
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._spellCookie, 0, 0, 1, 1);\n"
-" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
-msgstr ""
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._spellCookie, 0, 0, 1, 1);\n"
-" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:318
-msgid ""
-"And now we modify _getACookie's if statement again, using the Entry's "
-"get_text method to retrieve the text that you entered into it and see if you "
-"spelled \"cookie\" right. We don't care whether you capitalize \"cookie\" or "
-"not, so we use JavaScript's built-in toLowerCase method to change the "
-"Entry's text to all lower case inside the if statement."
-msgstr ""
-"Y ahora se modifica la declaración «if» de «_getACookie» nuevamente, usando el "
-"método «get_text» del «Entry» para obtener el texto que introdujo y verificar "
-"si deletreó «cookie» correctamente. No importa si utiliza mayúsculas, por lo "
-"que se usa el método «toLowerCase» integrado de JavaScript para cambiar todo "
-"el texto del «Entry» a minúsculas dentro de la declaración «if»."
-
-#. (itstool) path: note/p
-#: C/03_getting_the_signal.js.page:319
-msgid ""
-"An Entry widget doesn't have a label property, which is a set text string "
-"that the user can't change. (You can't normally change the label on a "
-"Button, for instance.) Instead, it has a text property, which changes to "
-"match what the user types in."
-msgstr ""
-"Un widget «Entry» no tiene una propiedad «label», que es una cadena de texto "
-"establecida que el usuario no puede cambiar (normalmente no puede cambiar la "
-"etiqueta de un botón, por ejemplo). En su lugar, tiene una propiedad «text», "
-"que cambia de acuerdo a lo que el usuario introduce."
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:320
-#, no-wrap
-msgid ""
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Did you spell \"cookie\" correctly?\n"
-" if ((this._spellCookie.get_text()).toLowerCase() == \"cookie\") {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-msgstr ""
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Did you spell \"cookie\" correctly?\n"
-" if ((this._spellCookie.get_text()).toLowerCase() == \"cookie\") {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-
-#. (itstool) path: section/p
-#: C/03_getting_the_signal.js.page:339
-msgid ""
-"Keep reading, if you'd like to see the complete code for each version of our "
-"cookie maker application."
-msgstr ""
-"Siga leyendo, si quiere ver el código completo para cada versión de la "
-"aplicación creadora de galletas."
-
-#. (itstool) path: note/p
-#: C/03_getting_the_signal.js.page:340
-msgid ""
-"The main JavaScript tutorials page has <link xref=\"beginner.js#buttons"
-"\">more detailed code samples</link> for each input widget, including "
-"several not covered here."
-msgstr ""
-"La página principal de tutoriales de JavaScript tiene <link xref=\"beginner."
-"js#buttons\">ejemplos de código más detallados</link> para cada widget de "
-"entrada, incluyendo varios no cubiertos aquí."
-
-#. (itstool) path: section/title
-#: C/03_getting_the_signal.js.page:345
-msgid "Complete code samples"
-msgstr "Ejemplos de código completos"
-
-#. (itstool) path: section/title
-#: C/03_getting_the_signal.js.page:350
-msgid "Code sample with Button"
-msgstr "Ejemplo de código con botón"
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:352
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"// We start out with 0 cookies\n"
-"var cookies = 0;\n"
-"\n"
-"const GettingTheSignal = new Lang.Class({\n"
-" Name: 'Getting the Signal',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" title: \"Click the button to get a cookie!\"});\n"
-"\n"
-" // Create the label\n"
-" this._cookieLabel = new Gtk.Label ({\n"
-" label: \"Number of cookies: \" + cookies });\n"
-"\n"
-" // Create the cookie button\n"
-" this._cookieButton = new Gtk.Button ({ label: \"Get a cookie\" });\n"
-"\n"
-" // Connect the cookie button to the function that handles clicking it\n"
-" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
-"\n"
-" // Create a grid to arrange everything inside\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" row_spacing: 20 });\n"
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 1, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new GettingTheSignal ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"// We start out with 0 cookies\n"
-"var cookies = 0;\n"
-"\n"
-"const GettingTheSignal = new Lang.Class({\n"
-" Name: 'Getting the Signal',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" title: \"Click the button to get a cookie!\"});\n"
-"\n"
-" // Create the label\n"
-" this._cookieLabel = new Gtk.Label ({\n"
-" label: \"Number of cookies: \" + cookies });\n"
-"\n"
-" // Create the cookie button\n"
-" this._cookieButton = new Gtk.Button ({ label: \"Get a cookie\" });\n"
-"\n"
-" // Connect the cookie button to the function that handles clicking it\n"
-" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
-"\n"
-" // Create a grid to arrange everything inside\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" row_spacing: 20 });\n"
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 1, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new GettingTheSignal ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/title
-#: C/03_getting_the_signal.js.page:356
-msgid "Code sample with Switch"
-msgstr "Ejemplo de código con interruptor"
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:358
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"// We start out with 0 cookies\n"
-"var cookies = 0;\n"
-"\n"
-"const GettingTheSignal = new Lang.Class({\n"
-" Name: 'Getting the Signal',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" title: \"Click the button to get a cookie!\"});\n"
-"\n"
-" // Create the label\n"
-" this._cookieLabel = new Gtk.Label ({\n"
-" label: \"Number of cookies: \" + cookies });\n"
-"\n"
-" // Create the cookie button\n"
-" this._cookieButton = new Gtk.Button ({\n"
-" label: \"Get a cookie\" });\n"
-"\n"
-" // Connect the cookie button to the function that handles clicking it\n"
-" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
-"\n"
-" // Create the switch that controls whether or not you can win\n"
-" this._cookieSwitch = new Gtk.Switch ();\n"
-"\n"
-" // Create the label to go with the switch\n"
-" this._switchLabel = new Gtk.Label ({\n"
-" label: \"Cookie dispenser\" });\n"
-"\n"
-" // Create a grid for the switch and its label\n"
-" this._switchGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Put the switch and its label inside that grid\n"
-" this._switchGrid.attach (this._switchLabel, 0, 0, 1, 1);\n"
-" this._switchGrid.attach (this._cookieSwitch, 1, 0, 1, 1);\n"
-"\n"
-" // Create a grid to arrange everything else inside\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" row_spacing: 20 });\n"
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
-" this._grid.attach (this._switchGrid, 0, 1, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Is the cookie dispenser turned on?\n"
-" if (this._cookieSwitch.get_active()) {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new GettingTheSignal ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"// We start out with 0 cookies\n"
-"var cookies = 0;\n"
-"\n"
-"const GettingTheSignal = new Lang.Class({\n"
-" Name: 'Getting the Signal',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" title: \"Click the button to get a cookie!\"});\n"
-"\n"
-" // Create the label\n"
-" this._cookieLabel = new Gtk.Label ({\n"
-" label: \"Number of cookies: \" + cookies });\n"
-"\n"
-" // Create the cookie button\n"
-" this._cookieButton = new Gtk.Button ({\n"
-" label: \"Get a cookie\" });\n"
-"\n"
-" // Connect the cookie button to the function that handles clicking it\n"
-" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
-"\n"
-" // Create the switch that controls whether or not you can win\n"
-" this._cookieSwitch = new Gtk.Switch ();\n"
-"\n"
-" // Create the label to go with the switch\n"
-" this._switchLabel = new Gtk.Label ({\n"
-" label: \"Cookie dispenser\" });\n"
-"\n"
-" // Create a grid for the switch and its label\n"
-" this._switchGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Put the switch and its label inside that grid\n"
-" this._switchGrid.attach (this._switchLabel, 0, 0, 1, 1);\n"
-" this._switchGrid.attach (this._cookieSwitch, 1, 0, 1, 1);\n"
-"\n"
-" // Create a grid to arrange everything else inside\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" row_spacing: 20 });\n"
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
-" this._grid.attach (this._switchGrid, 0, 1, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Is the cookie dispenser turned on?\n"
-" if (this._cookieSwitch.get_active()) {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new GettingTheSignal ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/title
-#: C/03_getting_the_signal.js.page:362
-msgid "Code sample with RadioButton"
-msgstr "Ejemplo de código con botón de radio"
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:364
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"// We start out with 0 cookies\n"
-"var cookies = 0;\n"
-"\n"
-"const GettingTheSignal = new Lang.Class({\n"
-" Name: 'Getting the Signal',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" border_width: 20,\n"
-" title: \"Choose the one that says 'cookie'!\"});\n"
-"\n"
-" // Create the radio buttons\n"
-" this._cookieRadio = new Gtk.RadioButton ({ label: \"Cookie\" });\n"
-" this._notCookieOne = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
-" group: this._cookieRadio });\n"
-" this._notCookieTwo = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
-" group: this._cookieRadio });\n"
-"\n"
-" // Arrange the radio buttons in their own grid\n"
-" this._radioGrid = new Gtk.Grid ();\n"
-" this._radioGrid.attach (this._notCookieOne, 0, 0, 1, 1);\n"
-" this._radioGrid.attach (this._cookieRadio, 0, 1, 1, 1);\n"
-" this._radioGrid.attach (this._notCookieTwo, 0, 2, 1, 1);\n"
-"\n"
-" // Set the button that will be at the top to be active by default\n"
-" this._notCookieOne.set_active (true);\n"
-"\n"
-" // Create the cookie button\n"
-" this._cookieButton = new Gtk.Button ({\n"
-" label: \"Get a cookie\" });\n"
-"\n"
-" // Connect the cookie button to the function that handles clicking it\n"
-" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
-"\n"
-" // Create the label\n"
-" this._cookieLabel = new Gtk.Label ({\n"
-" label: \"Number of cookies: \" + cookies });\n"
-"\n"
-" // Create a grid to arrange everything inside\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" row_spacing: 20 });\n"
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._radioGrid, 0, 0, 1, 1);\n"
-" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Did you select \"cookie\" instead of \"not cookie\"?\n"
-" if (this._cookieRadio.get_active()) {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new GettingTheSignal ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"// We start out with 0 cookies\n"
-"var cookies = 0;\n"
-"\n"
-"const GettingTheSignal = new Lang.Class({\n"
-" Name: 'Getting the Signal',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" border_width: 20,\n"
-" title: \"Choose the one that says 'cookie'!\"});\n"
-"\n"
-" // Create the radio buttons\n"
-" this._cookieRadio = new Gtk.RadioButton ({ label: \"Cookie\" });\n"
-" this._notCookieOne = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
-" group: this._cookieRadio });\n"
-" this._notCookieTwo = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
-" group: this._cookieRadio });\n"
-"\n"
-" // Arrange the radio buttons in their own grid\n"
-" this._radioGrid = new Gtk.Grid ();\n"
-" this._radioGrid.attach (this._notCookieOne, 0, 0, 1, 1);\n"
-" this._radioGrid.attach (this._cookieRadio, 0, 1, 1, 1);\n"
-" this._radioGrid.attach (this._notCookieTwo, 0, 2, 1, 1);\n"
-"\n"
-" // Set the button that will be at the top to be active by default\n"
-" this._notCookieOne.set_active (true);\n"
-"\n"
-" // Create the cookie button\n"
-" this._cookieButton = new Gtk.Button ({\n"
-" label: \"Get a cookie\" });\n"
-"\n"
-" // Connect the cookie button to the function that handles clicking it\n"
-" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
-"\n"
-" // Create the label\n"
-" this._cookieLabel = new Gtk.Label ({\n"
-" label: \"Number of cookies: \" + cookies });\n"
-"\n"
-" // Create a grid to arrange everything inside\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" row_spacing: 20 });\n"
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._radioGrid, 0, 0, 1, 1);\n"
-" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Did you select \"cookie\" instead of \"not cookie\"?\n"
-" if (this._cookieRadio.get_active()) {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new GettingTheSignal ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/title
-#: C/03_getting_the_signal.js.page:368
-msgid "Code sample with Entry"
-msgstr "Ejemplo de código con «Entry»"
-
-#. (itstool) path: section/code
-#: C/03_getting_the_signal.js.page:370
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"// We start out with 0 cookies\n"
-"var cookies = 0;\n"
-"\n"
-"const GettingTheSignal = new Lang.Class({\n"
-" Name: 'Getting the Signal',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" border_width: 20,\n"
-" title: \"Spell 'cookie' to get a cookie!\"});\n"
-"\n"
-" // Create the text entry field\n"
-" this._spellCookie = new Gtk.Entry ();\n"
-"\n"
-" // Create the cookie button\n"
-" this._cookieButton = new Gtk.Button ({\n"
-" label: \"Get a cookie\" });\n"
-"\n"
-" // Connect the cookie button to the function that handles clicking it\n"
-" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
-"\n"
-" // Create the label\n"
-" this._cookieLabel = new Gtk.Label ({\n"
-" label: \"Number of cookies: \" + cookies });\n"
-"\n"
-" // Create a grid to arrange everything inside\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" row_spacing: 20 });\n"
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._spellCookie, 0, 0, 1, 1);\n"
-" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Did you spell \"cookie\" correctly?\n"
-" if ((this._spellCookie.get_text()).toLowerCase() == \"cookie\") {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new GettingTheSignal ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"// We start out with 0 cookies\n"
-"var cookies = 0;\n"
-"\n"
-"const GettingTheSignal = new Lang.Class({\n"
-" Name: 'Getting the Signal',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" border_width: 20,\n"
-" title: \"Spell 'cookie' to get a cookie!\"});\n"
-"\n"
-" // Create the text entry field\n"
-" this._spellCookie = new Gtk.Entry ();\n"
-"\n"
-" // Create the cookie button\n"
-" this._cookieButton = new Gtk.Button ({\n"
-" label: \"Get a cookie\" });\n"
-"\n"
-" // Connect the cookie button to the function that handles clicking it\n"
-" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
-"\n"
-" // Create the label\n"
-" this._cookieLabel = new Gtk.Label ({\n"
-" label: \"Number of cookies: \" + cookies });\n"
-"\n"
-" // Create a grid to arrange everything inside\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" row_spacing: 20 });\n"
-"\n"
-" // Put everything inside the grid\n"
-" this._grid.attach (this._spellCookie, 0, 0, 1, 1);\n"
-" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
-" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _getACookie: function() {\n"
-"\n"
-" // Did you spell \"cookie\" correctly?\n"
-" if ((this._spellCookie.get_text()).toLowerCase() == \"cookie\") {\n"
-"\n"
-" // Increase the number of cookies by 1 and update the label\n"
-" cookies++;\n"
-" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new GettingTheSignal ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/aboutdialog.c.page:25 C/aboutdialog.js.page:21 C/aboutdialog.py.page:23
-#: C/aboutdialog.vala.page:30
-msgctxt "_"
-msgid ""
-"external ref='media/aboutdialog_GMenu.png' "
-"md5='a36117a559fa98e25e2f6b3db593639f'"
-msgstr ""
-"external ref='media/aboutdialog_GMenu.png' "
-"md5='a36117a559fa98e25e2f6b3db593639f'"
-
-#. (itstool) path: info/title
-#: C/aboutdialog.c.page:8
-msgctxt "text"
-msgid "AboutDialog (C)"
-msgstr "AboutDialog (C)"
-
-#. (itstool) path: credit/name
-#: C/aboutdialog.c.page:15 C/button.c.page:15 C/combobox.c.page:13
-#: C/dialog.c.page:15 C/entry.c.page:13 C/grid.c.page:13 C/image.c.page:13
-#: C/label.c.page:14 C/linkbutton.c.page:13 C/menubar.c.page:15
-#: C/messagedialog.c.page:14 C/progressbar.c.page:14 C/radiobutton.c.page:15
-#: C/scale.c.page:15 C/scrolledwindow.c.page:15 C/spinbutton.c.page:16
-#: C/spinner.c.page:14 C/statusbar.c.page:17 C/switch.c.page:13
-#: C/textview.c.page:13 C/togglebutton.c.page:17 C/toolbar.c.page:15
-msgid "Monica Kochofar"
-msgstr "Monica Kochofar"
-
-#. (itstool) path: info/desc
-#: C/aboutdialog.c.page:20 C/aboutdialog.js.page:17 C/aboutdialog.vala.page:26
-msgid "Display information about an application"
-msgstr "Mostrar información acerca de una aplicación"
-
-#. (itstool) path: page/title
-#: C/aboutdialog.c.page:23 C/aboutdialog.js.page:20 C/aboutdialog.py.page:22
-#: C/aboutdialog.vala.page:29
-msgid "AboutDialog"
-msgstr "AboutDialog"
-
-#. (itstool) path: page/p
-#: C/aboutdialog.c.page:26 C/aboutdialog.vala.page:31
-msgid "An AboutDialog example using Gtk.ApplicationWindow and Menu"
-msgstr "Un ejemplo de AboutDialog usando Gtk.ApplicationWindow y Menu"
-
-#. (itstool) path: note/p
-#: C/aboutdialog.c.page:27 C/aboutdialog.vala.page:32 C/gmenu.c.page:24
-msgid ""
-"<em style=\"bold\">You need to be running Gtk3.4 or later for this to work</"
-"em>"
-msgstr ""
-"<em style=\"bold\">Necesita ejecutar GTK+ 3.4 o superior para que funcione</"
-"em>"
-
-#. (itstool) path: page/code
-#: C/aboutdialog.c.page:29
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function in which reacts to the \"response\" signal from the user in\n"
-" * the message dialog window.\n"
-" * This function is used to destroy the dialog window.\n"
-" */\n"
-"static void\n"
-"on_close (GtkDialog *dialog,\n"
-" gint response_id,\n"
-" gpointer user_data)\n"
-"{\n"
-" /*This will cause the dialog to be destroyed*/\n"
-" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
-"\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the response signal \"activate\" related to the SimpleAction\n"
-" * \"about_action\".\n"
-" * This function is used to cause the about dialog window to popup.\n"
-" */\n"
-"static void\n"
-"about_cb (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *about_dialog;\n"
-"\n"
-" about_dialog = gtk_about_dialog_new ();\n"
-"\n"
-" /* Lists of authors/ documentators to be used later, they must be initialized\n"
-" * in a null terminated array of strings.\n"
-" */\n"
-" const gchar *authors[] = {\"GNOME Documentation Team\", NULL};\n"
-" const gchar *documenters[] = {\"GNOME Documentation Team\", NULL};\n"
-"\n"
-" /* We fill in the information for the about dialog */\n"
-" gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (about_dialog), \"AboutDialog Example\");\n"
-" gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about_dialog), \"Copyright \\xc2\\xa9 2012 GNOME
Documentation Team\");\n"
-" gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about_dialog), authors);\n"
-" gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (about_dialog), documenters);\n"
-" gtk_about_dialog_set_website_label (GTK_ABOUT_DIALOG (about_dialog), \"GNOME Developer Website\");\n"
-" gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about_dialog), \"http://developer.gnome.org\");\n"
-"\n"
-" /* We do not wish to show the title, which in this case would be \n"
-" * \"AboutDialog Example\". We have to reset the title of the messagedialog \n"
-" * window after setting the program name.\n"
-" */\n"
-" gtk_window_set_title (GTK_WINDOW (about_dialog), \"\");\n"
-"\n"
-" /* To close the aboutdialog when \"close\" is clicked we connect the response \n"
-" * signal to on_close\n"
-" */\n"
-" g_signal_connect (GTK_DIALOG (about_dialog), \"response\", \n"
-" G_CALLBACK (on_close), NULL);\n"
-"\n"
-" /* Show the about dialog */\n"
-" gtk_widget_show (about_dialog); \n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-"\n"
-" GSimpleAction *about_action;\n"
-"\n"
-" /* Create a window with a title and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"AboutDialog Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n"
-"\n"
-" /* Create a new simple action, giving it a NULL parameter type. It will \n"
-" * always be NULL for actions invoked from a menu. (e.g clicking on an \"ok\" \n"
-" * or \"cancel\" button)\n"
-" */\n"
-" about_action = g_simple_action_new (\"about\", NULL); \n"
-"\n"
-" /* Connect the \"activate\" signal to the appropriate callback function. \n"
-" * It will indicate that the action was just activated.\n"
-" */\n"
-" g_signal_connect (about_action, \"activate\", G_CALLBACK (about_cb), \n"
-" GTK_WINDOW (window));\n"
-"\n"
-" /* Adds the about_action to the overall action map. An Action map is an \n"
-" * interface that contains a number of named GAction instances \n"
-" * (such as about_action) \n"
-" */\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the response signal \"activate\" from the \"quit\" action \n"
-" * found in the function directly below.\n"
-" */ \n"
-"static void\n"
-"quit_cb (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GApplication *application = user_data;\n"
-"\n"
-" g_application_quit (application);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the menu we are creating in this sample */\n"
-"static void\n"
-"startup (GApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GMenu *menu;\n"
-" GSimpleAction *quit_action;\n"
-"\n"
-" /* Initialize the GMenu, and add a menu item with label \"About\" and action \n"
-" * \"win.about\". Also add another menu item with label \"Quit\" and action \n"
-" * \"app.quit\" \n"
-" */\n"
-" menu = g_menu_new ();\n"
-" g_menu_append (menu, \"About\", \"win.about\");\n"
-" g_menu_append (menu, \"Quit\", \"app.quit\");\n"
-"\n"
-" /* Create a new simple action for the application. (In this case it is the \n"
-" * \"quit\" action.\n"
-" */\n"
-" quit_action = g_simple_action_new (\"quit\", NULL);\n"
-"\n"
-" /* Ensure that the menu we have just created is set for the overall application */\n"
-" gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (menu));\n"
-"\n"
-" g_signal_connect (quit_action, \n"
-" \"activate\", \n"
-" G_CALLBACK (quit_cb), \n"
-" app);\n"
-"\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
-"\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the application */\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function in which reacts to the \"response\" signal from the user in\n"
-" * the message dialog window.\n"
-" * This function is used to destroy the dialog window.\n"
-" */\n"
-"static void\n"
-"on_close (GtkDialog *dialog,\n"
-" gint response_id,\n"
-" gpointer user_data)\n"
-"{\n"
-" /*This will cause the dialog to be destroyed*/\n"
-" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
-"\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the response signal \"activate\" related to the SimpleAction\n"
-" * \"about_action\".\n"
-" * This function is used to cause the about dialog window to popup.\n"
-" */\n"
-"static void\n"
-"about_cb (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *about_dialog;\n"
-"\n"
-" about_dialog = gtk_about_dialog_new ();\n"
-"\n"
-" /* Lists of authors/ documentators to be used later, they must be initialized\n"
-" * in a null terminated array of strings.\n"
-" */\n"
-" const gchar *authors[] = {\"GNOME Documentation Team\", NULL};\n"
-" const gchar *documenters[] = {\"GNOME Documentation Team\", NULL};\n"
-"\n"
-" /* We fill in the information for the about dialog */\n"
-" gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (about_dialog), \"AboutDialog Example\");\n"
-" gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about_dialog), \"Copyright \\xc2\\xa9 2012 GNOME
Documentation Team\");\n"
-" gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about_dialog), authors);\n"
-" gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (about_dialog), documenters);\n"
-" gtk_about_dialog_set_website_label (GTK_ABOUT_DIALOG (about_dialog), \"GNOME Developer Website\");\n"
-" gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about_dialog), \"http://developer.gnome.org\");\n"
-"\n"
-" /* We do not wish to show the title, which in this case would be \n"
-" * \"AboutDialog Example\". We have to reset the title of the messagedialog \n"
-" * window after setting the program name.\n"
-" */\n"
-" gtk_window_set_title (GTK_WINDOW (about_dialog), \"\");\n"
-"\n"
-" /* To close the aboutdialog when \"close\" is clicked we connect the response \n"
-" * signal to on_close\n"
-" */\n"
-" g_signal_connect (GTK_DIALOG (about_dialog), \"response\", \n"
-" G_CALLBACK (on_close), NULL);\n"
-"\n"
-" /* Show the about dialog */\n"
-" gtk_widget_show (about_dialog); \n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-"\n"
-" GSimpleAction *about_action;\n"
-"\n"
-" /* Create a window with a title and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"AboutDialog Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n"
-"\n"
-" /* Create a new simple action, giving it a NULL parameter type. It will \n"
-" * always be NULL for actions invoked from a menu. (e.g clicking on an \"ok\" \n"
-" * or \"cancel\" button)\n"
-" */\n"
-" about_action = g_simple_action_new (\"about\", NULL); \n"
-"\n"
-" /* Connect the \"activate\" signal to the appropriate callback function. \n"
-" * It will indicate that the action was just activated.\n"
-" */\n"
-" g_signal_connect (about_action, \"activate\", G_CALLBACK (about_cb), \n"
-" GTK_WINDOW (window));\n"
-"\n"
-" /* Adds the about_action to the overall action map. An Action map is an \n"
-" * interface that contains a number of named GAction instances \n"
-" * (such as about_action) \n"
-" */\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the response signal \"activate\" from the \"quit\" action \n"
-" * found in the function directly below.\n"
-" */ \n"
-"static void\n"
-"quit_cb (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GApplication *application = user_data;\n"
-"\n"
-" g_application_quit (application);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the menu we are creating in this sample */\n"
-"static void\n"
-"startup (GApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GMenu *menu;\n"
-" GSimpleAction *quit_action;\n"
-"\n"
-" /* Initialize the GMenu, and add a menu item with label \"About\" and action \n"
-" * \"win.about\". Also add another menu item with label \"Quit\" and action \n"
-" * \"app.quit\" \n"
-" */\n"
-" menu = g_menu_new ();\n"
-" g_menu_append (menu, \"About\", \"win.about\");\n"
-" g_menu_append (menu, \"Quit\", \"app.quit\");\n"
-"\n"
-" /* Create a new simple action for the application. (In this case it is the \n"
-" * \"quit\" action.\n"
-" */\n"
-" quit_action = g_simple_action_new (\"quit\", NULL);\n"
-"\n"
-" /* Ensure that the menu we have just created is set for the overall application */\n"
-" gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (menu));\n"
-"\n"
-" g_signal_connect (quit_action, \n"
-" \"activate\", \n"
-" G_CALLBACK (quit_cb), \n"
-" app);\n"
-"\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
-"\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the application */\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: page/p
-#. (itstool) path: section/p
-#: C/aboutdialog.c.page:31 C/aboutdialog.js.page:25 C/aboutdialog.py.page:42
-#: C/aboutdialog.vala.page:35 C/button.c.page:30 C/button.js.page:27
-#: C/button.py.page:53 C/buttonbox.js.page:36 C/buttonbox.py.page:47
-#: C/checkbutton.c.page:26 C/checkbutton.py.page:43 C/checkbutton.vala.page:26
-#: C/colorbutton.js.page:34 C/colorbutton.py.page:41
-#: C/colorbutton.vala.page:28 C/comboboxtext.js.page:177 C/combobox.c.page:31
-#: C/combobox.js.page:234 C/combobox.py.page:43 C/combobox.vala.page:26
-#: C/combobox_multicolumn.py.page:42 C/combobox_multicolumn.vala.page:36
-#: C/dialog.c.page:30 C/dialog.js.page:26 C/dialog.py.page:47
-#: C/dialog.vala.page:28 C/entry.c.page:28 C/entry.js.page:26
-#: C/entry.py.page:62 C/entry.vala.page:26 C/filechooserdialog.py.page:71
-#: C/filechooserdialog.vala.page:36 C/fontchooserwidget.js.page:35
-#: C/fontchooserwidget.py.page:45 C/fontchooserwidget.vala.page:35
-#: C/gmenu.c.page:28 C/gmenu.js.page:26 C/gmenu.py.page:78
-#: C/gmenu.vala.page:35 C/grid.c.page:28 C/grid.js.page:30 C/grid.py.page:55
-#: C/grid.vala.page:28 C/GtkApplicationWindow.c.page:26
-#: C/GtkApplicationWindow.js.page:27 C/GtkApplicationWindow.py.page:51
-#: C/GtkApplicationWindow.vala.page:27 C/image.c.page:29 C/image.js.page:28
-#: C/image.py.page:128 C/image.vala.page:28 C/label.c.page:33
-#: C/label.js.page:26 C/label.py.page:103 C/label.vala.page:27
-#: C/linkbutton.c.page:28 C/linkbutton.js.page:26 C/linkbutton.py.page:45
-#: C/linkbutton.vala.page:26 C/menubar.c.page:33 C/menubar.py.page:184
-#: C/menubar.vala.page:188 C/menubutton.c.page:36 C/menubutton.js.page:29
-#: C/menubutton.py.page:54 C/menubutton.vala.page:29 C/messagedialog.c.page:32
-#: C/messagedialog.js.page:190 C/messagedialog.py.page:55
-#: C/messagedialog.vala.page:27 C/paned.c.page:34 C/paned.js.page:34
-#: C/paned.py.page:40 C/paned.vala.page:34 C/progressbar.c.page:29
-#: C/progressbar.js.page:35 C/progressbar.py.page:55
-#: C/progressbar.vala.page:26 C/radiobutton.c.page:30 C/radiobutton.py.page:47
-#: C/radiobutton.vala.page:29 C/scale.c.page:30 C/scale.py.page:55
-#: C/scale.vala.page:28 C/scrolledwindow.c.page:30 C/scrolledwindow.js.page:34
-#: C/scrolledwindow.py.page:43 C/scrolledwindow.vala.page:27
-#: C/separator.c.page:36 C/separator.py.page:37 C/separator.vala.page:38
-#: C/spinbutton.c.page:31 C/spinbutton.py.page:47 C/spinbutton.vala.page:28
-#: C/spinner.c.page:29 C/spinner.js.page:26 C/spinner.py.page:40
-#: C/spinner.vala.page:26 C/statusbar.c.page:32 C/statusbar.py.page:51
-#: C/statusbar.vala.page:29 C/switch.c.page:29 C/switch.py.page:43
-#: C/switch.vala.page:32 C/textview.c.page:32 C/textview.py.page:94
-#: C/textview.vala.page:31 C/togglebutton.c.page:32 C/togglebutton.py.page:42
-#: C/togglebutton.vala.page:29 C/toolbar.c.page:31 C/toolbar.js.page:27
-#: C/toolbar.py.page:53 C/toolbar.vala.page:30 C/toolbar_builder.py.page:192
-#: C/toolbar_builder.vala.page:147 C/tooltip.c.page:36 C/tooltip.js.page:35
-#: C/tooltip.py.page:57 C/tooltip.vala.page:36
-#: C/treeview_advanced_liststore.py.page:42
-#: C/treeview_cellrenderertoggle.py.page:42
-#: C/treeview_simple_liststore.js.page:273
-#: C/treeview_simple_liststore.py.page:43
-#: C/treeview_simple_liststore.vala.page:28 C/treeview_treestore.py.page:42
-#: C/widget_drawing.py.page:36 C/window.c.page:30 C/window.py.page:62
-#: C/window.vala.page:34
-msgid "In this sample we used the following:"
-msgstr "En este ejemplo se usa lo siguiente:"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.c.page:35 C/button.c.page:34 C/combobox.c.page:35
-#: C/dialog.c.page:34 C/entry.c.page:32 C/grid.c.page:32
-#: C/GtkApplicationWindow.c.page:30 C/image.c.page:33 C/label.c.page:37
-#: C/linkbutton.c.page:32 C/messagedialog.c.page:36 C/progressbar.c.page:33
-#: C/radiobutton.c.page:34 C/scale.c.page:34 C/spinbutton.c.page:35
-#: C/spinner.c.page:33 C/statusbar.c.page:36 C/switch.c.page:33
-#: C/textview.c.page:36 C/togglebutton.c.page:36 C/window.c.page:34
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkApplication.html"
-"\">GtkApplication</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkApplication.html"
-"\">GtkApplication</link>"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.c.page:36 C/button.c.page:35 C/combobox.c.page:36
-#: C/dialog.c.page:35 C/entry.c.page:33 C/grid.c.page:33
-#: C/linkbutton.c.page:33 C/messagedialog.c.page:38 C/progressbar.c.page:34
-#: C/radiobutton.c.page:35 C/scale.c.page:35 C/spinbutton.c.page:36
-#: C/spinner.c.page:34 C/statusbar.c.page:37 C/switch.c.page:34
-#: C/textview.c.page:37 C/togglebutton.c.page:37 C/window.c.page:35
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkWindow.html\">GtkWindow</"
-"link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkWindow.html\">GtkWindow</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.c.page:37
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkAboutDialog.html"
-"\">GtkAboutDialog</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkAboutDialog.html"
-"\">GtkAboutDialog</link>"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.c.page:38 C/aboutdialog.py.page:48 C/messagedialog.c.page:42
-#: C/messagedialog.py.page:64
-msgid ""
-"<link href=\"http://developer.gnome.org/gio/stable/GMenu.html\">GMenu</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gio/stable/GMenu.html\">GMenu</link>"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.c.page:39 C/messagedialog.c.page:41
-msgid ""
-"<link href=\"http://developer.gnome.org/gio/stable/GActionMap.html"
-"\">GActionMap</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gio/stable/GActionMap.html"
-"\">GActionMap</link>"
-
-#. (itstool) path: info/title
-#: C/aboutdialog.js.page:7
-msgctxt "text"
-msgid "AboutDialog (JavaScript)"
-msgstr "AboutDialog (JavaScript)"
-
-#. (itstool) path: page/p
-#: C/aboutdialog.js.page:22
-msgid ""
-"A modal dialog window which shows information about an application and its "
-"creators. This one is triggered by clicking \"About\" in the application's "
-"menu, which is normally a good place to put it."
-msgstr ""
-"Una ventana de diálogo modal que muestra información sobre una aplicación Se "
-"muestra al pulsar el elemento de menú «Acerca de» en la aplicación, que es "
-"normalmente un buen sitio para ponerla."
-
-#. (itstool) path: page/code
-#: C/aboutdialog.js.page:24
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const AboutDialogExample = new Lang.Class({\n"
-" Name: 'AboutDialog Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsaboutdialog',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal creates the menu and builds the UI\n"
-" _onStartup: function() {\n"
-" this._initMenus();\n"
-" this._buildUI();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function(){\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"AboutDialog Example\",\n"
-" default_height: 250,\n"
-" default_width: 350 });\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" // Create the application menu\n"
-" _initMenus: function() {\n"
-" let menu = new Gio.Menu();\n"
-" menu.append(\"About\", 'app.about');\n"
-" menu.append(\"Quit\",'app.quit');\n"
-" this.application.set_app_menu(menu);\n"
-"\n"
-" // Create the \"About\" menu option and have it call the _showAbout() function\n"
-" let aboutAction = new Gio.SimpleAction({ name: 'about' });\n"
-" aboutAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showAbout();\n"
-" }));\n"
-" this.application.add_action(aboutAction);\n"
-"\n"
-" // Create the \"Quit\" menu option and have it close the window\n"
-" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-" },\n"
-"\n"
-" _showAbout: function() {\n"
-"\n"
-" // String arrays of the names of the people involved in the project\n"
-" var authors = [\"GNOME Documentation Team\"];\n"
-" var documenters = [\"GNOME Documentation Team\"];\n"
-"\n"
-" // Create the About dialog\n"
-" let aboutDialog = new Gtk.AboutDialog({ title: \"AboutDialog Example\",\n"
-" program_name: \"GtkApplication Example\",\n"
-" copyright: \"Copyright \\xa9 2012 GNOME Documentation
Team\",\n"
-" authors: authors,\n"
-" documenters: documenters,\n"
-" website: \"http://developer.gnome.org\",\n"
-" website_label: \"GNOME Developer Website\" });\n"
-"\n"
-" // Attach the About dialog to the window\n"
-" aboutDialog.modal = true;\n"
-" aboutDialog.transient_for = this._window;\n"
-"\n"
-" // Show the About dialog\n"
-" aboutDialog.show();\n"
-"\n"
-" // Connect the Close button to the destroy signal for the dialog\n"
-" aboutDialog.connect('response', function() {\n"
-" aboutDialog.destroy();\n"
-" });\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new AboutDialogExample();\n"
-"app.application.run(ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const AboutDialogExample = new Lang.Class({\n"
-" Name: 'AboutDialog Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsaboutdialog',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal creates the menu and builds the UI\n"
-" _onStartup: function() {\n"
-" this._initMenus();\n"
-" this._buildUI();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function(){\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"AboutDialog Example\",\n"
-" default_height: 250,\n"
-" default_width: 350 });\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" // Create the application menu\n"
-" _initMenus: function() {\n"
-" let menu = new Gio.Menu();\n"
-" menu.append(\"About\", 'app.about');\n"
-" menu.append(\"Quit\",'app.quit');\n"
-" this.application.set_app_menu(menu);\n"
-"\n"
-" // Create the \"About\" menu option and have it call the _showAbout() function\n"
-" let aboutAction = new Gio.SimpleAction({ name: 'about' });\n"
-" aboutAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showAbout();\n"
-" }));\n"
-" this.application.add_action(aboutAction);\n"
-"\n"
-" // Create the \"Quit\" menu option and have it close the window\n"
-" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-" },\n"
-"\n"
-" _showAbout: function() {\n"
-"\n"
-" // String arrays of the names of the people involved in the project\n"
-" var authors = [\"GNOME Documentation Team\"];\n"
-" var documenters = [\"GNOME Documentation Team\"];\n"
-"\n"
-" // Create the About dialog\n"
-" let aboutDialog = new Gtk.AboutDialog({ title: \"AboutDialog Example\",\n"
-" program_name: \"GtkApplication Example\",\n"
-" copyright: \"Copyright \\xa9 2012 GNOME Documentation
Team\",\n"
-" authors: authors,\n"
-" documenters: documenters,\n"
-" website: \"http://developer.gnome.org\",\n"
-" website_label: \"GNOME Developer Website\" });\n"
-"\n"
-" // Attach the About dialog to the window\n"
-" aboutDialog.modal = true;\n"
-" aboutDialog.transient_for = this._window;\n"
-"\n"
-" // Show the About dialog\n"
-" aboutDialog.show();\n"
-"\n"
-" // Connect the Close button to the destroy signal for the dialog\n"
-" aboutDialog.connect('response', function() {\n"
-" aboutDialog.destroy();\n"
-" });\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new AboutDialogExample();\n"
-"app.application.run(ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.js.page:29 C/gmenu.c.page:32 C/gmenu.js.page:30
-#: C/gmenu.py.page:80 C/messagedialog.js.page:194 C/switch.js.page:266
-msgid ""
-"<link href=\"http://developer.gnome.org/gio/unstable/GMenu.html\">GMenu</"
-"link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gio/unstable/GMenu.html\">GMenu</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.js.page:30 C/filechooserdialog.py.page:80 C/gmenu.c.page:33
-#: C/gmenu.js.page:31 C/gmenu.py.page:81 C/menubar.c.page:39
-#: C/messagedialog.js.page:195 C/messagedialog.py.page:62 C/switch.js.page:267
-msgid ""
-"<link href=\"http://developer.gnome.org/gio/stable/GSimpleAction.html"
-"\">GSimpleAction</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gio/stable/GSimpleAction.html"
-"\">GSimpleAction</link>"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.js.page:31
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.AboutDialog."
-"html\">Gtk.AboutDialog</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.AboutDialog."
-"html\">Gtk.AboutDialog</link>"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.js.page:32 C/button.js.page:31 C/checkbutton.js.page:138
-#: C/comboboxtext.js.page:181 C/combobox.js.page:238 C/dialog.js.page:30
-#: C/entry.js.page:30 C/grid.js.page:34 C/GtkApplicationWindow.js.page:31
-#: C/image.js.page:32 C/label.js.page:30 C/linkbutton.js.page:30
-#: C/messagedialog.js.page:196 C/progressbar.js.page:40
-#: C/radiobutton.js.page:276 C/scale.js.page:211 C/spinbutton.js.page:202
-#: C/spinner.js.page:31 C/statusbar.js.page:223 C/switch.js.page:268
-#: C/textview.js.page:250 C/togglebutton.js.page:155
-#: C/treeview_simple_liststore.js.page:277 C/window.js.page:39
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Application."
-"html\">Gtk.Application</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Application."
-"html\">Gtk.Application</link>"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.js.page:33 C/button.js.page:32 C/checkbutton.js.page:139
-#: C/comboboxtext.js.page:182 C/combobox.js.page:239 C/dialog.js.page:31
-#: C/entry.js.page:31 C/grid.js.page:35 C/GtkApplicationWindow.js.page:32
-#: C/image.js.page:33 C/label.js.page:31 C/linkbutton.js.page:31
-#: C/messagedialog.js.page:197 C/progressbar.js.page:41
-#: C/radiobutton.js.page:277 C/scale.js.page:212 C/spinbutton.js.page:203
-#: C/spinner.js.page:32 C/statusbar.js.page:224 C/switch.js.page:269
-#: C/textview.js.page:251 C/togglebutton.js.page:156
-#: C/treeview_simple_liststore.js.page:278
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkApplicationWindow.html"
-"\">Gtk.ApplicationWindow</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkApplicationWindow.html"
-"\">Gtk.ApplicationWindow</link>"
-
-#. (itstool) path: info/title
-#: C/aboutdialog.py.page:8
-msgctxt "text"
-msgid "AboutDialog (Python)"
-msgstr "AboutDialog (Python)"
-
-#. (itstool) path: credit/name
-#: C/aboutdialog.py.page:14 C/beginner.js.page:16 C/beginner.py.page:19
-#: C/beginner.vala.page:19 C/button.py.page:15 C/buttonbox.py.page:15
-#: C/checkbutton.py.page:14 C/colorbutton.py.page:14 C/combobox.py.page:15
-#: C/combobox_multicolumn.py.page:14 C/dialog.py.page:15 C/entry.py.page:15
-#: C/filechooserdialog.py.page:17 C/fontchooserwidget.py.page:15
-#: C/gmenu.py.page:21 C/grid.py.page:21 C/GtkApplicationWindow.py.page:20
-#: C/guitar-tuner.c.page:23 C/guitar-tuner.cpp.page:21
-#: C/guitar-tuner.py.page:23 C/guitar-tuner.py.page:28
-#: C/guitar-tuner.vala.page:26 C/image.py.page:15 C/image-viewer.c.page:23
-#: C/image-viewer.cpp.page:21 C/image-viewer.js.page:23
-#: C/image-viewer.py.page:23 C/image-viewer.vala.page:31 C/js.page:16
-#: C/label.py.page:17 C/linkbutton.py.page:14 C/magic-mirror.vala.page:23
-#: C/menubar.py.page:20 C/menubutton.py.page:20 C/message-board.c.page:20
-#: C/messagedialog.py.page:14 C/model-view-controller.py.page:21
-#: C/paned.py.page:14 C/photo-wall.c.page:22 C/progressbar.py.page:14
-#: C/properties.py.page:21 C/py.page:15 C/radiobutton.py.page:15
-#: C/record-collection.js.page:23 C/scale.py.page:15
-#: C/scrolledwindow.py.page:14 C/separator.py.page:15
-#: C/signals-callbacks.py.page:21 C/spinbutton.py.page:15 C/spinner.py.page:14
-#: C/statusbar.py.page:15 C/strings.py.page:21 C/switch.py.page:14
-#: C/textview.py.page:22 C/togglebutton.py.page:14 C/toolbar.py.page:15
-#: C/toolbar_builder.py.page:22 C/tooltip.py.page:15
-#: C/treeview_advanced_liststore.py.page:14
-#: C/treeview_cellrenderertoggle.py.page:14
-#: C/treeview_simple_liststore.py.page:15 C/treeview_treestore.py.page:15
-#: C/tutorial.py.page:20 C/vala.page:15 C/weatherApp.js.page:17
-#: C/widget_drawing.py.page:13 C/window.py.page:20
-msgid "Marta Maria Casetti"
-msgstr "Marta Maria Casetti"
-
-#. (itstool) path: info/desc
-#: C/aboutdialog.py.page:19
-msgid "A window that displays information about an application"
-msgstr "Una ventana que muestra información acerca de una aplicación"
-
-#. (itstool) path: page/p
-#: C/aboutdialog.py.page:24
-msgid ""
-"An AboutDialog example using Gtk.ApplicationWindow and Menu (the \"about\" "
-"is displayed if \"About\" in the menu is selected)."
-msgstr ""
-"Un ejemplo de AboutDialog usando Gtk.ApplicationWindow y Menu (el diálogo se "
-"muestra al pulsar el elemento de menú «Acerca de»)."
-
-#. (itstool) path: section/title
-#: C/aboutdialog.py.page:29 C/button.py.page:31 C/buttonbox.js.page:30
-#: C/buttonbox.py.page:31 C/checkbutton.py.page:29 C/colorbutton.js.page:28
-#: C/colorbutton.py.page:29 C/combobox.py.page:30
-#: C/combobox_multicolumn.py.page:29 C/combobox_multicolumn.vala.page:29
-#: C/dialog.py.page:30 C/entry.py.page:35 C/filechooserdialog.py.page:53
-#: C/fontchooserwidget.js.page:29 C/fontchooserwidget.py.page:31
-#: C/fontchooserwidget.vala.page:29 C/gmenu.py.page:36 C/grid.py.page:37
-#: C/GtkApplicationWindow.py.page:35 C/image.py.page:41 C/label.py.page:37
-#: C/linkbutton.py.page:30 C/menubutton.c.page:30 C/menubutton.py.page:37
-#: C/messagedialog.py.page:29 C/paned.c.page:28 C/paned.js.page:28
-#: C/paned.py.page:29 C/paned.vala.page:28 C/progressbar.py.page:39
-#: C/radiobutton.py.page:30 C/scale.py.page:30 C/scrolledwindow.js.page:28
-#: C/scrolledwindow.py.page:29 C/separator.c.page:30 C/separator.py.page:31
-#: C/separator.vala.page:32 C/spinbutton.py.page:30 C/spinner.py.page:29
-#: C/statusbar.py.page:30 C/switch.py.page:31 C/textview.py.page:44
-#: C/togglebutton.py.page:29 C/toolbar.py.page:31
-#: C/toolbar_builder.py.page:164 C/tooltip.c.page:30 C/tooltip.js.page:29
-#: C/tooltip.py.page:31 C/tooltip.vala.page:30
-#: C/treeview_advanced_liststore.py.page:29
-#: C/treeview_cellrenderertoggle.py.page:29
-#: C/treeview_simple_liststore.py.page:30 C/treeview_treestore.py.page:30
-#: C/widget_drawing.py.page:28 C/window.py.page:45
-msgid "Code used to generate this example"
-msgstr "Código usado para generar este ejemplo"
-
-#. (itstool) path: section/code
-#: C/aboutdialog.py.page:31
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" # constructor for a window (the parent window)\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"AboutDialog Example\", application=app)\n"
-" self.set_default_size(200, 200)\n"
-"\n"
-" # create the about_action (a Gio.SimpleAction)\n"
-" about_action = Gio.SimpleAction.new(\"about\", None)\n"
-" # connect the signal from the action to the function about_cb()\n"
-" about_action.connect(\"activate\", self.about_cb)\n"
-" # add the action to the application\n"
-" app.add_action(about_action)\n"
-"\n"
-" # callback function for the about_action's \"activate\" signal\n"
-" def about_cb(self, action, parameter):\n"
-" # a Gtk.AboutDialog\n"
-" aboutdialog = Gtk.AboutDialog()\n"
-"\n"
-" # lists of authors and documenters (will be used later)\n"
-" authors = [\"GNOME Documentation Team\"]\n"
-" documenters = [\"GNOME Documentation Team\"]\n"
-"\n"
-" # we fill in the aboutdialog\n"
-" aboutdialog.set_program_name(\"AboutDialog Example\")\n"
-" aboutdialog.set_copyright(\n"
-" \"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\")\n"
-" aboutdialog.set_authors(authors)\n"
-" aboutdialog.set_documenters(documenters)\n"
-" aboutdialog.set_website(\"http://developer.gnome.org\")\n"
-" aboutdialog.set_website_label(\"GNOME Developer Website\")\n"
-"\n"
-" # we do not want to show the title, which by default would be \"About AboutDialog Example\"\n"
-" # we have to reset the title of the messagedialog window after setting\n"
-" # the program name\n"
-" aboutdialog.set_title(\"\")\n"
-"\n"
-" # to close the aboutdialog when \"close\" is clicked we connect the\n"
-" # \"response\" signal to on_close\n"
-" aboutdialog.connect(\"response\", self.on_close)\n"
-" # show the aboutdialog\n"
-" aboutdialog.show()\n"
-"\n"
-" # destroy the aboutdialog\n"
-" def on_close(self, action, parameter):\n"
-" action.destroy()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def quit_cb(self, action, parameter):\n"
-" self.quit()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # create a menu (a Gio.Menu)\n"
-" menu = Gio.Menu()\n"
-" # append a menu item with label \"About\" and action \"app.about\"\n"
-" menu.append(\"About\", \"app.about\")\n"
-" # append a menu item with label \"Quit\" and action \"app.quit\"\n"
-" menu.append(\"Quit\", \"app.quit\")\n"
-" # set menu as the menu for the application\n"
-" self.set_app_menu(menu)\n"
-"\n"
-" # a new simpleaction - for the application\n"
-" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-" quit_action.connect(\"activate\", self.quit_cb)\n"
-" self.add_action(quit_action)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" # constructor for a window (the parent window)\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"AboutDialog Example\", application=app)\n"
-" self.set_default_size(200, 200)\n"
-"\n"
-" # create the about_action (a Gio.SimpleAction)\n"
-" about_action = Gio.SimpleAction.new(\"about\", None)\n"
-" # connect the signal from the action to the function about_cb()\n"
-" about_action.connect(\"activate\", self.about_cb)\n"
-" # add the action to the application\n"
-" app.add_action(about_action)\n"
-"\n"
-" # callback function for the about_action's \"activate\" signal\n"
-" def about_cb(self, action, parameter):\n"
-" # a Gtk.AboutDialog\n"
-" aboutdialog = Gtk.AboutDialog()\n"
-"\n"
-" # lists of authors and documenters (will be used later)\n"
-" authors = [\"GNOME Documentation Team\"]\n"
-" documenters = [\"GNOME Documentation Team\"]\n"
-"\n"
-" # we fill in the aboutdialog\n"
-" aboutdialog.set_program_name(\"AboutDialog Example\")\n"
-" aboutdialog.set_copyright(\n"
-" \"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\")\n"
-" aboutdialog.set_authors(authors)\n"
-" aboutdialog.set_documenters(documenters)\n"
-" aboutdialog.set_website(\"http://developer.gnome.org\")\n"
-" aboutdialog.set_website_label(\"GNOME Developer Website\")\n"
-"\n"
-" # we do not want to show the title, which by default would be \"About AboutDialog Example\"\n"
-" # we have to reset the title of the messagedialog window after setting\n"
-" # the program name\n"
-" aboutdialog.set_title(\"\")\n"
-"\n"
-" # to close the aboutdialog when \"close\" is clicked we connect the\n"
-" # \"response\" signal to on_close\n"
-" aboutdialog.connect(\"response\", self.on_close)\n"
-" # show the aboutdialog\n"
-" aboutdialog.show()\n"
-"\n"
-" # destroy the aboutdialog\n"
-" def on_close(self, action, parameter):\n"
-" action.destroy()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def quit_cb(self, action, parameter):\n"
-" self.quit()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # create a menu (a Gio.Menu)\n"
-" menu = Gio.Menu()\n"
-" # append a menu item with label \"About\" and action \"app.about\"\n"
-" menu.append(\"About\", \"app.about\")\n"
-" # append a menu item with label \"Quit\" and action \"app.quit\"\n"
-" menu.append(\"Quit\", \"app.quit\")\n"
-" # set menu as the menu for the application\n"
-" self.set_app_menu(menu)\n"
-"\n"
-" # a new simpleaction - for the application\n"
-" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-" quit_action.connect(\"activate\", self.quit_cb)\n"
-" self.add_action(quit_action)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/aboutdialog.py.page:36
-msgid "Useful methods for an AboutDialog widget"
-msgstr "Métodos útiles para un widget «AboutDialog»"
-
-#. (itstool) path: section/p
-#: C/aboutdialog.py.page:37
-msgid ""
-"In line 15 the signal <code>\"activate\"</code> is connected to the callback "
-"function <code>about_cb()</code> using <code><var>widget</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 15 la señal <code>«activate»</code> se conecta a la función de "
-"retorno de llamada <code>about_cb()</code> usando <code><var>widget</var>."
-"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
-"explicación más detallada."
-
-#. (itstool) path: section/title
-#: C/aboutdialog.py.page:41 C/button.py.page:52 C/buttonbox.js.page:35
-#: C/buttonbox.py.page:46 C/checkbutton.py.page:42 C/colorbutton.js.page:33
-#: C/colorbutton.py.page:40 C/combobox.py.page:42
-#: C/combobox_multicolumn.py.page:41 C/combobox_multicolumn.vala.page:35
-#: C/dialog.py.page:46 C/entry.py.page:61 C/filechooserdialog.py.page:70
-#: C/fontchooserwidget.js.page:34 C/fontchooserwidget.py.page:44
-#: C/fontchooserwidget.vala.page:34 C/gmenu.py.page:77 C/grid.py.page:54
-#: C/GtkApplicationWindow.py.page:50 C/image.py.page:126 C/label.py.page:102
-#: C/linkbutton.py.page:44 C/menubar.py.page:183 C/menubutton.c.page:35
-#: C/menubutton.py.page:53 C/messagedialog.py.page:54 C/paned.c.page:33
-#: C/paned.js.page:33 C/paned.py.page:39 C/paned.vala.page:33
-#: C/progressbar.py.page:54 C/radiobutton.py.page:46 C/scale.py.page:54
-#: C/scrolledwindow.js.page:33 C/scrolledwindow.py.page:42
-#: C/spinbutton.py.page:46 C/spinner.py.page:39 C/statusbar.py.page:50
-#: C/switch.py.page:42 C/textview.py.page:93 C/togglebutton.py.page:41
-#: C/toolbar.py.page:52 C/toolbar_builder.py.page:191 C/tooltip.c.page:35
-#: C/tooltip.js.page:34 C/tooltip.py.page:56 C/tooltip.vala.page:35
-#: C/treeview_advanced_liststore.py.page:41
-#: C/treeview_cellrenderertoggle.py.page:41
-#: C/treeview_simple_liststore.py.page:42 C/treeview_treestore.py.page:41
-#: C/widget_drawing.py.page:35 C/window.py.page:60
-msgid "API References"
-msgstr "Referencias de la API"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.py.page:46
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkAboutDialog.html"
-"\">GtkAboutDialog</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkAboutDialog.html"
-"\">GtkAboutDialog</link>"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.py.page:47 C/checkbutton.py.page:46 C/grid.py.page:58
-#: C/GtkApplicationWindow.py.page:56 C/separator.c.page:38
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkApplicationWindow."
-"html\">GtkApplicationWindow</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkApplicationWindow."
-"html\">GtkApplicationWindow</link>"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.py.page:49 C/checkbutton.py.page:45 C/grid.py.page:57
-#: C/GtkApplicationWindow.py.page:55 C/messagedialog.py.page:65
-#: C/window.py.page:64
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkApplication.html"
-"\">GtkApplication</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkApplication.html"
-"\">GtkApplication</link>"
-
-#. (itstool) path: info/title
-#: C/aboutdialog.vala.page:8
-msgctxt "text"
-msgid "AboutDialog (Vala)"
-msgstr "AboutDialog (Vala)"
-
-#. (itstool) path: credit/name
-#: C/aboutdialog.vala.page:15 C/gmenu.vala.page:14
-msgid "Ryan Lortie"
-msgstr "Ryan Lortie"
-
-#. (itstool) path: credit/name
-#: C/aboutdialog.vala.page:21 C/beginner.py.page:15 C/beginner.vala.page:15
-#: C/button.vala.page:14 C/c.page:14 C/checkbutton.c.page:13
-#: C/checkbutton.vala.page:13 C/colorbutton.vala.page:15 C/combobox.c.page:18
-#: C/combobox.vala.page:13 C/combobox_multicolumn.vala.page:14 C/cpp.page:11
-#: C/dialog.vala.page:13 C/entry.vala.page:13 C/filechooserdialog.vala.page:16
-#: C/gmenu.c.page:13 C/gmenu.js.page:13 C/gmenu.py.page:15
-#: C/gmenu.vala.page:20 C/grid.py.page:15 C/grid.vala.page:15
-#: C/GtkApplicationWindow.c.page:13 C/GtkApplicationWindow.js.page:13
-#: C/GtkApplicationWindow.py.page:15 C/GtkApplicationWindow.vala.page:13
-#: C/guitar-tuner.vala.page:22 C/hello-world.c.page:20
-#: C/hello-world.js.page:20 C/hello-world.py.page:20
-#: C/hello-world.vala.page:20 C/image.vala.page:13 C/image-viewer.vala.page:27
-#: C/index.page:23 C/js.page:12 C/label.vala.page:13 C/linkbutton.vala.page:13
-#: C/menubar.py.page:15 C/menubar.vala.page:15 C/menubutton.c.page:13
-#: C/menubutton.py.page:14 C/menubutton.vala.page:13
-#: C/messagedialog.vala.page:13 C/paned.c.page:13 C/paned.vala.page:13
-#: C/progressbar.vala.page:13 C/py.page:11 C/radiobutton.vala.page:16
-#: C/response-type.page:9 C/scale.vala.page:15 C/scrolledwindow.vala.page:14
-#: C/separator.c.page:14 C/separator.vala.page:16 C/spinbutton.vala.page:15
-#: C/spinner.vala.page:13 C/statusbar.vala.page:16 C/switch.vala.page:17
-#: C/textview.vala.page:13 C/togglebutton.vala.page:16 C/toolbar.js.page:13
-#: C/toolbar.vala.page:14 C/toolbar_builder.py.page:16
-#: C/toolbar_builder.vala.page:15 C/tooltip.c.page:14 C/tooltip.vala.page:14
-#: C/treeview_simple_liststore.vala.page:15 C/tutorial.py.page:15
-#: C/vala.page:11 C/window.c.page:13 C/window.py.page:15 C/window.vala.page:13
-msgid "Tiffany Antopolski"
-msgstr "Tiffany Antopolski"
-
-#. (itstool) path: page/code
-#: C/aboutdialog.vala.page:34
-#, no-wrap
-msgid ""
-"/* A window in the application */\n"
-"public class Window : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* The constructor */\n"
-"\tpublic Window (Application app) {\n"
-"\t\tObject (application: app, title: \"AboutDialog Example\");\n"
-"\n"
-"\t\tvar about_action = new SimpleAction (\"about\", null);\n"
-"\n"
-"\t\tabout_action.activate.connect (this.about_cb);\n"
-"\t\tthis.add_action (about_action);\n"
-"\t\tthis.show_all ();\n"
-"\t}\n"
-"\n"
-"\t/* This is the callback function connected to the 'activate' signal\n"
-"\t * of the SimpleAction about_action.\n"
-"\t */\n"
-"\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n"
-"\t\tstring[] authors = { \"GNOME Documentation Team\", null };\n"
-"\t\tstring[] documenters = { \"GNOME Documentation Team\", null };\n"
-"\n"
-"\t\tGtk.show_about_dialog (this,\n"
-" \"program-name\", (\"GtkApplication Example\"),\n"
-" \"copyright\", (\"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\"),\n"
-" \"authors\", authors,\n"
-" \"documenters\", documenters,\n"
-" \"website\", \"http://developer.gnome.org\",\n"
-" \"website-label\", (\"GNOME Developer Website\"),\n"
-" null);\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the Application */\n"
-"public class Application : Gtk.Application {\n"
-"\n"
-"\t/* Here we override the activate signal of GLib.Application */\n"
-"\tprotected override void activate () {\n"
-"\t\tnew Window (this);\n"
-"\t}\n"
-"\n"
-"\t/* Here we override the startup signal of GLib.Application */\n"
-"\tprotected override void startup () {\n"
-"\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\tvar menu = new Menu ();\n"
-"\t\tmenu.append (\"About\", \"win.about\");\n"
-"\t\tmenu.append (\"Quit\", \"app.quit\");\n"
-"\t\tthis.app_menu = menu;\n"
-"\n"
-"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
-"\t\t//quit_action.activate.connect (this.quit);\n"
-"\t\tthis.add_action (quit_action);\n"
-"\t}\n"
-"\n"
-"\t/* The constructor */\n"
-"\tpublic Application () {\n"
-"\t\tObject (application_id: \"org.example.application\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main function creates Application and runs it */\n"
-"int main (string[] args) {\n"
-"\treturn new Application ().run (args);\n"
-"}\n"
-msgstr ""
-"/* A window in the application */\n"
-"public class Window : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* The constructor */\n"
-"\tpublic Window (Application app) {\n"
-"\t\tObject (application: app, title: \"AboutDialog Example\");\n"
-"\n"
-"\t\tvar about_action = new SimpleAction (\"about\", null);\n"
-"\n"
-"\t\tabout_action.activate.connect (this.about_cb);\n"
-"\t\tthis.add_action (about_action);\n"
-"\t\tthis.show_all ();\n"
-"\t}\n"
-"\n"
-"\t/* This is the callback function connected to the 'activate' signal\n"
-"\t * of the SimpleAction about_action.\n"
-"\t */\n"
-"\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n"
-"\t\tstring[] authors = { \"GNOME Documentation Team\", null };\n"
-"\t\tstring[] documenters = { \"GNOME Documentation Team\", null };\n"
-"\n"
-"\t\tGtk.show_about_dialog (this,\n"
-" \"program-name\", (\"GtkApplication Example\"),\n"
-" \"copyright\", (\"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\"),\n"
-" \"authors\", authors,\n"
-" \"documenters\", documenters,\n"
-" \"website\", \"http://developer.gnome.org\",\n"
-" \"website-label\", (\"GNOME Developer Website\"),\n"
-" null);\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the Application */\n"
-"public class Application : Gtk.Application {\n"
-"\n"
-"\t/* Here we override the activate signal of GLib.Application */\n"
-"\tprotected override void activate () {\n"
-"\t\tnew Window (this);\n"
-"\t}\n"
-"\n"
-"\t/* Here we override the startup signal of GLib.Application */\n"
-"\tprotected override void startup () {\n"
-"\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\tvar menu = new Menu ();\n"
-"\t\tmenu.append (\"About\", \"win.about\");\n"
-"\t\tmenu.append (\"Quit\", \"app.quit\");\n"
-"\t\tthis.app_menu = menu;\n"
-"\n"
-"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
-"\t\t//quit_action.activate.connect (this.quit);\n"
-"\t\tthis.add_action (quit_action);\n"
-"\t}\n"
-"\n"
-"\t/* The constructor */\n"
-"\tpublic Application () {\n"
-"\t\tObject (application_id: \"org.example.application\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main function creates Application and runs it */\n"
-"int main (string[] args) {\n"
-"\treturn new Application ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.vala.page:39 C/gmenu.vala.page:39 C/window.vala.page:38
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Application.html\">Gtk."
-"Application</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Application.html\">Gtk."
-"Application</link>"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.vala.page:40 C/gmenu.vala.page:40
-#: C/GtkApplicationWindow.vala.page:32 C/label.vala.page:32
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ApplicationWindow.html"
-"\">Gtk.ApplicationWindow</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ApplicationWindow.html"
-"\">Gtk.ApplicationWindow</link>"
-
-#. (itstool) path: item/p
-#: C/aboutdialog.vala.page:41
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.set_default_size.html"
-"\">set_default_size</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.set_default_size.html"
-"\">set_default_size</link>"
-
-#. (itstool) path: info/desc
-#: C/audio-player.vala.page:10
-msgid "Coming soon..."
-msgstr "Próximamente..."
-
-#. (itstool) path: credit/name
-#: C/audio-player.vala.page:14 C/guitar-tuner.c.page:15
-#: C/guitar-tuner.cpp.page:13 C/guitar-tuner.py.page:15
-#: C/guitar-tuner.vala.page:14 C/image-viewer.c.page:15
-#: C/image-viewer.cpp.page:13 C/image-viewer.vala.page:15
-#: C/record-collection.js.page:15
-msgid "GNOME Documentation Project"
-msgstr "Proyecto de documentación de GNOME"
-
-#. (itstool) path: page/title
-#: C/audio-player.vala.page:19
-msgid "Audio player"
-msgstr "Reproductor de sonido"
-
-#. (itstool) path: credit/name
-#: C/beginner.js.page:11 C/grid.js.page:13 C/guitar-tuner.js.page:12
-#: C/hello-world.c.page:15 C/hello-world.js.page:15 C/hello-world.py.page:15
-#: C/hello-world.vala.page:15 C/weatherApp.js.page:12
-#: C/weatherAppMain.js.page:11 C/weatherAutotools.js.page:11
-#: C/weatherGeonames.js.page:11
-msgid "Susanna Huhtanen"
-msgstr "Susanna Huhtanen"
-
-#. (itstool) path: credit/years
-#: C/beginner.js.page:18 C/beginner.py.page:21 C/beginner.vala.page:21
-#: C/buttonbox.js.page:16 C/colorbutton.js.page:15
-#: C/combobox_multicolumn.vala.page:16 C/fontchooserwidget.js.page:15
-#: C/fontchooserwidget.vala.page:15 C/guitar-tuner.c.page:25
-#: C/guitar-tuner.cpp.page:23 C/guitar-tuner.py.page:25
-#: C/guitar-tuner.py.page:30 C/guitar-tuner.vala.page:28
-#: C/image-viewer.c.page:25 C/image-viewer.cpp.page:23
-#: C/image-viewer.js.page:25 C/image-viewer.py.page:25
-#: C/image-viewer.vala.page:33 C/js.page:18 C/magic-mirror.vala.page:25
-#: C/menubutton.c.page:15 C/message-board.c.page:22 C/paned.js.page:15
-#: C/paned.vala.page:15 C/photo-wall.c.page:24 C/py.page:17
-#: C/record-collection.js.page:25 C/scrolledwindow.js.page:15
-#: C/separator.c.page:16 C/separator.vala.page:18 C/tooltip.c.page:16
-#: C/tooltip.js.page:16 C/tooltip.vala.page:16 C/tutorial.py.page:27
-#: C/vala.page:17 C/weatherApp.js.page:19 C/widget_drawing.py.page:15
-msgid "2013"
-msgstr "2013"
-
-#. (itstool) path: info/desc
-#: C/beginner.js.page:21
-msgid ""
-"A beginner's guide to writing GNOME applications in JavaScript, including "
-"code samples and practice exercises."
-msgstr ""
-"Una guía para principiantes sobre escribir aplicaciones de GNOME en "
-"JavaScript, incluyendo ejemplos de código y ejercicios de práctica."
-
-#. (itstool) path: page/title
-#: C/beginner.js.page:24 C/beginner.vala.page:25
-msgid "Tutorial for beginners and code samples"
-msgstr "Tutorial para principiantes y ejemplos de código"
-
-#. (itstool) path: synopsis/p
-#: C/beginner.js.page:26
-msgid ""
-"JavaScript is one of the most popular programming languages on the web. It's "
-"not just for the web, though. If you have even a basic understanding of "
-"JavaScript, you can write full-fledged applications for GNOME. <link href="
-"\"https://wiki.gnome.org/Apps/Documents\">GNOME Documents</link> is written "
-"in JavaScript, and so is <link href=\"https://live.gnome.org/GnomeShell/Tour"
-"\">GNOME Shell</link>, the most basic part of GNOME."
-msgstr ""
-"JavaScript es uno de los lenguajes de programación más populares en la web. "
-"Sin embargo, no es sólo para la web. Si tiene aunque sea un conocimiento "
-"básico de JavaScript, puede escribir aplicaciones completas para GNOME. Los "
-"<link href=\"https://wiki.gnome.org/Apps/Documents\">documentos de GNOME</"
-"link> está escritos en JavaScript, y también <link href=\"https://live.gnome."
-"org/GnomeShell/Tour\">GNOME Shell</link>, la parte más básica de GNOME."
-
-#. (itstool) path: note/p
-#: C/beginner.js.page:27
-msgid ""
-"GNOME Shell is what you see when you click on \"Activities\" in the top-left "
-"corner of your screen. It also controls the clock and the rest of the top "
-"panel. Besides showing how you to write GNOME applications, these tutorials "
-"will also show you how to use JavaScript to write GNOME Shell extensions, "
-"which give it new features or change the way it does things."
-msgstr ""
-"GNOME Shell es lo que ve cuando pulsa en «Actividades», en la esquina "
-"superior izquierda de su pantalla. También controla el reloj y el resto del "
-"panel superior. Además de mostrarle cómo escribir aplicaciones de GNOME, "
-"estos tutoriales le mostrarán cómo usar JavaScript para escribir extensiones "
-"de GNOME Shell, que le añaden características o cambian su comportamiento."
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:31
-msgid "Getting Started"
-msgstr "Inicio"
-
-#. (itstool) path: section/p
-#: C/beginner.js.page:32
-msgid ""
-"These tutorials are designed for people who already know how to write in "
-"JavaScript, and who have GNOME installed on their computers already, but who "
-"are new to developing GNOME applications. If you don't already know "
-"JavaScript, or if you need help getting GNOME set up, take a look at these "
-"resources first:"
-msgstr ""
-"Estos tutoriales están diseñados para gente que ya sabe cómo programar en "
-"JavaScript, y que ya tienen GNOME instalado en sus equipos, pero que están "
-"comenzando a desarrollar aplicaciones de GNOME. Si todavía no sabe "
-"JavaScript, o si necesita ayuda instalando GNOME, eche un vistazo a estos "
-"recursos primero:"
-
-#. (itstool) path: item/p
-#: C/beginner.js.page:34
-msgid ""
-"<link href=\"http://eloquentjavascript.net/contents.html\">Eloquent "
-"JavaScript</link> is a free, Creative Commons-licensed book, which explains "
-"the basics of JavaScript programming. Since you won't be writing JavaScript "
-"for the web, you only need to read up to chapter 10 or so."
-msgstr ""
-"<link href=\"http://eloquentjavascript.net/contents.html\">Eloquent "
-"JavaScript</link> es un libro libre, con licencia Creative Commons, que "
-"explica los conceptos básicos de programación en JavaScript. Dado que no va "
-"a escribir JavaScript para la web, sólo necesitará leer hasta el capítulo 10."
-
-#. (itstool) path: item/p
-#: C/beginner.js.page:35
-msgid ""
-"<link href=\"http://www.gnome.org/getting-gnome/\">Download GNOME</link> as "
-"part of a distribution, like Fedora, openSUSE, or Ubuntu. Each distribution "
-"has its own instructions for how to get GNOME."
-msgstr ""
-"<link href=\"http://www.gnome.org/getting-gnome/\">Descargue GNOME</link> "
-"como parte de una distribución, como Fedora, openSUSE, o Ubuntu. Cada "
-"distribución tiene sus propias instrucciones para obtener GNOME."
-
-#. (itstool) path: item/p
-#: C/beginner.js.page:36
-msgid ""
-"<link xref=\"set-up-gedit.js\">Set up gedit</link> for writing applications. "
-"GNOME's text editor, gedit, is sometimes just called \"text editor\"."
-msgstr ""
-"<link xref=\"set-up-gedit.js\">Configurar gedit</link> para escribir "
-"aplicaciones. El editor de texto de GNOME, gedit, a veces solo se llama "
-"«editor de texto»."
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:42 C/beginner.vala.page:42 C/c.page:113
-msgid "Tutorials"
-msgstr "Tutoriales"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:46 C/beginner.vala.page:46 C/py.page:32
-msgid "Code samples"
-msgstr "Ejemplos de código"
-
-#. (itstool) path: section/p
-#: C/beginner.js.page:47
-msgid ""
-"These samples show how to use widgets in your GNOME applications. Each one "
-"demonstrates a complete application which showcases the featured widget. At "
-"the end of each sample, you will find links to more detailed reference "
-"material."
-msgstr ""
-"Estos ejemplos muestran cómo usar widgets en sus aplicaciones de GNOME. Cada "
-"uno demuestra una aplicación completa que exhibe el widget presentado. Al "
-"final de cada ejemplo, encontrará enlaces a material de referencia más "
-"detallado."
-
-#. (itstool) path: section/p
-#: C/beginner.js.page:48 C/beginner.vala.page:47 C/c.page:91
-msgid "To run the code samples:"
-msgstr "Para ejecutar los ejemplos de código:"
-
-#. (itstool) path: item/p
-#: C/beginner.js.page:50
-msgid "Copy and paste the code into <var>filename</var>.js"
-msgstr "Copie y pegue el código en <var>nombre_archivo</var>.js"
-
-#. (itstool) path: item/p
-#: C/beginner.js.page:51
-msgid "In the terminal, type:"
-msgstr "Escriba en la terminal:"
-
-#. (itstool) path: item/screen
-#: C/beginner.js.page:52
-#, no-wrap
-msgid "gjs <var>filename</var>.js"
-msgstr "gjs <var>nombre_archivo</var>.js"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:55 C/beginner.py.page:32 C/beginner.vala.page:58
-#: C/c.page:118
-msgid "Windows"
-msgstr "Ventanas"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:57 C/beginner.py.page:34 C/beginner.vala.page:61
-#: C/c.page:121
-msgid "Display widgets"
-msgstr "Widgets de visualización"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:59 C/beginner.py.page:36 C/beginner.vala.page:63
-#: C/c.page:123
-msgid "Buttons and toggles"
-msgstr "Botones y casillas"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:61 C/beginner.py.page:38 C/beginner.vala.page:65
-#: C/c.page:125
-msgid "Numeric and text data entry"
-msgstr "Entrada de daos numérica y de texto"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:63 C/beginner.py.page:40 C/beginner.vala.page:67
-#: C/c.page:127
-msgid "Multiline text editor"
-msgstr "Editor de texto multilínea"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:65 C/beginner.py.page:42 C/beginner.vala.page:69
-#: C/c.page:129
-msgid "Menu, combo box and toolbar widgets"
-msgstr "Widgets de menú, caja combinada y barra de herramientas"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:67 C/beginner.py.page:44 C/beginner.vala.page:71
-#: C/c.page:131
-msgid "TreeView widget"
-msgstr "Widget TreeView"
-
-#. (itstool) path: section/title
-#. (itstool) path: steps/title
-#: C/beginner.js.page:69 C/beginner.py.page:46 C/beginner.vala.page:73
-#: C/c.page:133 C/tutorial.py.page:127
-msgid "Selectors"
-msgstr "Selectores"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:70 C/beginner.py.page:47 C/beginner.vala.page:74
-#: C/c.page:134
-msgid "File selectors"
-msgstr "Selectores de archivos"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:72 C/beginner.py.page:49 C/beginner.vala.page:76
-#: C/c.page:136
-msgid "Font selectors"
-msgstr "Selectores de tipografías"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:74 C/beginner.py.page:51 C/beginner.vala.page:78
-#: C/c.page:138
-msgid "Color Selectors"
-msgstr "Selectores de color"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:77 C/beginner.py.page:54 C/beginner.vala.page:81
-#: C/c.page:141
-msgid "Layout containers"
-msgstr "Contenedores de la distribución"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:79 C/beginner.py.page:56 C/beginner.vala.page:83
-#: C/c.page:143
-msgid "Ornaments"
-msgstr "Adornos"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:81 C/beginner.py.page:58 C/beginner.vala.page:85
-#: C/c.page:145
-msgid "Scrolling"
-msgstr "Desplazamiento"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:83 C/beginner.py.page:60 C/beginner.vala.page:87
-#: C/c.page:147
-msgid "Miscellaneous"
-msgstr "Varios"
-
-#. (itstool) path: section/title
-#: C/beginner.js.page:88 C/beginner.vala.page:92 C/menubar.vala.page:198
-msgid "Exercises"
-msgstr "Ejercicios"
-
-#. (itstool) path: info/title
-#: C/beginner.py.page:9
-msgctxt "text"
-msgid "GTK+ widgets sample code (Python)"
-msgstr "Código de ejemplo de widget de GTK+ (Python)"
-
-#. (itstool) path: info/desc
-#: C/beginner.py.page:13
-msgid ""
-"A guide to GUI programming using GTK+, including code samples and practice "
-"exercises."
-msgstr ""
-"Una guía de programación de IU en GTK+, incluyendo ejemplos de código y "
-"ejercicios de práctica."
-
-#. (itstool) path: page/title
-#: C/beginner.py.page:25
-msgid "GTK+ widgets sample code"
-msgstr "Código de ejemplo de widgets de GTK+"
-
-#. (itstool) path: synopsis/p
-#: C/beginner.py.page:27
-msgid ""
-"If you are a beginner and you would like a tutorial to guide you step by "
-"step in an exploration of what you can do with GTK+ 3, you should go to the "
-"<link xref=\"tutorial.py\"/> page. If you are looking for a specific widget, "
-"you can find it in the sections below."
-msgstr ""
-"Si es un principiante y quiere un tutorial que le guíe paso a paso en una "
-"explicación sobre qué puede hacer con GTK+ 3, debe ir a la página <link xref="
-"\"tutorial.py\"/>. Si está buscando un widget específico, puede encontrarlo "
-"en las secciones a continuación."
-
-#. (itstool) path: section/title
-#: C/beginner.py.page:64
-msgid "Theory pages"
-msgstr "Páginas de teoría"
-
-#. (itstool) path: info/title
-#: C/beginner.vala.page:9
-msgctxt "text"
-msgid "Tutorial for beginners (Vala)"
-msgstr "Tutorial para principiantes (Vala)"
-
-#. (itstool) path: info/desc
-#: C/beginner.vala.page:13
-msgid ""
-"A beginner's guide to GUI programming using GTK+, including code samples and "
-"practice exercises."
-msgstr ""
-"Una guía de programación de interfaces usuario en GTK+ para principiantes, "
-"incluyendo ejemplos de código y ejercicios prácticos."
-
-#. (itstool) path: synopsis/p
-#: C/beginner.vala.page:27
-msgid ""
-"Although these tutorials are designed for beginners, we can't cover all the "
-"basics. Before attempting to follow these tutorials, you are expected to be "
-"familiar with the following concepts:"
-msgstr ""
-"Aunque estos tutoriales están diseñados para principiantes, no se pueden "
-"cubrir todos los conceptos básicos. Antes de intentar seguir estos "
-"tutoriales, debe estar familiarizado con los siguientes conceptos:"
-
-#. (itstool) path: item/p
-#: C/beginner.vala.page:29
-msgid "Object oriented programming"
-msgstr "Programación orientada a objetos"
-
-#. (itstool) path: item/p
-#: C/beginner.vala.page:30
-msgid "The Vala programming language:"
-msgstr "El lenguaje de programación Vala:"
-
-#. (itstool) path: item/p
-#: C/beginner.vala.page:32
-msgid ""
-"<link href=\"https://live.gnome.org/Vala/Tutorial\">The Vala Tutorial</link>"
-msgstr ""
-"<link href=\"https://live.gnome.org/Vala/Tutorial\">El tutorial de Vala</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/beginner.vala.page:33
-msgid ""
-"<link href=\"https://live.gnome.org/Vala/Documentation#Sample_Code\">Sample "
-"Vala code</link>"
-msgstr ""
-"<link href=\"https://live.gnome.org/Vala/Documentation#Sample_Code\">Código "
-"de ejemplo de Vala</link>"
-
-#. (itstool) path: synopsis/p
-#: C/beginner.vala.page:38
-msgid ""
-"By following these tutorials you will learn the basics of GUI programming "
-"using GTK+."
-msgstr ""
-"Siguiendo estos tutoriales, aprenderá los conceptos básicos de la "
-"programación de IGU usando GTK+."
-
-#. (itstool) path: item/p
-#: C/beginner.vala.page:51
-msgid "Copy and paste the code into <var>filename</var>.vala"
-msgstr "Copie y pegue el código en <var>nombre_archivo</var>.vala"
-
-#. (itstool) path: item/p
-#: C/beginner.vala.page:52 C/c.page:98
-msgid "In the terminal type:"
-msgstr "Escriba en la terminal:"
-
-#. (itstool) path: item/screen
-#: C/beginner.vala.page:53
-#, no-wrap
-msgid "valac --pkg gtk+-3.0 <var>filename</var>.vala"
-msgstr "valac --pkg gtk+-3.0 <var>nombre_archivo</var>.vala"
-
-#. (itstool) path: item/screen
-#: C/beginner.vala.page:54 C/c.page:100
-#, no-wrap
-msgid "./<var>filename</var>"
-msgstr "./<var>nombre_archivo</var>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/button.c.page:25 C/button.js.page:22 C/button.py.page:25
-#: C/button.vala.page:24
-msgctxt "_"
-msgid "external ref='media/button.png' md5='8d69efbb3a0d3e043af6139b6492171c'"
-msgstr "external ref='media/button.png' md5='8d69efbb3a0d3e043af6139b6492171c'"
-
-#. (itstool) path: info/title
-#: C/button.c.page:8
-msgctxt "text"
-msgid "Button (C)"
-msgstr "Botón (C)"
-
-#. (itstool) path: info/desc
-#: C/button.c.page:20 C/button.py.page:20 C/button.vala.page:19
-msgid "A button widget which emits a signal when clicked"
-msgstr "Un widget de botón que emite una señal cuando se pulsa sobre él"
-
-#. (itstool) path: page/title
-#: C/button.c.page:23 C/button.js.page:21 C/button.py.page:23
-msgid "Button"
-msgstr "Button"
-
-#. (itstool) path: page/p
-#: C/button.c.page:26
-msgid ""
-"A button widget connected to a callback function that reverses its label "
-"when clicked."
-msgstr ""
-"Un widget de botón conectado a una función de retorno de llamada que "
-"invierte su etiqueta cuando se pulsa."
-
-#. (itstool) path: page/code
-#: C/button.c.page:28
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/*This is the callback function. It is a handler function which \n"
-"reacts to the signal. In this case, it will cause the button label's \n"
-"string to reverse.*/\n"
-"static void\n"
-"button_clicked (GtkButton *button,\n"
-" gpointer user_data)\n"
-"{\n"
-" const char *old_label;\n"
-" char *new_label;\n"
-"\n"
-" old_label = gtk_button_get_label (button);\n"
-" new_label = g_utf8_strreverse (old_label, -1);\n"
-"\n"
-" gtk_button_set_label (button, new_label);\n"
-" g_free (new_label);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *button;\n"
-"\n"
-" /*Create a window with a title and a default size*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"GNOME Button\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n"
-"\n"
-" /*Create a button with a label, and add it to the window*/\n"
-" button = gtk_button_new_with_label (\"Click Me\");\n"
-" gtk_container_add (GTK_CONTAINER (window), button);\n"
-"\n"
-" /*Connecting the clicked signal to the callback function*/\n"
-" g_signal_connect (GTK_BUTTON (button),\n"
-" \"clicked\", \n"
-" G_CALLBACK (button_clicked), \n"
-" G_OBJECT (window));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/*This is the callback function. It is a handler function which \n"
-"reacts to the signal. In this case, it will cause the button label's \n"
-"string to reverse.*/\n"
-"static void\n"
-"button_clicked (GtkButton *button,\n"
-" gpointer user_data)\n"
-"{\n"
-" const char *old_label;\n"
-" char *new_label;\n"
-"\n"
-" old_label = gtk_button_get_label (button);\n"
-" new_label = g_utf8_strreverse (old_label, -1);\n"
-"\n"
-" gtk_button_set_label (button, new_label);\n"
-" g_free (new_label);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *button;\n"
-"\n"
-" /*Create a window with a title and a default size*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"GNOME Button\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n"
-"\n"
-" /*Create a button with a label, and add it to the window*/\n"
-" button = gtk_button_new_with_label (\"Click Me\");\n"
-" gtk_container_add (GTK_CONTAINER (window), button);\n"
-"\n"
-" /*Connecting the clicked signal to the callback function*/\n"
-" g_signal_connect (GTK_BUTTON (button),\n"
-" \"clicked\", \n"
-" G_CALLBACK (button_clicked), \n"
-" G_OBJECT (window));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/button.c.page:36 C/buttonbox.py.page:51 C/grid.c.page:35
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkButton.html"
-"\">GtkButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkButton.html"
-"\">GtkButton</link>"
-
-#. (itstool) path: item/p
-#: C/button.c.page:37
-msgid ""
-"<link href=\"http://developer.gnome.org/glib/stable/glib-Unicode-"
-"Manipulation.html#g-utf8-strreverse\">Unicode Manipulation</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/glib/stable/glib-Unicode-"
-"Manipulation.html#g-utf8-strreverse\">Manejo de Unicode</link>"
-
-#. (itstool) path: info/title
-#: C/button.js.page:8
-msgctxt "text"
-msgid "Button (JavaScript)"
-msgstr "Botón (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/button.js.page:18
-msgid "A button which can be connected to other widgets"
-msgstr "Un botón que puede estar conectado a otros widgets."
-
-#. (itstool) path: page/p
-#: C/button.js.page:23
-msgid "A button widget that changes its label when you click it."
-msgstr "Un widget que cambia su etiqueta cuando se pulsa sobre él."
-
-#. (itstool) path: page/code
-#: C/button.js.page:25
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ButtonExample = new Lang.Class ({\n"
-" Name: 'Button Example',\n"
-"\n"
-" /* Create the application itself\n"
-" This boilerplate code is needed to build any GTK+ application. */\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jsbutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal initializes menus and builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"GNOME Button\",\n"
-" default_height: 50,\n"
-" default_width: 250 });\n"
-"\n"
-" // Create the button\n"
-" this.Button = new Gtk.Button ({label: \"Click Me\"});\n"
-" this._window.add (this.Button);\n"
-"\n"
-" // Bind it to a function that says what to do when the button is clicked\n"
-" this.Button.connect (\"clicked\", Lang.bind(this, this._clickHandler));\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" // Here's the function that says what happens when the button is clicked\n"
-" _clickHandler: function () {\n"
-" this.Button.set_label (\"Clicked!\");\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ButtonExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ButtonExample = new Lang.Class ({\n"
-" Name: 'Button Example',\n"
-"\n"
-" /* Create the application itself\n"
-" This boilerplate code is needed to build any GTK+ application. */\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jsbutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal initializes menus and builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"GNOME Button\",\n"
-" default_height: 50,\n"
-" default_width: 250 });\n"
-"\n"
-" // Create the button\n"
-" this.Button = new Gtk.Button ({label: \"Click Me\"});\n"
-" this._window.add (this.Button);\n"
-"\n"
-" // Bind it to a function that says what to do when the button is clicked\n"
-" this.Button.connect (\"clicked\", Lang.bind(this, this._clickHandler));\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" // Here's the function that says what happens when the button is clicked\n"
-" _clickHandler: function () {\n"
-" this.Button.set_label (\"Clicked!\");\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ButtonExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/button.js.page:33 C/grid.js.page:36
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html"
-"\">Gtk.Button</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html"
-"\">Gtk.Button</link>"
-
-#. (itstool) path: info/title
-#: C/button.py.page:8
-msgctxt "text"
-msgid "Button (Python)"
-msgstr "Botón (Python)"
-
-#. (itstool) path: page/p
-#: C/button.py.page:26 C/button.vala.page:25
-msgid "A button widget connected to a simple callback function."
-msgstr "Un widget de botón conectado a una función de retorno de llamada."
-
-#. (itstool) path: section/code
-#: C/button.py.page:32
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| " # a window\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"GNOME Button\", application=app)\n"
-#| " self.set_default_size(250, 50)\n"
-#| "\n"
-#| " # a button\n"
-#| " button = Gtk.Button()\n"
-#| " # with a label\n"
-#| " button.set_label(\"Click me\")\n"
-#| " # connect the signal \"clicked\" emitted by the button\n"
-#| " # to the callback function do_clicked\n"
-#| " button.connect(\"clicked\", self.do_clicked)\n"
-#| " # add the button to the window\n"
-#| " self.add(button)\n"
-#| "\n"
-#| " # callback function connected to the signal \"clicked\" of the button\n"
-#| " def do_clicked(self, button):\n"
-#| " print \"You clicked me!\"\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"GNOME Button\", application=app)\n"
-" self.set_default_size(250, 50)\n"
-"\n"
-" # a button\n"
-" button = Gtk.Button()\n"
-" # with a label\n"
-" button.set_label(\"Click me\")\n"
-" # connect the signal \"clicked\" emitted by the button\n"
-" # to the callback function do_clicked\n"
-" button.connect(\"clicked\", self.do_clicked)\n"
-" # add the button to the window\n"
-" self.add(button)\n"
-"\n"
-" # callback function connected to the signal \"clicked\" of the button\n"
-" def do_clicked(self, button):\n"
-" print(\"You clicked me!\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"GNOME Button\", application=app)\n"
-" self.set_default_size(250, 50)\n"
-"\n"
-" # a button\n"
-" button = Gtk.Button()\n"
-" # with a label\n"
-" button.set_label(\"Click me\")\n"
-" # connect the signal \"clicked\" emitted by the button\n"
-" # to the callback function do_clicked\n"
-" button.connect(\"clicked\", self.do_clicked)\n"
-" # add the button to the window\n"
-" self.add(button)\n"
-"\n"
-" # callback function connected to the signal \"clicked\" of the button\n"
-" def do_clicked(self, button):\n"
-" print(\"You clicked me!\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/button.py.page:36
-msgid "Useful methods for a Button widget"
-msgstr "Métodos útiles para un widget «Button»"
-
-#. (itstool) path: section/p
-#: C/button.py.page:37
-msgid ""
-"In line 16 the <code>\"clicked\"</code> signal from the button is connected "
-"to the callback function <code>do_clicked()</code> using <code><var>widget</"
-"var>.connect(<var>signal</var>, <var>callback function</var>)</code>. See "
-"<link xref=\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 16, la señal <code>«clicked»</code> del botón se conecta a la "
-"función de retorno de llamada <code>do_clicked()</code> usando "
-"<code><var>widget</var>.connect(<var>señal</var>, <var>función de retorno de "
-"llamada</var>)</code>. Consulte la <link xref=\"signals-callbacks.py\"/> "
-"para obtener una explicación más detallada."
-
-#. (itstool) path: item/p
-#: C/button.py.page:39
-msgid ""
-"<code>set_relief(Gtk.ReliefStyle.NONE)</code> sets to none the relief style "
-"of the edges of the Gtk.Button - as opposed to <code>Gtk.ReliefStyle.NORMAL</"
-"code>."
-msgstr ""
-"<code>set_relief(Gtk.ReliefStyle.NONE)</code> establece el estilo de relieve "
-"de los bordes del «Gtk.Button» a «ninguno», opuesto a <code>Gtk.ReliefStyle."
-"NORMAL</code>."
-
-#. (itstool) path: item/p
-#: C/button.py.page:40
-msgid ""
-"If the label of the button is a <link href=\"http://developer.gnome.org/gtk3/"
-"unstable/gtk3-Stock-Items.html\">stock icon</link>, <code>set_use_stock(True)"
-"</code> sets the label as the name of the corresponding stock icon."
-msgstr ""
-"Si la etiqueta de un botón es un <link href=\"http://developer.gnome.org/"
-"gtk3/unstable/gtk3-Stock-Items.html\">icono del almacén</link>, "
-"<code>set_use_stock(True)</code> establece la etiqueta al nombre del icono "
-"del almacén correspondiente."
-
-#. (itstool) path: item/p
-#: C/button.py.page:41
-msgid ""
-"To set an image (e.g. a stock image) for the button <code>button</code>:"
-msgstr ""
-"Para establecer una imagen (por ejemplo, una imagen del almacén) para el "
-"botón <code>button</code>:"
-
-#. (itstool) path: item/code
-#: C/button.py.page:42
-#, no-wrap
-msgid ""
-"\n"
-"image = Gtk.Image()\n"
-"image.set_from_stock(Gtk.STOCK_ABOUT, Gtk.IconSize.BUTTON)\n"
-"button.set_image(image)"
-msgstr ""
-"\n"
-"image = Gtk.Image()\n"
-"image.set_from_stock(Gtk.STOCK_ABOUT, Gtk.IconSize.BUTTON)\n"
-"button.set_image(image)"
-
-#. (itstool) path: item/p
-#: C/button.py.page:46
-msgid ""
-"You should not set a label for the button after this, otherwise it will show "
-"the label and not the image."
-msgstr ""
-"No debe establecer una etiqueta para el botón después de esto, ya que si lo "
-"hace mostrará la etiqueta y no la imagen."
-
-#. (itstool) path: item/p
-#: C/button.py.page:47
-msgid ""
-"If we use <code>set_focus_on_click(False)</code> the button will not grab "
-"focus when it is clicked by the mouse. This could be useful in places like "
-"toolbars, so that the keyboard focus is not removed from the main area of "
-"the application."
-msgstr ""
-"Si usa <code>set_focus_on_click(False)</code>, el botón no atrapará el foco "
-"cuando el ratón lo pulse. Esto podría ser útil en lugares como barras de "
-"herramientas, para que el foco del teclado no se quite del área principal de "
-"la aplicación."
-
-#. (itstool) path: item/p
-#: C/button.py.page:55
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkButton.html"
-"\">GtkButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkButton.html"
-"\">GtkButton</link>"
-
-#. (itstool) path: item/p
-#: C/button.py.page:56 C/dialog.py.page:52 C/label.py.page:106
-#: C/linkbutton.py.page:47 C/messagedialog.py.page:61 C/radiobutton.py.page:49
-#: C/separator.py.page:39 C/window.py.page:65
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkWindow.html"
-"\">GtkWindow</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkWindow.html"
-"\">GtkWindow</link>"
-
-#. (itstool) path: info/title
-#: C/button.vala.page:8
-msgctxt "text"
-msgid "Button (Vala)"
-msgstr "Botón (Vala)"
-
-#. (itstool) path: page/title
-#: C/button.vala.page:22
-msgid "Button widget"
-msgstr "Widget de botón"
-
-#. (itstool) path: page/code
-#: C/button.vala.page:27
-#, no-wrap
-msgid ""
-"\n"
-"/* A window in the application */\n"
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* The constructor of the window */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"GNOME Button\");\n"
-"\n"
-"\t\tvar button = new Gtk.Button.with_label (\"Click Me\");\n"
-"\t\tbutton.clicked.connect (this.reverse_label);\n"
-"\t\tbutton.show ();\n"
-"\n"
-"\t\tthis.window_position = Gtk.WindowPosition.CENTER;\n"
-"\t\tthis.set_default_size (250,50);\n"
-"\t\tthis.add (button);\n"
-"\t}\n"
-"\n"
-"\t/* The callback function connected to the\n"
-"\t * 'clicked' signal of the button.\n"
-"\t */\n"
-"\tvoid reverse_label (Gtk.Button button) {\n"
-"\t\tbutton.label = button.label.reverse ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\n"
-"\t/* This is the constructor */\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the activate signal of GLib.Application */\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"\n"
-"/* A window in the application */\n"
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* The constructor of the window */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"GNOME Button\");\n"
-"\n"
-"\t\tvar button = new Gtk.Button.with_label (\"Click Me\");\n"
-"\t\tbutton.clicked.connect (this.reverse_label);\n"
-"\t\tbutton.show ();\n"
-"\n"
-"\t\tthis.window_position = Gtk.WindowPosition.CENTER;\n"
-"\t\tthis.set_default_size (250,50);\n"
-"\t\tthis.add (button);\n"
-"\t}\n"
-"\n"
-"\t/* The callback function connected to the\n"
-"\t * 'clicked' signal of the button.\n"
-"\t */\n"
-"\tvoid reverse_label (Gtk.Button button) {\n"
-"\t\tbutton.label = button.label.reverse ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\n"
-"\t/* This is the constructor */\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the activate signal of GLib.Application */\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: page/p
-#: C/button.vala.page:29
-msgid ""
-"In this sample we used the following: <link href=\"http://www.valadoc.org/gtk"
-"+-3.0/Gtk.Button.html\">Gtk.Button</link>"
-msgstr ""
-"En este ejemplo se usa el siguiente widget: <link href=\"http://www.valadoc."
-"org/gtk+-3.0/Gtk.Button.html\">Gtk.Button</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/buttonbox.js.page:24 C/buttonbox.py.page:25
-msgctxt "_"
-msgid ""
-"external ref='media/buttonbox_calculator.png' "
-"md5='ce0de08b7ac66f517290e33e6d33d508'"
-msgstr ""
-"external ref='media/buttonbox_calculator.png' "
-"md5='ce0de08b7ac66f517290e33e6d33d508'"
-
-#. (itstool) path: info/title
-#: C/buttonbox.js.page:8
-msgctxt "text"
-msgid "ButtonBox (JavaScript)"
-msgstr "ButtonBox (JavaScript)"
-
-#. (itstool) path: credit/name
-#: C/buttonbox.js.page:14 C/colorbutton.js.page:13
-#: C/fontchooserwidget.js.page:13 C/paned.js.page:13
-#: C/scrolledwindow.js.page:13 C/tooltip.js.page:14
-msgid "Meg Ford"
-msgstr "Meg Ford"
-
-#. (itstool) path: info/desc
-#: C/buttonbox.js.page:19 C/buttonbox.py.page:20
-msgid "A container for arranging buttons"
-msgstr "Un contenedor para organizar botones"
-
-#. (itstool) path: page/title
-#. (itstool) path: steps/title
-#: C/buttonbox.js.page:22 C/buttonbox.py.page:23 C/tutorial.py.page:92
-msgid "ButtonBox"
-msgstr "Botonera"
-
-#. (itstool) path: page/p
-#: C/buttonbox.js.page:25 C/buttonbox.py.page:26
-msgid "A calculator - the buttons are enclosed in horizontal ButtonBoxes."
-msgstr "Una calculadora: los botones se agrupan en botoneras horizontales."
-
-#. (itstool) path: section/code
-#: C/buttonbox.js.page:31
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const GObject = imports.gi.GObject;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ButtonBoxExample = new Lang.Class ({\n"
-" Name: 'ButtonBox Example',\n"
-"\n"
-" // Create the application itthis\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application({ application_id: 'org.example.jsbuttonbox' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this.window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-" // Create the application window\n"
-" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Calculator\",\n"
-" default_width: 350,\n"
-" default_height: 200,\n"
-" border_width: 10 });\n"
-" this.entry = new Gtk.Entry();\n"
-" this.entry.set_text('0');\n"
-" // text aligned on the right\n"
-" this.entry.set_alignment(1);\n"
-" // the text in the entry cannot be modified by writing in it\n"
-" this.entry.set_can_focus(false);\n"
-"\n"
-" // a grid\n"
-" this.grid = new Gtk.Grid();\n"
-" this.grid.set_row_spacing(5);\n"
-" \n"
-" // to attach the entry\n"
-" this.grid.attach(this.entry, 0, 0, 1, 1);\n"
-" \n"
-" // the labels for the buttons\n"
-" this.buttons = [ 7, 8, 9, '/', 4, 5, 6, '*', 1, 2, 3, '-', 'C', 0, '=', '+' ];\n"
-" \n"
-" // each row is a ButtonBox, attached to the grid \n"
-" for (i = 0; i < 4; i++) {\n"
-" this.hbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL);\n"
-" this.hbox.set_spacing(5);\n"
-" this.grid.attach(this.hbox, 0, i + 1, 1, 1);\n"
-" // each ButtonBox has 4 buttons, connected to the callback function\n"
-" for (j= 0; j < 4; j++) {\n"
-" this.button = new Gtk.Button();\n"
-" this.buttonLabel = (this.buttons[i * 4 + j].toString());\n"
-" this.button.set_label(this.buttonLabel);\n"
-" this.button.set_can_focus(false);\n"
-" this.button.connect(\"clicked\", Lang.bind(this, this._buttonClicked, this.button));\n"
-" this.hbox.add(this.button);\n"
-" }\n"
-" }\n"
-" \n"
-" // some variables for the calculations\n"
-" this.firstNumber = 0;\n"
-" this.secondNumber = 0;\n"
-" this.counter = 0;\n"
-" this.operation = \"\";\n"
-"\n"
-" // add the grid to the window\n"
-" this.window.add(this.grid);\n"
-" this.window.show_all();\n"
-" },\n"
-"\n"
-" // callback function for all the buttons\n"
-" _buttonClicked: function(button) {\n"
-" this.button = button;\n"
-" // for the operations\n"
-" if (this.button.get_label() == '+') {\n"
-" this.counter += 1 \n"
-" if (this.counter > 1)\n"
-" this._doOperation();\n"
-" this.entry.set_text('0');\n"
-" this.operation = \"plus\";\n"
-" }\n"
-"\n"
-" else if (this.button.get_label() == '-') {\n"
-" this.counter += 1;\n"
-" if (this.counter > 1)\n"
-" this._doOperation();\n"
-" this.entry.set_text('0');\n"
-" this.operation = \"minus\";\n"
-" }\n"
-"\n"
-" else if (this.button.get_label() == '*') {\n"
-" this.counter += 1; \n"
-" if (this.counter > 1)\n"
-" this._doOperation();\n"
-" this.entry.set_text('0');\n"
-" this.operation = \"multiplication\";\n"
-" }\n"
-"\n"
-" else if (this.button.get_label() == '/') {\n"
-" this.counter += 1 \n"
-" if (this.counter > 1)\n"
-" this._doOperation();\n"
-" this.entry.set_text('0');\n"
-" this.operation = \"division\";\n"
-" }\n"
-"\n"
-" // for =\n"
-" else if (this.button.get_label() == '=') {\n"
-" this._doOperation();\n"
-" this.entry.set_text(this.firstNumber.toString());\n"
-" this.counter = 1;\n"
-" }\n"
-"\n"
-" // for Cancel\n"
-" else if (this.button.get_label() == 'C') {\n"
-" this.firstNumber = 0;\n"
-" this.secondNumber = 0;\n"
-" this.counter = 0;\n"
-" this.entry.set_text('0');\n"
-" this.operation = \"\";\n"
-" }\n"
-"\n"
-" // for a digit button\n"
-" else {\n"
-" this.newDigit = parseInt(this.button.get_label());\n"
-" if (this.entry.get_text() == \"error\")\n"
-" this.number = 0;\n"
-" else\n"
-" this.number = parseInt(this.entry.get_text());\n"
-" this.number = this.number * 10 + this.newDigit; \n"
-" if (this.counter == 0)\n"
-" this.firstNumber = this.number;\n"
-" else\n"
-" this.secondNumber = this.number;\n"
-" this.entry.set_text(this.number.toString());\n"
-" }\n"
-" },\n"
-"\n"
-" _doOperation: function() {\n"
-" if (this.operation == \"plus\") {\n"
-" this.firstNumber += this.secondNumber;\n"
-" } else if (this.operation == \"minus\") {\n"
-" this.firstNumber -= this.secondNumber;\n"
-" } else if (this.operation == \"multiplication\") {\n"
-" this.firstNumber *= this.secondNumber;\n"
-" } else if (this.operation == \"division\") {\n"
-" if (this.secondNumber != 0) {\n"
-" this.firstNumber /= this.secondNumber;\n"
-" } else {\n"
-" this.firstNumber = 0; \n"
-" this.secondNumber = 0;\n"
-" this.counter = 0; \n"
-" this.entry.set_text(\"error\");\n"
-" this.operation = \"\";\n"
-"\n"
-" return\n"
-" }\n"
-" } else {\n"
-" this.firstNumber = 0;\n"
-" this.secondNumber = 0;\n"
-" this.counter = 0;\n"
-" this.entry.set_text(\"error\");\n"
-" }\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ButtonBoxExample();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const GObject = imports.gi.GObject;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ButtonBoxExample = new Lang.Class ({\n"
-" Name: 'ButtonBox Example',\n"
-"\n"
-" // Create the application itthis\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application({ application_id: 'org.example.jsbuttonbox' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this.window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-" // Create the application window\n"
-" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Calculator\",\n"
-" default_width: 350,\n"
-" default_height: 200,\n"
-" border_width: 10 });\n"
-" this.entry = new Gtk.Entry();\n"
-" this.entry.set_text('0');\n"
-" // text aligned on the right\n"
-" this.entry.set_alignment(1);\n"
-" // the text in the entry cannot be modified by writing in it\n"
-" this.entry.set_can_focus(false);\n"
-"\n"
-" // a grid\n"
-" this.grid = new Gtk.Grid();\n"
-" this.grid.set_row_spacing(5);\n"
-" \n"
-" // to attach the entry\n"
-" this.grid.attach(this.entry, 0, 0, 1, 1);\n"
-" \n"
-" // the labels for the buttons\n"
-" this.buttons = [ 7, 8, 9, '/', 4, 5, 6, '*', 1, 2, 3, '-', 'C', 0, '=', '+' ];\n"
-" \n"
-" // each row is a ButtonBox, attached to the grid \n"
-" for (i = 0; i < 4; i++) {\n"
-" this.hbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL);\n"
-" this.hbox.set_spacing(5);\n"
-" this.grid.attach(this.hbox, 0, i + 1, 1, 1);\n"
-" // each ButtonBox has 4 buttons, connected to the callback function\n"
-" for (j= 0; j < 4; j++) {\n"
-" this.button = new Gtk.Button();\n"
-" this.buttonLabel = (this.buttons[i * 4 + j].toString());\n"
-" this.button.set_label(this.buttonLabel);\n"
-" this.button.set_can_focus(false);\n"
-" this.button.connect(\"clicked\", Lang.bind(this, this._buttonClicked, this.button));\n"
-" this.hbox.add(this.button);\n"
-" }\n"
-" }\n"
-" \n"
-" // some variables for the calculations\n"
-" this.firstNumber = 0;\n"
-" this.secondNumber = 0;\n"
-" this.counter = 0;\n"
-" this.operation = \"\";\n"
-"\n"
-" // add the grid to the window\n"
-" this.window.add(this.grid);\n"
-" this.window.show_all();\n"
-" },\n"
-"\n"
-" // callback function for all the buttons\n"
-" _buttonClicked: function(button) {\n"
-" this.button = button;\n"
-" // for the operations\n"
-" if (this.button.get_label() == '+') {\n"
-" this.counter += 1 \n"
-" if (this.counter > 1)\n"
-" this._doOperation();\n"
-" this.entry.set_text('0');\n"
-" this.operation = \"plus\";\n"
-" }\n"
-"\n"
-" else if (this.button.get_label() == '-') {\n"
-" this.counter += 1;\n"
-" if (this.counter > 1)\n"
-" this._doOperation();\n"
-" this.entry.set_text('0');\n"
-" this.operation = \"minus\";\n"
-" }\n"
-"\n"
-" else if (this.button.get_label() == '*') {\n"
-" this.counter += 1; \n"
-" if (this.counter > 1)\n"
-" this._doOperation();\n"
-" this.entry.set_text('0');\n"
-" this.operation = \"multiplication\";\n"
-" }\n"
-"\n"
-" else if (this.button.get_label() == '/') {\n"
-" this.counter += 1 \n"
-" if (this.counter > 1)\n"
-" this._doOperation();\n"
-" this.entry.set_text('0');\n"
-" this.operation = \"division\";\n"
-" }\n"
-"\n"
-" // for =\n"
-" else if (this.button.get_label() == '=') {\n"
-" this._doOperation();\n"
-" this.entry.set_text(this.firstNumber.toString());\n"
-" this.counter = 1;\n"
-" }\n"
-"\n"
-" // for Cancel\n"
-" else if (this.button.get_label() == 'C') {\n"
-" this.firstNumber = 0;\n"
-" this.secondNumber = 0;\n"
-" this.counter = 0;\n"
-" this.entry.set_text('0');\n"
-" this.operation = \"\";\n"
-" }\n"
-"\n"
-" // for a digit button\n"
-" else {\n"
-" this.newDigit = parseInt(this.button.get_label());\n"
-" if (this.entry.get_text() == \"error\")\n"
-" this.number = 0;\n"
-" else\n"
-" this.number = parseInt(this.entry.get_text());\n"
-" this.number = this.number * 10 + this.newDigit; \n"
-" if (this.counter == 0)\n"
-" this.firstNumber = this.number;\n"
-" else\n"
-" this.secondNumber = this.number;\n"
-" this.entry.set_text(this.number.toString());\n"
-" }\n"
-" },\n"
-"\n"
-" _doOperation: function() {\n"
-" if (this.operation == \"plus\") {\n"
-" this.firstNumber += this.secondNumber;\n"
-" } else if (this.operation == \"minus\") {\n"
-" this.firstNumber -= this.secondNumber;\n"
-" } else if (this.operation == \"multiplication\") {\n"
-" this.firstNumber *= this.secondNumber;\n"
-" } else if (this.operation == \"division\") {\n"
-" if (this.secondNumber != 0) {\n"
-" this.firstNumber /= this.secondNumber;\n"
-" } else {\n"
-" this.firstNumber = 0; \n"
-" this.secondNumber = 0;\n"
-" this.counter = 0; \n"
-" this.entry.set_text(\"error\");\n"
-" this.operation = \"\";\n"
-"\n"
-" return\n"
-" }\n"
-" } else {\n"
-" this.firstNumber = 0;\n"
-" this.secondNumber = 0;\n"
-" this.counter = 0;\n"
-" this.entry.set_text(\"error\");\n"
-" }\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ButtonBoxExample();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/buttonbox.js.page:38
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ButtonBox.html"
-"\">GtkButtonBox</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ButtonBox.html"
-"\">GtkButtonBox</link>"
-
-#. (itstool) path: item/p
-#: C/buttonbox.js.page:39
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Box.html"
-"\">GtkBox</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Box.html"
-"\">GtkBox</link>"
-
-#. (itstool) path: item/p
-#: C/buttonbox.js.page:40
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html"
-"\">GtkButton</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html"
-"\">GtkButton</link>"
-
-#. (itstool) path: item/p
-#: C/buttonbox.js.page:41
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Entry.html"
-"\">GtkEntry</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Entry.html"
-"\">GtkEntry</link>"
-
-#. (itstool) path: item/p
-#: C/buttonbox.js.page:42
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html"
-"\">GtkGrid</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html"
-"\">GtkGrid</link>"
-
-#. (itstool) path: info/title
-#: C/buttonbox.py.page:8
-msgctxt "text"
-msgid "ButtonBox (Python)"
-msgstr "Botonera (Python)"
-
-#. (itstool) path: section/code
-#: C/buttonbox.py.page:32
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Calculator\", application=app)\n"
-" self.set_default_size(350, 200)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # an entry\n"
-" self.entry = Gtk.Entry()\n"
-" # with an initial text\n"
-" self.entry.set_text('0')\n"
-" # text aligned on the right\n"
-" self.entry.set_alignment(1)\n"
-" # the text in the entry cannot be modified writing in it\n"
-" self.entry.set_can_focus(False)\n"
-"\n"
-" # a grid\n"
-" grid = Gtk.Grid()\n"
-" grid.set_row_spacing(5)\n"
-"\n"
-" # to attach the entry\n"
-" grid.attach(self.entry, 0, 0, 1, 1)\n"
-"\n"
-" # the labels for the buttons\n"
-" buttons = [7, 8, 9, '/',\n"
-" 4, 5, 6, '*',\n"
-" 1, 2, 3, '-',\n"
-" 'C', 0, '=', '+']\n"
-"\n"
-" # each row is a ButtonBox, attached to the grid\n"
-" for i in range(4):\n"
-" hbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL)\n"
-" hbox.set_spacing(5)\n"
-" grid.attach(hbox, 0, i + 1, 1, 1)\n"
-" # each ButtonBox has 4 buttons, connected to the callback function\n"
-" for j in range(4):\n"
-" button = Gtk.Button(label=buttons[i * 4 + j])\n"
-" button.set_can_focus(False)\n"
-" button.connect(\"clicked\", self.button_clicked)\n"
-" hbox.add(button)\n"
-"\n"
-" # some variables for the calculations\n"
-" self.first_number = 0\n"
-" self.second_number = 0\n"
-" self.counter = 0\n"
-" self.operation = \"\"\n"
-"\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" # callback function for all the buttons\n"
-" def button_clicked(self, button):\n"
-" # for the operations\n"
-" if button.get_label() == '+':\n"
-" self.counter += 1\n"
-" if self.counter > 1:\n"
-" self.do_operation()\n"
-" self.entry.set_text('0')\n"
-" self.operation = \"plus\"\n"
-" elif button.get_label() == '-':\n"
-" self.counter += 1\n"
-" if self.counter > 1:\n"
-" self.do_operation()\n"
-" self.entry.set_text('0')\n"
-" self.operation = \"minus\"\n"
-" elif button.get_label() == '*':\n"
-" self.counter += 1\n"
-" if self.counter > 1:\n"
-" self.do_operation()\n"
-" self.entry.set_text('0')\n"
-" self.operation = \"multiplication\"\n"
-" elif button.get_label() == '/':\n"
-" self.counter += 1\n"
-" if self.counter > 1:\n"
-" self.do_operation()\n"
-" self.entry.set_text('0')\n"
-" self.operation = \"division\"\n"
-" # for =\n"
-" elif button.get_label() == '=':\n"
-" self.do_operation()\n"
-" self.entry.set_text(str(self.first_number))\n"
-" self.counter = 1\n"
-" # for Cancel\n"
-" elif button.get_label() == 'C':\n"
-" self.first_number = 0\n"
-" self.second_number = 0\n"
-" self.counter = 0\n"
-" self.entry.set_text('')\n"
-" self.operation = \"\"\n"
-" # for a digit button\n"
-" else:\n"
-" new_digit = int(button.get_label())\n"
-" if self.entry.get_text() == 'error':\n"
-" number = 0\n"
-" else:\n"
-" number = int(self.entry.get_text())\n"
-" number = number * 10 + new_digit\n"
-" if self.counter == 0:\n"
-" self.first_number = number\n"
-" else:\n"
-" self.second_number = number\n"
-" self.entry.set_text(str(number))\n"
-"\n"
-" def do_operation(self):\n"
-" if self.operation == \"plus\":\n"
-" self.first_number += self.second_number\n"
-" elif self.operation == \"minus\":\n"
-" self.first_number -= self.second_number\n"
-" elif self.operation == \"multiplication\":\n"
-" self.first_number *= self.second_number\n"
-" elif self.operation == \"division\":\n"
-" try:\n"
-" self.first_number /= self.second_number\n"
-" except ZeroDivisionError:\n"
-" self.first_number = 0\n"
-" self.second_number = 0\n"
-" self.counter = 0\n"
-" self.entry.set_text('error')\n"
-" self.operation = \"\"\n"
-" return\n"
-" else:\n"
-" self.first_number = 0\n"
-" self.second_number = 0\n"
-" self.counter = 0\n"
-" self.entry.set_text('error')\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Calculator\", application=app)\n"
-" self.set_default_size(350, 200)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # an entry\n"
-" self.entry = Gtk.Entry()\n"
-" # with an initial text\n"
-" self.entry.set_text('0')\n"
-" # text aligned on the right\n"
-" self.entry.set_alignment(1)\n"
-" # the text in the entry cannot be modified writing in it\n"
-" self.entry.set_can_focus(False)\n"
-"\n"
-" # a grid\n"
-" grid = Gtk.Grid()\n"
-" grid.set_row_spacing(5)\n"
-"\n"
-" # to attach the entry\n"
-" grid.attach(self.entry, 0, 0, 1, 1)\n"
-"\n"
-" # the labels for the buttons\n"
-" buttons = [7, 8, 9, '/',\n"
-" 4, 5, 6, '*',\n"
-" 1, 2, 3, '-',\n"
-" 'C', 0, '=', '+']\n"
-"\n"
-" # each row is a ButtonBox, attached to the grid\n"
-" for i in range(4):\n"
-" hbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL)\n"
-" hbox.set_spacing(5)\n"
-" grid.attach(hbox, 0, i + 1, 1, 1)\n"
-" # each ButtonBox has 4 buttons, connected to the callback function\n"
-" for j in range(4):\n"
-" button = Gtk.Button(label=buttons[i * 4 + j])\n"
-" button.set_can_focus(False)\n"
-" button.connect(\"clicked\", self.button_clicked)\n"
-" hbox.add(button)\n"
-"\n"
-" # some variables for the calculations\n"
-" self.first_number = 0\n"
-" self.second_number = 0\n"
-" self.counter = 0\n"
-" self.operation = \"\"\n"
-"\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" # callback function for all the buttons\n"
-" def button_clicked(self, button):\n"
-" # for the operations\n"
-" if button.get_label() == '+':\n"
-" self.counter += 1\n"
-" if self.counter > 1:\n"
-" self.do_operation()\n"
-" self.entry.set_text('0')\n"
-" self.operation = \"plus\"\n"
-" elif button.get_label() == '-':\n"
-" self.counter += 1\n"
-" if self.counter > 1:\n"
-" self.do_operation()\n"
-" self.entry.set_text('0')\n"
-" self.operation = \"minus\"\n"
-" elif button.get_label() == '*':\n"
-" self.counter += 1\n"
-" if self.counter > 1:\n"
-" self.do_operation()\n"
-" self.entry.set_text('0')\n"
-" self.operation = \"multiplication\"\n"
-" elif button.get_label() == '/':\n"
-" self.counter += 1\n"
-" if self.counter > 1:\n"
-" self.do_operation()\n"
-" self.entry.set_text('0')\n"
-" self.operation = \"division\"\n"
-" # for =\n"
-" elif button.get_label() == '=':\n"
-" self.do_operation()\n"
-" self.entry.set_text(str(self.first_number))\n"
-" self.counter = 1\n"
-" # for Cancel\n"
-" elif button.get_label() == 'C':\n"
-" self.first_number = 0\n"
-" self.second_number = 0\n"
-" self.counter = 0\n"
-" self.entry.set_text('')\n"
-" self.operation = \"\"\n"
-" # for a digit button\n"
-" else:\n"
-" new_digit = int(button.get_label())\n"
-" if self.entry.get_text() == 'error':\n"
-" number = 0\n"
-" else:\n"
-" number = int(self.entry.get_text())\n"
-" number = number * 10 + new_digit\n"
-" if self.counter == 0:\n"
-" self.first_number = number\n"
-" else:\n"
-" self.second_number = number\n"
-" self.entry.set_text(str(number))\n"
-"\n"
-" def do_operation(self):\n"
-" if self.operation == \"plus\":\n"
-" self.first_number += self.second_number\n"
-" elif self.operation == \"minus\":\n"
-" self.first_number -= self.second_number\n"
-" elif self.operation == \"multiplication\":\n"
-" self.first_number *= self.second_number\n"
-" elif self.operation == \"division\":\n"
-" try:\n"
-" self.first_number /= self.second_number\n"
-" except ZeroDivisionError:\n"
-" self.first_number = 0\n"
-" self.second_number = 0\n"
-" self.counter = 0\n"
-" self.entry.set_text('error')\n"
-" self.operation = \"\"\n"
-" return\n"
-" else:\n"
-" self.first_number = 0\n"
-" self.second_number = 0\n"
-" self.counter = 0\n"
-" self.entry.set_text('error')\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/buttonbox.py.page:36
-msgid "Useful methods for a ButtonBox widget"
-msgstr "Métodos útiles para un widget ButtonBox"
-
-#. (itstool) path: item/p
-#: C/buttonbox.py.page:38
-msgid ""
-"The layout of the ButtonBox are set with <code>set_layout(layout)</code>, "
-"where <code>layout</code> can be <code>Gtk.ButtonBoxStyle.SPREAD</code> "
-"(buttons are evenly spread across the box), <code>Gtk.ButtonBoxStyle.EDGE</"
-"code> (buttons are placed at the edges of the box), <code>Gtk.ButtonBoxStyle."
-"START</code> (buttons are grouped towards the start of the box), <code>Gtk."
-"ButtonBoxStyle.END</code> (buttons are grouped towards the end of the box), "
-"<code>Gtk.ButtonBoxStyle.CENTER</code> (buttons are centered in the box)."
-msgstr ""
-"La distribución de la botonera se configura con <code>set_layout"
-"(distribución)</code>, donde <code>distribución</code> puede ser <code>Gtk."
-"ButtonBoxStyle.SPREAD</code> (los botones se separan equidistantes a lo "
-"largo de la botonera), <code>Gtk.ButtonBoxStyle.EDGE</code> (los botones se "
-"ponen en los bordes), <code>Gtk.ButtonBoxStyle.START</code> (los botones se "
-"agrupan hacia el comienzo de la botonera), <code>Gtk.ButtonBoxStyle.END</"
-"code> (los botones se agrupan hacia el final), <code>Gtk.ButtonBoxStyle."
-"CENTER</code> (los botones se agrupan hacia el centro)."
-
-#. (itstool) path: item/p
-#: C/buttonbox.py.page:39
-msgid ""
-"<code>set_child_secondary(button, is_secondary)</code> sets whether "
-"<code>button</code> should appear in a secondary group of children. A "
-"typical use of a secondary child is the help button in a dialog. This group "
-"appears after the other children if the style is <code>START</code>, "
-"<code>SPREAD</code> or <code>EDGE</code>, and before the other children if "
-"the style is <code>END</code>. If the style is <code>START</code> or "
-"<code>END</code>, then the secondary children are aligned at the other end "
-"of the button box from the main children. For the other styles, they appear "
-"immediately next to the main children."
-msgstr ""
-"<code>set_child_secondary(botón, es_secundario)</code> configura si "
-"<code>botón</code> debe aparecer en un grupo secundario de hijos. Un uso "
-"típico de un hijo secundario es el botón de ayuda en un diálogo. Este grupo "
-"aparece después de los otros hijos si el estilo es <code>START</code>, "
-"<code>SPREAD</code> o <code>EDGE</code>, y antes de los otros hijos si el "
-"estilo es <code>END</code>. Si el estilo es <code>START</code> o <code>END</"
-"code>, entonces los hijos secundarios se alinean al otro lado de los hijos "
-"principales en la botonera . Para los otros estilos, aparecen inmediatamente "
-"a continuación de los hijos principales."
-
-#. (itstool) path: item/p
-#: C/buttonbox.py.page:40
-msgid ""
-"<code>set_child_non_homogeneous(button, is_non_homogeneous)</code> sets "
-"whether the child is exempted from homogeneous sizing. Default value is "
-"<code>False</code>."
-msgstr ""
-"<code>set_child_non_homogeneous(botón, es_heterogéneo)</code> establece si "
-"el hijo está exento de dimensionado homogéneo. El valor predeterminado es "
-"<code>False</code>."
-
-#. (itstool) path: item/p
-#: C/buttonbox.py.page:41
-msgid ""
-"<code>set_spacing(spacing)</code> sets the spacing, in pixels, between the "
-"buttons of the box."
-msgstr ""
-"<code>set_spacing(espaciado)</code> establece el espaciado, en píxeles, "
-"entre los botones de la botonera."
-
-#. (itstool) path: item/p
-#: C/buttonbox.py.page:49
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkButtonBox.html"
-"\">GtkButtonBox</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkButtonBox.html"
-"\">GtkButtonBox</link>"
-
-#. (itstool) path: item/p
-#: C/buttonbox.py.page:50
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkBox.html\">GtkBox</"
-"link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkBox.html\">GtkBox</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/buttonbox.py.page:52 C/entry.c.page:34
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkEntry.html"
-"\">GtkEntry</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkEntry.html"
-"\">GtkEntry</link>"
-
-#. (itstool) path: item/p
-#: C/buttonbox.py.page:53 C/grid.c.page:36 C/radiobutton.c.page:37
-#: C/spinbutton.c.page:40 C/statusbar.c.page:40 C/switch.c.page:37
-#: C/togglebutton.c.page:40
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkGrid.html\">GtkGrid</"
-"link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkGrid.html\">GtkGrid</"
-"link>"
-
-#. (itstool) path: info/title
-#: C/c.page:9
-msgctxt "link"
-msgid "C"
-msgstr "C"
-
-#. (itstool) path: credit/name
-#: C/c.page:18
-msgid "Bastian Ilso"
-msgstr "Bastian Ilso"
-
-#. (itstool) path: info/desc
-#: C/c.page:24
-msgid "Tutorials and code samples in C."
-msgstr "Tutoriales y ejemplos de código en C."
-
-#. (itstool) path: page/title
-#: C/c.page:27
-msgid "Platform Demos in C"
-msgstr "Demostraciones de la plataforma en C"
-
-#. (itstool) path: section/title
-#: C/c.page:31
-msgid "Prerequisites"
-msgstr "Prerrequisitos"
-
-#. (itstool) path: section/p
-#: C/c.page:33
-msgid ""
-"To compile these platform demos you will need a C compiler, for example "
-"<link href=\"https://gcc.gnu.org/\">gcc</link>. You will also need GTK+ 3 "
-"including headers and pkg-config files. Linux distributions usually abstract "
-"GTK+ 3 headers and pkg-config files into separate packages called <em>gtk3-"
-"devel</em>, <em>gtk3-dev</em> or similar."
-msgstr ""
-"Para estas demostraciones de la plataforma necesitará un compilador de C, "
-"por ejemplo <link href=\"https://gcc.gnu.org/\">gcc</link>. También "
-"necesitará las cabeceras de GTK+3 y los archivos pkg-config. Normalmente, "
-"las distribuciones de Linux proporcionan las cabeceras de GTK+ 3y los "
-"archivos pkg-config en paquetes separados llamados <em>gtk3-devel</em>, "
-"<em>gtk3-dev</em> o similar."
-
-#. (itstool) path: section/title
-#: C/c.page:44
-msgid "Guidelines for new developers"
-msgstr "Guías para nuevos desarrolladores"
-
-#. (itstool) path: section/p
-#: C/c.page:46
-msgid ""
-"Beyond the prerequisites mentioned above, several tools has been developed "
-"to assist you further in developing your GNOME application. GNOME also "
-"recommends a specific coding style and conventions which this section will "
-"elaborate further upon."
-msgstr ""
-"Más allá de los requisitos mencionados anteriormente, se han desarrollado "
-"varias herramientas para ayudarle a desarrollar su aplicación para GNOME. Se "
-"recomienda un estilo de codificación determinado y unos convenios que se "
-"detallarán más adelante en esta sección."
-
-#. (itstool) path: section/title
-#: C/c.page:52
-msgid "Recommended tools"
-msgstr "Herramientas recomendadas"
-
-#. (itstool) path: item/p
-#: C/c.page:56
-msgid ""
-"<link href=\"https://wiki.gnome.org/Apps/Devhelp\">DevHelp</link>: An API "
-"documentation browser for GNOME."
-msgstr ""
-"<link href=\"https://wiki.gnome.org/Apps/Devhelp\">DevHelp</link>: un "
-"explorador de la documentación de la API para GNOME."
-
-#. (itstool) path: item/p
-#: C/c.page:60
-msgid ""
-"A GNOME IDE (Integrated Development Environment). An IDE can assist you in "
-"writing and debugging C code, for example <link href=\"https://wiki.gnome."
-"org/Apps/Builder\">Builder</link> or <link href=\"https://wiki.gnome.org/"
-"Apps/Anjuta\">Anjuta</link>."
-msgstr ""
-"Un EID para GNOME (Entorno integrado de desarrollo). Un EID puede ayudarle a "
-"escribir y depurar código en C, por ejemplo <link href=\"https://wiki.gnome."
-"org/Apps/Builder\">Builder</link> o <link href=\"https://wiki.gnome.org/Apps/"
-"Anjuta\">Anjuta</link>."
-
-#. (itstool) path: item/p
-#: C/c.page:66
-msgid ""
-"<link href=\"http://glade.gnome.org/\">Glade</link>: A user interface "
-"designer for GTK+ Applications."
-msgstr ""
-"<link href=\"http://glade.gnome.org/\">Glade</link>: un diseñador de "
-"interfaces para aplicaciones en GTK+."
-
-#. (itstool) path: item/p
-#: C/c.page:70
-msgid ""
-"An IRC Client, for example <link href=\"https://wiki.gnome.org/Apps/Polari"
-"\">Polari</link> or <link href=\"https://wiki.gnome.org/Apps/Empathy"
-"\">Empathy</link>. If you run into problems while following the beginner "
-"tutorials, join #gnome on <em>irc.gnome.org</em>."
-msgstr ""
-"Un cliente de IRC, por ejemplo <link href=\"https://wiki.gnome.org/Apps/"
-"Polari\">Polari</link> o <link href=\"https://wiki.gnome.org/Apps/Empathy"
-"\">Empathy</link>. Si tiene problemas al seguir los tutoriales para "
-"principiantes, únase a #gnome en <em>irc.gnome.org</em>."
-
-#. (itstool) path: section/title
-#: C/c.page:80
-msgid "Coding Style"
-msgstr "Estilo del código"
-
-#. (itstool) path: section/p
-#: C/c.page:82
-msgid ""
-"Most applications in the GNOME project is written in the <link href=\"http://"
-"en.wikipedia.org/wiki/Indent_style#GNU_style\">GNU style</link> of "
-"indentation. The tutorials and code examples presented are following this "
-"convention and you are recommended to do so too."
-msgstr ""
-"La mayoría de las aplicaciones del proyecto GNOME están escritas siguiendo "
-"el estilo de sangrado de <link href=\"http://en.wikipedia.org/wiki/"
-"Indent_style#GNU_style\">GNU</link>. Los tutoriales y los códigos de ejemplo "
-"mostrados siguen este convenio y se recomienda que haga lo mismo."
-
-#. (itstool) path: section/title
-#: C/c.page:89
-msgid "Executing Code"
-msgstr "Ejecutar el código"
-
-#. (itstool) path: item/p
-#: C/c.page:95
-msgid "Copy and paste the code into <var>filename</var>.c"
-msgstr "Copie y pegue el código en <var>nombre_archivo</var>.c"
-
-#. (itstool) path: item/screen
-#: C/c.page:99
-#, no-wrap
-msgid "gcc <var>filename</var>.c `pkg-config --cflags --libs gtk+-3.0` -o <var>filename</var>"
-msgstr "gcc <var>nombre_archivo</var>.c `pkg-config --cflags --libs gtk+-3.0` -o <var>nombre_archivo</var>"
-
-#. (itstool) path: note/p
-#: C/c.page:105
-msgid ""
-"For more information about compiling GTK+ programs see <link href=\"http://"
-"developer.gnome.org/gtk3/3.4/gtk-compiling.html\">Compiling GTK+ "
-"Applications on UNIX</link>."
-msgstr ""
-"Para obtener más información sobre cómo compilar programas en GTK+, consulte "
-"<link href=\"http://developer.gnome.org/gtk3/3.4/gtk-compiling.html"
-"\">Compilar aplicaciones GTK+ en UNIX</link>."
-
-#. (itstool) path: section/title
-#: C/c.page:117
-msgid "Widget Code Examples"
-msgstr "Ejemplos de código de widget"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/checkbutton.c.page:22 C/checkbutton.js.page:22 C/checkbutton.py.page:23
-#: C/checkbutton.vala.page:22
-msgctxt "_"
-msgid ""
-"external ref='media/checkbutton.png' md5='7921a6812c87dd2b3781f4fad241e858'"
-msgstr ""
-"external ref='media/checkbutton.png' md5='7921a6812c87dd2b3781f4fad241e858'"
-
-#. (itstool) path: info/title
-#: C/checkbutton.c.page:8
-msgctxt "text"
-msgid "CheckButton (C)"
-msgstr "CheckButton (C)"
-
-#. (itstool) path: info/desc
-#: C/checkbutton.c.page:18
-msgid "Create widgets with a discrete ToggleButton"
-msgstr "Crear widgets con un botón ToggleButton discreto"
-
-#. (itstool) path: page/title
-#: C/checkbutton.c.page:21 C/checkbutton.js.page:21 C/checkbutton.py.page:22
-#: C/checkbutton.vala.page:21
-msgid "CheckButton"
-msgstr "CheckButton"
-
-#. (itstool) path: page/p
-#: C/checkbutton.c.page:23 C/checkbutton.py.page:24 C/checkbutton.vala.page:23
-msgid "This CheckButton toggles the title."
-msgstr "Este CheckButton cambia el título."
-
-#. (itstool) path: page/code
-#: C/checkbutton.c.page:25
-#, no-wrap
-msgid ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"/* signal handler for \"toggled\" signal of the CheckButton */\n"
-"static void\n"
-"toggled_cb (GtkToggleButton *toggle_button,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWindow *window = user_data;\n"
-"\n"
-" if (gtk_toggle_button_get_active (toggle_button))\n"
-" gtk_window_set_title (window, \"CheckButton Example\");\n"
-" else\n"
-" gtk_window_set_title (window, \"\");\n"
-"}\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *checkbutton;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"CheckButton Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n"
-"\n"
-" checkbutton = gtk_check_button_new_with_label (\"Show Title\");\n"
-" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), TRUE);\n"
-" g_signal_connect (GTK_TOGGLE_BUTTON (checkbutton), \"toggled\", G_CALLBACK (toggled_cb), window);\n"
-" gtk_container_add (GTK_CONTAINER (window), checkbutton);\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.example.checkbutton\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"/* signal handler for \"toggled\" signal of the CheckButton */\n"
-"static void\n"
-"toggled_cb (GtkToggleButton *toggle_button,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWindow *window = user_data;\n"
-"\n"
-" if (gtk_toggle_button_get_active (toggle_button))\n"
-" gtk_window_set_title (window, \"CheckButton Example\");\n"
-" else\n"
-" gtk_window_set_title (window, \"\");\n"
-"}\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *checkbutton;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"CheckButton Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n"
-"\n"
-" checkbutton = gtk_check_button_new_with_label (\"Show Title\");\n"
-" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), TRUE);\n"
-" g_signal_connect (GTK_TOGGLE_BUTTON (checkbutton), \"toggled\", G_CALLBACK (toggled_cb), window);\n"
-" gtk_container_add (GTK_CONTAINER (window), checkbutton);\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.example.checkbutton\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/checkbutton.c.page:30
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/3.2/GtkCheckButton.html"
-"\">GtkCheckButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/3.2/GtkCheckButton.html"
-"\">GtkCheckButton</link>"
-
-#. (itstool) path: info/title
-#: C/checkbutton.js.page:8
-msgctxt "text"
-msgid "CheckButton (JavaScript)"
-msgstr "CheckButton (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/checkbutton.js.page:18
-msgid "A box which can be checked or unchecked"
-msgstr "Una casilla que puede estar marcada o desmarcada"
-
-#. (itstool) path: page/p
-#: C/checkbutton.js.page:23
-msgid ""
-"This application has a CheckButton. Whether the box is checked dictates "
-"whether the window's title bar shows anything."
-msgstr ""
-"Esta aplicación tiene una casilla de verificación. Si la casilla está "
-"activada, la barra de título de la ventana muestra algo."
-
-#. (itstool) path: page/p
-#: C/checkbutton.js.page:24
-msgid ""
-"A CheckButton sends the \"toggled\" signal when it's checked or unchecked. "
-"While it's checked, the \"active\" property is true. While it's not, \"active"
-"\" tests as false."
-msgstr ""
-"Una casilla de verificación envía la señal «toggled» cuando se activa o "
-"desactiva. Cuando está activada, la propiedad «active» es «true». Cuando no lo "
-"está, «active» es «false»."
-
-#. (itstool) path: section/title
-#: C/checkbutton.js.page:28 C/comboboxtext.js.page:30 C/combobox.js.page:33
-#: C/guitar-tuner.js.page:55 C/hello-world.js.page:53 C/hello-world.py.page:46
-#: C/messagedialog.js.page:31 C/radiobutton.js.page:28 C/scale.js.page:28
-#: C/spinbutton.js.page:31 C/statusbar.js.page:28 C/switch.js.page:35
-#: C/textview.js.page:38 C/togglebutton.js.page:28
-#: C/treeview_simple_liststore.js.page:37 C/weatherAppMain.js.page:41
-msgid "Libraries to import"
-msgstr "Bibliotecas que importar"
-
-#. (itstool) path: section/code
-#: C/checkbutton.js.page:29 C/messagedialog.js.page:32
-#: C/radiobutton.js.page:29 C/scale.js.page:29 C/spinbutton.js.page:32
-#: C/statusbar.js.page:29 C/switch.js.page:36 C/togglebutton.js.page:29
-#, no-wrap
-msgid ""
-"\n"
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-msgstr ""
-"\n"
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-
-#. (itstool) path: section/p
-#: C/checkbutton.js.page:36 C/comboboxtext.js.page:37 C/combobox.js.page:41
-#: C/messagedialog.js.page:39 C/radiobutton.js.page:36 C/scale.js.page:36
-#: C/spinbutton.js.page:39 C/statusbar.js.page:36 C/switch.js.page:43
-#: C/textview.js.page:45 C/togglebutton.js.page:36
-#: C/treeview_simple_liststore.js.page:46
-msgid ""
-"These are the libraries we need to import for this application to run. "
-"Remember that the line which tells GNOME that we're using Gjs always needs "
-"to go at the start."
-msgstr ""
-"Estas son las bibliotecas que necesita importar para que esta aplicación se "
-"ejecute. Recuerde que la línea que le dice a GNOME que está usando Gjs "
-"siempre tiene que ir al principio."
-
-#. (itstool) path: section/title
-#: C/checkbutton.js.page:40 C/comboboxtext.js.page:41 C/combobox.js.page:45
-#: C/messagedialog.js.page:43 C/radiobutton.js.page:40 C/scale.js.page:40
-#: C/spinbutton.js.page:43 C/statusbar.js.page:40 C/switch.js.page:47
-#: C/textview.js.page:49 C/togglebutton.js.page:40
-#: C/treeview_simple_liststore.js.page:50
-msgid "Creating the application window"
-msgstr "Crear la ventana de la aplicación"
-
-#. (itstool) path: section/code
-#: C/checkbutton.js.page:41
-#, no-wrap
-msgid ""
-"\n"
-"const CheckButtonExample = new Lang.Class({\n"
-" Name: 'CheckButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jscheckbutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-"const CheckButtonExample = new Lang.Class({\n"
-" Name: 'CheckButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jscheckbutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/checkbutton.js.page:67
-msgid ""
-"All the code for this sample goes in the CheckButtonExample class. The above "
-"code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> for our widgets and window to "
-"go in."
-msgstr ""
-"Todo el código de este ejemplo va en la clase CheckButtonExample. El código "
-"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> para que vayan los widgets y "
-"la ventana."
-
-#. (itstool) path: section/code
-#: C/checkbutton.js.page:68
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 100,\n"
-" default_width: 300,\n"
-" border_width: 10,\n"
-" title: \"CheckButton Example\"});\n"
-msgstr ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 100,\n"
-" default_width: 300,\n"
-" border_width: 10,\n"
-" title: \"CheckButton Example\"});\n"
-
-#. (itstool) path: section/p
-#: C/checkbutton.js.page:81
-msgid ""
-"The _buildUI function is where we put all the code to create the "
-"application's user interface. The first step is creating a new <link href="
-"\"GtkApplicationWindow.js.page\">Gtk.ApplicationWindow</link> to put all our "
-"widgets into."
-msgstr ""
-"La función «_buildUI» es donde se pone todo el código para crear la interfaz "
-"de usuario de la aplicación. El primer paso es crea una <link href="
-"\"GtkApplicationWindow.js.page\">Gtk.ApplicationWindow</link> nueva para "
-"poner todos los widgets."
-
-#. (itstool) path: section/title
-#: C/checkbutton.js.page:85
-msgid "Creating the checkbutton"
-msgstr "Crear la casilla"
-
-#. (itstool) path: section/code
-#: C/checkbutton.js.page:86
-#, no-wrap
-msgid ""
-"\n"
-" // Create the check button\n"
-" this._button = new Gtk.CheckButton ({label: \"Show Title\"});\n"
-" this._window.add (this._button);\n"
-"\n"
-" // Have the check button be checked by default\n"
-" this._button.set_active (true);\n"
-"\n"
-" // Connect the button to a function that does something when it's toggled\n"
-" this._button.connect (\"toggled\", Lang.bind (this, this._toggledCB));\n"
-msgstr ""
-"\n"
-" // Create the check button\n"
-" this._button = new Gtk.CheckButton ({label: \"Show Title\"});\n"
-" this._window.add (this._button);\n"
-"\n"
-" // Have the check button be checked by default\n"
-" this._button.set_active (true);\n"
-"\n"
-" // Connect the button to a function that does something when it's toggled\n"
-" this._button.connect (\"toggled\", Lang.bind (this, this._toggledCB));\n"
-
-#. (itstool) path: section/p
-#: C/checkbutton.js.page:97
-msgid ""
-"This code creates the checkbutton itself. The label next to the checkbutton "
-"is created by giving the checkbutton the \"label\" property and assigning a "
-"string value to it. Since this checkbutton toggles whether the window title "
-"is on or off, and the window title will be on to start with, we want the box "
-"to be checked by default. Whenever the user checks or unchecks the box, we "
-"call the _toggledCB function."
-msgstr ""
-"Este código crea la casilla de verificación en sí. La etiqueta junto a esta "
-"se crea dándole a la casilla la propiedad «label» y asignándole una cadena. "
-"Dado que esta casilla permuta si se muestra o no el título de la ventana, y "
-"este se mostrará al inicio, se quiere que la casilla esté verificada de "
-"manera predeterminada. Cuando el usuario active o desactive la casilla, se "
-"llamará a la función «_toggledCB»."
-
-#. (itstool) path: section/code
-#: C/checkbutton.js.page:98 C/radiobutton.js.page:170
-#, no-wrap
-msgid ""
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-msgstr ""
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/checkbutton.js.page:103
-msgid ""
-"This code finishes up creating the UI, by telling the window to show itself "
-"and all child widgets (which is just the checkbutton in this case)."
-msgstr ""
-"Este código termina de crear la IU, diciéndole a la ventana que se muestre "
-"con todos sus widgets hijos (que, en este caso, solo es la casilla de "
-"verificación)."
-
-#. (itstool) path: section/title
-#: C/checkbutton.js.page:107
-msgid "Function which handles the checkbutton's toggling"
-msgstr "Función que maneja la conmutación de la casilla de verificación"
-
-#. (itstool) path: section/code
-#: C/checkbutton.js.page:108
-#, no-wrap
-msgid ""
-"\n"
-" _toggledCB: function () {\n"
-"\n"
-" // Make the window title appear or disappear when the checkbox is toggled\n"
-" if (this._button.get_active() == true)\n"
-" this._window.set_title (\"CheckButton Example\");\n"
-" else\n"
-" this._window.set_title (\"\");\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-msgstr ""
-"\n"
-" _toggledCB: function () {\n"
-"\n"
-" // Make the window title appear or disappear when the checkbox is toggled\n"
-" if (this._button.get_active() == true)\n"
-" this._window.set_title (\"CheckButton Example\");\n"
-" else\n"
-" this._window.set_title (\"\");\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-
-#. (itstool) path: section/p
-#: C/checkbutton.js.page:121
-msgid ""
-"If the checkbutton is toggled from on to off, we want the window title to "
-"disappear. If it's toggled from off to on, we want it to reappear. We can "
-"tell which way it was toggled by testing to see whether it's active "
-"(checked) or not afterwards. A simple if / else statement which calls the "
-"checkbutton's get_active() method will work for this."
-msgstr ""
-"Si la casilla se conmuta de «encendido» a «apagado», se quiere que el título "
-"de la ventana desaparezca. Si sucede al revés, que aparezca. Se puede saber "
-"en qué sentido se conmutó probando si está activada (verificada) o no. Una "
-"declaración «if / else» simple que llame al método «get_active()» de la "
-"casilla de verificación funcionará."
-
-#. (itstool) path: section/code
-#: C/checkbutton.js.page:122
-#, no-wrap
-msgid ""
-"\n"
-"// Run the application\n"
-"let app = new CheckButtonExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"// Run the application\n"
-"let app = new CheckButtonExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/p
-#: C/checkbutton.js.page:127
-msgid ""
-"Finally, we create a new instance of the finished CheckButtonExample class, "
-"and set the application running."
-msgstr ""
-"Finalmente, se crea una instancia nueva de la clase «CheckButtonExample» "
-"terminada, y se ejecuta la aplicación."
-
-#. (itstool) path: section/code
-#: C/checkbutton.js.page:132
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const CheckButtonExample = new Lang.Class({\n"
-" Name: 'CheckButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jscheckbutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 100,\n"
-" default_width: 300,\n"
-" border_width: 10,\n"
-" title: \"CheckButton Example\"});\n"
-"\n"
-" // Create the check button\n"
-" this._button = new Gtk.CheckButton ({label: \"Show Title\"});\n"
-" this._window.add (this._button);\n"
-"\n"
-" // Have the check button be checked by default\n"
-" this._button.set_active (true);\n"
-"\n"
-" // Connect the button to a function that does something when it's toggled\n"
-" this._button.connect (\"toggled\", Lang.bind (this, this._toggledCB));\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _toggledCB: function () {\n"
-"\n"
-" // Make the window title appear or disappear when the checkbox is toggled\n"
-" if (this._button.get_active() == true)\n"
-" this._window.set_title (\"CheckButton Example\");\n"
-" else\n"
-" this._window.set_title (\"\");\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new CheckButtonExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const CheckButtonExample = new Lang.Class({\n"
-" Name: 'CheckButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jscheckbutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 100,\n"
-" default_width: 300,\n"
-" border_width: 10,\n"
-" title: \"CheckButton Example\"});\n"
-"\n"
-" // Create the check button\n"
-" this._button = new Gtk.CheckButton ({label: \"Show Title\"});\n"
-" this._window.add (this._button);\n"
-"\n"
-" // Have the check button be checked by default\n"
-" this._button.set_active (true);\n"
-"\n"
-" // Connect the button to a function that does something when it's toggled\n"
-" this._button.connect (\"toggled\", Lang.bind (this, this._toggledCB));\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _toggledCB: function () {\n"
-"\n"
-" // Make the window title appear or disappear when the checkbox is toggled\n"
-" if (this._button.get_active() == true)\n"
-" this._window.set_title (\"CheckButton Example\");\n"
-" else\n"
-" this._window.set_title (\"\");\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new CheckButtonExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/title
-#: C/checkbutton.js.page:136 C/comboboxtext.js.page:176 C/combobox.js.page:233
-#: C/messagedialog.js.page:189 C/radiobutton.js.page:274 C/scale.js.page:208
-#: C/spinbutton.js.page:199 C/statusbar.js.page:221 C/switch.js.page:264
-#: C/textview.js.page:248 C/togglebutton.js.page:153
-#: C/treeview_simple_liststore.js.page:272
-msgid "In-depth documentation"
-msgstr "Documentación en profundidad"
-
-#. (itstool) path: item/p
-#: C/checkbutton.js.page:140
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.CheckButton."
-"html\">Gtk.CheckButton</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.CheckButton."
-"html\">Gtk.CheckButton</link>"
-
-#. (itstool) path: info/title
-#: C/checkbutton.py.page:8
-msgctxt "text"
-msgid "CheckButton (Python)"
-msgstr "CheckButton (Python)"
-
-#. (itstool) path: info/desc
-#: C/checkbutton.py.page:19
-msgid "A toggle button in a window"
-msgstr "Un botón conmutador en una ventana"
-
-#. (itstool) path: section/code
-#: C/checkbutton.py.page:31
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"CheckButton Example\", application=app)\n"
-" self.set_default_size(300, 100)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # a new checkbutton\n"
-" button = Gtk.CheckButton()\n"
-" # with a label\n"
-" button.set_label(\"Show Title\")\n"
-" # connect the signal \"toggled\" emitted by the checkbutton\n"
-" # with the callback function toggled_cb\n"
-" button.connect(\"toggled\", self.toggled_cb)\n"
-" # by default, the checkbutton is active\n"
-" button.set_active(True)\n"
-"\n"
-" # add the checkbutton to the window\n"
-" self.add(button)\n"
-"\n"
-" # callback function\n"
-" def toggled_cb(self, button):\n"
-" # if the togglebutton is active, set the title of the window\n"
-" # as \"Checkbutton Example\"\n"
-" if button.get_active():\n"
-" self.set_title(\"CheckButton Example\")\n"
-" # else, set it as \"\" (empty string)\n"
-" else:\n"
-" self.set_title(\"\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"CheckButton Example\", application=app)\n"
-" self.set_default_size(300, 100)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # a new checkbutton\n"
-" button = Gtk.CheckButton()\n"
-" # with a label\n"
-" button.set_label(\"Show Title\")\n"
-" # connect the signal \"toggled\" emitted by the checkbutton\n"
-" # with the callback function toggled_cb\n"
-" button.connect(\"toggled\", self.toggled_cb)\n"
-" # by default, the checkbutton is active\n"
-" button.set_active(True)\n"
-"\n"
-" # add the checkbutton to the window\n"
-" self.add(button)\n"
-"\n"
-" # callback function\n"
-" def toggled_cb(self, button):\n"
-" # if the togglebutton is active, set the title of the window\n"
-" # as \"Checkbutton Example\"\n"
-" if button.get_active():\n"
-" self.set_title(\"CheckButton Example\")\n"
-" # else, set it as \"\" (empty string)\n"
-" else:\n"
-" self.set_title(\"\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/checkbutton.py.page:36
-msgid "Useful methods for a CheckButton widget"
-msgstr "Métodos útiles para un widget «CheckButton»"
-
-#. (itstool) path: section/p
-#: C/checkbutton.py.page:37
-msgid ""
-"In line 17 the <code>\"toggled\"</code> signal is connected to the callback "
-"function <code>toggled_cb()</code> using <code><var>widget</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 17 la señal <code>«toggled»</code> se conecta a una función de "
-"retorno de llamada <code>toggled_cb()</code> usando <code><var>widget</var>."
-"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
-"explicación más detallada."
-
-#. (itstool) path: item/p
-#: C/checkbutton.py.page:47 C/togglebutton.py.page:44
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToggleButton.html"
-"\">GtkToggleButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToggleButton.html"
-"\">GtkToggleButton</link>"
-
-#. (itstool) path: item/p
-#: C/checkbutton.py.page:48
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCheckButton.html"
-"\">GtkCheckButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCheckButton.html"
-"\">GtkCheckButton</link>"
-
-#. (itstool) path: info/title
-#: C/checkbutton.vala.page:8
-msgctxt "text"
-msgid "CheckButton (Vala)"
-msgstr "CheckButton (Vala)"
-
-#. (itstool) path: info/desc
-#: C/checkbutton.vala.page:18
-msgid "Create widgets with a discrete toggle button"
-msgstr "Crear widgets con un botón conmutador discreto"
-
-#. (itstool) path: page/code
-#: C/checkbutton.vala.page:25
-#, no-wrap
-msgid ""
-"/* A window in the application */\n"
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* The constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"CheckButton Example\");\n"
-"\n"
-"\t\tthis.set_default_size (300, 100);\n"
-"\t\tthis.border_width = 10;\n"
-"\n"
-"\t\tvar checkbutton = new Gtk.CheckButton.with_label (\"Show Title\");\n"
-"\n"
-"\t\t/* Connect the checkbutton to the\n"
-"\t\t * callback function (aka. signal handler).\n"
-"\t\t */\n"
-"\t\tcheckbutton.toggled.connect (this.toggled_cb);\n"
-"\n"
-"\t\t/* Add the button to the this window */\n"
-"\t\tthis.add (checkbutton);\n"
-"\n"
-"\t\tcheckbutton.set_active (true);\n"
-"\t\tcheckbutton.show ();\n"
-"\t}\n"
-"\n"
-"\t/* The signal handler for the 'toggled' signal of the checkbutton. */\n"
-"\tvoid toggled_cb (Gtk.ToggleButton checkbutton) {\n"
-"\t\tif (checkbutton.get_active())\n"
-"\t\t\tthis.set_title (\"CheckButton Example\");\n"
-"\t\telse\n"
-"\t\t\tthis.set_title (\"\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application */\n"
-"class MyApplication : Gtk.Application {\n"
-"\n"
-"\t/* The constructor */\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.checkbutton\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the activate signal of GLib.Application */\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"}\n"
-"\n"
-"/* main creates and runs the application */\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"/* A window in the application */\n"
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* The constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"CheckButton Example\");\n"
-"\n"
-"\t\tthis.set_default_size (300, 100);\n"
-"\t\tthis.border_width = 10;\n"
-"\n"
-"\t\tvar checkbutton = new Gtk.CheckButton.with_label (\"Show Title\");\n"
-"\n"
-"\t\t/* Connect the checkbutton to the\n"
-"\t\t * callback function (aka. signal handler).\n"
-"\t\t */\n"
-"\t\tcheckbutton.toggled.connect (this.toggled_cb);\n"
-"\n"
-"\t\t/* Add the button to the this window */\n"
-"\t\tthis.add (checkbutton);\n"
-"\n"
-"\t\tcheckbutton.set_active (true);\n"
-"\t\tcheckbutton.show ();\n"
-"\t}\n"
-"\n"
-"\t/* The signal handler for the 'toggled' signal of the checkbutton. */\n"
-"\tvoid toggled_cb (Gtk.ToggleButton checkbutton) {\n"
-"\t\tif (checkbutton.get_active())\n"
-"\t\t\tthis.set_title (\"CheckButton Example\");\n"
-"\t\telse\n"
-"\t\t\tthis.set_title (\"\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application */\n"
-"class MyApplication : Gtk.Application {\n"
-"\n"
-"\t/* The constructor */\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.checkbutton\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the activate signal of GLib.Application */\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"}\n"
-"\n"
-"/* main creates and runs the application */\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/checkbutton.vala.page:30
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CheckButton.html\">Gtk."
-"CheckButton</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CheckButton.html\">Gtk."
-"CheckButton</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/colorbutton.js.page:22 C/colorbutton.py.page:23
-#: C/colorbutton.vala.page:24
-msgctxt "_"
-msgid ""
-"external ref='media/colorbutton.png' md5='904539d26fe367bf99f9a0961cfc9a03'"
-msgstr ""
-"external ref='media/colorbutton.png' md5='904539d26fe367bf99f9a0961cfc9a03'"
-
-#. (itstool) path: info/title
-#: C/colorbutton.js.page:8
-msgctxt "text"
-msgid "ColorButton (JavaScript)"
-msgstr "ColorButton (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/colorbutton.js.page:18 C/colorbutton.py.page:19
-#: C/colorbutton.vala.page:20
-msgid "A button to launch a color selection dialog"
-msgstr "Un botón para mostrar el diálogo de selección de color"
-
-#. (itstool) path: page/title
-#: C/colorbutton.js.page:21 C/colorbutton.py.page:22
-#: C/colorbutton.vala.page:23
-msgid "ColorButton"
-msgstr "ColorButton"
-
-#. (itstool) path: page/p
-#: C/colorbutton.js.page:23 C/colorbutton.py.page:24
-msgid ""
-"This ColorButton launches a color selection dialog and prints in the "
-"terminal the RGB values of the color selected."
-msgstr ""
-"Este ColorButton muestra un diálogo de selección de color e imprime por la "
-"terminal los valores RGB del color seleccionado."
-
-#. (itstool) path: section/code
-#: C/colorbutton.js.page:29
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gdk = imports.gi.Gdk;\n"
-"const GObject = imports.gi.GObject;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ColorbuttonExample = new Lang.Class ({\n"
-" Name: 'Colorbutton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({ application_id: 'org.example.jscolorbutton' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this.window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"ColorButton\",\n"
-" default_width: 150,\n"
-" default_height: 50,\n"
-" border_width: 10 });\n"
-"\n"
-" this.button = new Gtk.ColorButton();\n"
-" this.color = new Gdk.RGBA();\n"
-" this.color.red = 0.0;\n"
-" this.color.green = 0.0;\n"
-" this.color.blue = 1.0;\n"
-" this.color.alpha = 0.5;\n"
-" this.button.set_rgba(this.color);\n"
-" this.button.connect(\"color-set\", Lang.bind(this, this.onColorChosen));\n"
-" this.label = new Gtk.Label();\n"
-" this.label.set_text(\"Click to choose a color\");\n"
-"\n"
-" let grid = new Gtk.Grid();\n"
-" grid.attach(this.button, 0, 0, 2, 1);\n"
-" grid.attach(this.label, 0, 1, 2, 1);\n"
-" this.window.add(grid);\n"
-" this.window.show_all();\n"
-" },\n"
-"\n"
-" onColorChosen: function() {\n"
-" let colorName = this.color.to_string();\n"
-" this.label.set_text(\"You chose the color \" + colorName);\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ColorbuttonExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gdk = imports.gi.Gdk;\n"
-"const GObject = imports.gi.GObject;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ColorbuttonExample = new Lang.Class ({\n"
-" Name: 'Colorbutton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({ application_id: 'org.example.jscolorbutton' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this.window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"ColorButton\",\n"
-" default_width: 150,\n"
-" default_height: 50,\n"
-" border_width: 10 });\n"
-"\n"
-" this.button = new Gtk.ColorButton();\n"
-" this.color = new Gdk.RGBA();\n"
-" this.color.red = 0.0;\n"
-" this.color.green = 0.0;\n"
-" this.color.blue = 1.0;\n"
-" this.color.alpha = 0.5;\n"
-" this.button.set_rgba(this.color);\n"
-" this.button.connect(\"color-set\", Lang.bind(this, this.onColorChosen));\n"
-" this.label = new Gtk.Label();\n"
-" this.label.set_text(\"Click to choose a color\");\n"
-"\n"
-" let grid = new Gtk.Grid();\n"
-" grid.attach(this.button, 0, 0, 2, 1);\n"
-" grid.attach(this.label, 0, 1, 2, 1);\n"
-" this.window.add(grid);\n"
-" this.window.show_all();\n"
-" },\n"
-"\n"
-" onColorChosen: function() {\n"
-" let colorName = this.color.to_string();\n"
-" this.label.set_text(\"You chose the color \" + colorName);\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ColorbuttonExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/colorbutton.js.page:36
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ColorButton."
-"html\">GtkColorButton</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ColorButton."
-"html\">GtkColorButton</link>"
-
-#. (itstool) path: item/p
-#: C/colorbutton.js.page:37 C/colorbutton.py.page:45
-msgid ""
-"<link href=\"http://developer.gnome.org/gdk3/stable/gdk3-RGBA-Colors.html"
-"\">RGBA Colors</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gdk3/stable/gdk3-RGBA-Colors.html"
-"\">Colores RGBA</link>"
-
-#. (itstool) path: info/title
-#: C/colorbutton.py.page:8
-msgctxt "text"
-msgid "ColorButton (Python)"
-msgstr "ColorButton (Python)"
-
-#. (itstool) path: section/code
-#: C/colorbutton.py.page:30
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "from gi.repository import Gdk\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"ColorButton\", application=app)\n"
-#| " self.set_default_size(150, 50)\n"
-#| " self.set_border_width(10)\n"
-#| "\n"
-#| " # a colorbutton (which opens a dialogue window in\n"
-#| " # which we choose a color)\n"
-#| " self.button = Gtk.ColorButton()\n"
-#| " # with a default color (blue, in this instance)\n"
-#| " color = Gdk.RGBA()\n"
-#| " color.red = 0.0\n"
-#| " color.green = 0.0\n"
-#| " color.blue = 1.0\n"
-#| " color.alpha = 0.5\n"
-#| " self.button.set_rgba(color)\n"
-#| "\n"
-#| " # choosing a color in the dialogue window emits a signal\n"
-#| " self.button.connect(\"color-set\", self.on_color_chosen)\n"
-#| "\n"
-#| " # a label\n"
-#| " label = Gtk.Label()\n"
-#| " label.set_text(\"Click to choose a color\")\n"
-#| "\n"
-#| " # a grid to attach button and label\n"
-#| " grid = Gtk.Grid()\n"
-#| " grid.attach(self.button, 0, 0, 2, 1)\n"
-#| " grid.attach(label, 0, 1, 2, 1)\n"
-#| " self.add(grid)\n"
-#| "\n"
-#| " # if a new color is chosen, we print it as rgb(r,g,b) in the terminal\n"
-#| " def on_color_chosen(self, user_data):\n"
-#| " print \"You chose the color: \" + self.button.get_rgba().to_string()\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gdk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"ColorButton\", application=app)\n"
-" self.set_default_size(150, 50)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # a colorbutton (which opens a dialogue window in\n"
-" # which we choose a color)\n"
-" self.button = Gtk.ColorButton()\n"
-" # with a default color (blue, in this instance)\n"
-" color = Gdk.RGBA()\n"
-" color.red = 0.0\n"
-" color.green = 0.0\n"
-" color.blue = 1.0\n"
-" color.alpha = 0.5\n"
-" self.button.set_rgba(color)\n"
-"\n"
-" # choosing a color in the dialogue window emits a signal\n"
-" self.button.connect(\"color-set\", self.on_color_chosen)\n"
-"\n"
-" # a label\n"
-" label = Gtk.Label()\n"
-" label.set_text(\"Click to choose a color\")\n"
-"\n"
-" # a grid to attach button and label\n"
-" grid = Gtk.Grid()\n"
-" grid.attach(self.button, 0, 0, 2, 1)\n"
-" grid.attach(label, 0, 1, 2, 1)\n"
-" self.add(grid)\n"
-"\n"
-" # if a new color is chosen, we print it as rgb(r,g,b) in the terminal\n"
-" def on_color_chosen(self, user_data):\n"
-" print(\"You chose the color: \" + self.button.get_rgba().to_string())\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gdk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"ColorButton\", application=app)\n"
-" self.set_default_size(150, 50)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # a colorbutton (which opens a dialogue window in\n"
-" # which we choose a color)\n"
-" self.button = Gtk.ColorButton()\n"
-" # with a default color (blue, in this instance)\n"
-" color = Gdk.RGBA()\n"
-" color.red = 0.0\n"
-" color.green = 0.0\n"
-" color.blue = 1.0\n"
-" color.alpha = 0.5\n"
-" self.button.set_rgba(color)\n"
-"\n"
-" # choosing a color in the dialogue window emits a signal\n"
-" self.button.connect(\"color-set\", self.on_color_chosen)\n"
-"\n"
-" # a label\n"
-" label = Gtk.Label()\n"
-" label.set_text(\"Click to choose a color\")\n"
-"\n"
-" # a grid to attach button and label\n"
-" grid = Gtk.Grid()\n"
-" grid.attach(self.button, 0, 0, 2, 1)\n"
-" grid.attach(label, 0, 1, 2, 1)\n"
-" self.add(grid)\n"
-"\n"
-" # if a new color is chosen, we print it as rgb(r,g,b) in the terminal\n"
-" def on_color_chosen(self, user_data):\n"
-" print(\"You chose the color: \" + self.button.get_rgba().to_string())\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/colorbutton.py.page:34
-msgid "Useful methods for a ColorButton widget"
-msgstr "Métodos útiles para un widget «ColorButton»"
-
-#. (itstool) path: section/p
-#: C/colorbutton.py.page:35
-msgid ""
-"<code>set_color(color)</code>, where the <code>color</code> is defined as in "
-"the example, sets the color of the ColorButton, which by default is black. "
-"<code>get_color()</code> returns the color."
-msgstr ""
-"<code>set_color(color)</code>, donde el <code>color</code> se define como en "
-"el ejemplo, establece el color del «ColorButton», que es negro de manera "
-"predeterminada. <code>get_color()</code> devuelve el color."
-
-#. (itstool) path: section/p
-#: C/colorbutton.py.page:36
-msgid ""
-"In line 23 the <code>\"color-set\"</code> signal is connected to the "
-"callback function <code>on_color_chosen()</code> using <code><var>widget</"
-"var>.connect(<var>signal</var>, <var>callback function</var>)</code>. See "
-"<link xref=\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 23 la señal <code>«color-set»</code> se conecta a una función de "
-"retorno de llamada <code>on_color_chosen()</code> usando <code><var>widget</"
-"var>.connect(<var>señal</var>, <var>función de retorno de llamada</var>)</"
-"code>. Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
-"explicación más detallada."
-
-#. (itstool) path: item/p
-#: C/colorbutton.py.page:43
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkColorButton.html"
-"\">GtkColorButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkColorButton.html"
-"\">GtkColorButton</link>"
-
-#. (itstool) path: item/p
-#: C/colorbutton.py.page:44
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkColorChooser.html"
-"\">GtkColorChooser</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkColorChooser.html"
-"\">GtkColorChooser</link>"
-
-#. (itstool) path: info/title
-#: C/colorbutton.vala.page:8
-msgctxt "text"
-msgid "ColorButton (Vala)"
-msgstr "ColorButton (Vala)"
-
-#. (itstool) path: page/p
-#: C/colorbutton.vala.page:25
-msgid "RGB values of the selected color are shown in the label."
-msgstr "Los valores RGB del color seleccionado se muestran en la etiqueta."
-
-#. (itstool) path: page/code
-#: C/colorbutton.vala.page:27
-#, no-wrap
-msgid ""
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tGtk.Label label;\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\t\t/* Create the window of this application and show it. */\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.title = \"ColorButton\";\n"
-"\t\twindow.set_default_size (150, 50);\n"
-"\t\twindow.set_border_width (10);\n"
-"\n"
-"\t\t/* Create a new ColorButton with default blue. */\n"
-"\t\tvar blue = Gdk.RGBA ();\n"
-"\t\tblue.parse (\"blue\");\n"
-"\t\tvar colorbutton = new Gtk.ColorButton.with_rgba (blue);\n"
-"\n"
-"\t\tlabel = new Gtk.Label (\"Click to choose a color\");\n"
-"\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tgrid.attach (colorbutton, 0, 0, 1, 1);\n"
-"\t\tgrid.attach_next_to (label, colorbutton, Gtk.PositionType.BOTTOM, 1, 1);\n"
-"\n"
-"\t\tcolorbutton.color_set.connect (this.on_color_set);\n"
-"\n"
-"\t\twindow.add (grid);\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"\n"
-"\tvoid on_color_set (Gtk.ColorButton button) {\n"
-"\t\tvar color = button.get_rgba ();\n"
-"\t\tlabel.set_text (\"RGBA: \" + color.to_string());\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tGtk.Label label;\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\t\t/* Create the window of this application and show it. */\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.title = \"ColorButton\";\n"
-"\t\twindow.set_default_size (150, 50);\n"
-"\t\twindow.set_border_width (10);\n"
-"\n"
-"\t\t/* Create a new ColorButton with default blue. */\n"
-"\t\tvar blue = Gdk.RGBA ();\n"
-"\t\tblue.parse (\"blue\");\n"
-"\t\tvar colorbutton = new Gtk.ColorButton.with_rgba (blue);\n"
-"\n"
-"\t\tlabel = new Gtk.Label (\"Click to choose a color\");\n"
-"\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tgrid.attach (colorbutton, 0, 0, 1, 1);\n"
-"\t\tgrid.attach_next_to (label, colorbutton, Gtk.PositionType.BOTTOM, 1, 1);\n"
-"\n"
-"\t\tcolorbutton.color_set.connect (this.on_color_set);\n"
-"\n"
-"\t\twindow.add (grid);\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"\n"
-"\tvoid on_color_set (Gtk.ColorButton button) {\n"
-"\t\tvar color = button.get_rgba ();\n"
-"\t\tlabel.set_text (\"RGBA: \" + color.to_string());\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/colorbutton.vala.page:32
-msgid ""
-"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.ColorButton.html\">Gtk."
-"ColorButton</link>"
-msgstr ""
-"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.ColorButton.html\">Gtk."
-"ColorButton</link>"
-
-#. (itstool) path: item/p
-#: C/colorbutton.vala.page:33
-msgid "<link href=\"http://valadoc.org/gdk-3.0/Gdk.RGBA.html\">Gdk.RGBA</link>"
-msgstr ""
-"<link href=\"http://valadoc.org/gdk-3.0/Gdk.RGBA.html\">Gdk.RGBA</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/comboboxtext.js.page:24 C/combobox.c.page:26 C/combobox.py.page:24
-#: C/combobox.vala.page:22
-msgctxt "_"
-msgid ""
-"external ref='media/combobox.png' md5='ab9e91bc1a58fe866cb00dd52159251d'"
-msgstr ""
-"external ref='media/combobox.png' md5='ab9e91bc1a58fe866cb00dd52159251d'"
-
-#. (itstool) path: info/title
-#: C/comboboxtext.js.page:8
-msgctxt "text"
-msgid "ComboBoxText (JavaScript)"
-msgstr "ComboBoxText (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/comboboxtext.js.page:20
-msgid "A text-only drop-down menu"
-msgstr "Un menú desplegable de solo texto"
-
-#. (itstool) path: page/title
-#: C/comboboxtext.js.page:23
-msgid "ComboBoxText"
-msgstr "ComboBoxText"
-
-#. (itstool) path: page/p
-#: C/comboboxtext.js.page:25
-msgid ""
-"A ComboBox is a drop-down menu. The difference between a <link xref="
-"\"combobox.js\">ComboBox</link> and a ComboBoxText is that a ComboBoxText "
-"just has basic text options, while a full ComboBox uses a ListStore or "
-"TreeStore (which are basically spreadsheets) to show things like branching "
-"options, or pictures to go alongside each choice."
-msgstr ""
-"Un «ComboBox» es un menú desplegable. La diferencia entre un <link xref="
-"\"combobox.js\">ComboBox</link> y un «ComboBoxText» es que este sólo tiene "
-"opciones básicas de texto, mientras que un «ComboBox» completo usa un "
-"«ListStore» o «TreeStore» (que son básicamente hojas de cálculo) para mostrar "
-"cosas como opciones de bifurcación, o imágenes junto a cada opción."
-
-#. (itstool) path: note/p
-#: C/comboboxtext.js.page:26
-msgid ""
-"Unless you need the added features of a full ComboBox, or are comfortable "
-"working with ListStores and TreeStores, you may find it a lot simpler to use "
-"a ComboBoxText whenever possible."
-msgstr ""
-"A menos que necesite las características adicionales de un «ComboBox» "
-"completo, o si se siente cómodo trabajando con «ListStore» y «TreeStore», "
-"encontrará mucho más simple usar un «ComboBoxText» siempre que sea posible."
-
-#. (itstool) path: section/code
-#: C/comboboxtext.js.page:42
-#, no-wrap
-msgid ""
-"\n"
-"const ComboBoxTextExample = new Lang.Class ({\n"
-" Name: 'ComboBoxText Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jscomboboxtext'});\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-"const ComboBoxTextExample = new Lang.Class ({\n"
-" Name: 'ComboBoxText Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jscomboboxtext'});\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/comboboxtext.js.page:66 C/messagedialog.js.page:70
-msgid ""
-"All the code for this sample goes in the MessageDialogExample class. The "
-"above code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/"
-"gjs/Gtk.Application.html\">Gtk.Application</link> for our widgets and window "
-"to go in."
-msgstr ""
-"Todo el código de este ejemplo va en la clase «MessageDialogExample». El "
-"código anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-"
-"3.0/gjs/Gtk.Application.html\">Gtk.Application</link> para que vayan los "
-"widgets y la ventana."
-
-#. (itstool) path: section/code
-#: C/comboboxtext.js.page:67 C/combobox.js.page:71
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Welcome to GNOME\",\n"
-" default_width: 200,\n"
-" border_width: 10 });\n"
-msgstr ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Welcome to GNOME\",\n"
-" default_width: 200,\n"
-" border_width: 10 });\n"
-
-#. (itstool) path: section/p
-#: C/comboboxtext.js.page:79 C/combobox.js.page:83 C/messagedialog.js.page:84
-#: C/radiobutton.js.page:79 C/scale.js.page:78 C/spinbutton.js.page:81
-#: C/switch.js.page:88 C/textview.js.page:88 C/togglebutton.js.page:81
-#: C/treeview_simple_liststore.js.page:90
-msgid ""
-"The _buildUI function is where we put all the code to create the "
-"application's user interface. The first step is creating a new <link xref="
-"\"GtkApplicationWindow.js\">Gtk.ApplicationWindow</link> to put all our "
-"widgets into."
-msgstr ""
-"La función _buildUI es donde se pone todo el código que crea la interfaz de "
-"usuario de la aplicación. El primer paso es crear una <link xref="
-"\"GtkApplicationWindow.js\">Gtk.ApplicationWindow</link> nueva para poner "
-"dentro todos los widgets."
-
-#. (itstool) path: section/title
-#: C/comboboxtext.js.page:83
-msgid "Creating the ComboBoxText"
-msgstr "Crear el ComboBoxText"
-
-#. (itstool) path: section/code
-#: C/comboboxtext.js.page:84
-#, no-wrap
-msgid ""
-"\n"
-" // Create the combobox\n"
-" this._comboBoxText = new Gtk.ComboBoxText();\n"
-"\n"
-" // Populate the combobox\n"
-" let distros = [\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"];\n"
-" for (let i = 0; i < distros.length; i++)\n"
-" this._comboBoxText.append_text (distros[i]);\n"
-" this._comboBoxText.set_active (0);\n"
-"\n"
-" // Connect the combobox's 'changed' signal to our callback function\n"
-" this._comboBoxText.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
-msgstr ""
-"\n"
-" // Create the combobox\n"
-" this._comboBoxText = new Gtk.ComboBoxText();\n"
-"\n"
-" // Populate the combobox\n"
-" let distros = [\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"];\n"
-" for (let i = 0; i < distros.length; i++)\n"
-" this._comboBoxText.append_text (distros[i]);\n"
-" this._comboBoxText.set_active (0);\n"
-"\n"
-" // Connect the combobox's 'changed' signal to our callback function\n"
-" this._comboBoxText.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
-
-#. (itstool) path: section/p
-#: C/comboboxtext.js.page:97
-msgid ""
-"After we create the ComboBoxText, we use its <file>append_text</file> method "
-"to add text strings to it. Like the entries in an array, they each have a "
-"number for an ID, starting with 0. To make things simpler, you can actually "
-"create an array for your ComboBoxText entries, then use a for loop to append "
-"them in order, like we did here."
-msgstr ""
-"Después de crear el «ComboBoxText», se usa su método <file>append_text</file> "
-"para añadirle cadenas de texto. Al igual que las entradas en una matriz, "
-"cada una tiene un número para identificarlas, comenzando por el 0. Para "
-"hacer las cosas más simples, puede crear una matriz para los datos del "
-"«ComboBoxText», y después usar un bucle «for» para añadirlos en orden, como "
-"aquí."
-
-#. (itstool) path: section/p
-#: C/comboboxtext.js.page:98
-msgid ""
-"After we populate the ComboBoxText, we set its first entry to be active, so "
-"that we'll see the \"Select distribution\" line before we click on it. Then "
-"we connect its <file>changed</file> signal to the _onComboChanged function, "
-"so that it's called whenever you make a new selection from the drop-down "
-"menu."
-msgstr ""
-"Después de poblar el «ComboBoxText», se activa su primera entrada, para ver "
-"la línea «Seleccionar distribución» antes de pulsarlo. Después se conecta su "
-"señal <file>changed</file> a la función «_onComboChanged», para que se llame "
-"siempre que haga una selección nueva del menú desplegable."
-
-#. (itstool) path: note/p
-#: C/comboboxtext.js.page:99
-msgid ""
-"If you'd like to add an entry to a ComboBoxText, you can use the "
-"<file>insert_text</file> method. And if you'd rather use a text string as an "
-"ID for each entry than rely on numbers alone, you can use the <file>append</"
-"file> and <file>insert</file> methods. See the links at the bottom of this "
-"tutorial for the details of how to use them."
-msgstr ""
-"Si quiere añadirle una entrada a un «ComboBoxText», puede usar el método "
-"<file>insert_text</file>. Y si prefiere usar una cadena de texto como "
-"identificación de cada entrada en lugar de solo números, puede usar los "
-"métodos <file>append</file> e <file>insert</file>. Consulte los enlaces al "
-"final de este tutorial para ver detalles sobre su uso."
-
-#. (itstool) path: section/code
-#: C/comboboxtext.js.page:101
-#, no-wrap
-msgid ""
-"\n"
-" // Add the combobox to the window\n"
-" this._window.add (this._comboBoxText);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-msgstr ""
-"\n"
-" // Add the combobox to the window\n"
-" this._window.add (this._comboBoxText);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/comboboxtext.js.page:109
-msgid ""
-"Finally, we add the ComboBoxText to the window, and tell the window to show "
-"itself and the widget inside it."
-msgstr ""
-"Finalmente, se añade el «ComboBoxText» a la ventana, y se le dice que se "
-"muestre con su widget."
-
-#. (itstool) path: section/title
-#: C/comboboxtext.js.page:113 C/combobox.js.page:170 C/radiobutton.js.page:181
-msgid "Function which handles your selection"
-msgstr "Función que maneja su selección"
-
-#. (itstool) path: section/code
-#: C/comboboxtext.js.page:114
-#, no-wrap
-msgid ""
-"\n"
-" _onComboChanged: function () {\n"
-"\n"
-" // The responses we'll use for our messagedialog\n"
-" let responses = [\"\",\n"
-" \"Fedora is a community distro sponsored by Red Hat.\",\n"
-" \"Mint is a popular distro based on Ubuntu.\",\n"
-" \"SUSE is a name shared by two separate distros.\"];\n"
-msgstr ""
-"\n"
-" _onComboChanged: function () {\n"
-"\n"
-" // The responses we'll use for our messagedialog\n"
-" let responses = [\"\",\n"
-" \"Fedora is a community distro sponsored by Red Hat.\",\n"
-" \"Mint is a popular distro based on Ubuntu.\",\n"
-" \"SUSE is a name shared by two separate distros.\"];\n"
-
-#. (itstool) path: section/p
-#: C/comboboxtext.js.page:123
-msgid ""
-"We're going to create a pop-up <link xref=\"messagedialog.js"
-"\">MessageDialog</link>, which shows you a message based on which distro you "
-"select. First, we create the array of responses to use. Since the first "
-"string in our ComboBoxText is just the \"Select distribution\" message, we "
-"make the first string in our array blank."
-msgstr ""
-"Se va a crear un <link xref=\"messagedialog.js\">MessageDialog</link> "
-"emergente, que muestre un mensaje a partir de qué distribución elija. "
-"Primero, se crea la matriz de respuestas para usar. Dado que la primera "
-"cadena del «ComboBoxText» es solo el mensaje «Seleccione distribución», la "
-"primera cadena de la matriz está vacía."
-
-#. (itstool) path: section/code
-#: C/comboboxtext.js.page:125
-#, no-wrap
-msgid ""
-"\n"
-" // Which combobox item is active?\n"
-" let activeItem = this._comboBoxText.get_active();\n"
-"\n"
-" // No messagedialog if you chose \"Select distribution\"\n"
-" if (activeItem != 0) {\n"
-" this._popUp = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" buttons: Gtk.ButtonsType.OK,\n"
-" message_type: Gtk.MessageType.INFO,\n"
-" text: responses[activeItem]});\n"
-"\n"
-" // Connect the OK button to a handler function\n"
-" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
-"\n"
-" // Show the messagedialog\n"
-" this._popUp.show();\n"
-" }\n"
-"\n"
-" },\n"
-msgstr ""
-"\n"
-" // Which combobox item is active?\n"
-" let activeItem = this._comboBoxText.get_active();\n"
-"\n"
-" // No messagedialog if you chose \"Select distribution\"\n"
-" if (activeItem != 0) {\n"
-" this._popUp = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" buttons: Gtk.ButtonsType.OK,\n"
-" message_type: Gtk.MessageType.INFO,\n"
-" text: responses[activeItem]});\n"
-"\n"
-" // Connect the OK button to a handler function\n"
-" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
-"\n"
-" // Show the messagedialog\n"
-" this._popUp.show();\n"
-" }\n"
-"\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/comboboxtext.js.page:147
-msgid ""
-"Before showing a MessageDialog, we first test to make sure you didn't choose "
-"the \"Select distribution\" message. After that, we set its text to be the "
-"entry in the array that corresponds to the active entry in our ComboBoxText. "
-"We do that using the <file>get_active</file> method, which returns the "
-"number ID of your selection."
-msgstr ""
-"Antes de mostrar un «MessageDialog», se verifica que no ha elegido el mensaje "
-"«Seleccionar distribución». Después de eso, se establece su texto a la "
-"entrada en la matriz que le corresponde a la entrada activa en el "
-"«ComboBoxText». Esto se hace usando el método <file>get_active</file>, que "
-"devuelve la identificación numérica de su selección."
-
-#. (itstool) path: note/p
-#: C/comboboxtext.js.page:148
-msgid ""
-"Other methods you can use include <file>get_active_id,</file> which returns "
-"the text ID assigned by <file>append,</file> and <file>get_active_text,</"
-"file> which returns the full text of the string you selected."
-msgstr ""
-"Otros métodos que puede usar incluyen <file>get_active_id</file>, que "
-"devuelve la identificación de texto que asignó <file>append</file>, y "
-"<file>get_active_text</file>, que devuelve el texto completo de la cadena "
-"que seleccionó."
-
-#. (itstool) path: section/p
-#: C/comboboxtext.js.page:149 C/combobox.js.page:206
-msgid ""
-"After we create the MessageDialog, we connect its response signal to the "
-"_onDialogResponse function, then tell it to show itself."
-msgstr ""
-"Después de crear el «MessageDialog», se conecta su señal «response» a la "
-"función «onDialogResponse», y se le dice que se muestre."
-
-#. (itstool) path: section/code
-#: C/comboboxtext.js.page:151 C/combobox.js.page:208
-#, no-wrap
-msgid ""
-"\n"
-" _onDialogResponse: function () {\n"
-"\n"
-" this._popUp.destroy ();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-msgstr ""
-"\n"
-" _onDialogResponse: function () {\n"
-"\n"
-" this._popUp.destroy ();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-
-#. (itstool) path: section/p
-#: C/comboboxtext.js.page:160 C/combobox.js.page:217
-msgid ""
-"Since the only button the MessageDialog has is an OK button, we don't need "
-"to test its response_id to see which button was clicked. All we do here is "
-"destroy the popup."
-msgstr ""
-"Dado que el único botón que tiene el «MessageDialog» es un botón aceptar, no "
-"se necesita verificar su «response_id» para ver qué botón se pulsó. Todo lo "
-"que se hace aquí es destruir la ventana emergente."
-
-#. (itstool) path: section/code
-#: C/comboboxtext.js.page:162
-#, no-wrap
-msgid ""
-"\n"
-"// Run the application\n"
-"let app = new ComboBoxTextExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"// Run the application\n"
-"let app = new ComboBoxTextExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/p
-#: C/comboboxtext.js.page:167
-msgid ""
-"Finally, we create a new instance of the finished ComboBoxTextExample class, "
-"and set the application running."
-msgstr ""
-"Finalmente, se crea una instancia nueva de la clase ComboBoxTextExample "
-"terminada, y se ejecuta la aplicación."
-
-#. (itstool) path: section/code
-#: C/comboboxtext.js.page:172
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ComboBoxTextExample = new Lang.Class ({\n"
-" Name: 'ComboBoxText Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jscomboboxtext'});\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Welcome to GNOME\",\n"
-" default_width: 200,\n"
-" border_width: 10 });\n"
-"\n"
-" // Create the combobox\n"
-" this._comboBoxText = new Gtk.ComboBoxText();\n"
-"\n"
-" // Populate the combobox\n"
-" let distros = [\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"];\n"
-" for (let i = 0; i < distros.length; i++)\n"
-" this._comboBoxText.append_text (distros[i]);\n"
-" this._comboBoxText.set_active (0);\n"
-"\n"
-" // Connect the combobox's 'changed' signal to our callback function\n"
-" this._comboBoxText.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
-"\n"
-" // Add the combobox to the window\n"
-" this._window.add (this._comboBoxText);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _onComboChanged: function () {\n"
-"\n"
-" // The responses we'll use for our messagedialog\n"
-" let responses = [\"\",\n"
-" \"Fedora is a community distro sponsored by Red Hat.\",\n"
-" \"Mint is a popular distro based on Ubuntu.\",\n"
-" \"SUSE is a name shared by two separate distros.\"];\n"
-"\n"
-" // Which combobox item is active?\n"
-" let activeItem = this._comboBoxText.get_active();\n"
-"\n"
-" // No messagedialog if you chose \"Select distribution\"\n"
-" if (activeItem != 0) {\n"
-" this._popUp = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" buttons: Gtk.ButtonsType.OK,\n"
-" message_type: Gtk.MessageType.INFO,\n"
-" text: responses[activeItem]});\n"
-"\n"
-" // Connect the OK button to a handler function\n"
-" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
-"\n"
-" // Show the messagedialog\n"
-" this._popUp.show();\n"
-" }\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _onDialogResponse: function () {\n"
-"\n"
-" this._popUp.destroy ();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ComboBoxTextExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ComboBoxTextExample = new Lang.Class ({\n"
-" Name: 'ComboBoxText Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jscomboboxtext'});\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Welcome to GNOME\",\n"
-" default_width: 200,\n"
-" border_width: 10 });\n"
-"\n"
-" // Create the combobox\n"
-" this._comboBoxText = new Gtk.ComboBoxText();\n"
-"\n"
-" // Populate the combobox\n"
-" let distros = [\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"];\n"
-" for (let i = 0; i < distros.length; i++)\n"
-" this._comboBoxText.append_text (distros[i]);\n"
-" this._comboBoxText.set_active (0);\n"
-"\n"
-" // Connect the combobox's 'changed' signal to our callback function\n"
-" this._comboBoxText.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
-"\n"
-" // Add the combobox to the window\n"
-" this._window.add (this._comboBoxText);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _onComboChanged: function () {\n"
-"\n"
-" // The responses we'll use for our messagedialog\n"
-" let responses = [\"\",\n"
-" \"Fedora is a community distro sponsored by Red Hat.\",\n"
-" \"Mint is a popular distro based on Ubuntu.\",\n"
-" \"SUSE is a name shared by two separate distros.\"];\n"
-"\n"
-" // Which combobox item is active?\n"
-" let activeItem = this._comboBoxText.get_active();\n"
-"\n"
-" // No messagedialog if you chose \"Select distribution\"\n"
-" if (activeItem != 0) {\n"
-" this._popUp = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" buttons: Gtk.ButtonsType.OK,\n"
-" message_type: Gtk.MessageType.INFO,\n"
-" text: responses[activeItem]});\n"
-"\n"
-" // Connect the OK button to a handler function\n"
-" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
-"\n"
-" // Show the messagedialog\n"
-" this._popUp.show();\n"
-" }\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _onDialogResponse: function () {\n"
-"\n"
-" this._popUp.destroy ();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ComboBoxTextExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/comboboxtext.js.page:183
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ComboBoxText."
-"html\">Gtk.ComboBoxText</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ComboBoxText."
-"html\">Gtk.ComboBoxText</link>"
-
-#. (itstool) path: item/p
-#: C/comboboxtext.js.page:184 C/combobox.js.page:244 C/entry.js.page:33
-#: C/messagedialog.js.page:198
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.MessageDialog."
-"html\">Gtk.MessageDialog</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.MessageDialog."
-"html\">Gtk.MessageDialog</link>"
-
-#. (itstool) path: info/title
-#: C/combobox.c.page:8
-msgctxt "text"
-msgid "ComboBox (C)"
-msgstr "ComboBox (C)"
-
-#. (itstool) path: info/desc
-#: C/combobox.c.page:22 C/combobox.py.page:20 C/combobox.vala.page:18
-#: C/combobox_multicolumn.py.page:19 C/combobox_multicolumn.vala.page:19
-msgid "A widget used to choose from a list of items"
-msgstr "Un widget usado para elegir de una lista de elementos"
-
-#. (itstool) path: page/title
-#: C/combobox.c.page:25 C/combobox.js.page:25 C/combobox.vala.page:21
-msgid "ComboBox"
-msgstr "ComboBox"
-
-#. (itstool) path: page/p
-#: C/combobox.c.page:27 C/combobox.vala.page:23
-msgid "This ComboBox prints to the terminal when you change your selection."
-msgstr "Este ComboBox imprime en la terminal cuando cambia su selección."
-
-#. (itstool) path: page/code
-#: C/combobox.c.page:29
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"/* This is the callback function. It is a handler function which reacts to the\n"
-" * signal. In this case, if the row selected is not the first one of the\n"
-" * ComboBox, we write its value in the terminal for the user.\n"
-" */\n"
-"static void\n"
-"on_changed (GtkComboBox *widget,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkComboBox *combo_box = widget;\n"
-"\n"
-" if (gtk_combo_box_get_active (combo_box) != 0) {\n"
-" gchar *distro = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(combo_box));\n"
-" g_print (\"You chose %s\\n\", distro);\n"
-" g_free (distro);\n"
-" }\n"
-"\n"
-"}\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" gint i;\n"
-" GtkWidget *view;\n"
-" GtkWidget *window;\n"
-" GtkWidget *combo_box;\n"
-"\n"
-" /* Create a window with a title, border width, and a default size. Setting the\n"
-" * size to -1 means to use the \"natural\" default size.\n"
-" * (the size request of the window)\n"
-" */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 200, -1);\n"
-" gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n"
-"\n"
-"\n"
-" /* Create the combo box and append your string values to it. */\n"
-" combo_box = gtk_combo_box_text_new ();\n"
-" const char *distros[] = {\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"};\n"
-"\n"
-" \n"
-" /* G_N_ELEMENTS is a macro which determines the number of elements in an array.*/ \n"
-" for (i = 0; i < G_N_ELEMENTS (distros); i++){\n"
-" \tgtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), distros[i]);\n"
-" }\n"
-"\n"
-" /* Choose to set the first row as the active one by default, from the beginning */\n"
-" gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), 0);\n"
-"\n"
-" /* Connect the signal emitted when a row is selected to the appropriate\n"
-" * callback function.\n"
-" */\n"
-" g_signal_connect (combo_box,\n"
-" \"changed\",\n"
-" G_CALLBACK (on_changed),\n"
-" NULL);\n"
-"\n"
-" /* Add it to the window */\n"
-" gtk_container_add (GTK_CONTAINER (window), combo_box);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"/* This is the callback function. It is a handler function which reacts to the\n"
-" * signal. In this case, if the row selected is not the first one of the\n"
-" * ComboBox, we write its value in the terminal for the user.\n"
-" */\n"
-"static void\n"
-"on_changed (GtkComboBox *widget,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkComboBox *combo_box = widget;\n"
-"\n"
-" if (gtk_combo_box_get_active (combo_box) != 0) {\n"
-" gchar *distro = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(combo_box));\n"
-" g_print (\"You chose %s\\n\", distro);\n"
-" g_free (distro);\n"
-" }\n"
-"\n"
-"}\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" gint i;\n"
-" GtkWidget *view;\n"
-" GtkWidget *window;\n"
-" GtkWidget *combo_box;\n"
-"\n"
-" /* Create a window with a title, border width, and a default size. Setting the\n"
-" * size to -1 means to use the \"natural\" default size.\n"
-" * (the size request of the window)\n"
-" */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 200, -1);\n"
-" gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n"
-"\n"
-"\n"
-" /* Create the combo box and append your string values to it. */\n"
-" combo_box = gtk_combo_box_text_new ();\n"
-" const char *distros[] = {\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"};\n"
-"\n"
-" \n"
-" /* G_N_ELEMENTS is a macro which determines the number of elements in an array.*/ \n"
-" for (i = 0; i < G_N_ELEMENTS (distros); i++){\n"
-" \tgtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), distros[i]);\n"
-" }\n"
-"\n"
-" /* Choose to set the first row as the active one by default, from the beginning */\n"
-" gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), 0);\n"
-"\n"
-" /* Connect the signal emitted when a row is selected to the appropriate\n"
-" * callback function.\n"
-" */\n"
-" g_signal_connect (combo_box,\n"
-" \"changed\",\n"
-" G_CALLBACK (on_changed),\n"
-" NULL);\n"
-"\n"
-" /* Add it to the window */\n"
-" gtk_container_add (GTK_CONTAINER (window), combo_box);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/combobox.c.page:37
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkComboBoxText.html"
-"\">GtkComboBoxText</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkComboBoxText.html"
-"\">GtkComboBoxText</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/combobox.js.page:26 C/combobox_multicolumn.py.page:23
-#: C/combobox_multicolumn.vala.page:23
-msgctxt "_"
-msgid ""
-"external ref='media/combobox_multicolumn.png' "
-"md5='43f16648fb11ebc7d2f70825ed0f63b3'"
-msgstr ""
-"external ref='media/combobox_multicolumn.png' "
-"md5='43f16648fb11ebc7d2f70825ed0f63b3'"
-
-#. (itstool) path: info/title
-#: C/combobox.js.page:8
-msgctxt "text"
-msgid "ComboBox (JavaScript)"
-msgstr "ComboBox (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/combobox.js.page:22
-msgid "A customizable drop-down menu"
-msgstr "Un menú desplegable personalizable."
-
-#. (itstool) path: page/p
-#: C/combobox.js.page:27
-msgid ""
-"A ComboBox is an extremely customizable drop-down menu. It holds the "
-"equivalent of a <link xref=\"treeview_simple_liststore.js\">TreeView</link> "
-"widget that appears when you click on it, complete with a ListStore "
-"(basically a spreadsheet) that says what's in the rows and columns. In this "
-"example, our ListStore has the name of each option in one column, and the "
-"name of a stock icon in the other, which the ComboBox then turns into an "
-"icon for each option."
-msgstr ""
-"Un «ComboBox» es un menú desplegable extremadamente personalizable. Contiene "
-"el equivalente a un widget <link xref=\"treeview_simple_liststore.js"
-"\">TreeView</link> que aparece cuando lo pulsa, completo con un "
-"«ListStore» (básicamente una hoja de cálculo) que dice qué está en las filas "
-"y columnas. En este ejemplo, el «ListStore» tiene el nombre de cada opción en "
-"una columna, y el nombre de un elemento del almacén en la otra, que el "
-"«ComboBox» convierte en un icono para cada opción."
-
-#. (itstool) path: page/p
-#: C/combobox.js.page:28
-msgid ""
-"You select a whole horizontal row at a time, so the icons aren't treated as "
-"separate options. They and the text beside them make up each option you can "
-"click on."
-msgstr ""
-"Puede seleccionar una fila horizontal a la vez, por lo que los iconos no se "
-"tratan como opciones separadas. Ellos y su texto forman una opción que puede "
-"pulsar."
-
-#. (itstool) path: note/p
-#: C/combobox.js.page:29
-msgid ""
-"Working with a ListStore can be time-consuming. If you just want a simple "
-"text-only drop-down menu, take a look at the <link xref=\"comboboxtext.js"
-"\">ComboBoxText</link>. It doesn't take as much time to set up, and is "
-"easier to work with."
-msgstr ""
-"Trabajar con un «ListStore» puede llevar tiempo. Si sólo quiere un menú "
-"desplegable de solo texto simple, échele un vistazo al <link xref="
-"\"comboboxtext.js\">ComboBoxText</link>. No toma tanto tiempo configurarlo, "
-"y es más fácil trabajar con él."
-
-#. (itstool) path: section/code
-#: C/combobox.js.page:34
-#, no-wrap
-msgid ""
-"\n"
-"#!/usr/bin/gjs\n"
-"\n"
-"const GObject = imports.gi.GObject;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-msgstr ""
-"\n"
-"#!/usr/bin/gjs\n"
-"\n"
-"const GObject = imports.gi.GObject;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-
-#. (itstool) path: section/code
-#: C/combobox.js.page:46
-#, no-wrap
-msgid ""
-"\n"
-"const ComboBoxExample = new Lang.Class ({\n"
-" Name: 'ComboBox Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jscombobox'});\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-"const ComboBoxExample = new Lang.Class ({\n"
-" Name: 'ComboBox Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jscombobox'});\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/combobox.js.page:70
-msgid ""
-"All the code for this sample goes in the ComboBoxExample class. The above "
-"code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> for our widgets and window to "
-"go in."
-msgstr ""
-"Todo el código de este ejemplo va en la clase «ComboBoxExample». El código "
-"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> para que vayan los widgets y "
-"la ventana."
-
-#. (itstool) path: section/title
-#: C/combobox.js.page:87 C/treeview_simple_liststore.js.page:94
-msgid "Creating the ListStore"
-msgstr "Crear el ListStore"
-
-#. (itstool) path: section/code
-#: C/combobox.js.page:88
-#, no-wrap
-msgid ""
-"\n"
-" // Create the liststore to put our options in\n"
-" this._listStore = new Gtk.ListStore();\n"
-" this._listStore.set_column_types ([\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING]);\n"
-msgstr ""
-"\n"
-" // Create the liststore to put our options in\n"
-" this._listStore = new Gtk.ListStore();\n"
-" this._listStore.set_column_types ([\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING]);\n"
-
-#. (itstool) path: section/p
-#: C/combobox.js.page:95
-msgid ""
-"This ListStore works like the one used in the <link xref="
-"\"treeview_simple_liststore.js\">TreeView</link> example. We're giving it "
-"two columns, both strings, because one of them will contain the names of "
-"<link href=\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html"
-"\">stock Gtk icons</link>."
-msgstr ""
-"Este «ListStore» funciona como el que se usó en el ejemplo del <link xref="
-"\"treeview_simple_liststore.js\">TreeView</link>. Se le dan dos columnas, "
-"ambas cadenas, porque una contendrá los nombres de los <link href=\"https://"
-"developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html\">iconos del almacén de "
-"GTK+</link>."
-
-#. (itstool) path: section/p
-#: C/combobox.js.page:96
-msgid ""
-"If we'd wanted to use our own icons that weren't already built in to GNOME, "
-"we'd have needed to use the <file>gtk.gdk.Pixbuf</file> type instead. Here "
-"are a few other types you can use:"
-msgstr ""
-"Si quisiera usar sus propios iconos que no están incluidos en GNOME, tendría "
-"que usar el tipo <file>gtk.gdk.Pixbuf</file> en su lugar. Aquí hay algunos "
-"tipos más que puede usar:"
-
-#. (itstool) path: item/p
-#: C/combobox.js.page:98 C/treeview_simple_liststore.js.page:107
-msgid "<file>GObject.TYPE_BOOLEAN</file> -- True or false"
-msgstr "<file>GObject.TYPE_BOOLEAN</file>: verdadero o falso"
-
-#. (itstool) path: item/p
-#: C/combobox.js.page:99 C/treeview_simple_liststore.js.page:108
-msgid ""
-"<file>GObject.TYPE_FLOAT</file> -- A floating point number (one with a "
-"decimal point)"
-msgstr ""
-"<file>GObject.TYPE_FLOAT</file>: un número de coma flotante (uno con coma "
-"decimal)"
-
-#. (itstool) path: item/p
-#: C/combobox.js.page:100 C/treeview_simple_liststore.js.page:109
-msgid "<file>GObject.TYPE_STRING</file> -- A string of letters and numbers"
-msgstr "<file>GObject.TYPE_STRING</file>: una cadena de letras y números"
-
-#. (itstool) path: note/p
-#: C/combobox.js.page:102 C/treeview_simple_liststore.js.page:113
-msgid ""
-"You need to put the line <file>const GObject = imports.gi.GObject;</file> at "
-"the start of your application's code, like we did in this example, if you "
-"want to be able to use GObject types."
-msgstr ""
-"Necesita poner la línea <file>const GObject = imports.gi.GObject;</file> al "
-"principio del código de su aplicación, como se hizo en este ejemplo, si "
-"quiere poder usar tipos de GObject."
-
-#. (itstool) path: section/code
-#: C/combobox.js.page:104
-#, no-wrap
-msgid ""
-"\n"
-" // This array holds our list of options and their icons\n"
-" let options = [{ name: \"Select\" },\n"
-" { name: \"New\", icon: Gtk.STOCK_NEW },\n"
-" { name: \"Open\", icon: Gtk.STOCK_OPEN },\n"
-" { name: \"Save\", icon: Gtk.STOCK_SAVE }];\n"
-"\n"
-" // Put the options in the liststore\n"
-" for (let i = 0; i < options.length; i++ ) {\n"
-" let option = options[i];\n"
-" let iter = this._listStore.append();\n"
-" this._listStore.set (iter, [0], [option.name]);\n"
-" if ('icon' in option)\n"
-" this._listStore.set (iter, [1], [option.icon]);\n"
-" }\n"
-msgstr ""
-"\n"
-" // This array holds our list of options and their icons\n"
-" let options = [{ name: \"Select\" },\n"
-" { name: \"New\", icon: Gtk.STOCK_NEW },\n"
-" { name: \"Open\", icon: Gtk.STOCK_OPEN },\n"
-" { name: \"Save\", icon: Gtk.STOCK_SAVE }];\n"
-"\n"
-" // Put the options in the liststore\n"
-" for (let i = 0; i < options.length; i++ ) {\n"
-" let option = options[i];\n"
-" let iter = this._listStore.append();\n"
-" this._listStore.set (iter, [0], [option.name]);\n"
-" if ('icon' in option)\n"
-" this._listStore.set (iter, [1], [option.icon]);\n"
-" }\n"
-
-#. (itstool) path: section/p
-#: C/combobox.js.page:120
-msgid ""
-"Here we create an array of the text options and their corresponding icons, "
-"then put them into the ListStore in much the same way we would for a <link "
-"xref=\"treeview_simple_liststore.js\">TreeView's</link> ListStore. We only "
-"want to put an icon in if there's actually an icon in the options array, so "
-"we make sure to check for that first."
-msgstr ""
-"Aquí se crea una matriz de las opciones de texto y sus iconos "
-"correspondientes, después se ponen en el «ListStore» de forma parecida a cOmo "
-"se haría para un «ListStore» de un <link xref=\"treeview_simple_liststore.js"
-"\">TreeView</link>. Sólo se quiere poner un icono si hay uno en la matriz de "
-"opciones, por lo que primero hay que asegurarse de verificar esto."
-
-#. (itstool) path: note/p
-#: C/combobox.js.page:121
-msgid ""
-"\"Select\" isn't really an option so much as an invitation to click on our "
-"ComboBox, so it doesn't need an icon."
-msgstr ""
-"«Select» no es realmente una opción, sino una invitación a pulsar en el "
-"«ComboBox», por lo que no necesita un icono."
-
-#. (itstool) path: section/title
-#: C/combobox.js.page:125
-msgid "Creating the ComboBox"
-msgstr "Crear el ComboBox"
-
-#. (itstool) path: section/code
-#: C/combobox.js.page:126
-#, no-wrap
-msgid ""
-"\n"
-" // Create the combobox\n"
-" this._comboBox = new Gtk.ComboBox({\n"
-" model: this._listStore});\n"
-msgstr ""
-"\n"
-" // Create the combobox\n"
-" this._comboBox = new Gtk.ComboBox({\n"
-" model: this._listStore});\n"
-
-#. (itstool) path: section/p
-#: C/combobox.js.page:131
-msgid ""
-"Each ComboBox has an underlying \"model\" it takes all its options from. You "
-"can use a TreeStore if you want to have a ComboBox with branching options. "
-"In this case, we're just using the ListStore we already created."
-msgstr ""
-"Cada «ComboBox» tiene un «modelo» subyacente del que toma todas sus opciones. "
-"Puede usar un «TreeStore» si quiere tener un «ComboBox» con opciones de "
-"bifurcación. En este caso, solo se está usando el «ListStore» que ya se creó."
-
-#. (itstool) path: section/code
-#: C/combobox.js.page:132
-#, no-wrap
-msgid ""
-"\n"
-" // Create some cellrenderers for the items in each column\n"
-" let rendererPixbuf = new Gtk.CellRendererPixbuf();\n"
-" let rendererText = new Gtk.CellRendererText();\n"
-"\n"
-" // Pack the renderers into the combobox in the order we want to see\n"
-" this._comboBox.pack_start (rendererPixbuf, false);\n"
-" this._comboBox.pack_start (rendererText, false);\n"
-"\n"
-" // Set the renderers to use the information from our liststore\n"
-" this._comboBox.add_attribute (rendererText, \"text\", 0);\n"
-" this._comboBox.add_attribute (rendererPixbuf, \"stock_id\", 1);\n"
-msgstr ""
-"\n"
-" // Create some cellrenderers for the items in each column\n"
-" let rendererPixbuf = new Gtk.CellRendererPixbuf();\n"
-" let rendererText = new Gtk.CellRendererText();\n"
-"\n"
-" // Pack the renderers into the combobox in the order we want to see\n"
-" this._comboBox.pack_start (rendererPixbuf, false);\n"
-" this._comboBox.pack_start (rendererText, false);\n"
-"\n"
-" // Set the renderers to use the information from our liststore\n"
-" this._comboBox.add_attribute (rendererText, \"text\", 0);\n"
-" this._comboBox.add_attribute (rendererPixbuf, \"stock_id\", 1);\n"
-
-#. (itstool) path: section/p
-#: C/combobox.js.page:145
-msgid ""
-"This part, again, works much like creating CellRenderers and packing them "
-"into the columns of a <link xref=\"treeview_simple_liststore.js\">TreeView</"
-"link>. The biggest difference is that we don't need to create the ComboBox's "
-"columns as separate objects. We just pack the CellRenderers into it in the "
-"order we want them to show up, then tell them to pull information from the "
-"ListStore (and what type of information we want them to expect)."
-msgstr ""
-"Esta parte, nuevamente, funciona de forma similar a crear «CellRenderer» y "
-"empaquetarlos en columnas de un <link xref=\"treeview_simple_liststore.js"
-"\">TreeView</link>. La principal diferencia es que no necesita crear las "
-"columnas del «ComboBox» como objetos separados. Sólo se empaquetan los "
-"«CellRenderer» en el orden en el que quiere que se muestren, y se les dice "
-"que obtengan información del «ListStore» (y qué tipo de información tienen "
-"que esperar)."
-
-#. (itstool) path: section/p
-#: C/combobox.js.page:146
-msgid ""
-"We use a CellRendererText to show the text, and a CellRendererPixbuf to show "
-"the icons. We can store the names of the icons' stock types as strings, but "
-"when we display them we need a CellRenderer that's designed for pictures."
-msgstr ""
-"Se usa un «CellRendererText» para mostrar el texto, y un «CellRendererPixbuf» "
-"para mostrar los iconos. Se pueden almacenar los nombres de los tipos del "
-"almacén de iconos como cadenas, pero cuando se muestran se necesita un "
-"«CellRenderer» diseñado para imágenes."
-
-#. (itstool) path: note/p
-#: C/combobox.js.page:147
-msgid ""
-"Just like with a TreeView, the \"model\" (in this case a ListStore) and the "
-"\"view\" (in this case our ComboBox) are separate. Because of that, we can "
-"do things like have the columns in one order in the ListStore, and then pack "
-"the CellRenderers that correspond to those columns into the ComboBox in a "
-"different order. We can even create a TreeView or other widget that shows "
-"the information in the ListStore in a different way, without it affecting "
-"our ComboBox."
-msgstr ""
-"Al igual que con un «TreeView», el «modelo» (en este caso un «ListStore») y la "
-"«vista» (en este caso el «ComboBox») están separados. Es por esto que se "
-"pueden hacer cosas como tener las columnas en un orden en el «ListStore», y "
-"después empaquetar los «CellRenderer» que les corresponden en el «ComboBox» en "
-"un orden diferente. Incluso se puede crear un «TreeView» u otro widget que "
-"muestre la información en el «ListStore» de una manera diferente, sin afectar "
-"el «ComboBox»."
-
-#. (itstool) path: section/code
-#: C/combobox.js.page:149
-#, no-wrap
-msgid ""
-"\n"
-" // Set the first row in the combobox to be active on startup\n"
-" this._comboBox.set_active (0);\n"
-"\n"
-" // Connect the combobox's 'changed' signal to our callback function\n"
-" this._comboBox.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
-msgstr ""
-"\n"
-" // Set the first row in the combobox to be active on startup\n"
-" this._comboBox.set_active (0);\n"
-"\n"
-" // Connect the combobox's 'changed' signal to our callback function\n"
-" this._comboBox.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
-
-#. (itstool) path: section/p
-#: C/combobox.js.page:156
-msgid ""
-"We want the \"Select\" text to be the part people see at first, that gets "
-"them to click on the ComboBox. So we set it to be the active entry. We also "
-"connect the ComboBox's <file>changed</file> signal to a callback function, "
-"so that any time someone clicks on a new option something happens. In this "
-"case, we're just going to show a popup with a little haiku."
-msgstr ""
-"Se quiere que el texto «Select» sea la parte que la gente ve al principio, "
-"que les haga pulsar el «ComboBox»; por lo que se establece como entrada "
-"activa. También se conecta la señal <file>changed</file> del «ComboBox» a una "
-"función de retorno de llamada, para que siempre que alguien pulse una opción "
-"nueva suceda algo. En este caso, sólo se va a mostrar una ventana emergente "
-"con un pequeño «haiku»."
-
-#. (itstool) path: section/code
-#: C/combobox.js.page:158
-#, no-wrap
-msgid ""
-"\n"
-" // Add the combobox to the window\n"
-" this._window.add (this._comboBox);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-msgstr ""
-"\n"
-" // Add the combobox to the window\n"
-" this._window.add (this._comboBox);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/combobox.js.page:166
-msgid ""
-"Finally, we add the ComboBox to the window, and tell the window to show "
-"itself and everything inside it."
-msgstr ""
-"Finalmente, se añade el «ComboBox» a la ventana, y se le dice que se muestre "
-"con todo lo que contiene."
-
-#. (itstool) path: section/code
-#: C/combobox.js.page:171
-#, no-wrap
-msgid ""
-"\n"
-" _selected: function () {\n"
-"\n"
-" // The silly pseudohaiku that we'll use for our messagedialog\n"
-" let haiku = [\"\",\n"
-" \"You ask for the new\\nwith no thought for the aged\\nlike fallen leaves trod.\",\n"
-" \"Like a simple clam\\nrevealing a lustrous pearl\\nit opens for you.\",\n"
-" \"A moment in time\\na memory on the breeze\\nthese things can't be saved.\"];\n"
-msgstr ""
-"\n"
-" _selected: function () {\n"
-"\n"
-" // The silly pseudohaiku that we'll use for our messagedialog\n"
-" let haiku = [\"\",\n"
-" \"You ask for the new\\nwith no thought for the aged\\nlike fallen leaves trod.\",\n"
-" \"Like a simple clam\\nrevealing a lustrous pearl\\nit opens for you.\",\n"
-" \"A moment in time\\na memory on the breeze\\nthese things can't be saved.\"];\n"
-
-#. (itstool) path: section/p
-#: C/combobox.js.page:180
-msgid ""
-"We're going to create a pop-up <link xref=\"messagedialog.js"
-"\">MessageDialog</link>, which shows you a silly haiku based on which distro "
-"you select. First, we create the array of haiku to use. Since the first "
-"string in our ComboBox is just the \"Select\" message, we make the first "
-"string in our array blank."
-msgstr ""
-"Se va a crear un <link xref=\"messagedialog.js\">MessageDialog</link> "
-"emergente, que muestra un «haiku» tonto de acuerdo a qué distribución "
-"seleccione. Primero, se crea la matriz de «haiku». Dado que la primera cadena "
-"en el «ComboBox» es sólo el mensaje «Select», la primera cadena en la matriz "
-"se hace vacía."
-
-#. (itstool) path: section/code
-#: C/combobox.js.page:182
-#, no-wrap
-msgid ""
-"\n"
-" // Which combobox item is active?\n"
-" let activeItem = this._comboBox.get_active();\n"
-"\n"
-" // No messagedialog if you choose \"Select\"\n"
-" if (activeItem != 0) {\n"
-" this._popUp = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" buttons: Gtk.ButtonsType.OK,\n"
-" message_type: Gtk.MessageType.INFO,\n"
-" text: haiku[activeItem]});\n"
-"\n"
-" // Connect the OK button to a handler function\n"
-" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
-"\n"
-" // Show the messagedialog\n"
-" this._popUp.show();\n"
-" }\n"
-"\n"
-" },\n"
-msgstr ""
-"\n"
-" // Which combobox item is active?\n"
-" let activeItem = this._comboBox.get_active();\n"
-"\n"
-" // No messagedialog if you choose \"Select\"\n"
-" if (activeItem != 0) {\n"
-" this._popUp = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" buttons: Gtk.ButtonsType.OK,\n"
-" message_type: Gtk.MessageType.INFO,\n"
-" text: haiku[activeItem]});\n"
-"\n"
-" // Connect the OK button to a handler function\n"
-" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
-"\n"
-" // Show the messagedialog\n"
-" this._popUp.show();\n"
-" }\n"
-"\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/combobox.js.page:204
-msgid ""
-"Before showing a MessageDialog, we first test to make sure you didn't choose "
-"the \"Select\" message. After that, we set its text to be the haiku in the "
-"array that corresponds to the active entry in our ComboBoxText. We do that "
-"using the <file>get_active</file> method, which returns the number ID of "
-"your selection."
-msgstr ""
-"Antes de mostrar un «MessageDialog», primero se verifica que no se eligió el "
-"mensaje «Select». Después de eso, se establece su texto al «haiku» en la "
-"matriz que le corresponde a la entrada activa en el «ComboBoxText». Esto se "
-"hace usando el método <file>get_active</file>, que devuelve la "
-"identificación numérica de su selección."
-
-#. (itstool) path: note/p
-#: C/combobox.js.page:205
-msgid ""
-"Other methods you can use include <file>get_active_id</file>, which returns "
-"the text ID assigned by <file>append</file>, and <file>get_active_text</"
-"file>, which returns the full text of the string you selected."
-msgstr ""
-"Otros métodos que puede usar incluyen <file>get_active_id</file>, que "
-"devuelve la identificación de texto que asignó <file>append</file>, y "
-"<file>get_active_text</file>, que devuelve el texto completo de la cadena "
-"que seleccionó."
-
-#. (itstool) path: section/code
-#: C/combobox.js.page:219
-#, no-wrap
-msgid ""
-"\n"
-"// Run the application\n"
-"let app = new ComboBoxExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"// Run the application\n"
-"let app = new ComboBoxExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/p
-#: C/combobox.js.page:224
-msgid ""
-"Finally, we create a new instance of the finished ComboBoxExample class, and "
-"set the application running."
-msgstr ""
-"Finalmente, se crea una instancia nueva de la clase «ComboBoxExample» "
-"terminada, y se ejecuta la aplicación."
-
-#. (itstool) path: section/code
-#: C/combobox.js.page:229
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const GObject = imports.gi.GObject;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ComboBoxExample = new Lang.Class ({\n"
-" Name: 'ComboBox Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jscombobox'});\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Welcome to GNOME\",\n"
-" default_width: 200,\n"
-" border_width: 10 });\n"
-"\n"
-" // Create the liststore to put our options in\n"
-" this._listStore = new Gtk.ListStore();\n"
-" this._listStore.set_column_types ([\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING]);\n"
-"\n"
-" // This array holds our list of options and their icons\n"
-" let options = [{ name: \"Select\" },\n"
-" { name: \"New\", icon: Gtk.STOCK_NEW },\n"
-" { name: \"Open\", icon: Gtk.STOCK_OPEN },\n"
-" { name: \"Save\", icon: Gtk.STOCK_SAVE }];\n"
-"\n"
-" // Put the options in the liststore\n"
-" for (let i = 0; i < options.length; i++ ) {\n"
-" let option = options[i];\n"
-" let iter = this._listStore.append();\n"
-" this._listStore.set (iter, [0], [option.name]);\n"
-" if ('icon' in option)\n"
-" this._listStore.set (iter, [1], [option.icon]);\n"
-" }\n"
-"\n"
-" // Create the combobox\n"
-" this._comboBox = new Gtk.ComboBox({\n"
-" model: this._listStore});\n"
-"\n"
-" // Create some cellrenderers for the items in each column\n"
-" let rendererPixbuf = new Gtk.CellRendererPixbuf();\n"
-" let rendererText = new Gtk.CellRendererText();\n"
-"\n"
-" // Pack the renderers into the combobox in the order we want to see\n"
-" this._comboBox.pack_start (rendererPixbuf, false);\n"
-" this._comboBox.pack_start (rendererText, false);\n"
-"\n"
-" // Set the renderers to use the information from our liststore\n"
-" this._comboBox.add_attribute (rendererText, \"text\", 0);\n"
-" this._comboBox.add_attribute (rendererPixbuf, \"stock_id\", 1);\n"
-"\n"
-" // Set the first row in the combobox to be active on startup\n"
-" this._comboBox.set_active (0);\n"
-"\n"
-" // Connect the combobox's 'changed' signal to our callback function\n"
-" this._comboBox.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
-"\n"
-" // Add the combobox to the window\n"
-" this._window.add (this._comboBox);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _onComboChanged: function () {\n"
-"\n"
-" // The silly pseudohaiku that we'll use for our messagedialog\n"
-" let haiku = [\"\",\n"
-" \"You ask for the new\\nwith no thought for the aged\\nlike fallen leaves trod.\",\n"
-" \"Like a simple clam\\nrevealing a lustrous pearl\\nit opens for you.\",\n"
-" \"A moment in time\\na memory on the breeze\\nthese things can't be saved.\"];\n"
-"\n"
-" // Which combobox item is active?\n"
-" let activeItem = this._comboBox.get_active();\n"
-"\n"
-" // No messagedialog if you choose \"Select\"\n"
-" if (activeItem != 0) {\n"
-" this._popUp = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" buttons: Gtk.ButtonsType.OK,\n"
-" message_type: Gtk.MessageType.INFO,\n"
-" text: haiku[activeItem]});\n"
-"\n"
-" // Connect the OK button to a handler function\n"
-" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
-"\n"
-" // Show the messagedialog\n"
-" this._popUp.show();\n"
-" }\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _onDialogResponse: function () {\n"
-"\n"
-" this._popUp.destroy ();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ComboBoxExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const GObject = imports.gi.GObject;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ComboBoxExample = new Lang.Class ({\n"
-" Name: 'ComboBox Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jscombobox'});\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Welcome to GNOME\",\n"
-" default_width: 200,\n"
-" border_width: 10 });\n"
-"\n"
-" // Create the liststore to put our options in\n"
-" this._listStore = new Gtk.ListStore();\n"
-" this._listStore.set_column_types ([\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING]);\n"
-"\n"
-" // This array holds our list of options and their icons\n"
-" let options = [{ name: \"Select\" },\n"
-" { name: \"New\", icon: Gtk.STOCK_NEW },\n"
-" { name: \"Open\", icon: Gtk.STOCK_OPEN },\n"
-" { name: \"Save\", icon: Gtk.STOCK_SAVE }];\n"
-"\n"
-" // Put the options in the liststore\n"
-" for (let i = 0; i < options.length; i++ ) {\n"
-" let option = options[i];\n"
-" let iter = this._listStore.append();\n"
-" this._listStore.set (iter, [0], [option.name]);\n"
-" if ('icon' in option)\n"
-" this._listStore.set (iter, [1], [option.icon]);\n"
-" }\n"
-"\n"
-" // Create the combobox\n"
-" this._comboBox = new Gtk.ComboBox({\n"
-" model: this._listStore});\n"
-"\n"
-" // Create some cellrenderers for the items in each column\n"
-" let rendererPixbuf = new Gtk.CellRendererPixbuf();\n"
-" let rendererText = new Gtk.CellRendererText();\n"
-"\n"
-" // Pack the renderers into the combobox in the order we want to see\n"
-" this._comboBox.pack_start (rendererPixbuf, false);\n"
-" this._comboBox.pack_start (rendererText, false);\n"
-"\n"
-" // Set the renderers to use the information from our liststore\n"
-" this._comboBox.add_attribute (rendererText, \"text\", 0);\n"
-" this._comboBox.add_attribute (rendererPixbuf, \"stock_id\", 1);\n"
-"\n"
-" // Set the first row in the combobox to be active on startup\n"
-" this._comboBox.set_active (0);\n"
-"\n"
-" // Connect the combobox's 'changed' signal to our callback function\n"
-" this._comboBox.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
-"\n"
-" // Add the combobox to the window\n"
-" this._window.add (this._comboBox);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _onComboChanged: function () {\n"
-"\n"
-" // The silly pseudohaiku that we'll use for our messagedialog\n"
-" let haiku = [\"\",\n"
-" \"You ask for the new\\nwith no thought for the aged\\nlike fallen leaves trod.\",\n"
-" \"Like a simple clam\\nrevealing a lustrous pearl\\nit opens for you.\",\n"
-" \"A moment in time\\na memory on the breeze\\nthese things can't be saved.\"];\n"
-"\n"
-" // Which combobox item is active?\n"
-" let activeItem = this._comboBox.get_active();\n"
-"\n"
-" // No messagedialog if you choose \"Select\"\n"
-" if (activeItem != 0) {\n"
-" this._popUp = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" buttons: Gtk.ButtonsType.OK,\n"
-" message_type: Gtk.MessageType.INFO,\n"
-" text: haiku[activeItem]});\n"
-"\n"
-" // Connect the OK button to a handler function\n"
-" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
-"\n"
-" // Show the messagedialog\n"
-" this._popUp.show();\n"
-" }\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _onDialogResponse: function () {\n"
-"\n"
-" this._popUp.destroy ();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ComboBoxExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/combobox.js.page:240
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
-"CellRendererPixbuf.html\">Gtk.CellRendererPixbuf</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
-"CellRendererPixbuf.html\">Gtk.CellRendererPixbuf</link>"
-
-#. (itstool) path: item/p
-#: C/combobox.js.page:241 C/treeview_simple_liststore.js.page:279
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
-"CellRendererText.html\">Gtk.CellRendererText</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
-"CellRendererText.html\">Gtk.CellRendererText</link>"
-
-#. (itstool) path: item/p
-#: C/combobox.js.page:242
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ComboBox.html"
-"\">Gtk.ComboBox</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ComboBox.html"
-"\">Gtk.ComboBox</link>"
-
-#. (itstool) path: item/p
-#: C/combobox.js.page:243 C/treeview_simple_liststore.js.page:280
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ListStore.html"
-"\">Gtk.ListStore</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ListStore.html"
-"\">Gtk.ListStore</link>"
-
-#. (itstool) path: item/p
-#: C/combobox.js.page:245 C/treeview_simple_liststore.js.page:281
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TreeIter.html"
-"\">Gtk.TreeIter</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TreeIter.html"
-"\">Gtk.TreeIter</link>"
-
-#. (itstool) path: info/title
-#: C/combobox.py.page:8 C/combobox_multicolumn.py.page:8
-msgctxt "text"
-msgid "ComboBox (Python)"
-msgstr "ComboBox (Python)"
-
-#. (itstool) path: page/title
-#: C/combobox.py.page:23
-msgid "ComboBox (one column)"
-msgstr "ComboBox (una columna)"
-
-#. (itstool) path: page/p
-#: C/combobox.py.page:25 C/combobox_multicolumn.py.page:24
-#: C/combobox_multicolumn.vala.page:24
-msgid "This ComboBox prints to the terminal your selection when you change it."
-msgstr ""
-"Esta ComboBox imprime su selección en la terminal cuando cambia la cambia."
-
-#. (itstool) path: section/code
-#: C/combobox.py.page:31
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "import sys\n"
-#| "\n"
-#| "distros = [[\"Select distribution\"], [\"Fedora\"], [\"Mint\"], [\"Suse\"]]\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-#| " self.set_default_size(200, -1)\n"
-#| " self.set_border_width(10)\n"
-#| "\n"
-#| " # the data in the model, of type string\n"
-#| " listmodel = Gtk.ListStore(str)\n"
-#| " # append the data in the model\n"
-#| " for i in range(len(distros)):\n"
-#| " listmodel.append(distros[i])\n"
-#| "\n"
-#| " # a combobox to see the data stored in the model\n"
-#| " combobox = Gtk.ComboBox(model=listmodel)\n"
-#| "\n"
-#| " # a cellrenderer to render the text\n"
-#| " cell = Gtk.CellRendererText()\n"
-#| "\n"
-#| " # pack the cell into the beginning of the combobox, allocating\n"
-#| " # no more space than needed\n"
-#| " combobox.pack_start(cell, False)\n"
-#| " # associate a property (\"text\") of the cellrenderer (cell) to a column (column 0)\n"
-#| " # in the model used by the combobox\n"
-#| " combobox.add_attribute(cell, \"text\", 0)\n"
-#| "\n"
-#| " # the first row is the active one by default at the beginning\n"
-#| " combobox.set_active(0)\n"
-#| "\n"
-#| " # connect the signal emitted when a row is selected to the callback\n"
-#| " # function\n"
-#| " combobox.connect(\"changed\", self.on_changed)\n"
-#| "\n"
-#| " # add the combobox to the window\n"
-#| " self.add(combobox)\n"
-#| "\n"
-#| " def on_changed(self, combo):\n"
-#| " # if the row selected is not the first one, write its value on the\n"
-#| " # terminal\n"
-#| " if combo.get_active() != 0:\n"
-#| " print \"You chose \" + str(distros[combo.get_active()][0]) + \".\"\n"
-#| " return True\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"distros = [[\"Select distribution\"], [\"Fedora\"], [\"Mint\"], [\"Suse\"]]\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-" self.set_default_size(200, -1)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # the data in the model, of type string\n"
-" listmodel = Gtk.ListStore(str)\n"
-" # append the data in the model\n"
-" for i in range(len(distros)):\n"
-" listmodel.append(distros[i])\n"
-"\n"
-" # a combobox to see the data stored in the model\n"
-" combobox = Gtk.ComboBox(model=listmodel)\n"
-"\n"
-" # a cellrenderer to render the text\n"
-" cell = Gtk.CellRendererText()\n"
-"\n"
-" # pack the cell into the beginning of the combobox, allocating\n"
-" # no more space than needed\n"
-" combobox.pack_start(cell, False)\n"
-" # associate a property (\"text\") of the cellrenderer (cell) to a column (column 0)\n"
-" # in the model used by the combobox\n"
-" combobox.add_attribute(cell, \"text\", 0)\n"
-"\n"
-" # the first row is the active one by default at the beginning\n"
-" combobox.set_active(0)\n"
-"\n"
-" # connect the signal emitted when a row is selected to the callback\n"
-" # function\n"
-" combobox.connect(\"changed\", self.on_changed)\n"
-"\n"
-" # add the combobox to the window\n"
-" self.add(combobox)\n"
-"\n"
-" def on_changed(self, combo):\n"
-" # if the row selected is not the first one, write its value on the\n"
-" # terminal\n"
-" if combo.get_active() != 0:\n"
-" print(\"You chose \" + str(distros[combo.get_active()][0]) + \".\")\n"
-" return True\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"distros = [[\"Select distribution\"], [\"Fedora\"], [\"Mint\"], [\"Suse\"]]\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-" self.set_default_size(200, -1)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # the data in the model, of type string\n"
-" listmodel = Gtk.ListStore(str)\n"
-" # append the data in the model\n"
-" for i in range(len(distros)):\n"
-" listmodel.append(distros[i])\n"
-"\n"
-" # a combobox to see the data stored in the model\n"
-" combobox = Gtk.ComboBox(model=listmodel)\n"
-"\n"
-" # a cellrenderer to render the text\n"
-" cell = Gtk.CellRendererText()\n"
-"\n"
-" # pack the cell into the beginning of the combobox, allocating\n"
-" # no more space than needed\n"
-" combobox.pack_start(cell, False)\n"
-" # associate a property (\"text\") of the cellrenderer (cell) to a column (column 0)\n"
-" # in the model used by the combobox\n"
-" combobox.add_attribute(cell, \"text\", 0)\n"
-"\n"
-" # the first row is the active one by default at the beginning\n"
-" combobox.set_active(0)\n"
-"\n"
-" # connect the signal emitted when a row is selected to the callback\n"
-" # function\n"
-" combobox.connect(\"changed\", self.on_changed)\n"
-"\n"
-" # add the combobox to the window\n"
-" self.add(combobox)\n"
-"\n"
-" def on_changed(self, combo):\n"
-" # if the row selected is not the first one, write its value on the\n"
-" # terminal\n"
-" if combo.get_active() != 0:\n"
-" print(\"You chose \" + str(distros[combo.get_active()][0]) + \".\")\n"
-" return True\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/combobox.py.page:35 C/combobox_multicolumn.py.page:35
-msgid "Useful methods for a ComboBox widget"
-msgstr "Métodos útiles para un widget «ComboBox»"
-
-#. (itstool) path: section/p
-#: C/combobox.py.page:36 C/combobox_multicolumn.py.page:36
-msgid ""
-"The ComboBox widget is designed around a <em>Model/View/Controller</em> "
-"design: the <em>Model</em> stores the data; the <em>View</em> gets change "
-"notifications and displays the content of the model; the <em>Controller</"
-"em>, finally, changes the state of the model and notifies the view of these "
-"changes. For more information and for a list of useful methods for ComboBox "
-"see <link xref=\"model-view-controller.py\"/>."
-msgstr ""
-"El widget «ComboBox» está desarrollado sobre el diseño <em>Modelo/Vista/"
-"Controlador</em>: el <em>Modelo</em> almacena los datos, la <em>Vista</em> "
-"obtiene las notificaciones de cambio y muestra el contenido del modelo; el "
-"<em>Controlador</em>, finalmente, cambia el estado del modelo y le notifica "
-"a la vista los cambios. Para más información, y una lista de métodos útiles "
-"de «ComboBox» y «TreeModel», consulte la <link xref=\"model-view-controller.py"
-"\"/>."
-
-#. (itstool) path: section/p
-#: C/combobox.py.page:37
-msgid ""
-"In line 35 the <code>\"changed\"</code> signal is connected to the callback "
-"function <code>on_changed()</code> using <code><var>widget</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 35 la señal <code>«changed»</code> se conecta a la función de "
-"retorno de llamada <code>on_changed()</code> usando <code><var>widget</var>."
-"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
-"explicación más detallada."
-
-#. (itstool) path: item/p
-#: C/combobox.py.page:45 C/combobox_multicolumn.py.page:44
-#: C/model-view-controller.py.page:190
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkComboBox.html"
-"\">GtkComboBox</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkComboBox.html"
-"\">GtkComboBox</link>"
-
-#. (itstool) path: item/p
-#: C/combobox.py.page:46 C/combobox_multicolumn.py.page:45
-#: C/treeview_advanced_liststore.py.page:46
-#: C/treeview_simple_liststore.py.page:47
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkListStore.html"
-"\">GtkListStore</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkListStore.html"
-"\">GtkListStore</link>"
-
-#. (itstool) path: item/p
-#: C/combobox.py.page:47 C/combobox_multicolumn.py.page:46
-#: C/treeview_advanced_liststore.py.page:47
-#: C/treeview_cellrenderertoggle.py.page:47
-#: C/treeview_simple_liststore.py.page:48 C/treeview_treestore.py.page:47
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererText."
-"html\">GtkCellRendererText</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererText."
-"html\">GtkCellRendererText</link>"
-
-#. (itstool) path: item/p
-#: C/combobox.py.page:48
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellLayout.html"
-"\">GtkCellLayout</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellLayout.html"
-"\">GtkCellLayout</link>"
-
-#. (itstool) path: item/p
-#: C/combobox.py.page:49 C/combobox_multicolumn.py.page:49
-#: C/treeview_advanced_liststore.py.page:49
-#: C/treeview_simple_liststore.py.page:50
-msgid ""
-"<link href=\"http://git.gnome.org/browse/pygobject/tree/gi/overrides/Gtk.py"
-"\">pygobject - Python bindings for GObject Introspection</link>"
-msgstr ""
-"<link href=\"http://git.gnome.org/browse/pygobject/tree/gi/overrides/Gtk.py"
-"\">pygobject: vinculaciones de Python para introspección de GObject</link>"
-
-#. (itstool) path: info/title
-#: C/combobox.vala.page:8 C/combobox_multicolumn.vala.page:8
-msgctxt "text"
-msgid "ComboBox (Vala)"
-msgstr "ComboBox (Vala)"
-
-#. (itstool) path: page/code
-#: C/combobox.vala.page:25
-#, no-wrap
-msgid ""
-"/* A window in the application */\n"
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* An instance array of linux distributions belonging to this window. */\n"
-"\tstring[] distros = {\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"};\n"
-"\n"
-"\t/* This enum makes the code more readable when we refer to\n"
-"\t * the column as Column.DISTRO, instead of just 0.\n"
-"\t */\n"
-"\tenum Column {\n"
-"\t\tDISTRO\n"
-"\t}\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
-"\n"
-"\t\tthis.set_default_size (200, -1);\n"
-"\t\tthis.border_width = 10;\n"
-"\n"
-"\t\tGtk.ListStore liststore = new Gtk.ListStore (1, typeof (string));\n"
-"\n"
-"\t\tfor (int i = 0; i < distros.length; i++){\n"
-"\t\t\tGtk.TreeIter iter;\n"
-"\t\t\tliststore.append (out iter);\n"
-"\t\t\tliststore.set (iter, Column.DISTRO, distros[i]);\n"
-"\t\t}\n"
-"\n"
-"\t\tGtk.ComboBox combobox = new Gtk.ComboBox.with_model (liststore);\n"
-"\t\tGtk.CellRendererText cell = new Gtk.CellRendererText ();\n"
-"\t\tcombobox.pack_start (cell, false);\n"
-"\n"
-"\t\tcombobox.set_attributes (cell, \"text\", Column.DISTRO);\n"
-"\n"
-"\t\t/* Set the first item in the list to be selected (active). */\n"
-"\t\tcombobox.set_active (0);\n"
-"\n"
-"\t\t/* Connect the 'changed' signal of the combobox\n"
-"\t\t * to the signal handler (aka. callback function).\n"
-"\t\t */\n"
-"\t\tcombobox.changed.connect (this.item_changed);\n"
-"\n"
-"\t\t/* Add the combobox to this window */\n"
-"\t\tthis.add (combobox);\n"
-"\t\tcombobox.show ();\n"
-"\t}\n"
-"\n"
-"\t/* Signal handler for the 'changed' signal of the combobox. */\n"
-"\tvoid item_changed (Gtk.ComboBox combo) {\n"
-"\t\tif (combo.get_active () !=0) {\n"
-"\t\t\tprint (\"You chose \" + distros [combo.get_active ()] +\"\\n\");\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application */\n"
-"class MyApplication : Gtk.Application {\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the activate signal of GLib.Application,\n"
-"\t * which is inherited by Gtk.Application.\n"
-"\t */\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t/* Create the window of this application\n"
-"\t\t * and show it.\n"
-"\t\t */\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application */\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"/* A window in the application */\n"
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* An instance array of linux distributions belonging to this window. */\n"
-"\tstring[] distros = {\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"};\n"
-"\n"
-"\t/* This enum makes the code more readable when we refer to\n"
-"\t * the column as Column.DISTRO, instead of just 0.\n"
-"\t */\n"
-"\tenum Column {\n"
-"\t\tDISTRO\n"
-"\t}\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
-"\n"
-"\t\tthis.set_default_size (200, -1);\n"
-"\t\tthis.border_width = 10;\n"
-"\n"
-"\t\tGtk.ListStore liststore = new Gtk.ListStore (1, typeof (string));\n"
-"\n"
-"\t\tfor (int i = 0; i < distros.length; i++){\n"
-"\t\t\tGtk.TreeIter iter;\n"
-"\t\t\tliststore.append (out iter);\n"
-"\t\t\tliststore.set (iter, Column.DISTRO, distros[i]);\n"
-"\t\t}\n"
-"\n"
-"\t\tGtk.ComboBox combobox = new Gtk.ComboBox.with_model (liststore);\n"
-"\t\tGtk.CellRendererText cell = new Gtk.CellRendererText ();\n"
-"\t\tcombobox.pack_start (cell, false);\n"
-"\n"
-"\t\tcombobox.set_attributes (cell, \"text\", Column.DISTRO);\n"
-"\n"
-"\t\t/* Set the first item in the list to be selected (active). */\n"
-"\t\tcombobox.set_active (0);\n"
-"\n"
-"\t\t/* Connect the 'changed' signal of the combobox\n"
-"\t\t * to the signal handler (aka. callback function).\n"
-"\t\t */\n"
-"\t\tcombobox.changed.connect (this.item_changed);\n"
-"\n"
-"\t\t/* Add the combobox to this window */\n"
-"\t\tthis.add (combobox);\n"
-"\t\tcombobox.show ();\n"
-"\t}\n"
-"\n"
-"\t/* Signal handler for the 'changed' signal of the combobox. */\n"
-"\tvoid item_changed (Gtk.ComboBox combo) {\n"
-"\t\tif (combo.get_active () !=0) {\n"
-"\t\t\tprint (\"You chose \" + distros [combo.get_active ()] +\"\\n\");\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application */\n"
-"class MyApplication : Gtk.Application {\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the activate signal of GLib.Application,\n"
-"\t * which is inherited by Gtk.Application.\n"
-"\t */\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t/* Create the window of this application\n"
-"\t\t * and show it.\n"
-"\t\t */\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application */\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/combobox.vala.page:30 C/treeview_simple_liststore.vala.page:33
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ListStore.html\">Gtk."
-"ListStore</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ListStore.html\">Gtk."
-"ListStore</link>"
-
-#. (itstool) path: item/p
-#: C/combobox.vala.page:31
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ComboBox.html\">Gtk."
-"ComboBox</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ComboBox.html\">Gtk."
-"ComboBox</link>"
-
-#. (itstool) path: item/p
-#: C/combobox.vala.page:32
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererText.html\">Gtk."
-"CellRendererText</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererText.html\">Gtk."
-"CellRendererText</link>"
-
-#. (itstool) path: item/p
-#: C/combobox.vala.page:33
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellLayout.set_attributes."
-"html\">set_attributes</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellLayout.set_attributes."
-"html\">set_attributes</link>"
-
-#. (itstool) path: page/title
-#: C/combobox_multicolumn.py.page:22 C/combobox_multicolumn.vala.page:22
-msgid "ComboBox (two columns)"
-msgstr "ComboBox (dos columnas)"
-
-#. (itstool) path: section/code
-#: C/combobox_multicolumn.py.page:30
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "import sys\n"
-#| "\n"
-#| "actions = [[\"Select\", None],\n"
-#| " [\"New\", Gtk.STOCK_NEW],\n"
-#| " [\"Open\", Gtk.STOCK_OPEN],\n"
-#| " [\"Save\", Gtk.STOCK_SAVE]]\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-#| " self.set_default_size(200, -1)\n"
-#| " self.set_border_width(10)\n"
-#| "\n"
-#| " # the data in the model, of type string on two columns\n"
-#| " listmodel = Gtk.ListStore(str, str)\n"
-#| " # append the data\n"
-#| " for i in range(len(actions)):\n"
-#| " listmodel.append(actions[i])\n"
-#| "\n"
-#| " # a combobox to see the data stored in the model\n"
-#| " combobox = Gtk.ComboBox(model=listmodel)\n"
-#| "\n"
-#| " # cellrenderers to render the data\n"
-#| " renderer_pixbuf = Gtk.CellRendererPixbuf()\n"
-#| " renderer_text = Gtk.CellRendererText()\n"
-#| "\n"
-#| " # we pack the cell into the beginning of the combobox, allocating\n"
-#| " # no more space than needed;\n"
-#| " # first the image, then the text;\n"
-#| " # note that it does not matter in which order they are in the model,\n"
-#| " # the visualization is decided by the order of the cellrenderers\n"
-#| " combobox.pack_start(renderer_pixbuf, False)\n"
-#| " combobox.pack_start(renderer_text, False)\n"
-#| "\n"
-#| " # associate a property of the cellrenderer to a column in the model\n"
-#| " # used by the combobox\n"
-#| " combobox.add_attribute(renderer_text, \"text\", 0)\n"
-#| " combobox.add_attribute(renderer_pixbuf, \"stock_id\", 1)\n"
-#| "\n"
-#| " # the first row is the active one at the beginning\n"
-#| " combobox.set_active(0)\n"
-#| "\n"
-#| " # connect the signal emitted when a row is selected to the callback\n"
-#| " # function\n"
-#| " combobox.connect(\"changed\", self.on_changed)\n"
-#| "\n"
-#| " # add the combobox to the window\n"
-#| " self.add(combobox)\n"
-#| "\n"
-#| " def on_changed(self, combo):\n"
-#| " # if the row selected is not the first one, write on the terminal\n"
-#| " # the value of the first column in the model\n"
-#| " if combo.get_active() != 0:\n"
-#| " print \"You chose \" + str(actions[combo.get_active()][0]) + \"\\n\"\n"
-#| " return True\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"actions = [[\"Select\", None],\n"
-" [\"New\", Gtk.STOCK_NEW],\n"
-" [\"Open\", Gtk.STOCK_OPEN],\n"
-" [\"Save\", Gtk.STOCK_SAVE]]\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-" self.set_default_size(200, -1)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # the data in the model, of type string on two columns\n"
-" listmodel = Gtk.ListStore(str, str)\n"
-" # append the data\n"
-" for i in range(len(actions)):\n"
-" listmodel.append(actions[i])\n"
-"\n"
-" # a combobox to see the data stored in the model\n"
-" combobox = Gtk.ComboBox(model=listmodel)\n"
-"\n"
-" # cellrenderers to render the data\n"
-" renderer_pixbuf = Gtk.CellRendererPixbuf()\n"
-" renderer_text = Gtk.CellRendererText()\n"
-"\n"
-" # we pack the cell into the beginning of the combobox, allocating\n"
-" # no more space than needed;\n"
-" # first the image, then the text;\n"
-" # note that it does not matter in which order they are in the model,\n"
-" # the visualization is decided by the order of the cellrenderers\n"
-" combobox.pack_start(renderer_pixbuf, False)\n"
-" combobox.pack_start(renderer_text, False)\n"
-"\n"
-" # associate a property of the cellrenderer to a column in the model\n"
-" # used by the combobox\n"
-" combobox.add_attribute(renderer_text, \"text\", 0)\n"
-" combobox.add_attribute(renderer_pixbuf, \"stock_id\", 1)\n"
-"\n"
-" # the first row is the active one at the beginning\n"
-" combobox.set_active(0)\n"
-"\n"
-" # connect the signal emitted when a row is selected to the callback\n"
-" # function\n"
-" combobox.connect(\"changed\", self.on_changed)\n"
-"\n"
-" # add the combobox to the window\n"
-" self.add(combobox)\n"
-"\n"
-" def on_changed(self, combo):\n"
-" # if the row selected is not the first one, write on the terminal\n"
-" # the value of the first column in the model\n"
-" if combo.get_active() != 0:\n"
-" print(\"You chose \" + str(actions[combo.get_active()][0]) + \"\\n\")\n"
-" return True\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"actions = [[\"Select\", None],\n"
-" [\"New\", Gtk.STOCK_NEW],\n"
-" [\"Open\", Gtk.STOCK_OPEN],\n"
-" [\"Save\", Gtk.STOCK_SAVE]]\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-" self.set_default_size(200, -1)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # the data in the model, of type string on two columns\n"
-" listmodel = Gtk.ListStore(str, str)\n"
-" # append the data\n"
-" for i in range(len(actions)):\n"
-" listmodel.append(actions[i])\n"
-"\n"
-" # a combobox to see the data stored in the model\n"
-" combobox = Gtk.ComboBox(model=listmodel)\n"
-"\n"
-" # cellrenderers to render the data\n"
-" renderer_pixbuf = Gtk.CellRendererPixbuf()\n"
-" renderer_text = Gtk.CellRendererText()\n"
-"\n"
-" # we pack the cell into the beginning of the combobox, allocating\n"
-" # no more space than needed;\n"
-" # first the image, then the text;\n"
-" # note that it does not matter in which order they are in the model,\n"
-" # the visualization is decided by the order of the cellrenderers\n"
-" combobox.pack_start(renderer_pixbuf, False)\n"
-" combobox.pack_start(renderer_text, False)\n"
-"\n"
-" # associate a property of the cellrenderer to a column in the model\n"
-" # used by the combobox\n"
-" combobox.add_attribute(renderer_text, \"text\", 0)\n"
-" combobox.add_attribute(renderer_pixbuf, \"stock_id\", 1)\n"
-"\n"
-" # the first row is the active one at the beginning\n"
-" combobox.set_active(0)\n"
-"\n"
-" # connect the signal emitted when a row is selected to the callback\n"
-" # function\n"
-" combobox.connect(\"changed\", self.on_changed)\n"
-"\n"
-" # add the combobox to the window\n"
-" self.add(combobox)\n"
-"\n"
-" def on_changed(self, combo):\n"
-" # if the row selected is not the first one, write on the terminal\n"
-" # the value of the first column in the model\n"
-" if combo.get_active() != 0:\n"
-" print(\"You chose \" + str(actions[combo.get_active()][0]) + \"\\n\")\n"
-" return True\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/p
-#: C/combobox_multicolumn.py.page:37
-msgid ""
-"In line 45 the <code>\"changed\"</code> signal is connected to the callback "
-"function <code>on_changed()</code> using <code><var>widget</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 45 la señal <code>«changed»</code> se conecta a la función de "
-"retorno de llamada <code>on_changed()</code> usando <code><var>widget</var>."
-"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
-"explicación más detallada."
-
-#. (itstool) path: item/p
-#: C/combobox_multicolumn.py.page:47
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererPixbuf."
-"html\">GtkCellRendererPixbuf</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererPixbuf."
-"html\">GtkCellRendererPixbuf</link>"
-
-#. (itstool) path: item/p
-#: C/combobox_multicolumn.py.page:48 C/combobox_multicolumn.vala.page:42
-#: C/toolbar.py.page:58
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/gtk3-Stock-Items.html"
-"\">Stock Items</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/gtk3-Stock-Items.html"
-"\">Elementos del almacén</link>"
-
-#. (itstool) path: section/code
-#: C/combobox_multicolumn.vala.page:30
-#, no-wrap
-msgid ""
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\tstring[] file = {\"Select\", \"New\", \"Open\", \"Save\"};\n"
-"\tstring[] stock_item = {\"\",\"gtk-new\", \"gtk-open\", \"gtk-save\"};\n"
-"\n"
-"\tenum Column {\n"
-"\t\tFILE,\n"
-"\t\tSTOCK_ITEM\t\n"
-"\t}\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
-"\n"
-"\t\tthis.set_default_size (200, -1);\n"
-"\t\tthis.border_width = 10;\n"
-"\n"
-"\t\tGtk.ListStore liststore = new Gtk.ListStore (2, typeof (string), typeof (string));\n"
-"\n"
-"\t\tfor (int i = 0; i < file.length; i++){\n"
-"\t\t\tGtk.TreeIter iter;\n"
-"\t\t\tliststore.append (out iter);\n"
-"\t\t\tliststore.set (iter, Column.FILE, file[i]);\n"
-"\t\t\tliststore.set (iter, Column.STOCK_ITEM, stock_item[i]);\n"
-"\t\t}\n"
-"\n"
-"\t\tGtk.ComboBox combobox = new Gtk.ComboBox.with_model (liststore);\n"
-"\n"
-"\t\t/* CellRenderers render the data. */\n"
-"\t\tGtk.CellRendererText cell = new Gtk.CellRendererText ();\n"
-"\t\tGtk.CellRendererPixbuf cell_pb = new Gtk.CellRendererPixbuf ();\n"
-"\t\t\n"
-" /* we pack the cell into the beginning of the combobox, allocating\n"
-"\t\t * no more space than needed;\n"
-"\t\t * first the image, then the text;\n"
-"\t\t * note that it does not matter in which order they are in the model,\n"
-"\t\t * the visualization is decided by the order of the cellrenderers\n"
-"\t\t */\n"
-"\t\tcombobox.pack_start (cell_pb, false);\n"
-"\t\tcombobox.pack_start (cell, false);\n"
-"\n"
-"\t\t/* associate a property of the cellrenderer to a column in the model\n"
-"\t\t * used by the combobox\n"
-"\t\t */\n"
-"\t\tcombobox.set_attributes (cell_pb, \"stock_id\", Column.STOCK_ITEM);\n"
-"\t\tcombobox.set_attributes (cell, \"text\", Column.FILE);\n"
-"\n"
-"\t\t/* Set the first item in the list to be selected (active). */\n"
-"\t\tcombobox.set_active (0);\n"
-"\n"
-"\t\t/* Connect the 'changed' signal of the combobox\n"
-"\t\t * to the signal handler (aka. callback function).\n"
-"\t\t */\n"
-"\t\tcombobox.changed.connect (this.item_changed);\n"
-"\n"
-"\t\t/* Add the combobox to this window */\n"
-"\t\tthis.add (combobox);\n"
-"\t\tcombobox.show ();\n"
-"\t}\n"
-"\n"
-"\tvoid item_changed (Gtk.ComboBox combo) {\n"
-"\t\tif (combo.get_active () !=0) {\n"
-"\t\t\tprint (\"You chose \" + file [combo.get_active ()] +\"\\n\");\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"class MyApplication : Gtk.Application {\n"
-" protected override void activate () {\n"
-" new MyWindow (this).show ();\n"
-" }\n"
-"}\n"
-"\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\tstring[] file = {\"Select\", \"New\", \"Open\", \"Save\"};\n"
-"\tstring[] stock_item = {\"\",\"gtk-new\", \"gtk-open\", \"gtk-save\"};\n"
-"\n"
-"\tenum Column {\n"
-"\t\tFILE,\n"
-"\t\tSTOCK_ITEM\t\n"
-"\t}\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
-"\n"
-"\t\tthis.set_default_size (200, -1);\n"
-"\t\tthis.border_width = 10;\n"
-"\n"
-"\t\tGtk.ListStore liststore = new Gtk.ListStore (2, typeof (string), typeof (string));\n"
-"\n"
-"\t\tfor (int i = 0; i < file.length; i++){\n"
-"\t\t\tGtk.TreeIter iter;\n"
-"\t\t\tliststore.append (out iter);\n"
-"\t\t\tliststore.set (iter, Column.FILE, file[i]);\n"
-"\t\t\tliststore.set (iter, Column.STOCK_ITEM, stock_item[i]);\n"
-"\t\t}\n"
-"\n"
-"\t\tGtk.ComboBox combobox = new Gtk.ComboBox.with_model (liststore);\n"
-"\n"
-"\t\t/* CellRenderers render the data. */\n"
-"\t\tGtk.CellRendererText cell = new Gtk.CellRendererText ();\n"
-"\t\tGtk.CellRendererPixbuf cell_pb = new Gtk.CellRendererPixbuf ();\n"
-"\t\t\n"
-" /* we pack the cell into the beginning of the combobox, allocating\n"
-"\t\t * no more space than needed;\n"
-"\t\t * first the image, then the text;\n"
-"\t\t * note that it does not matter in which order they are in the model,\n"
-"\t\t * the visualization is decided by the order of the cellrenderers\n"
-"\t\t */\n"
-"\t\tcombobox.pack_start (cell_pb, false);\n"
-"\t\tcombobox.pack_start (cell, false);\n"
-"\n"
-"\t\t/* associate a property of the cellrenderer to a column in the model\n"
-"\t\t * used by the combobox\n"
-"\t\t */\n"
-"\t\tcombobox.set_attributes (cell_pb, \"stock_id\", Column.STOCK_ITEM);\n"
-"\t\tcombobox.set_attributes (cell, \"text\", Column.FILE);\n"
-"\n"
-"\t\t/* Set the first item in the list to be selected (active). */\n"
-"\t\tcombobox.set_active (0);\n"
-"\n"
-"\t\t/* Connect the 'changed' signal of the combobox\n"
-"\t\t * to the signal handler (aka. callback function).\n"
-"\t\t */\n"
-"\t\tcombobox.changed.connect (this.item_changed);\n"
-"\n"
-"\t\t/* Add the combobox to this window */\n"
-"\t\tthis.add (combobox);\n"
-"\t\tcombobox.show ();\n"
-"\t}\n"
-"\n"
-"\tvoid item_changed (Gtk.ComboBox combo) {\n"
-"\t\tif (combo.get_active () !=0) {\n"
-"\t\t\tprint (\"You chose \" + file [combo.get_active ()] +\"\\n\");\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"class MyApplication : Gtk.Application {\n"
-" protected override void activate () {\n"
-" new MyWindow (this).show ();\n"
-" }\n"
-"}\n"
-"\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/combobox_multicolumn.vala.page:38
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ComboBox.html"
-"\">GtkComboBox</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ComboBox.html"
-"\">GtkComboBox</link>"
-
-#. (itstool) path: item/p
-#: C/combobox_multicolumn.vala.page:39
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ListStore.html"
-"\">GtkListStore</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ListStore.html"
-"\">GtkListStore</link>"
-
-#. (itstool) path: item/p
-#: C/combobox_multicolumn.vala.page:40
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererText.html"
-"\">GtkCellRendererText</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererText.html"
-"\">GtkCellRendererText</link>"
-
-#. (itstool) path: item/p
-#: C/combobox_multicolumn.vala.page:41
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererPixbuf.html"
-"\">GtkCellRendererPixbuf</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererPixbuf.html"
-"\">GtkCellRendererPixbuf</link>"
-
-#. (itstool) path: info/title
-#: C/cpp.page:7
-msgctxt "link"
-msgid "C++"
-msgstr "C++"
-
-#. (itstool) path: page/title
-#: C/cpp.page:16
-msgid "Code samples and platform demos in C++"
-msgstr "Ejemplos de código y demostraciones de la plataforma en C++"
-
-#. (itstool) path: section/title
-#: C/cpp.page:21 C/js.page:36 C/py.page:39 C/vala.page:30
-msgid "Examples of applications"
-msgstr "Ejemplos de aplicaciones"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/dialog.c.page:25 C/dialog.js.page:22 C/dialog.py.page:24
-#: C/dialog.vala.page:22
-msgctxt "_"
-msgid "external ref='media/dialog.png' md5='c90a33386a600e892fe623d4072c8c38'"
-msgstr "external ref='media/dialog.png' md5='c90a33386a600e892fe623d4072c8c38'"
-
-#. (itstool) path: info/title
-#: C/dialog.c.page:8
-msgctxt "text"
-msgid "Dialog (C)"
-msgstr "Diálogo (C)"
-
-#. (itstool) path: info/desc
-#: C/dialog.c.page:20 C/dialog.js.page:18 C/dialog.py.page:20
-#: C/dialog.vala.page:18
-msgid "A popup window"
-msgstr "Una ventana emergente"
-
-#. (itstool) path: page/title
-#: C/dialog.c.page:23 C/dialog.js.page:21 C/dialog.py.page:23
-#: C/dialog.vala.page:21
-msgid "Dialog"
-msgstr "Diálogo"
-
-#. (itstool) path: page/p
-#: C/dialog.c.page:26
-msgid "A dialog window that pops up when a button is pressed."
-msgstr "Una ventana de diálogo que aparece cuando se pulsa un botón"
-
-#. (itstool) path: page/code
-#: C/dialog.c.page:28
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-" \n"
-"\n"
-"/*Callback function in which reacts to the \"response\" signal. Be sure to place \n"
-"it before the function it is called in*/\n"
-"static void\n"
-"on_response (GtkDialog *dialog,\n"
-" gint response_id,\n"
-" gpointer user_data)\n"
-"{\n"
-" /*For demonstration purposes, this will show the int value \n"
-" of the response type*/\n"
-" g_print (\"response is %d\\n\", response_id);\n"
-" \n"
-" /*This will cause the dialog to be destroyed*/\n"
-" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/*Callback function in which reacts to the \"clicked\" signal*/\n"
-"static void\n"
-"show_dialog (GtkButton *button,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWindow *window = user_data;\n"
-" GtkWidget *dialog;\n"
-" GtkWidget *content_area;\n"
-" GtkWidget *label;\n"
-"\n"
-" gint response_id;\n"
-"\n"
-" /*Create the dialog window. Modal windows prevent interaction with other \n"
-" windows in the same application*/\n"
-" dialog = gtk_dialog_new_with_buttons (\"A Gtk+ Dialog\", \n"
-" window, \n"
-" GTK_DIALOG_MODAL, \n"
-" GTK_STOCK_OK, \n"
-" GTK_RESPONSE_OK, \n"
-" NULL);\n"
-"\n"
-" /*Create a label and attach it to the content area of the dialog*/\n"
-" content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));\n"
-" label = gtk_label_new (\"This demonstrates a dialog with a label\");\n"
-" gtk_container_add (GTK_CONTAINER (content_area), label);\n"
-"\n"
-" /*The main purpose of this is to show dialog's child widget, label*/\n"
-" gtk_widget_show_all (dialog);\n"
-" \n"
-" /*Connecting the \"response\" signal from the user to the associated\n"
-" callback function*/\n"
-" g_signal_connect (GTK_DIALOG (dialog), \n"
-" \"response\", \n"
-" G_CALLBACK (on_response), \n"
-" NULL);\n"
-"\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *button;\n"
-" \n"
-" /*Create a window with a title and a default size*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"GNOME Button\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n"
-"\n"
-" /*Create a button with a label, and add it to the window*/\n"
-" button = gtk_button_new_with_label (\"Click Me\");\n"
-" gtk_container_add (GTK_CONTAINER (window), button);\n"
-" \n"
-" /*Connecting the clicked signal to the callback*/\n"
-" g_signal_connect (GTK_BUTTON (button), \n"
-" \"clicked\", \n"
-" G_CALLBACK (show_dialog), \n"
-" GTK_WINDOW (window));\n"
-" \n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-" \n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-" \n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" \n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-" \n"
-"\n"
-"/*Callback function in which reacts to the \"response\" signal. Be sure to place \n"
-"it before the function it is called in*/\n"
-"static void\n"
-"on_response (GtkDialog *dialog,\n"
-" gint response_id,\n"
-" gpointer user_data)\n"
-"{\n"
-" /*For demonstration purposes, this will show the int value \n"
-" of the response type*/\n"
-" g_print (\"response is %d\\n\", response_id);\n"
-" \n"
-" /*This will cause the dialog to be destroyed*/\n"
-" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/*Callback function in which reacts to the \"clicked\" signal*/\n"
-"static void\n"
-"show_dialog (GtkButton *button,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWindow *window = user_data;\n"
-" GtkWidget *dialog;\n"
-" GtkWidget *content_area;\n"
-" GtkWidget *label;\n"
-"\n"
-" gint response_id;\n"
-"\n"
-" /*Create the dialog window. Modal windows prevent interaction with other \n"
-" windows in the same application*/\n"
-" dialog = gtk_dialog_new_with_buttons (\"A Gtk+ Dialog\", \n"
-" window, \n"
-" GTK_DIALOG_MODAL, \n"
-" GTK_STOCK_OK, \n"
-" GTK_RESPONSE_OK, \n"
-" NULL);\n"
-"\n"
-" /*Create a label and attach it to the content area of the dialog*/\n"
-" content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));\n"
-" label = gtk_label_new (\"This demonstrates a dialog with a label\");\n"
-" gtk_container_add (GTK_CONTAINER (content_area), label);\n"
-"\n"
-" /*The main purpose of this is to show dialog's child widget, label*/\n"
-" gtk_widget_show_all (dialog);\n"
-" \n"
-" /*Connecting the \"response\" signal from the user to the associated\n"
-" callback function*/\n"
-" g_signal_connect (GTK_DIALOG (dialog), \n"
-" \"response\", \n"
-" G_CALLBACK (on_response), \n"
-" NULL);\n"
-"\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *button;\n"
-" \n"
-" /*Create a window with a title and a default size*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"GNOME Button\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n"
-"\n"
-" /*Create a button with a label, and add it to the window*/\n"
-" button = gtk_button_new_with_label (\"Click Me\");\n"
-" gtk_container_add (GTK_CONTAINER (window), button);\n"
-" \n"
-" /*Connecting the clicked signal to the callback*/\n"
-" g_signal_connect (GTK_BUTTON (button), \n"
-" \"clicked\", \n"
-" G_CALLBACK (show_dialog), \n"
-" GTK_WINDOW (window));\n"
-" \n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-" \n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-" \n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" \n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/dialog.c.page:36
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkDialog.html"
-"\">GtkDialog</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkDialog.html"
-"\">GtkDialog</link>"
-
-#. (itstool) path: item/p
-#: C/dialog.c.page:37 C/radiobutton.c.page:36 C/spinbutton.c.page:38
-#: C/switch.c.page:35
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkLabel.html"
-"\">GtkLabel</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkLabel.html"
-"\">GtkLabel</link>"
-
-#. (itstool) path: info/title
-#: C/dialog.js.page:8
-msgctxt "text"
-msgid "Dialog (JavaScript)"
-msgstr "Diálogo (JavaScript)"
-
-#. (itstool) path: page/p
-#: C/dialog.js.page:23
-msgid ""
-"A customizable popup window, which has a content area and an action area. "
-"This example dialog's content area contains a short message, and its action "
-"area contains a button which dismisses the dialog."
-msgstr ""
-"Una ventana emergente personalizable, que contiene un área de contenido y un "
-"área de acción. Esta área de contenido del diálogo de ejemplo contiene un "
-"mensaje, y su área de acción contiene un botón que cierra el diálogo."
-
-#. (itstool) path: page/code
-#: C/dialog.js.page:25
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const DialogExample = new Lang.Class ({\n"
-" Name: 'Dialog Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jsdialog',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Gtk.Dialog Example\",\n"
-" default_height: 50,\n"
-" default_width: 250 });\n"
-"\n"
-" // Create a button\n"
-" this._button = new Gtk.Button ({label: \"Click Me\"});\n"
-" this._window.add (this._button);\n"
-"\n"
-" // Bind it to the function that creates the dialog\n"
-" this._button.connect (\"clicked\", Lang.bind(this, this._createDialog));\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" _createDialog: function () {\n"
-"\n"
-" // Create the dialog\n"
-" this._dialog = new Gtk.Dialog ({ transient_for: this._window,\n"
-" modal: true,\n"
-" title: \"A Gtk+ dialog\" });\n"
-"\n"
-" // Create the dialog's content area, which contains a message\n"
-" this._contentArea = this._dialog.get_content_area();\n"
-" this._message = new Gtk.Label ({label: \"This demonstrates a dialog with a label\"});\n"
-" this._contentArea.add (this._message);\n"
-"\n"
-" // Create the dialog's action area, which contains a stock OK button\n"
-" this._actionArea = this._dialog.get_action_area();\n"
-" this._OKButton = Gtk.Button.new_from_stock (Gtk.STOCK_OK);\n"
-" this._actionArea.add (this._OKButton);\n"
-"\n"
-" // Connect the button to the function that handles what it does\n"
-" this._OKButton.connect (\"clicked\", Lang.bind (this, this._OKHandler));\n"
-"\n"
-" this._dialog.show_all();\n"
-" },\n"
-"\n"
-" _OKHandler: function (dialog, response_id) {\n"
-"\n"
-" // Destroy the dialog\n"
-" this._dialog.destroy();\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new DialogExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const DialogExample = new Lang.Class ({\n"
-" Name: 'Dialog Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jsdialog',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Gtk.Dialog Example\",\n"
-" default_height: 50,\n"
-" default_width: 250 });\n"
-"\n"
-" // Create a button\n"
-" this._button = new Gtk.Button ({label: \"Click Me\"});\n"
-" this._window.add (this._button);\n"
-"\n"
-" // Bind it to the function that creates the dialog\n"
-" this._button.connect (\"clicked\", Lang.bind(this, this._createDialog));\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" _createDialog: function () {\n"
-"\n"
-" // Create the dialog\n"
-" this._dialog = new Gtk.Dialog ({ transient_for: this._window,\n"
-" modal: true,\n"
-" title: \"A Gtk+ dialog\" });\n"
-"\n"
-" // Create the dialog's content area, which contains a message\n"
-" this._contentArea = this._dialog.get_content_area();\n"
-" this._message = new Gtk.Label ({label: \"This demonstrates a dialog with a label\"});\n"
-" this._contentArea.add (this._message);\n"
-"\n"
-" // Create the dialog's action area, which contains a stock OK button\n"
-" this._actionArea = this._dialog.get_action_area();\n"
-" this._OKButton = Gtk.Button.new_from_stock (Gtk.STOCK_OK);\n"
-" this._actionArea.add (this._OKButton);\n"
-"\n"
-" // Connect the button to the function that handles what it does\n"
-" this._OKButton.connect (\"clicked\", Lang.bind (this, this._OKHandler));\n"
-"\n"
-" this._dialog.show_all();\n"
-" },\n"
-"\n"
-" _OKHandler: function (dialog, response_id) {\n"
-"\n"
-" // Destroy the dialog\n"
-" this._dialog.destroy();\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new DialogExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/dialog.js.page:32
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Dialog.html"
-"\">Gtk.Dialog</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Dialog.html"
-"\">Gtk.Dialog</link>"
-
-#. (itstool) path: info/title
-#: C/dialog.py.page:8
-msgctxt "text"
-msgid "Dialog (Python)"
-msgstr "Diálogo (Python)"
-
-#. (itstool) path: page/p
-#: C/dialog.py.page:25
-msgid "A dialog with the response signal connected to a callback function."
-msgstr ""
-"Un diálogo con la señal de respuesta conectada a una función de retorno de "
-"llamada."
-
-#. (itstool) path: section/code
-#: C/dialog.py.page:32
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| " # construct a window (the parent window)\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"GNOME Button\", application=app)\n"
-#| " self.set_default_size(250, 50)\n"
-#| "\n"
-#| " # a button on the parent window\n"
-#| " button = Gtk.Button(\"Click me\")\n"
-#| " # connect the signal \"clicked\" of the button with the function\n"
-#| " # on_button_click()\n"
-#| " button.connect(\"clicked\", self.on_button_click)\n"
-#| " # add the button to the window\n"
-#| " self.add(button)\n"
-#| "\n"
-#| " # callback function for the signal \"clicked\" of the button in the parent\n"
-#| " # window\n"
-#| " def on_button_click(self, widget):\n"
-#| " # create a Gtk.Dialog\n"
-#| " dialog = Gtk.Dialog()\n"
-#| " dialog.set_title(\"A Gtk+ Dialog\")\n"
-#| " # The window defined in the constructor (self) is the parent of the dialog.\n"
-#| " # Furthermore, the dialog is on top of the parent window\n"
-#| " dialog.set_transient_for(self)\n"
-#| " # set modal true: no interaction with other windows of the application\n"
-#| " dialog.set_modal(True)\n"
-#| " # add a button to the dialog window\n"
-#| " dialog.add_button(button_text=\"OK\", response_id=Gtk.ResponseType.OK)\n"
-#| " # connect the \"response\" signal (the button has been clicked) to the\n"
-#| " # function on_response()\n"
-#| " dialog.connect(\"response\", self.on_response)\n"
-#| "\n"
-#| " # get the content area of the dialog, add a label to it\n"
-#| " content_area = dialog.get_content_area()\n"
-#| " label = Gtk.Label(\"This demonstrates a dialog with a label\")\n"
-#| " content_area.add(label)\n"
-#| " # show the dialog\n"
-#| " dialog.show_all()\n"
-#| "\n"
-#| " def on_response(self, widget, response_id):\n"
-#| " print \"response_id is\", response_id\n"
-#| " # destroy the widget (the dialog) when the function on_response() is called\n"
-#| " # (that is, when the button of the dialog has been clicked)\n"
-#| " widget.destroy()\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # construct a window (the parent window)\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"GNOME Button\", application=app)\n"
-" self.set_default_size(250, 50)\n"
-"\n"
-" # a button on the parent window\n"
-" button = Gtk.Button(\"Click me\")\n"
-" # connect the signal \"clicked\" of the button with the function\n"
-" # on_button_click()\n"
-" button.connect(\"clicked\", self.on_button_click)\n"
-" # add the button to the window\n"
-" self.add(button)\n"
-"\n"
-" # callback function for the signal \"clicked\" of the button in the parent\n"
-" # window\n"
-" def on_button_click(self, widget):\n"
-" # create a Gtk.Dialog\n"
-" dialog = Gtk.Dialog()\n"
-" dialog.set_title(\"A Gtk+ Dialog\")\n"
-" # The window defined in the constructor (self) is the parent of the dialog.\n"
-" # Furthermore, the dialog is on top of the parent window\n"
-" dialog.set_transient_for(self)\n"
-" # set modal true: no interaction with other windows of the application\n"
-" dialog.set_modal(True)\n"
-" # add a button to the dialog window\n"
-" dialog.add_button(button_text=\"OK\", response_id=Gtk.ResponseType.OK)\n"
-" # connect the \"response\" signal (the button has been clicked) to the\n"
-" # function on_response()\n"
-" dialog.connect(\"response\", self.on_response)\n"
-"\n"
-" # get the content area of the dialog, add a label to it\n"
-" content_area = dialog.get_content_area()\n"
-" label = Gtk.Label(\"This demonstrates a dialog with a label\")\n"
-" content_area.add(label)\n"
-" # show the dialog\n"
-" dialog.show_all()\n"
-"\n"
-" def on_response(self, widget, response_id):\n"
-" print(\"response_id is\", response_id)\n"
-" # destroy the widget (the dialog) when the function on_response() is called\n"
-" # (that is, when the button of the dialog has been clicked)\n"
-" widget.destroy()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # construct a window (the parent window)\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"GNOME Button\", application=app)\n"
-" self.set_default_size(250, 50)\n"
-"\n"
-" # a button on the parent window\n"
-" button = Gtk.Button(\"Click me\")\n"
-" # connect the signal \"clicked\" of the button with the function\n"
-" # on_button_click()\n"
-" button.connect(\"clicked\", self.on_button_click)\n"
-" # add the button to the window\n"
-" self.add(button)\n"
-"\n"
-" # callback function for the signal \"clicked\" of the button in the parent\n"
-" # window\n"
-" def on_button_click(self, widget):\n"
-" # create a Gtk.Dialog\n"
-" dialog = Gtk.Dialog()\n"
-" dialog.set_title(\"A Gtk+ Dialog\")\n"
-" # The window defined in the constructor (self) is the parent of the dialog.\n"
-" # Furthermore, the dialog is on top of the parent window\n"
-" dialog.set_transient_for(self)\n"
-" # set modal true: no interaction with other windows of the application\n"
-" dialog.set_modal(True)\n"
-" # add a button to the dialog window\n"
-" dialog.add_button(button_text=\"OK\", response_id=Gtk.ResponseType.OK)\n"
-" # connect the \"response\" signal (the button has been clicked) to the\n"
-" # function on_response()\n"
-" dialog.connect(\"response\", self.on_response)\n"
-"\n"
-" # get the content area of the dialog, add a label to it\n"
-" content_area = dialog.get_content_area()\n"
-" label = Gtk.Label(\"This demonstrates a dialog with a label\")\n"
-" content_area.add(label)\n"
-" # show the dialog\n"
-" dialog.show_all()\n"
-"\n"
-" def on_response(self, widget, response_id):\n"
-" print(\"response_id is\", response_id)\n"
-" # destroy the widget (the dialog) when the function on_response() is called\n"
-" # (that is, when the button of the dialog has been clicked)\n"
-" widget.destroy()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/dialog.py.page:37
-msgid "Useful methods for a Dialog widget"
-msgstr "Métodos útiles para un widget «Dialog»"
-
-#. (itstool) path: section/p
-#: C/dialog.py.page:38
-msgid ""
-"In line 16 the signal <code>\"clicked\"</code> is connected to the callback "
-"function <code>on_button_click()</code> using <code><var>widget</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 16, la señal <code>«clicked»</code> se conecta a la función de "
-"retorno de llamada <code>on_button_click()</code> usando <code><var>widget</"
-"var>.connect(<var>señal</var>, <var>función de retorno de llamada</var>)</"
-"code>. Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
-"explicación más detallada."
-
-#. (itstool) path: item/p
-#: C/dialog.py.page:40
-msgid ""
-"Instead of <code>set_modal(True)</code> we could have <code>set_modal(False)"
-"</code> followed by <code>set_destroy_with_parent(True)</code> that would "
-"destroy the dialog window if the main window is closed."
-msgstr ""
-"En lugar de <code>set_modal(True)</code> se podría tener <code>set_modal"
-"(False)</code> seguido de <code>set_destroy_with_parent(True)</code> que "
-"destruiría la ventana de diálogo si se cerrara la ventana principal."
-
-#. (itstool) path: item/p
-#: C/dialog.py.page:41
-msgid ""
-"<code>add_button(button_text=\"The Answer\", response_id=42)</code>, where "
-"<code>42</code> is any integer, is an alternative to <code>add_button"
-"(button_text=\"text\", response_id=Gtk.ResponseType.RESPONSE)</code>, where "
-"<code>RESPONSE</code> could be one of <code>OK, CANCEL, CLOSE, YES, NO, "
-"APPLY, HELP</code>, which in turn correspond to the integers <code>-5, -"
-"6,..., -11</code>."
-msgstr ""
-"<code>add_button(button_text=\"La respuesta\", response_id=42)</code>, donde "
-"<code>42</code> es cualquier entero, es una alternativa a <code>add_button"
-"(button_text=\"texto\", response_id=Gtk.ResponseType.RESPUESTA)</code>, "
-"donde <code>RESPUESTA</code> podría ser <code>OK, CANCEL, CLOSE, YES, NO, "
-"APPLY, HELP</code>, que a su vez corresponden a los enteros <code>-5, -"
-"6,..., -11</code>."
-
-#. (itstool) path: item/p
-#: C/dialog.py.page:51 C/messagedialog.py.page:60
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkDialog.html"
-"\">GtkDialog</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkDialog.html"
-"\">GtkDialog</link>"
-
-#. (itstool) path: info/title
-#: C/dialog.vala.page:8
-msgctxt "text"
-msgid "Dialog (Vala)"
-msgstr "Diálogo (Vala)"
-
-#. (itstool) path: page/p
-#: C/dialog.vala.page:23
-msgid "A dialog with the response signal hooked up to a callback function."
-msgstr ""
-"Un diálogo con la señal de respuesta enlazada a una función de retorno de "
-"llamada."
-
-#. (itstool) path: page/code
-#: C/dialog.vala.page:25
-#, no-wrap
-msgid ""
-"\n"
-"/* A window in the application. */\n"
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"GNOME Button\");\n"
-"\n"
-"\t\tthis.window_position = Gtk.WindowPosition.CENTER;\n"
-"\t\tthis.set_default_size (250,50);\n"
-"\n"
-"\t\tvar button = new Gtk.Button.with_label (\"Click Me\");\n"
-"\n"
-"\t\t/* Connect the button's \"clicked\" signal to\n"
-"\t\t * the signal handler (aka. this.callback function).\n"
-"\t\t */\n"
-"\t\tbutton.clicked.connect (this.on_button_click);\n"
-"\n"
-"\t\t/* Add the button to this window and show it. */\n"
-"\t\tthis.add (button);\n"
-"\t\tbutton.show ();\n"
-"\t}\n"
-"\n"
-"\t/* The signal handler for the buttons 'clicked' signal. */\n"
-"\tvoid on_button_click (Gtk.Button button) {\n"
-"\t\tvar dialog = new Gtk.Dialog.with_buttons (\"A Gtk+ Dialog\", this,\n"
-" Gtk.DialogFlags.MODAL,\n"
-" Gtk.Stock.OK,\n"
-" Gtk.ResponseType.OK, null);\n"
-"\n"
-"\t\tvar content_area = dialog.get_content_area ();\n"
-"\t\tvar label = new Gtk.Label (\"This demonstrates a dialog with a label\");\n"
-"\n"
-"\t\tcontent_area.add (label);\n"
-"\n"
-"\t\t/* Connect the 'response' signal of the dialog\n"
-"\t\t * the signal handler. It is emitted when the dialog's\n"
-"\t\t * OK button is clicked.\n"
-"\t\t */\n"
-"\t\tdialog.response.connect (on_response);\n"
-"\n"
-"\t\t/* Show the dialog and all the widgets. */\n"
-"\t\tdialog.show_all ();\n"
-"\t}\n"
-"\n"
-"\t/* Signal handler for the 'response' signal of the dialog. */\n"
-" void on_response (Gtk.Dialog dialog, int response_id) {\n"
-"\n"
-" /* To see the int value of the ResponseType. This is only\n"
-"\t\t * for demonstration purposes.*/\n"
-" print (\"response is %d\\n\", response_id);\n"
-"\n"
-"\t\t/* This causes the dialog to be destroyed. */\n"
-" dialog.destroy ();\n"
-" }\n"
-"\n"
-"}\n"
-"\n"
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\n"
-"\t/* The constructor of the application. */\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t/* Create a window for the this application and show it. */\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* The main function creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"\n"
-"/* A window in the application. */\n"
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"GNOME Button\");\n"
-"\n"
-"\t\tthis.window_position = Gtk.WindowPosition.CENTER;\n"
-"\t\tthis.set_default_size (250,50);\n"
-"\n"
-"\t\tvar button = new Gtk.Button.with_label (\"Click Me\");\n"
-"\n"
-"\t\t/* Connect the button's \"clicked\" signal to\n"
-"\t\t * the signal handler (aka. this.callback function).\n"
-"\t\t */\n"
-"\t\tbutton.clicked.connect (this.on_button_click);\n"
-"\n"
-"\t\t/* Add the button to this window and show it. */\n"
-"\t\tthis.add (button);\n"
-"\t\tbutton.show ();\n"
-"\t}\n"
-"\n"
-"\t/* The signal handler for the buttons 'clicked' signal. */\n"
-"\tvoid on_button_click (Gtk.Button button) {\n"
-"\t\tvar dialog = new Gtk.Dialog.with_buttons (\"A Gtk+ Dialog\", this,\n"
-" Gtk.DialogFlags.MODAL,\n"
-" Gtk.Stock.OK,\n"
-" Gtk.ResponseType.OK, null);\n"
-"\n"
-"\t\tvar content_area = dialog.get_content_area ();\n"
-"\t\tvar label = new Gtk.Label (\"This demonstrates a dialog with a label\");\n"
-"\n"
-"\t\tcontent_area.add (label);\n"
-"\n"
-"\t\t/* Connect the 'response' signal of the dialog\n"
-"\t\t * the signal handler. It is emitted when the dialog's\n"
-"\t\t * OK button is clicked.\n"
-"\t\t */\n"
-"\t\tdialog.response.connect (on_response);\n"
-"\n"
-"\t\t/* Show the dialog and all the widgets. */\n"
-"\t\tdialog.show_all ();\n"
-"\t}\n"
-"\n"
-"\t/* Signal handler for the 'response' signal of the dialog. */\n"
-" void on_response (Gtk.Dialog dialog, int response_id) {\n"
-"\n"
-" /* To see the int value of the ResponseType. This is only\n"
-"\t\t * for demonstration purposes.*/\n"
-" print (\"response is %d\\n\", response_id);\n"
-"\n"
-"\t\t/* This causes the dialog to be destroyed. */\n"
-" dialog.destroy ();\n"
-" }\n"
-"\n"
-"}\n"
-"\n"
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\n"
-"\t/* The constructor of the application. */\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t/* Create a window for the this application and show it. */\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* The main function creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/dialog.vala.page:32
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.html\">Gtk.Dialog</"
-"link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.html\">Gtk.Dialog</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/dialog.vala.page:33
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.Dialog.with_buttons."
-"html\">Gtk.Dialog.with_buttons</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.Dialog.with_buttons."
-"html\">Gtk.Dialog.with_buttons</link>"
-
-#. (itstool) path: item/p
-#: C/dialog.vala.page:34 C/label.vala.page:33
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Label.html\">Gtk.Label</"
-"link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Label.html\">Gtk.Label</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/dialog.vala.page:35
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.get_content_area.html"
-"\">get_content_area</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.get_content_area.html"
-"\">get_content_area</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/entry.c.page:23 C/entry.js.page:22 C/entry.py.page:29
-#: C/entry.vala.page:22
-msgctxt "_"
-msgid "external ref='media/entry.png' md5='8a828cffdcbaa4bad83342e109f28cc8'"
-msgstr "external ref='media/entry.png' md5='8a828cffdcbaa4bad83342e109f28cc8'"
-
-#. (itstool) path: info/title
-#: C/entry.c.page:8
-msgctxt "text"
-msgid "Entry (C)"
-msgstr "Entry (C)"
-
-#. (itstool) path: info/desc
-#: C/entry.c.page:18 C/entry.py.page:25 C/entry.vala.page:18
-msgid "A single line text entry field"
-msgstr "Un campo de entrada de texto de una sola línea"
-
-#. (itstool) path: page/title
-#: C/entry.c.page:21 C/entry.js.page:21 C/entry.py.page:28
-#: C/entry.vala.page:21
-msgid "Entry"
-msgstr "Entry"
-
-#. (itstool) path: page/p
-#: C/entry.c.page:24 C/entry.vala.page:23
-msgid "This application greets you in the terminal."
-msgstr "Esta aplicación le saluda en la terminal."
-
-#. (itstool) path: page/code
-#: C/entry.c.page:26
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/*This is the callback function. It is a handler function \n"
-"which reacts to the signal. In this case, it will grab the \n"
-"text input from the entry box and print out a line to the user.*/\n"
-"static void\n"
-"on_activate (GtkEntry *entry,\n"
-" gpointer user_data)\n"
-"{\n"
-" const char *name;\n"
-" name = gtk_entry_get_text (entry);\n"
-"\n"
-" g_print (\"\\nHello %s!\\n\\n\", name);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *entry_box;\n"
-"\n"
-" /*Create a window with a title, a default size, \n"
-" and a set border width*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"What is your name?\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n"
-" gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n"
-"\n"
-" /*Create a new entry box, and add it to the window*/\n"
-" entry_box = gtk_entry_new ();\n"
-" gtk_container_add (GTK_CONTAINER (window), entry_box);\n"
-"\n"
-" /*Connecting the activate signal to the callback*/\n"
-" g_signal_connect (GTK_ENTRY (entry_box), \"activate\", \n"
-" G_CALLBACK (on_activate), NULL);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/*This is the callback function. It is a handler function \n"
-"which reacts to the signal. In this case, it will grab the \n"
-"text input from the entry box and print out a line to the user.*/\n"
-"static void\n"
-"on_activate (GtkEntry *entry,\n"
-" gpointer user_data)\n"
-"{\n"
-" const char *name;\n"
-" name = gtk_entry_get_text (entry);\n"
-"\n"
-" g_print (\"\\nHello %s!\\n\\n\", name);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *entry_box;\n"
-"\n"
-" /*Create a window with a title, a default size, \n"
-" and a set border width*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"What is your name?\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n"
-" gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n"
-"\n"
-" /*Create a new entry box, and add it to the window*/\n"
-" entry_box = gtk_entry_new ();\n"
-" gtk_container_add (GTK_CONTAINER (window), entry_box);\n"
-"\n"
-" /*Connecting the activate signal to the callback*/\n"
-" g_signal_connect (GTK_ENTRY (entry_box), \"activate\", \n"
-" G_CALLBACK (on_activate), NULL);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: info/title
-#: C/entry.js.page:8
-msgctxt "text"
-msgid "Entry (JavaScript)"
-msgstr "Entry (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/entry.js.page:18
-msgid "A single-line text entry field"
-msgstr "Un campo de entrada de texto de una sola línea"
-
-#. (itstool) path: page/p
-#: C/entry.js.page:23
-msgid "This application greets you by name through a pop-up window."
-msgstr "Esta aplicación le saluda por su nombre con una ventana emergente."
-
-#. (itstool) path: page/code
-#: C/entry.js.page:25
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const EntryExample = new Lang.Class({\n"
-" Name: 'Entry Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsentry',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 100,\n"
-" default_width: 300,\n"
-" border_width: 10,\n"
-" title: \"What is your name?\"});\n"
-"\n"
-" // Create the text entry box\n"
-" this.entry = new Gtk.Entry ();\n"
-" this._window.add(this.entry);\n"
-"\n"
-" // Connect the text entry box to a function that responds to what you type in\n"
-" this.entry.connect(\"activate\", Lang.bind (this, this._hello));\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _hello: function() {\n"
-"\n"
-" // Create a popup dialog to greet the person who types in their name\n"
-" this._greeter = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" text: \"Hello, \" + this.entry.get_text() + \"!\",\n"
-" message_type: Gtk.MessageType.OTHER,\n"
-" buttons: Gtk.ButtonsType.OK,\n"
-" });\n"
-"\n"
-" // Show the popup dialog\n"
-" this._greeter.show();\n"
-"\n"
-" // Bind the OK button to the function that closes the popup\n"
-" this._greeter.connect (\"response\", Lang.bind(this, this._okClicked));\n"
-" },\n"
-"\n"
-" _okClicked: function () {\n"
-" this._greeter.destroy();\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new EntryExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const EntryExample = new Lang.Class({\n"
-" Name: 'Entry Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsentry',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 100,\n"
-" default_width: 300,\n"
-" border_width: 10,\n"
-" title: \"What is your name?\"});\n"
-"\n"
-" // Create the text entry box\n"
-" this.entry = new Gtk.Entry ();\n"
-" this._window.add(this.entry);\n"
-"\n"
-" // Connect the text entry box to a function that responds to what you type in\n"
-" this.entry.connect(\"activate\", Lang.bind (this, this._hello));\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _hello: function() {\n"
-"\n"
-" // Create a popup dialog to greet the person who types in their name\n"
-" this._greeter = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" text: \"Hello, \" + this.entry.get_text() + \"!\",\n"
-" message_type: Gtk.MessageType.OTHER,\n"
-" buttons: Gtk.ButtonsType.OK,\n"
-" });\n"
-"\n"
-" // Show the popup dialog\n"
-" this._greeter.show();\n"
-"\n"
-" // Bind the OK button to the function that closes the popup\n"
-" this._greeter.connect (\"response\", Lang.bind(this, this._okClicked));\n"
-" },\n"
-"\n"
-" _okClicked: function () {\n"
-" this._greeter.destroy();\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new EntryExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/entry.js.page:32
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Entry.html"
-"\">Gtk.Entry</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Entry.html"
-"\">Gtk.Entry</link>"
-
-#. (itstool) path: info/title
-#: C/entry.py.page:8
-msgctxt "text"
-msgid "Entry (Python)"
-msgstr "Entry (Python)"
-
-#. (itstool) path: credit/name
-#: C/entry.py.page:21 C/label.py.page:22 C/model-view-controller.py.page:16
-#: C/properties.py.page:16 C/signals-callbacks.py.page:16 C/strings.py.page:16
-#: C/textview.py.page:16 C/toolbar_builder.py.page:28
-msgid "Sebastian Pölsterl"
-msgstr "Sebastian Pölsterl"
-
-#. (itstool) path: credit/years
-#: C/entry.py.page:23 C/index.page:20 C/model-view-controller.py.page:18
-#: C/properties.py.page:18 C/signals-callbacks.py.page:18 C/strings.py.page:18
-#: C/textview.py.page:18 C/toolbar_builder.py.page:30
-msgid "2011"
-msgstr "2011"
-
-#. (itstool) path: page/p
-#: C/entry.py.page:30
-msgid "This application greets you in the terminal with the name you provide."
-msgstr "Esta aplicación le saluda en la terminal con el nombre que le indique."
-
-#. (itstool) path: section/code
-#: C/entry.py.page:36
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"What is your name?\", application=app)\n"
-#| " self.set_default_size(300, 100)\n"
-#| " self.set_border_width(10)\n"
-#| "\n"
-#| " # a single line entry\n"
-#| " name_box = Gtk.Entry()\n"
-#| " # emits a signal when the Enter key is pressed, connected to the\n"
-#| " # callback function cb_activate\n"
-#| " name_box.connect(\"activate\", self.cb_activate)\n"
-#| "\n"
-#| " # add the Gtk.Entry to the window\n"
-#| " self.add(name_box)\n"
-#| "\n"
-#| " # the content of the entry is used to write in the terminal\n"
-#| " def cb_activate(self, entry):\n"
-#| " # retrieve the content of the widget\n"
-#| " name = entry.get_text()\n"
-#| " # print it in a nice form in the terminal\n"
-#| " print \"Hello \" + name + \"!\"\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"What is your name?\", application=app)\n"
-" self.set_default_size(300, 100)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # a single line entry\n"
-" name_box = Gtk.Entry()\n"
-" # emits a signal when the Enter key is pressed, connected to the\n"
-" # callback function cb_activate\n"
-" name_box.connect(\"activate\", self.cb_activate)\n"
-"\n"
-" # add the Gtk.Entry to the window\n"
-" self.add(name_box)\n"
-"\n"
-" # the content of the entry is used to write in the terminal\n"
-" def cb_activate(self, entry):\n"
-" # retrieve the content of the widget\n"
-" name = entry.get_text()\n"
-" # print it in a nice form in the terminal\n"
-" print(\"Hello \" + name + \"!\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"What is your name?\", application=app)\n"
-" self.set_default_size(300, 100)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # a single line entry\n"
-" name_box = Gtk.Entry()\n"
-" # emits a signal when the Enter key is pressed, connected to the\n"
-" # callback function cb_activate\n"
-" name_box.connect(\"activate\", self.cb_activate)\n"
-"\n"
-" # add the Gtk.Entry to the window\n"
-" self.add(name_box)\n"
-"\n"
-" # the content of the entry is used to write in the terminal\n"
-" def cb_activate(self, entry):\n"
-" # retrieve the content of the widget\n"
-" name = entry.get_text()\n"
-" # print it in a nice form in the terminal\n"
-" print(\"Hello \" + name + \"!\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/entry.py.page:40
-msgid "Useful methods for an Entry widget"
-msgstr "Métodos útiles para un widget «Entry»"
-
-#. (itstool) path: section/p
-#: C/entry.py.page:41
-msgid ""
-"In line 14 the signal <code>\"activate\"</code> is connected to the callback "
-"function <code>cb_activate()</code> using <code><var>widget</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation. Some of the "
-"signals that a Gtk.Entry widget can emit are: <code>\"activate\"</code> "
-"(emitted when the user activates the Entry key); <code>\"backspace\"</code> "
-"(emitted when the user activates the Backspace or Shift-Backspace keys); "
-"<code>\"copy-clipboard\"</code> (Ctrl-c and Ctrl-Insert); <code>\"paste-"
-"clipboard\"</code> (Ctrl-v and Shift-Insert); <code>\"delete-from-cursor\"</"
-"code> (Delete, for deleting a character; Ctrl-Delete, for deleting a word); "
-"<code>\"icon-press\"</code> (emitted when the user clicks an activatable "
-"icon); <code>\"icon-release\"</code> (emitted on the button release from a "
-"mouse click over an activatable icon); <code>\"insert-at-cursor\"</code> "
-"(emitted when the user initiates the insertion of a fixed string at the "
-"cursor); <code>\"move-cursor\"</code> (emitted when the user initiates a "
-"cursor movement); <code>\"populate-popup\"</code> (emitted before showing "
-"the context menu of the entry; it can be used to add items to it)."
-msgstr ""
-"En la línea 14 la señal <code>«activate»</code> se conecta a la función de "
-"retorno de llamada <code>cb_activate()</code> usando <code><var>widget</var>."
-"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
-"explicación más detallada. Algunas de las señales que un widget «Gtk.Entry» "
-"puede emitir son: <code>«activate»</code> (cuando el usuario pulsa la tecla "
-"«Intro»); <code>«backspace»</code> (cuando el usuario pulsa las teclas "
-"«Retroceso» o «Mayús-Retroceso»); <code>«copy-clipboard»</code> («Ctrl-C» y «Ctrl-"
-"Insert»); <code>«paste-clipboard»</code> («Ctrl-V» o «Mayús-Insert»); "
-"<code>«delete-from-cursor»</code> («Suprimir», para borrar un carácter; «Ctrl-"
-"Suprimir», para borrar una palabra); <code>«icon-press»</code> (cuando el "
-"usuario pulsa un icono activable); <code>«icon-release»</code> (cuando el "
-"botón del ratón se suelta sobre un icono activable); <code>«insert-at-"
-"cursor»</code> (cuando el usuario inicia la inserción de una cadena fija en "
-"el cursor); <code>«move-cursor»</code> (cuando el usuario inicia un "
-"movimiento del cursor); <code>«populate-popup»</code> (antes de mostrar el "
-"menú contextual de una entrada; puede usarse para añadirle elementos)."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:43
-msgid ""
-"<code>get_buffer()</code> and <code>set_buffer(buffer)</code>, where "
-"<code>buffer</code> is a Gtk.EntryBuffer object, can be used to get and set "
-"the buffer for the entry."
-msgstr ""
-"<code>get_buffer()</code> y <code>set_buffer(búfer)</code> donde "
-"<code>búfer</code> es un objeto «Gtk.EntryBuffer», pueden usarse para obtener "
-"y establecer el búfer de la entrada."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:44
-msgid ""
-"<code>get_text()</code> and <code>set_text(\"some text\")</code> can be used "
-"to get and set the content for the entry."
-msgstr ""
-"<code>get_text()</code> y <code>set_text(\"texto\")</code> pueden usarse "
-"para obtener y establecer el contenido de la entrada."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:45
-msgid "<code>get_text_length()</code> is self-explanatory."
-msgstr "<code>get_text_length()</code> obtiene la longitud del texto."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:46
-msgid ""
-"<code>get_text_area()</code> gets the area where the entry's text is drawn."
-msgstr ""
-"<code>get_text_area()</code> obtiene el área en la que se dibuja el texto de "
-"la entrada."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:47
-msgid ""
-"If we set <code>set_visibility(False)</code> the characters in the entry are "
-"displayed as the invisible char. This is the best available in the current "
-"font, but it can be changed with <code>set_invisible_char(ch)</code>, where "
-"<code>ch</code> is a Unicode charcater. The latter method is reversed by "
-"<code>unset_invisbile_char()</code>."
-msgstr ""
-"Si se establece <code>set_visibility(False)</code>, los caracteres en la "
-"entrada se muestran como caracteres invisibles. Este es el mejor disponible "
-"en la tipografía actual, pero puede cambiarse con <code>set_invisible_char"
-"(ch)</code>, donde <code>ch</code> es un carácter Unicode. El último método "
-"se revierte con <code>unset_invisbile_char()</code>."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:48
-msgid ""
-"<code>set_max_length(int)</code>, where <code>int</code> is an integer, "
-"truncates every entry longer than <code>int</code> to have the desired "
-"maximum length."
-msgstr ""
-"<code>set_max_length(int)</code>, donde <code>int</code> es un entero, "
-"trunca todas las entradas más largas que <code>int</code> para tener la "
-"longitud máxima deseada."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:49
-msgid ""
-"By default, if you press the Entry key the Gtk.Entry emits the signal <code>"
-"\"activate\"</code>. If you would like to activate the default widget for "
-"the window (set using <code>set_default(widget)</code> on the window), then "
-"use <code>set_activates_default(True)</code>."
-msgstr ""
-"De manera predeterminada, si presiona la tecla «Intro», el «Gtk.Entry» emite "
-"la señal <code>«activate»</code>. Si quisiera activar el widget "
-"predeterminado de la ventana (establecido usando <code>set_default(widget)</"
-"code> en la ventana), entonces use <code>set_activates_default(True)</code>."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:50
-msgid "To set a frame around the entry: <code>set_has_frame(True)</code>."
-msgstr ""
-"Para poner un marco alrededor de la entrada: <code>set_has_frame(True)</"
-"code>."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:51
-msgid ""
-"<code>set_placeholder_text(\"some text\")</code> sets the text to be "
-"displayed in the entry when it is empty and unfocused."
-msgstr ""
-"<code>set_placeholder_text(\"texto\")</code> establece el texto que mostrar "
-"en la entrada cuando esté vacía y sin foco."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:52
-msgid ""
-"<code>set_overwrite_mode(True)</code> and <code>set_overwrite_mode(False)</"
-"code> are self-explanatory."
-msgstr ""
-"<code>set_overwrite_mode(True)</code> y <code>set_overwrite_mode(False)</"
-"code> activa o desactiva el modo de sobreescritura."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:53
-msgid ""
-"If we have <code>set_editable(False)</code> the user cannot edit the text in "
-"the widget."
-msgstr ""
-"Si tiene <code>set_editable(False)</code> el usuario no puede editar el "
-"texto en el widget."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:54
-msgid ""
-"<code>set_completion(completion)</code>, where <code>completion</code> is a "
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkEntryCompletion.html"
-"\"><code>Gtk.EntryCompletion</code></link>, sets completion - or disables it "
-"if <code>completion</code> is <code>None</code>."
-msgstr ""
-"<code>set_completion(completado)</code>, donde <code>completado</code> es un "
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkEntryCompletion.html"
-"\"><code>Gtk.EntryCompletion</code></link>, configura el completado; o lo "
-"desactiva si <code>completado</code> es <code>None</code>."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:55
-msgid ""
-"An Entry widget can display progress or activity information behind the "
-"text. We use <code>set_progress_fraction(fraction)</code>, where "
-"<code>fraction</code> is a <code>float</code> between <code>0.0</code> and "
-"<code>1.0</code> inclusive, to fill in the given fraction of the bar. We use "
-"<code>set_progress_pulse_step()</code> to set the fraction of total entry "
-"width to move the progress bouncing block for each call to "
-"<code>progress_pulse()</code>. The latter method indicates that some "
-"progress is made, and causes the progress indicator of the entry to enter "
-"\"activity mode\", where a block bounces back and forth. Each call to "
-"<code>progress_pulse()</code> causes the block to move by a little bit (the "
-"amount of movement per pulse is determined, as said before, by "
-"<code>set_progress_pulse_step()</code>)."
-msgstr ""
-"Un widget de entrada puede mostrar progreso o información de actividad "
-"detrás del texto. Se usa <code>set_progress_fraction(fracción)</code>, donde "
-"<code>fracción</code> es un <code>float</code> entre <code>0.0</code> y "
-"<code>1.0</code> inclusive, para llenar la fracción dada de la barra. Se usa "
-"<code>set_progress_pulse_step()</code> para establecer la fracción de la "
-"anchura total de la entrada para mover el bloque que rebota por cada llamada "
-"a <code>progress_pulse()</code>. El último método indica que se realizó "
-"algún progreso, y hace que el indicador de progreso de la entrada entre al "
-"«modo de actividad», en el que un bloque rebota hacia adelante y atrás. Cada "
-"llamada a <code>progress_pulse()</code> hace que el bloque se mueva un poco "
-"(la cantidad de movimiento por pulso la determina, como se dijo "
-"anteriormente, <code>set_progress_pulse_step()</code>)."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:56
-msgid ""
-"An Entry widget can also show icons. These icons can be activatable by "
-"clicking, can be set up as drag source and can have tooltips. To add an "
-"icon, use <code>set_icon_from_stock(icon_position, stock_id)</code>, or one "
-"of <code>set_icon_from_pixbuf(icon_position, pixbuf)</code>, "
-"<code>set_icon_from_icon_name(icon_position, icon_name)</code>, where "
-"<code>icon_position</code> is one of <code>Gtk.EntryIconPosition.PRIMARY</"
-"code> (to set the icon at the beginning of the entry) <code>Gtk."
-"EntryIconPosition.SECONDARY</code> (to set the icon at the end of the "
-"entry). To set a tooltip on an icon, use <code>set_icon_tooltip_text"
-"(\"tooltip text\")</code> or <code>set_icon_tooltip_markup(\"tooltip text in "
-"Pango markup language\")</code>."
-msgstr ""
-"Una entrada también puede mostrar iconos. Estos pueden activarse cuando se "
-"pulsan, configurarse para arrastrarse, y tener consejos. Para añadir un "
-"icono, use <code>set_icon_from_stock(posición_icono, id_almacén)</code>, "
-"<code>set_icon_from_pixbuf(posición_icono, pixbuf)</code>, o "
-"<code>set_icon_from_icon_name(posición_icono, nombre_icono)</code>, donde "
-"<code>posición_icono</code> puede ser <code>Gtk.EntryIconPosition.PRIMARY</"
-"code> (para poner el icono al principio de la entrada) o <code>Gtk."
-"EntryIconPosition.SECONDARY</code> (para poner el icono al final de la "
-"entrada). Para ponerle un consejo a un icono, use <code>set_icon_tooltip_text"
-"(\"texto del consejo\")</code> o <code>set_icon_tooltip_markup(\"texto del "
-"consejo en el lenguaje de marcado Pango\")</code>."
-
-#. (itstool) path: item/p
-#: C/entry.py.page:64
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkEntry.html"
-"\">GtkEntry</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkEntry.html"
-"\">GtkEntry</link>"
-
-#. (itstool) path: info/title
-#: C/entry.vala.page:8
-msgctxt "text"
-msgid "Entry (Vala)"
-msgstr "Entry (Vala)"
-
-#. (itstool) path: page/code
-#: C/entry.vala.page:25
-#, no-wrap
-msgid ""
-"/* A window in the application. */\n"
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"What is your name?\");\n"
-"\n"
-"\t\tvar name_box = new Gtk.Entry ();\n"
-"\n"
-"\t\t/* Connect to the signal handler. */\n"
-"\t\tname_box.activate.connect (this.on_activate);\n"
-"\t\tname_box.show ();\n"
-"\n"
-"\t\tthis.set_default_size (300, 100);\n"
-"\t\tthis.border_width = 10;\n"
-"\n"
-"\t\t/* Add the name_box to this window. */\n"
-"\t\tthis.add (name_box);\n"
-"\t}\n"
-"\n"
-"\t/* Signal handler (aka. callback function) for the 'activate'\n"
-"\t * signal of a Gtk.Entry.\n"
-"\t */\n"
-"\tvoid on_activate (Gtk.Entry entry) {\n"
-"\t\tname = entry.get_text ();\n"
-"\t\tprint (\"\\nHello \" + name + \"!\\n\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application. */\n"
-"class MyApplication : Gtk.Application {\n"
-"\n"
-"\t/* Constructor for the application. */\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t/* Create a new window for this application\n"
-"\t\t * and show it. */\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"}\n"
-"\n"
-"/* The main function creates and runs the application. */\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"/* A window in the application. */\n"
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"What is your name?\");\n"
-"\n"
-"\t\tvar name_box = new Gtk.Entry ();\n"
-"\n"
-"\t\t/* Connect to the signal handler. */\n"
-"\t\tname_box.activate.connect (this.on_activate);\n"
-"\t\tname_box.show ();\n"
-"\n"
-"\t\tthis.set_default_size (300, 100);\n"
-"\t\tthis.border_width = 10;\n"
-"\n"
-"\t\t/* Add the name_box to this window. */\n"
-"\t\tthis.add (name_box);\n"
-"\t}\n"
-"\n"
-"\t/* Signal handler (aka. callback function) for the 'activate'\n"
-"\t * signal of a Gtk.Entry.\n"
-"\t */\n"
-"\tvoid on_activate (Gtk.Entry entry) {\n"
-"\t\tname = entry.get_text ();\n"
-"\t\tprint (\"\\nHello \" + name + \"!\\n\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application. */\n"
-"class MyApplication : Gtk.Application {\n"
-"\n"
-"\t/* Constructor for the application. */\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t/* Create a new window for this application\n"
-"\t\t * and show it. */\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"}\n"
-"\n"
-"/* The main function creates and runs the application. */\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/entry.vala.page:30
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Entry.html\">Gtk.Entry</"
-"link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Entry.html\">Gtk.Entry</"
-"link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/filechooserdialog.py.page:26
-msgctxt "_"
-msgid ""
-"external ref='media/filechooserdialog_save.png' "
-"md5='3a7a3b71b9d3a36066857843b68ff27f'"
-msgstr ""
-"external ref='media/filechooserdialog_save.png' "
-"md5='3a7a3b71b9d3a36066857843b68ff27f'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/filechooserdialog.py.page:28
-msgctxt "_"
-msgid ""
-"external ref='media/filechooserdialog_menu.png' "
-"md5='8a75f04127a70eba0ed68a9eb1d3bbca'"
-msgstr ""
-"external ref='media/filechooserdialog_menu.png' "
-"md5='8a75f04127a70eba0ed68a9eb1d3bbca'"
-
-#. (itstool) path: info/title
-#: C/filechooserdialog.py.page:8
-msgctxt "text"
-msgid "FileChooserDialog (Python)"
-msgstr "FileChooserDialog (Python)"
-
-#. (itstool) path: info/desc
-#: C/filechooserdialog.py.page:22
-msgid "A dialog suitable for \"Open\" and \"Save\" commands"
-msgstr "Un diálogo adecuado para comandos «Abrir» y «Guardar»"
-
-#. (itstool) path: page/title
-#: C/filechooserdialog.py.page:25 C/filechooserdialog.vala.page:24
-msgid "FileChooserDialog"
-msgstr "FileChooserDialog"
-
-#. (itstool) path: page/p
-#: C/filechooserdialog.py.page:27
-msgid ""
-"This FileChooserDialog saves a text document, which can be opened or written "
-"from scratch in a TextView (see below)."
-msgstr ""
-"Este «FileChooserDialog» guarda un documento de texto, que puede abrirse o "
-"escribirse desde cero en un «TextView» (vea a continuación)."
-
-#. (itstool) path: page/p
-#: C/filechooserdialog.py.page:29
-msgid "It is also possible to call a FileChooserDialog to open a new document."
-msgstr ""
-"También es posible llamar a un «FileChooserDialog» para abrir un documento "
-"nuevo."
-
-#. (itstool) path: section/title
-#: C/filechooserdialog.py.page:34
-msgid "Steps to recreate the example"
-msgstr "Pasos para recrear el ejemplo"
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:36
-msgid ""
-"Create a file .ui to describe an app-menu with items \"New\", \"Open\", "
-"\"Save\", \"Save as\", and \"Quit\". This can be done with Glade or in a "
-"text editor. See <link xref=\"#xml\"/>"
-msgstr ""
-"Cree un archivo «.ui» para describir un menú de aplicación con elementos "
-"«New», «Open», «Save», «Save as», y «Quit». Esto puede hacerse con Glade o en un "
-"editor de texto. Consulte <link xref=\"#xml\"/>"
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:37
-msgid ""
-"Create a Python program for a Gtk.TextView with a Gtk.Buffer <code>self."
-"buffer</code>, and a <code>self.file</code> which will be a Gio.File and we "
-"set initially as <code>None</code>."
-msgstr ""
-"Cree un programa en Python para un «Gtk.TextView» con un «Gtk.Buffer» "
-"<code>self.buffer</code>, y un <code>self.file</code> que será un «Gio.File» "
-"establecido inicialmente a <code>None</code>."
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:38
-msgid ""
-"In this program, create also the actions corresponding to the items in the "
-"app-menu, connect them to callback functions, and import the menu in the "
-"<code>do_startup()</code> method with a Gtk.Builder."
-msgstr ""
-"En este programa, también cree las acciones correspondientes a los elementos "
-"en el menú de aplicación, conéctelos a funciones de retorno de llamada, e "
-"importe el menú en el método <code>do_startup()</code> con un «Gtk.Builder»."
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:39
-msgid ""
-"\"New\" and \"Quit\" actions and callback functions are quite "
-"straightforward, see <link xref=\"#code\"/>. See <link xref=\"signals-"
-"callbacks.py\"/> for a more detailed explanation of signals and callback "
-"functions."
-msgstr ""
-"Las acciones y funciones de retorno de llamada «New» y «Quit» son bastante "
-"directas, consulte <link xref=\"#code\"/>. Consulte la <link xref=\"signals-"
-"callbacks.py\"/> para obtener una explicación más detallada de señales y "
-"funciones de retorno de llamada."
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:40
-msgid ""
-"\"Open\" callback should create and open a Gtk.FileChooserDialog for \"Open"
-"\", connected with another callback function for each of the two \"Open\" "
-"and \"Cancel\" buttons of the FileChooserDialog."
-msgstr ""
-"La devolución de llamada «Open» debe crear y abrir un «Gtk.FileChooserDialog» "
-"para «Abrir», conectado con otra función de retorno de llamada por cada uno "
-"de los dos botones «Open» y «Cancel» del «FileChooserDialog»."
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:41
-msgid ""
-"\"Save as\" works basically as \"Open\", but the callback function of the "
-"\"Save\" button depends on a more complex method <code>save_to_file()</code>."
-msgstr ""
-"«Save as» funciona básicamente como «Open», pero la función de retorno de "
-"llamada del botón «Save» depende en un método más complejo, <code>save_to_file"
-"()</code>."
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:42
-msgid ""
-"\"Save\" can be reduced to the case where the file is <code>None</code>, "
-"that is the case where <code>self.file</code> is a new file, which in turn "
-"is the case \"Save as\"; and to the case where the file is not <code>None</"
-"code>, which in turn is reduced to <code>save_to_file()</code>."
-msgstr ""
-"«Save» puede reducirse al caso en el que el archivo es <code>None</code>, es "
-"decir en el caso en el que <code>self.file</code> es un archivo nuevo, que a "
-"su vez es el caso de «Save as»; y al caso en el que el archivo no es "
-"<code>None</code>, que a su vez se reduce a <code>save_to_file()</code>."
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:43
-msgid ""
-"Finally, the method <code>save_to_file()</code>: see <link xref=\"#code\"/>, "
-"lines 146 - 175."
-msgstr ""
-"Finalmente, el método <code>save_to_file()</code>: consulte <link xref="
-"\"#code\"/>, líneas 146 - 175."
-
-#. (itstool) path: section/title
-#: C/filechooserdialog.py.page:48
-msgid "XML file which creates the app-menu"
-msgstr "Archivo XML que crea el menú de aplicación"
-
-#. (itstool) path: section/code
-#: C/filechooserdialog.py.page:49 C/filechooserdialog.vala.page:30
-#, no-wrap
-msgid ""
-"<?xml version=\"1.0\"?>\n"
-"<interface>\n"
-" <menu id=\"appmenu\">\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">New</attribute>\n"
-" <attribute name=\"action\">win.new</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Open</attribute>\n"
-" <attribute name=\"action\">win.open</attribute>\n"
-" </item>\n"
-" </section>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">Save</attribute>\n"
-" <attribute name=\"action\">win.save</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Save As...</attribute>\n"
-" <attribute name=\"action\">win.save-as</attribute>\n"
-" </item>\n"
-" </section>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">Quit</attribute>\n"
-" <attribute name=\"action\">app.quit</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </menu>\n"
-"</interface>\n"
-msgstr ""
-"<?xml version=\"1.0\"?>\n"
-"<interface>\n"
-" <menu id=\"appmenu\">\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">New</attribute>\n"
-" <attribute name=\"action\">win.new</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Open</attribute>\n"
-" <attribute name=\"action\">win.open</attribute>\n"
-" </item>\n"
-" </section>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">Save</attribute>\n"
-" <attribute name=\"action\">win.save</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Save As...</attribute>\n"
-" <attribute name=\"action\">win.save-as</attribute>\n"
-" </item>\n"
-" </section>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">Quit</attribute>\n"
-" <attribute name=\"action\">app.quit</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </menu>\n"
-"</interface>\n"
-
-#. (itstool) path: section/code
-#: C/filechooserdialog.py.page:54
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "from gi.repository import Gdk\n"
-#| "from gi.repository import Gio\n"
-#| "from gi.repository import GObject\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(\n"
-#| " self, title=\"FileChooserDialog Example\", application=app)\n"
-#| " self.set_default_size(400, 400)\n"
-#| "\n"
-#| " # the actions for the window menu, connected to the callback functions\n"
-#| " new_action = Gio.SimpleAction.new(\"new\", None)\n"
-#| " new_action.connect(\"activate\", self.new_callback)\n"
-#| " self.add_action(new_action)\n"
-#| "\n"
-#| " open_action = Gio.SimpleAction.new(\"open\", None)\n"
-#| " open_action.connect(\"activate\", self.open_callback)\n"
-#| " self.add_action(open_action)\n"
-#| "\n"
-#| " save_action = Gio.SimpleAction.new(\"save\", None)\n"
-#| " save_action.connect(\"activate\", self.save_callback)\n"
-#| " self.add_action(save_action)\n"
-#| "\n"
-#| " save_as_action = Gio.SimpleAction.new(\"save-as\", None)\n"
-#| " save_as_action.connect(\"activate\", self.save_as_callback)\n"
-#| " self.add_action(save_as_action)\n"
-#| "\n"
-#| " # the file\n"
-#| " self.file = None\n"
-#| "\n"
-#| " # the textview with the buffer\n"
-#| " self.buffer = Gtk.TextBuffer()\n"
-#| " textview = Gtk.TextView(buffer=self.buffer)\n"
-#| " textview.set_wrap_mode(Gtk.WrapMode.WORD)\n"
-#| "\n"
-#| " # a scrolled window for the textview\n"
-#| " self.scrolled_window = Gtk.ScrolledWindow()\n"
-#| " self.scrolled_window.set_policy(\n"
-#| " Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)\n"
-#| " self.scrolled_window.add(textview)\n"
-#| " self.scrolled_window.set_border_width(5)\n"
-#| "\n"
-#| " # add the scrolled window to the window\n"
-#| " self.add(self.scrolled_window)\n"
-#| "\n"
-#| " # callback for new\n"
-#| " def new_callback(self, action, parameter):\n"
-#| " self.buffer.set_text(\"\")\n"
-#| " print \"New file created\"\n"
-#| "\n"
-#| " # callback for open\n"
-#| " def open_callback(self, action, parameter):\n"
-#| " # create a filechooserdialog to open:\n"
-#| " # the arguments are: title of the window, parent_window, action,\n"
-#| " # (buttons, response)\n"
-#| " open_dialog = Gtk.FileChooserDialog(\"Pick a file\", self,\n"
-#| " Gtk.FileChooserAction.OPEN,\n"
-#| " (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,\n"
-#| " Gtk.STOCK_OPEN, Gtk.ResponseType.ACCEPT))\n"
-#| "\n"
-#| " # not only local files can be selected in the file selector\n"
-#| " open_dialog.set_local_only(False)\n"
-#| " # dialog always on top of the textview window\n"
-#| " open_dialog.set_modal(True)\n"
-#| " # connect the dialog with the callback function open_response_cb()\n"
-#| " open_dialog.connect(\"response\", self.open_response_cb)\n"
-#| " # show the dialog\n"
-#| " open_dialog.show()\n"
-#| "\n"
-#| " # callback function for the dialog open_dialog\n"
-#| " def open_response_cb(self, dialog, response_id):\n"
-#| " open_dialog = dialog\n"
-#| " # if response is \"ACCEPT\" (the button \"Open\" has been clicked)\n"
-#| " if response_id == Gtk.ResponseType.ACCEPT:\n"
-#| " # self.file is the file that we get from the FileChooserDialog\n"
-#| " self.file = open_dialog.get_file()\n"
-#| " # an empty string (provisionally)\n"
-#| " content = \"\"\n"
-#| " try:\n"
-#| " # load the content of the file into memory:\n"
-#| " # success is a boolean depending on the success of the operation\n"
-#| " # content is self-explanatory\n"
-#| " # etags is an entity tag (can be used to quickly determine if the\n"
-#| " # file has been modified from the version on the file system)\n"
-#| " [success, content, etags] = self.file.load_contents(None)\n"
-#| " except GObject.GError as e:\n"
-#| " print \"Error: \" + e.message\n"
-#| " # set the content as the text into the buffer\n"
-#| " self.buffer.set_text(content, len(content))\n"
-#| " print \"opened: \" + open_dialog.get_filename()\n"
-#| " # if response is \"CANCEL\" (the button \"Cancel\" has been clicked)\n"
-#| " elif response_id == Gtk.ResponseType.CANCEL:\n"
-#| " print \"cancelled: FileChooserAction.OPEN\"\n"
-#| " # destroy the FileChooserDialog\n"
-#| " dialog.destroy()\n"
-#| "\n"
-#| " # callback function for save_as\n"
-#| " def save_as_callback(self, action, parameter):\n"
-#| " # create a filechooserdialog to save:\n"
-#| " # the arguments are: title of the window, parent_window, action,\n"
-#| " # (buttons, response)\n"
-#| " save_dialog = Gtk.FileChooserDialog(\"Pick a file\", self,\n"
-#| " Gtk.FileChooserAction.SAVE,\n"
-#| " (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,\n"
-#| " Gtk.STOCK_SAVE, Gtk.ResponseType.ACCEPT))\n"
-#| " # the dialog will present a confirmation dialog if the user types a file name that\n"
-#| " # already exists\n"
-#| " save_dialog.set_do_overwrite_confirmation(True)\n"
-#| " # dialog always on top of the textview window\n"
-#| " save_dialog.set_modal(True)\n"
-#| " # if self.file has already been saved\n"
-#| " if self.file is not None:\n"
-#| " try:\n"
-#| " # set self.file as the current filename for the file chooser\n"
-#| " save_dialog.set_file(self.file)\n"
-#| " except GObject.GError as e:\n"
-#| " print \"Error: \" + e.message\n"
-#| " # connect the dialog to the callback function save_response_cb()\n"
-#| " save_dialog.connect(\"response\", self.save_response_cb)\n"
-#| " # show the dialog\n"
-#| " save_dialog.show()\n"
-#| "\n"
-#| " # callback function for the dialog save_dialog\n"
-#| " def save_response_cb(self, dialog, response_id):\n"
-#| " save_dialog = dialog\n"
-#| " # if response is \"ACCEPT\" (the button \"Save\" has been clicked)\n"
-#| " if response_id == Gtk.ResponseType.ACCEPT:\n"
-#| " # self.file is the currently selected file\n"
-#| " self.file = save_dialog.get_file()\n"
-#| " # save to file (see below)\n"
-#| " self.save_to_file()\n"
-#| " # if response is \"CANCEL\" (the button \"Cancel\" has been clicked)\n"
-#| " elif response_id == Gtk.ResponseType.CANCEL:\n"
-#| " print \"cancelled: FileChooserAction.SAVE\"\n"
-#| " # destroy the FileChooserDialog\n"
-#| " dialog.destroy()\n"
-#| "\n"
-#| " # callback function for save\n"
-#| " def save_callback(self, action, parameter):\n"
-#| " # if self.file is not already there\n"
-#| " if self.file is not None:\n"
-#| " self.save_to_file()\n"
-#| " # self.file is a new file\n"
-#| " else:\n"
-#| " # use save_as\n"
-#| " self.save_as_callback(action, parameter)\n"
-#| "\n"
-#| " # save_to_file\n"
-#| " def save_to_file(self):\n"
-#| " # get the content of the buffer, without hidden characters\n"
-#| " [start, end] = self.buffer.get_bounds()\n"
-#| " current_contents = self.buffer.get_text(start, end, False)\n"
-#| " # if there is some content\n"
-#| " if current_contents != \"\":\n"
-#| " # set the content as content of self.file.\n"
-#| " # arguments: contents, etags, make_backup, flags, GError\n"
-#| " try:\n"
-#| " self.file.replace_contents(current_contents,\n"
-#| " None,\n"
-#| " False,\n"
-#| " Gio.FileCreateFlags.NONE,\n"
-#| " None)\n"
-#| " print \"saved: \" + self.file.get_path()\n"
-#| " except GObject.GError as e:\n"
-#| " print \"Error: \" + e.message\n"
-#| " # if the contents are empty\n"
-#| " else:\n"
-#| " # create (if the file does not exist) or overwrite the file in readwrite mode.\n"
-#| " # arguments: etags, make_backup, flags, GError\n"
-#| " try:\n"
-#| " self.file.replace_readwrite(None,\n"
-#| " False,\n"
-#| " Gio.FileCreateFlags.NONE,\n"
-#| " None)\n"
-#| " print \"saved: \" + self.file.get_path()\n"
-#| " except GObject.GError as e:\n"
-#| " print \"Error: \" + e.message\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| " # app action quit, connected to the callback function\n"
-#| " quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-#| " quit_action.connect(\"activate\", self.quit_callback)\n"
-#| " self.add_action(quit_action)\n"
-#| "\n"
-#| " # get the menu from the ui file with a builder\n"
-#| " builder = Gtk.Builder()\n"
-#| " try:\n"
-#| " builder.add_from_file(\"filechooserdialog.ui\")\n"
-#| " except:\n"
-#| " print \"file not found\"\n"
-#| " sys.exit()\n"
-#| " menu = builder.get_object(\"appmenu\")\n"
-#| " self.set_app_menu(menu)\n"
-#| "\n"
-#| " # callback function for quit\n"
-#| " def quit_callback(self, action, parameter):\n"
-#| " self.quit()\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gdk\n"
-"from gi.repository import Gio\n"
-"from gi.repository import GObject\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(\n"
-" self, title=\"FileChooserDialog Example\", application=app)\n"
-" self.set_default_size(400, 400)\n"
-"\n"
-" # the actions for the window menu, connected to the callback functions\n"
-" new_action = Gio.SimpleAction.new(\"new\", None)\n"
-" new_action.connect(\"activate\", self.new_callback)\n"
-" self.add_action(new_action)\n"
-"\n"
-" open_action = Gio.SimpleAction.new(\"open\", None)\n"
-" open_action.connect(\"activate\", self.open_callback)\n"
-" self.add_action(open_action)\n"
-"\n"
-" save_action = Gio.SimpleAction.new(\"save\", None)\n"
-" save_action.connect(\"activate\", self.save_callback)\n"
-" self.add_action(save_action)\n"
-"\n"
-" save_as_action = Gio.SimpleAction.new(\"save-as\", None)\n"
-" save_as_action.connect(\"activate\", self.save_as_callback)\n"
-" self.add_action(save_as_action)\n"
-"\n"
-" # the file\n"
-" self.file = None\n"
-"\n"
-" # the textview with the buffer\n"
-" self.buffer = Gtk.TextBuffer()\n"
-" textview = Gtk.TextView(buffer=self.buffer)\n"
-" textview.set_wrap_mode(Gtk.WrapMode.WORD)\n"
-"\n"
-" # a scrolled window for the textview\n"
-" self.scrolled_window = Gtk.ScrolledWindow()\n"
-" self.scrolled_window.set_policy(\n"
-" Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)\n"
-" self.scrolled_window.add(textview)\n"
-" self.scrolled_window.set_border_width(5)\n"
-"\n"
-" # add the scrolled window to the window\n"
-" self.add(self.scrolled_window)\n"
-"\n"
-" # callback for new\n"
-" def new_callback(self, action, parameter):\n"
-" self.buffer.set_text(\"\")\n"
-" print(\"New file created\")\n"
-"\n"
-" # callback for open\n"
-" def open_callback(self, action, parameter):\n"
-" # create a filechooserdialog to open:\n"
-" # the arguments are: title of the window, parent_window, action,\n"
-" # (buttons, response)\n"
-" open_dialog = Gtk.FileChooserDialog(\"Pick a file\", self,\n"
-" Gtk.FileChooserAction.OPEN,\n"
-" (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,\n"
-" Gtk.STOCK_OPEN, Gtk.ResponseType.ACCEPT))\n"
-"\n"
-" # not only local files can be selected in the file selector\n"
-" open_dialog.set_local_only(False)\n"
-" # dialog always on top of the textview window\n"
-" open_dialog.set_modal(True)\n"
-" # connect the dialog with the callback function open_response_cb()\n"
-" open_dialog.connect(\"response\", self.open_response_cb)\n"
-" # show the dialog\n"
-" open_dialog.show()\n"
-"\n"
-" # callback function for the dialog open_dialog\n"
-" def open_response_cb(self, dialog, response_id):\n"
-" open_dialog = dialog\n"
-" # if response is \"ACCEPT\" (the button \"Open\" has been clicked)\n"
-" if response_id == Gtk.ResponseType.ACCEPT:\n"
-" # self.file is the file that we get from the FileChooserDialog\n"
-" self.file = open_dialog.get_file()\n"
-" # an empty string (provisionally)\n"
-" content = \"\"\n"
-" try:\n"
-" # load the content of the file into memory:\n"
-" # success is a boolean depending on the success of the operation\n"
-" # content is self-explanatory\n"
-" # etags is an entity tag (can be used to quickly determine if the\n"
-" # file has been modified from the version on the file system)\n"
-" [success, content, etags] = self.file.load_contents(None)\n"
-" except GObject.GError as e:\n"
-" print(\"Error: \" + e.message)\n"
-" # set the content as the text into the buffer\n"
-" self.buffer.set_text(content, len(content))\n"
-" print(\"opened: \" + open_dialog.get_filename())\n"
-" # if response is \"CANCEL\" (the button \"Cancel\" has been clicked)\n"
-" elif response_id == Gtk.ResponseType.CANCEL:\n"
-" print(\"cancelled: FileChooserAction.OPEN\")\n"
-" # destroy the FileChooserDialog\n"
-" dialog.destroy()\n"
-"\n"
-" # callback function for save_as\n"
-" def save_as_callback(self, action, parameter):\n"
-" # create a filechooserdialog to save:\n"
-" # the arguments are: title of the window, parent_window, action,\n"
-" # (buttons, response)\n"
-" save_dialog = Gtk.FileChooserDialog(\"Pick a file\", self,\n"
-" Gtk.FileChooserAction.SAVE,\n"
-" (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,\n"
-" Gtk.STOCK_SAVE, Gtk.ResponseType.ACCEPT))\n"
-" # the dialog will present a confirmation dialog if the user types a file name that\n"
-" # already exists\n"
-" save_dialog.set_do_overwrite_confirmation(True)\n"
-" # dialog always on top of the textview window\n"
-" save_dialog.set_modal(True)\n"
-" # if self.file has already been saved\n"
-" if self.file is not None:\n"
-" try:\n"
-" # set self.file as the current filename for the file chooser\n"
-" save_dialog.set_file(self.file)\n"
-" except GObject.GError as e:\n"
-" print(\"Error: \" + e.message)\n"
-" # connect the dialog to the callback function save_response_cb()\n"
-" save_dialog.connect(\"response\", self.save_response_cb)\n"
-" # show the dialog\n"
-" save_dialog.show()\n"
-"\n"
-" # callback function for the dialog save_dialog\n"
-" def save_response_cb(self, dialog, response_id):\n"
-" save_dialog = dialog\n"
-" # if response is \"ACCEPT\" (the button \"Save\" has been clicked)\n"
-" if response_id == Gtk.ResponseType.ACCEPT:\n"
-" # self.file is the currently selected file\n"
-" self.file = save_dialog.get_file()\n"
-" # save to file (see below)\n"
-" self.save_to_file()\n"
-" # if response is \"CANCEL\" (the button \"Cancel\" has been clicked)\n"
-" elif response_id == Gtk.ResponseType.CANCEL:\n"
-" print(\"cancelled: FileChooserAction.SAVE\")\n"
-" # destroy the FileChooserDialog\n"
-" dialog.destroy()\n"
-"\n"
-" # callback function for save\n"
-" def save_callback(self, action, parameter):\n"
-" # if self.file is not already there\n"
-" if self.file is not None:\n"
-" self.save_to_file()\n"
-" # self.file is a new file\n"
-" else:\n"
-" # use save_as\n"
-" self.save_as_callback(action, parameter)\n"
-"\n"
-" # save_to_file\n"
-" def save_to_file(self):\n"
-" # get the content of the buffer, without hidden characters\n"
-" [start, end] = self.buffer.get_bounds()\n"
-" current_contents = self.buffer.get_text(start, end, False)\n"
-" # if there is some content\n"
-" if current_contents != \"\":\n"
-" # set the content as content of self.file.\n"
-" # arguments: contents, etags, make_backup, flags, GError\n"
-" try:\n"
-" self.file.replace_contents(current_contents,\n"
-" None,\n"
-" False,\n"
-" Gio.FileCreateFlags.NONE,\n"
-" None)\n"
-" print(\"saved: \" + self.file.get_path())\n"
-" except GObject.GError as e:\n"
-" print(\"Error: \" + e.message)\n"
-" # if the contents are empty\n"
-" else:\n"
-" # create (if the file does not exist) or overwrite the file in readwrite mode.\n"
-" # arguments: etags, make_backup, flags, GError\n"
-" try:\n"
-" self.file.replace_readwrite(None,\n"
-" False,\n"
-" Gio.FileCreateFlags.NONE,\n"
-" None)\n"
-" print(\"saved: \" + self.file.get_path())\n"
-" except GObject.GError as e:\n"
-" print(\"Error: \" + e.message)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # app action quit, connected to the callback function\n"
-" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-" quit_action.connect(\"activate\", self.quit_callback)\n"
-" self.add_action(quit_action)\n"
-"\n"
-" # get the menu from the ui file with a builder\n"
-" builder = Gtk.Builder()\n"
-" try:\n"
-" builder.add_from_file(\"filechooserdialog.ui\")\n"
-" except:\n"
-" print(\"file not found\")\n"
-" sys.exit()\n"
-" menu = builder.get_object(\"appmenu\")\n"
-" self.set_app_menu(menu)\n"
-"\n"
-" # callback function for quit\n"
-" def quit_callback(self, action, parameter):\n"
-" self.quit()\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gdk\n"
-"from gi.repository import Gio\n"
-"from gi.repository import GObject\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(\n"
-" self, title=\"FileChooserDialog Example\", application=app)\n"
-" self.set_default_size(400, 400)\n"
-"\n"
-" # the actions for the window menu, connected to the callback functions\n"
-" new_action = Gio.SimpleAction.new(\"new\", None)\n"
-" new_action.connect(\"activate\", self.new_callback)\n"
-" self.add_action(new_action)\n"
-"\n"
-" open_action = Gio.SimpleAction.new(\"open\", None)\n"
-" open_action.connect(\"activate\", self.open_callback)\n"
-" self.add_action(open_action)\n"
-"\n"
-" save_action = Gio.SimpleAction.new(\"save\", None)\n"
-" save_action.connect(\"activate\", self.save_callback)\n"
-" self.add_action(save_action)\n"
-"\n"
-" save_as_action = Gio.SimpleAction.new(\"save-as\", None)\n"
-" save_as_action.connect(\"activate\", self.save_as_callback)\n"
-" self.add_action(save_as_action)\n"
-"\n"
-" # the file\n"
-" self.file = None\n"
-"\n"
-" # the textview with the buffer\n"
-" self.buffer = Gtk.TextBuffer()\n"
-" textview = Gtk.TextView(buffer=self.buffer)\n"
-" textview.set_wrap_mode(Gtk.WrapMode.WORD)\n"
-"\n"
-" # a scrolled window for the textview\n"
-" self.scrolled_window = Gtk.ScrolledWindow()\n"
-" self.scrolled_window.set_policy(\n"
-" Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)\n"
-" self.scrolled_window.add(textview)\n"
-" self.scrolled_window.set_border_width(5)\n"
-"\n"
-" # add the scrolled window to the window\n"
-" self.add(self.scrolled_window)\n"
-"\n"
-" # callback for new\n"
-" def new_callback(self, action, parameter):\n"
-" self.buffer.set_text(\"\")\n"
-" print(\"New file created\")\n"
-"\n"
-" # callback for open\n"
-" def open_callback(self, action, parameter):\n"
-" # create a filechooserdialog to open:\n"
-" # the arguments are: title of the window, parent_window, action,\n"
-" # (buttons, response)\n"
-" open_dialog = Gtk.FileChooserDialog(\"Pick a file\", self,\n"
-" Gtk.FileChooserAction.OPEN,\n"
-" (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,\n"
-" Gtk.STOCK_OPEN, Gtk.ResponseType.ACCEPT))\n"
-"\n"
-" # not only local files can be selected in the file selector\n"
-" open_dialog.set_local_only(False)\n"
-" # dialog always on top of the textview window\n"
-" open_dialog.set_modal(True)\n"
-" # connect the dialog with the callback function open_response_cb()\n"
-" open_dialog.connect(\"response\", self.open_response_cb)\n"
-" # show the dialog\n"
-" open_dialog.show()\n"
-"\n"
-" # callback function for the dialog open_dialog\n"
-" def open_response_cb(self, dialog, response_id):\n"
-" open_dialog = dialog\n"
-" # if response is \"ACCEPT\" (the button \"Open\" has been clicked)\n"
-" if response_id == Gtk.ResponseType.ACCEPT:\n"
-" # self.file is the file that we get from the FileChooserDialog\n"
-" self.file = open_dialog.get_file()\n"
-" # an empty string (provisionally)\n"
-" content = \"\"\n"
-" try:\n"
-" # load the content of the file into memory:\n"
-" # success is a boolean depending on the success of the operation\n"
-" # content is self-explanatory\n"
-" # etags is an entity tag (can be used to quickly determine if the\n"
-" # file has been modified from the version on the file system)\n"
-" [success, content, etags] = self.file.load_contents(None)\n"
-" except GObject.GError as e:\n"
-" print(\"Error: \" + e.message)\n"
-" # set the content as the text into the buffer\n"
-" self.buffer.set_text(content, len(content))\n"
-" print(\"opened: \" + open_dialog.get_filename())\n"
-" # if response is \"CANCEL\" (the button \"Cancel\" has been clicked)\n"
-" elif response_id == Gtk.ResponseType.CANCEL:\n"
-" print(\"cancelled: FileChooserAction.OPEN\")\n"
-" # destroy the FileChooserDialog\n"
-" dialog.destroy()\n"
-"\n"
-" # callback function for save_as\n"
-" def save_as_callback(self, action, parameter):\n"
-" # create a filechooserdialog to save:\n"
-" # the arguments are: title of the window, parent_window, action,\n"
-" # (buttons, response)\n"
-" save_dialog = Gtk.FileChooserDialog(\"Pick a file\", self,\n"
-" Gtk.FileChooserAction.SAVE,\n"
-" (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,\n"
-" Gtk.STOCK_SAVE, Gtk.ResponseType.ACCEPT))\n"
-" # the dialog will present a confirmation dialog if the user types a file name that\n"
-" # already exists\n"
-" save_dialog.set_do_overwrite_confirmation(True)\n"
-" # dialog always on top of the textview window\n"
-" save_dialog.set_modal(True)\n"
-" # if self.file has already been saved\n"
-" if self.file is not None:\n"
-" try:\n"
-" # set self.file as the current filename for the file chooser\n"
-" save_dialog.set_file(self.file)\n"
-" except GObject.GError as e:\n"
-" print(\"Error: \" + e.message)\n"
-" # connect the dialog to the callback function save_response_cb()\n"
-" save_dialog.connect(\"response\", self.save_response_cb)\n"
-" # show the dialog\n"
-" save_dialog.show()\n"
-"\n"
-" # callback function for the dialog save_dialog\n"
-" def save_response_cb(self, dialog, response_id):\n"
-" save_dialog = dialog\n"
-" # if response is \"ACCEPT\" (the button \"Save\" has been clicked)\n"
-" if response_id == Gtk.ResponseType.ACCEPT:\n"
-" # self.file is the currently selected file\n"
-" self.file = save_dialog.get_file()\n"
-" # save to file (see below)\n"
-" self.save_to_file()\n"
-" # if response is \"CANCEL\" (the button \"Cancel\" has been clicked)\n"
-" elif response_id == Gtk.ResponseType.CANCEL:\n"
-" print(\"cancelled: FileChooserAction.SAVE\")\n"
-" # destroy the FileChooserDialog\n"
-" dialog.destroy()\n"
-"\n"
-" # callback function for save\n"
-" def save_callback(self, action, parameter):\n"
-" # if self.file is not already there\n"
-" if self.file is not None:\n"
-" self.save_to_file()\n"
-" # self.file is a new file\n"
-" else:\n"
-" # use save_as\n"
-" self.save_as_callback(action, parameter)\n"
-"\n"
-" # save_to_file\n"
-" def save_to_file(self):\n"
-" # get the content of the buffer, without hidden characters\n"
-" [start, end] = self.buffer.get_bounds()\n"
-" current_contents = self.buffer.get_text(start, end, False)\n"
-" # if there is some content\n"
-" if current_contents != \"\":\n"
-" # set the content as content of self.file.\n"
-" # arguments: contents, etags, make_backup, flags, GError\n"
-" try:\n"
-" self.file.replace_contents(current_contents,\n"
-" None,\n"
-" False,\n"
-" Gio.FileCreateFlags.NONE,\n"
-" None)\n"
-" print(\"saved: \" + self.file.get_path())\n"
-" except GObject.GError as e:\n"
-" print(\"Error: \" + e.message)\n"
-" # if the contents are empty\n"
-" else:\n"
-" # create (if the file does not exist) or overwrite the file in readwrite mode.\n"
-" # arguments: etags, make_backup, flags, GError\n"
-" try:\n"
-" self.file.replace_readwrite(None,\n"
-" False,\n"
-" Gio.FileCreateFlags.NONE,\n"
-" None)\n"
-" print(\"saved: \" + self.file.get_path())\n"
-" except GObject.GError as e:\n"
-" print(\"Error: \" + e.message)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # app action quit, connected to the callback function\n"
-" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-" quit_action.connect(\"activate\", self.quit_callback)\n"
-" self.add_action(quit_action)\n"
-"\n"
-" # get the menu from the ui file with a builder\n"
-" builder = Gtk.Builder()\n"
-" try:\n"
-" builder.add_from_file(\"filechooserdialog.ui\")\n"
-" except:\n"
-" print(\"file not found\")\n"
-" sys.exit()\n"
-" menu = builder.get_object(\"appmenu\")\n"
-" self.set_app_menu(menu)\n"
-"\n"
-" # callback function for quit\n"
-" def quit_callback(self, action, parameter):\n"
-" self.quit()\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/filechooserdialog.py.page:58
-msgid "Useful methods for a FileChooserDialog"
-msgstr "Métodos útiles para un «FileChooserDialog»"
-
-#. (itstool) path: section/p
-#: C/filechooserdialog.py.page:59
-msgid ""
-"Note that the action of the FileChooserDialog can be one of the following: "
-"<code>Gtk.FileChooserAction.OPEN</code> (the file chooser will only let the "
-"user pick an existing file) <code>Gtk.FileChooserAction.SAVE</code> (the "
-"file chooser will let the user pick an existing file, or type in a new "
-"filename), <code>Gtk.FileChooserAction.SELECT_FOLDER</code> (the file "
-"chooser will let the user pick an existing folder), <code>Gtk."
-"FileChooserAction.CREATE_FOLDER</code> (the file chooser will let the user "
-"name an existing or new folder)."
-msgstr ""
-"Tenga en cuenta que la acción del «FileChooserDialog» puede ser una de las "
-"siguientes: <code>Gtk.FileChooserAction.OPEN</code> (el selector de archivo "
-"sólo le permitirá al usuario elegir un archivo existente), <code>Gtk."
-"FileChooserAction.SAVE</code> (se le permitirá al usuario elegir un archivo "
-"existente, o introducir uno nuevo), <code>Gtk.FileChooserAction."
-"SELECT_FOLDER</code> se le permitirá al usuario elegir una carpeta "
-"existente), o <code>Gtk.FileChooserAction.CREATE_FOLDER</code> (se le "
-"permitirá al usuario elegir una carpeta nueva o existente)."
-
-#. (itstool) path: section/p
-#: C/filechooserdialog.py.page:60
-msgid "Besides the methods used in the <link xref=\"#code\"/>, we have:"
-msgstr "Además de los métodos usados en el <link xref=\"#code\"/>, existen:"
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:62
-msgid ""
-"<code>set_show_hidden(True)</code> is used to display hidden files and "
-"folders."
-msgstr ""
-"<code>set_show_hidden(True)</code> se usa para mostrar carpetas y archivos "
-"ocultos."
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:63
-msgid ""
-"<code>set_select_multiple(True)</code> sets that multiple files can be "
-"selected. This is only relevant if the mode is <code>Gtk.FileChooserAction."
-"OPEN</code> or <code>Gtk.FileChooserAction.SELECT_FOLDER</code>."
-msgstr ""
-"<code>set_select_multiple(True)</code> indica que se pueden seleccionar "
-"múltiples archivos. Esto sólo es relevante si el modo es <code>Gtk."
-"FileChooserAction.OPEN</code> o <code>Gtk.FileChooserAction.SELECT_FOLDER</"
-"code>."
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:64
-msgid ""
-"In a \"Save as\" dialog, <code>set_current_name(current_name)</code> sets "
-"<code>current_name</code> in the file selector, as if entered by the user; "
-"<code>current_name</code> can be something like <em>Untitled.txt</em>. This "
-"method should not be used except in a \"Save as\" dialog."
-msgstr ""
-"En el diálogo «Save as», <code>set_current_name(nombre_actual)</code> "
-"establece <code>nombre_actual</code> en el selector de archivo, como si lo "
-"hubiera introducido el usuario; <code>nombre_actual</code> puede ser algo "
-"como <code>Sin nombre.txt</code>. Este método no debe usarse excepto en un "
-"diálogo «Save as»."
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:65
-msgid ""
-"The default current folder is \"recent items\". To set another folder use "
-"<code>set_current_folder_uri(uri)</code>; but note you should use this "
-"method and cause the file chooser to show a specific folder only when you "
-"are doing a \"Save as\" command and you already have a file saved somewhere."
-msgstr ""
-"La carpeta actual predeterminada es «elementos recientes». Para establecer "
-"otra carpeta use <code>set_current_folder_uri(uri)</code>; pero tenga en "
-"cuenta que debe usar este método y hacer que el selector de archivo muestre "
-"una carpeta específica sólo cuando está ejecutando un comando «Save as» y ya "
-"tenga un archivo guardado en algún lado."
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:73
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkFileChooserDialog.html"
-"\">GtkFileChooserDialog</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkFileChooserDialog.html"
-"\">GtkFileChooserDialog</link>"
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:74
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkFileChooser.html"
-"\">GtkFileChooser</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkFileChooser.html"
-"\">GtkFileChooser</link>"
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:75 C/image.c.page:34 C/label.c.page:38
-#: C/menubar.c.page:38 C/scrolledwindow.c.page:35
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkWindow.html"
-"\">GtkWindow</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkWindow.html"
-"\">GtkWindow</link>"
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:76 C/textview.c.page:39
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkTextView.html"
-"\">GtkTextView</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkTextView.html"
-"\">GtkTextView</link>"
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:77 C/textview.c.page:38
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkTextBuffer.html"
-"\">GtkTextBuffer</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkTextBuffer.html"
-"\">GtkTextBuffer</link>"
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:78 C/scrolledwindow.c.page:36
-#: C/textview.c.page:40
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkScrolledWindow.html"
-"\">GtkScrolledWindow</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkScrolledWindow.html"
-"\">GtkScrolledWindow</link>"
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:79
-msgid ""
-"<link href=\"http://developer.gnome.org/gio/stable/GFile.html\">GFile</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gio/stable/GFile.html\">GFile</link>"
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.py.page:81
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkBuilder.html"
-"\">GtkBuilder</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkBuilder.html"
-"\">GtkBuilder</link>"
-
-#. (itstool) path: info/title
-#: C/filechooserdialog.vala.page:8
-msgctxt "text"
-msgid "FileChooserDialog (Vala)"
-msgstr "FileChooserDialog (Vala)"
-
-#. (itstool) path: info/desc
-#: C/filechooserdialog.vala.page:21
-msgid "A dialog suitable for \"Open\" and \"Save\" commands."
-msgstr "Un diálogo adecuado para comandos «Abrir» y «Guardar»."
-
-#. (itstool) path: section/title
-#: C/filechooserdialog.vala.page:26
-msgid "Overview of the example"
-msgstr "Visión general del ejemplo"
-
-#. (itstool) path: section/p
-#: C/filechooserdialog.vala.page:27
-msgid ""
-"This example demonstrates how the FileChooserDialog can be used. It is "
-"incorporated into a very simple text editor application. All the <link xref="
-"\"menubar.vala#win-app\">actions</link>, including the \"open\", \"save\" "
-"and \"save-as\" commands can be found in the <link xref=\"gmenu.vala\">app-"
-"menu</link>. Here, the app-menu is created using an XML UI file, which is "
-"then imported into the application using Gtk.Builder."
-msgstr ""
-"Este ejemplo demuestra cómo usar el «FileChooserDialog». Está incorporado en "
-"una aplicación de edición de texto muy simple. Todas las <link xref="
-"\"menubar.vala#win-app\">acciones</link>, incluyendo los comandos «open», "
-"«save» y «save-as» pueden encontrarse en el <link xref=\"gmenu.vala\">menú de "
-"la aplicación</link>. Aquí, el menú se crea usando un archivo de IU XML, que "
-"a su vez se importa a la aplicación usando «Gtk.Builder»."
-
-#. (itstool) path: section/title
-#: C/filechooserdialog.vala.page:29
-msgid "XML UI file which creates the app-menu"
-msgstr "Archivo de IU XML que crea el menú de la aplicación"
-
-#. (itstool) path: section/title
-#: C/filechooserdialog.vala.page:32
-msgid "Vala Code"
-msgstr "Código en Vala"
-
-#. (itstool) path: section/code
-#: C/filechooserdialog.vala.page:33
-#, no-wrap
-msgid ""
-"class MyWindow: Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* MyWindow instance variables. */\n"
-"\tGLib.File? file;\n"
-"\tGtk.TextBuffer buffer;\n"
-"\tGtk.TextView textview;\n"
-"\tGtk.ScrolledWindow scrolled_window;\n"
-"\n"
-"\t/* Create ActionEntries. */\n"
-"\tconst ActionEntry[] actions = {\n"
-"\t\t{ \"new\", new_cb },\n"
-"\t\t{ \"open\", open_cb },\n"
-"\t\t{ \"save\", save_cb },\n"
-"\t\t{ \"save-as\", save_as_cb }\n"
-"\t};\n"
-"\n"
-"\t/* Constructor creates MyWindow, and add the scrolled_window. */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"FileChooserDialog Example\");\n"
-"\t\tthis.set_default_size (400, 400);\n"
-"\n"
-"\t\t/* Add the ActionEntries to MyWindow. */\n"
-"\t\tthis.add_action_entries (actions, this);\n"
-"\n"
-"\t\tbuffer = new Gtk.TextBuffer (null); //stores text to be displayed\n"
-"\t\ttextview = new Gtk.TextView.with_buffer (buffer); //displays TextBuffer\n"
-"\t\ttextview.set_wrap_mode (Gtk.WrapMode.WORD); //sets line wrapping\n"
-"\n"
-"\t\tscrolled_window = new Gtk.ScrolledWindow (null, null);\n"
-"\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC,\n"
-"\t\t Gtk.PolicyType.AUTOMATIC);\n"
-"\n"
-"\t\tscrolled_window.add (textview);\n"
-"\t\tscrolled_window.set_border_width (5);\n"
-"\n"
-" this.add (scrolled_window);\n"
-"\t\tthis.show_all ();\n"
-"\t}\n"
-"\n"
-"\tvoid new_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tfile = null;\n"
-"\t\tbuffer.set_text (\"\");\n"
-"\t\tprint (\"New file created\\n\");\n"
-"\t}\n"
-"\n"
-"\t/* Create FileChooserDialog in OPEN mode. */\n"
-"\tvoid open_cb (SimpleAction action, Variant? parameter) {\n"
-"\n"
-"\t\tvar open_dialog = new Gtk.FileChooserDialog (\"Pick a file\",\n"
-"\t\t this as Gtk.Window,\n"
-"\t\t Gtk.FileChooserAction.OPEN,\n"
-"\t\t Gtk.Stock.CANCEL,\n"
-"\t\t Gtk.ResponseType.CANCEL,\n"
-"\t\t Gtk.Stock.OPEN,\n"
-"\t\t Gtk.ResponseType.ACCEPT);\n"
-"\n"
-"\t\topen_dialog.local_only = false; //allow for uri\n"
-"\t\topen_dialog.set_modal (true);\n"
-"\t\topen_dialog.response.connect (open_response_cb);\n"
-"\t\topen_dialog.show ();\n"
-"\t}\n"
-"\n"
-"\t/* Either open the file and load the file contents or cancel. */\n"
-"\tvoid open_response_cb (Gtk.Dialog dialog, int response_id) {\n"
-"\t\tvar open_dialog = dialog as Gtk.FileChooserDialog;\n"
-"\n"
-"\t\tswitch (response_id) {\n"
-"\t\t\tcase Gtk.ResponseType.ACCEPT: //open the file\n"
-"\t\t\t\tfile = open_dialog.get_file();\n"
-"\n"
-"\t\t\t\tuint8[] file_contents;\n"
-"\n"
-"\t\t\t\ttry {\n"
-"\t\t\t\t\tfile.load_contents (null, out file_contents, null);\n"
-"\t\t\t\t}\n"
-"\t\t\t\tcatch (GLib.Error err) { //handle the exception\n"
-"\t\t\t\t\terror (\"%s\\n\", err.message);\n"
-"\t\t\t\t}\n"
-"\t\t\t\t/* Set the buffer text to be the contents of the file. */\n"
-"\t\t\t\tbuffer.set_text ((string) file_contents,\n"
-"\t\t\t\t file_contents.length);\n"
-"\n"
-"\t\t\t\tprint (\"opened: %s\\n\", (open_dialog.get_filename ()));\n"
-"\t\t\t\tbreak;\n"
-"\n"
-"\t\t\tcase Gtk.ResponseType.CANCEL:\n"
-"\t\t\t\tprint (\"cancelled: FileChooserAction.OPEN\\n\");\n"
-"\t\t\t\tbreak;\n"
-"\t\t}\n"
-"\t\tdialog.destroy ();\n"
-"\t}\n"
-"\n"
-"\n"
-"\t/* Create FileChooserDialog in SAVE mode. */\n"
-"\tvoid save_as_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tvar save_dialog = new Gtk.FileChooserDialog (\"Pick a file\",\n"
-"\t\t this as Gtk.Window,\n"
-"\t\t Gtk.FileChooserAction.SAVE,\n"
-"\t\t Gtk.Stock.CANCEL,\n"
-"\t\t Gtk.ResponseType.CANCEL,\n"
-"\t\t Gtk.Stock.SAVE,\n"
-"\t\t Gtk.ResponseType.ACCEPT);\n"
-"\n"
-"\t\tsave_dialog.set_do_overwrite_confirmation (true);\n"
-"\t\tsave_dialog.set_modal (true);\n"
-"\t\tif (file != null) {\n"
-"\t\t\ttry {\n"
-"\t\t\t\t(save_dialog as Gtk.FileChooser).set_file (file);\n"
-"\t\t\t}\n"
-"\t\t\tcatch (GLib.Error error) {\n"
-"\t\t\t\tprint (\"%s\\n\", error.message);\n"
-"\t\t\t}\n"
-"\t\t}\n"
-"\t\tsave_dialog.response.connect (save_as_response_cb);\n"
-"\t\tsave_dialog.show ();\n"
-"\t}\n"
-"\n"
-"\tvoid save_as_response_cb (Gtk.Dialog dialog, int response_id) {\n"
-"\t\tvar save_dialog = dialog as Gtk.FileChooserDialog;\n"
-"\n"
-"\t\tswitch (response_id) {\n"
-"\t\t\tcase Gtk.ResponseType.ACCEPT:\n"
-"\t\t\t\tfile = save_dialog.get_file();\n"
-"\t\t\t\tthis.save_to_file ();\n"
-"\t\t\t\tbreak;\n"
-"\t\t\tdefault:\n"
-"\t\t\t\tbreak;\n"
-"\t\t}\n"
-"\t\t\tdialog.destroy ();\n"
-"\t}\n"
-"\n"
-"\t/* Save the existing contents to the file.\n"
-"\t * If file does not exist, call save_as_cb.\n"
-"\t */\n"
-"\tvoid save_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tif (file != null) {\n"
-"\t\t\tthis.save_to_file ();\n"
-"\t\t}\n"
-"\t\telse {\n"
-"\t\t\tsave_as_cb (action, parameter);\n"
-"\t\t}\n"
-"\t}\n"
-"\n"
-"\tvoid save_to_file (){\n"
-"\t\tGtk.TextIter start;\n"
-"\t\tGtk.TextIter end;\n"
-"\n"
-"\t\tbuffer.get_bounds (out start, out end);\n"
-"\t\tstring current_contents = buffer.get_text (start, end, false);\n"
-"\t\ttry {\n"
-"\t\t\t\tfile.replace_contents (current_contents.data, null, false,\n"
-"\t\t\t\t GLib.FileCreateFlags.NONE, null, null);\n"
-"\n"
-"\t\t\t\tprint (\"saved: %s\\n\", file.get_path ());\n"
-"\t\t}\n"
-"\t\tcatch (GLib.Error err) {\n"
-"\t\t\terror (\"%s\\n\", err.message);\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application */\n"
-"class MyApplication: Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show_all;\n"
-"\t}\n"
-"\n"
-"\tconst ActionEntry[] actions = {\n"
-"\t\t{ \"quit\", quit_cb }\n"
-"\t};\n"
-"\n"
-"\tvoid quit_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tthis.quit ();\n"
-"\t}\n"
-"\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\t/* Setup actions */\n"
-"\t\tthis.add_action_entries (actions, this);\n"
-"\n"
-"\t\t/* Setup menus */\n"
-"\t\tvar builder = new Gtk.Builder ();\n"
-"\t\ttry {\n"
-"\t\t\tbuilder.add_from_file (\"filechooserdialog.ui\");\n"
-"\t\t} catch (GLib.Error err) {\n"
-"\t\t\terror (\"Unable to load file: %s\\n\", err.message);\n"
-"\t\t}\n"
-"\t\tthis.app_menu = builder.get_object (\"appmenu\") as MenuModel;\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"class MyWindow: Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* MyWindow instance variables. */\n"
-"\tGLib.File? file;\n"
-"\tGtk.TextBuffer buffer;\n"
-"\tGtk.TextView textview;\n"
-"\tGtk.ScrolledWindow scrolled_window;\n"
-"\n"
-"\t/* Create ActionEntries. */\n"
-"\tconst ActionEntry[] actions = {\n"
-"\t\t{ \"new\", new_cb },\n"
-"\t\t{ \"open\", open_cb },\n"
-"\t\t{ \"save\", save_cb },\n"
-"\t\t{ \"save-as\", save_as_cb }\n"
-"\t};\n"
-"\n"
-"\t/* Constructor creates MyWindow, and add the scrolled_window. */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"FileChooserDialog Example\");\n"
-"\t\tthis.set_default_size (400, 400);\n"
-"\n"
-"\t\t/* Add the ActionEntries to MyWindow. */\n"
-"\t\tthis.add_action_entries (actions, this);\n"
-"\n"
-"\t\tbuffer = new Gtk.TextBuffer (null); //stores text to be displayed\n"
-"\t\ttextview = new Gtk.TextView.with_buffer (buffer); //displays TextBuffer\n"
-"\t\ttextview.set_wrap_mode (Gtk.WrapMode.WORD); //sets line wrapping\n"
-"\n"
-"\t\tscrolled_window = new Gtk.ScrolledWindow (null, null);\n"
-"\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC,\n"
-"\t\t Gtk.PolicyType.AUTOMATIC);\n"
-"\n"
-"\t\tscrolled_window.add (textview);\n"
-"\t\tscrolled_window.set_border_width (5);\n"
-"\n"
-" this.add (scrolled_window);\n"
-"\t\tthis.show_all ();\n"
-"\t}\n"
-"\n"
-"\tvoid new_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tfile = null;\n"
-"\t\tbuffer.set_text (\"\");\n"
-"\t\tprint (\"New file created\\n\");\n"
-"\t}\n"
-"\n"
-"\t/* Create FileChooserDialog in OPEN mode. */\n"
-"\tvoid open_cb (SimpleAction action, Variant? parameter) {\n"
-"\n"
-"\t\tvar open_dialog = new Gtk.FileChooserDialog (\"Pick a file\",\n"
-"\t\t this as Gtk.Window,\n"
-"\t\t Gtk.FileChooserAction.OPEN,\n"
-"\t\t Gtk.Stock.CANCEL,\n"
-"\t\t Gtk.ResponseType.CANCEL,\n"
-"\t\t Gtk.Stock.OPEN,\n"
-"\t\t Gtk.ResponseType.ACCEPT);\n"
-"\n"
-"\t\topen_dialog.local_only = false; //allow for uri\n"
-"\t\topen_dialog.set_modal (true);\n"
-"\t\topen_dialog.response.connect (open_response_cb);\n"
-"\t\topen_dialog.show ();\n"
-"\t}\n"
-"\n"
-"\t/* Either open the file and load the file contents or cancel. */\n"
-"\tvoid open_response_cb (Gtk.Dialog dialog, int response_id) {\n"
-"\t\tvar open_dialog = dialog as Gtk.FileChooserDialog;\n"
-"\n"
-"\t\tswitch (response_id) {\n"
-"\t\t\tcase Gtk.ResponseType.ACCEPT: //open the file\n"
-"\t\t\t\tfile = open_dialog.get_file();\n"
-"\n"
-"\t\t\t\tuint8[] file_contents;\n"
-"\n"
-"\t\t\t\ttry {\n"
-"\t\t\t\t\tfile.load_contents (null, out file_contents, null);\n"
-"\t\t\t\t}\n"
-"\t\t\t\tcatch (GLib.Error err) { //handle the exception\n"
-"\t\t\t\t\terror (\"%s\\n\", err.message);\n"
-"\t\t\t\t}\n"
-"\t\t\t\t/* Set the buffer text to be the contents of the file. */\n"
-"\t\t\t\tbuffer.set_text ((string) file_contents,\n"
-"\t\t\t\t file_contents.length);\n"
-"\n"
-"\t\t\t\tprint (\"opened: %s\\n\", (open_dialog.get_filename ()));\n"
-"\t\t\t\tbreak;\n"
-"\n"
-"\t\t\tcase Gtk.ResponseType.CANCEL:\n"
-"\t\t\t\tprint (\"cancelled: FileChooserAction.OPEN\\n\");\n"
-"\t\t\t\tbreak;\n"
-"\t\t}\n"
-"\t\tdialog.destroy ();\n"
-"\t}\n"
-"\n"
-"\n"
-"\t/* Create FileChooserDialog in SAVE mode. */\n"
-"\tvoid save_as_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tvar save_dialog = new Gtk.FileChooserDialog (\"Pick a file\",\n"
-"\t\t this as Gtk.Window,\n"
-"\t\t Gtk.FileChooserAction.SAVE,\n"
-"\t\t Gtk.Stock.CANCEL,\n"
-"\t\t Gtk.ResponseType.CANCEL,\n"
-"\t\t Gtk.Stock.SAVE,\n"
-"\t\t Gtk.ResponseType.ACCEPT);\n"
-"\n"
-"\t\tsave_dialog.set_do_overwrite_confirmation (true);\n"
-"\t\tsave_dialog.set_modal (true);\n"
-"\t\tif (file != null) {\n"
-"\t\t\ttry {\n"
-"\t\t\t\t(save_dialog as Gtk.FileChooser).set_file (file);\n"
-"\t\t\t}\n"
-"\t\t\tcatch (GLib.Error error) {\n"
-"\t\t\t\tprint (\"%s\\n\", error.message);\n"
-"\t\t\t}\n"
-"\t\t}\n"
-"\t\tsave_dialog.response.connect (save_as_response_cb);\n"
-"\t\tsave_dialog.show ();\n"
-"\t}\n"
-"\n"
-"\tvoid save_as_response_cb (Gtk.Dialog dialog, int response_id) {\n"
-"\t\tvar save_dialog = dialog as Gtk.FileChooserDialog;\n"
-"\n"
-"\t\tswitch (response_id) {\n"
-"\t\t\tcase Gtk.ResponseType.ACCEPT:\n"
-"\t\t\t\tfile = save_dialog.get_file();\n"
-"\t\t\t\tthis.save_to_file ();\n"
-"\t\t\t\tbreak;\n"
-"\t\t\tdefault:\n"
-"\t\t\t\tbreak;\n"
-"\t\t}\n"
-"\t\t\tdialog.destroy ();\n"
-"\t}\n"
-"\n"
-"\t/* Save the existing contents to the file.\n"
-"\t * If file does not exist, call save_as_cb.\n"
-"\t */\n"
-"\tvoid save_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tif (file != null) {\n"
-"\t\t\tthis.save_to_file ();\n"
-"\t\t}\n"
-"\t\telse {\n"
-"\t\t\tsave_as_cb (action, parameter);\n"
-"\t\t}\n"
-"\t}\n"
-"\n"
-"\tvoid save_to_file (){\n"
-"\t\tGtk.TextIter start;\n"
-"\t\tGtk.TextIter end;\n"
-"\n"
-"\t\tbuffer.get_bounds (out start, out end);\n"
-"\t\tstring current_contents = buffer.get_text (start, end, false);\n"
-"\t\ttry {\n"
-"\t\t\t\tfile.replace_contents (current_contents.data, null, false,\n"
-"\t\t\t\t GLib.FileCreateFlags.NONE, null, null);\n"
-"\n"
-"\t\t\t\tprint (\"saved: %s\\n\", file.get_path ());\n"
-"\t\t}\n"
-"\t\tcatch (GLib.Error err) {\n"
-"\t\t\terror (\"%s\\n\", err.message);\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application */\n"
-"class MyApplication: Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show_all;\n"
-"\t}\n"
-"\n"
-"\tconst ActionEntry[] actions = {\n"
-"\t\t{ \"quit\", quit_cb }\n"
-"\t};\n"
-"\n"
-"\tvoid quit_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tthis.quit ();\n"
-"\t}\n"
-"\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\t/* Setup actions */\n"
-"\t\tthis.add_action_entries (actions, this);\n"
-"\n"
-"\t\t/* Setup menus */\n"
-"\t\tvar builder = new Gtk.Builder ();\n"
-"\t\ttry {\n"
-"\t\t\tbuilder.add_from_file (\"filechooserdialog.ui\");\n"
-"\t\t} catch (GLib.Error err) {\n"
-"\t\t\terror (\"Unable to load file: %s\\n\", err.message);\n"
-"\t\t}\n"
-"\t\tthis.app_menu = builder.get_object (\"appmenu\") as MenuModel;\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: section/title
-#: C/filechooserdialog.vala.page:35 C/menubar.vala.page:187
-msgid "Relevant API documentation"
-msgstr "Documentación de la API relevante"
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.vala.page:40
-msgid ""
-"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.FileChooser.html\">FileChooser</"
-"link>"
-msgstr ""
-"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.FileChooser.html\">FileChooser</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.vala.page:41
-msgid ""
-"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.FileChooserDialog.html"
-"\">FileChooserDialog</link>"
-msgstr ""
-"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.FileChooserDialog.html"
-"\">FileChooserDialog</link>"
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.vala.page:42
-msgid ""
-"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.Builder.html\">Gtk.Builder</"
-"link>"
-msgstr ""
-"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.Builder.html\">Gtk.Builder</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/filechooserdialog.vala.page:43
-msgid ""
-"<link href=\"http://valadoc.org/gio-2.0/GLib.ActionEntry.html\">GLib."
-"ActionEntry</link>"
-msgstr ""
-"<link href=\"http://valadoc.org/gio-2.0/GLib.ActionEntry.html\">GLib."
-"ActionEntry</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/fontchooserwidget.js.page:23 C/fontchooserwidget.py.page:25
-#: C/fontchooserwidget.vala.page:23
-msgctxt "_"
-msgid ""
-"external ref='media/fontchooserwidget.png' "
-"md5='9161245e307b432ae1313e9a9941edae'"
-msgstr ""
-"external ref='media/fontchooserwidget.png' "
-"md5='9161245e307b432ae1313e9a9941edae'"
-
-#. (itstool) path: info/title
-#: C/fontchooserwidget.js.page:8
-msgctxt "text"
-msgid "FontChooserWidget (JavaScript)"
-msgstr "FontChooserWidget (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/fontchooserwidget.js.page:18 C/fontchooserwidget.py.page:20
-#: C/fontchooserwidget.vala.page:18
-msgid "A widget to choose a font"
-msgstr "Un widget para elegir la tipografía"
-
-#. (itstool) path: page/title
-#: C/fontchooserwidget.js.page:21 C/fontchooserwidget.py.page:23
-#: C/fontchooserwidget.vala.page:21
-msgid "FontChooserWidget"
-msgstr "FontChooserWidget"
-
-#. (itstool) path: page/p
-#: C/fontchooserwidget.js.page:24 C/fontchooserwidget.py.page:26
-msgid "A FontChooserWidget with a callback function."
-msgstr "Un FontChooserWidget con una función de retorno de llamada."
-
-#. (itstool) path: section/code
-#: C/fontchooserwidget.js.page:30
-#, no-wrap
-msgid ""
-"//!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const FontChooserWidgetExample = new Lang.Class ({\n"
-" Name: 'Font Chooser Widget Example',\n"
-"\n"
-" // Create the application itthis\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application({ application_id: 'org.example.fontchooserwidget' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this.window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-" // Create the application window\n"
-" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"FontChooserWidget\",\n"
-" default_width: 200,\n"
-" default_height: 200,\n"
-" border_width: 10 });\n"
-"\n"
-" this.fontChooser = new Gtk.FontChooserWidget();\n"
-" // a default font\n"
-" this.fontChooser.set_font(\"Sans\");\n"
-" // a text to preview the font\n"
-" this.fontChooser.set_preview_text(\"This is an example of preview text!\");\n"
-"\n"
-" // connect signal from the font chooser to the callback function\n"
-" this.fontChooser.connect(\"notify::font\", Lang.bind(this, this._fontCb));\n"
-"\n"
-" // add the font chooser to the window\n"
-" this.window.add(this.fontChooser);\n"
-" this.window.show_all();\n"
-" },\n"
-"\n"
-" // callback function:\n"
-" _fontCb: function() {\n"
-" // print in the terminal\n"
-" print(\"You chose the font \" + this.fontChooser.get_font());\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new FontChooserWidgetExample();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"//!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const FontChooserWidgetExample = new Lang.Class ({\n"
-" Name: 'Font Chooser Widget Example',\n"
-"\n"
-" // Create the application itthis\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application({ application_id: 'org.example.fontchooserwidget' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this.window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-" // Create the application window\n"
-" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"FontChooserWidget\",\n"
-" default_width: 200,\n"
-" default_height: 200,\n"
-" border_width: 10 });\n"
-"\n"
-" this.fontChooser = new Gtk.FontChooserWidget();\n"
-" // a default font\n"
-" this.fontChooser.set_font(\"Sans\");\n"
-" // a text to preview the font\n"
-" this.fontChooser.set_preview_text(\"This is an example of preview text!\");\n"
-"\n"
-" // connect signal from the font chooser to the callback function\n"
-" this.fontChooser.connect(\"notify::font\", Lang.bind(this, this._fontCb));\n"
-"\n"
-" // add the font chooser to the window\n"
-" this.window.add(this.fontChooser);\n"
-" this.window.show_all();\n"
-" },\n"
-"\n"
-" // callback function:\n"
-" _fontCb: function() {\n"
-" // print in the terminal\n"
-" print(\"You chose the font \" + this.fontChooser.get_font());\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new FontChooserWidgetExample();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/fontchooserwidget.js.page:37 C/fontchooserwidget.py.page:47
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkFontChooserWidget."
-"html\">GtkFontChooserWidget</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkFontChooserWidget."
-"html\">GtkFontChooserWidget</link>"
-
-#. (itstool) path: info/title
-#: C/fontchooserwidget.py.page:8
-msgctxt "text"
-msgid "FontChooserWidget (Python)"
-msgstr "FontChooserWidget (Python)"
-
-#. (itstool) path: section/code
-#: C/fontchooserwidget.py.page:32
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"FontChooserWidget\", application=app)\n"
-#| "\n"
-#| " # a font chooser\n"
-#| " self.font_chooser = Gtk.FontChooserWidget()\n"
-#| " # a default font\n"
-#| " self.font_chooser.set_font(\"Sans\")\n"
-#| " # a text to preview the font\n"
-#| " self.font_chooser.set_preview_text(\n"
-#| " \"This is an example of preview text!\")\n"
-#| "\n"
-#| " # connect signal from the font chooser to the callback function\n"
-#| " self.font_chooser.connect(\"notify::font\", self.font_cb)\n"
-#| "\n"
-#| " # add the font chooser to the window\n"
-#| " self.add(self.font_chooser)\n"
-#| "\n"
-#| " # callback function:\n"
-#| " def font_cb(self, event, user_data):\n"
-#| " # print in the terminal\n"
-#| " print \"You chose the font \" + self.font_chooser.get_font()\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"FontChooserWidget\", application=app)\n"
-"\n"
-" # a font chooser\n"
-" self.font_chooser = Gtk.FontChooserWidget()\n"
-" # a default font\n"
-" self.font_chooser.set_font(\"Sans\")\n"
-" # a text to preview the font\n"
-" self.font_chooser.set_preview_text(\n"
-" \"This is an example of preview text!\")\n"
-"\n"
-" # connect signal from the font chooser to the callback function\n"
-" self.font_chooser.connect(\"notify::font\", self.font_cb)\n"
-"\n"
-" # add the font chooser to the window\n"
-" self.add(self.font_chooser)\n"
-"\n"
-" # callback function:\n"
-" def font_cb(self, event, user_data):\n"
-" # print in the terminal\n"
-" print(\"You chose the font \" + self.font_chooser.get_font())\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"FontChooserWidget\", application=app)\n"
-"\n"
-" # a font chooser\n"
-" self.font_chooser = Gtk.FontChooserWidget()\n"
-" # a default font\n"
-" self.font_chooser.set_font(\"Sans\")\n"
-" # a text to preview the font\n"
-" self.font_chooser.set_preview_text(\n"
-" \"This is an example of preview text!\")\n"
-"\n"
-" # connect signal from the font chooser to the callback function\n"
-" self.font_chooser.connect(\"notify::font\", self.font_cb)\n"
-"\n"
-" # add the font chooser to the window\n"
-" self.add(self.font_chooser)\n"
-"\n"
-" # callback function:\n"
-" def font_cb(self, event, user_data):\n"
-" # print in the terminal\n"
-" print(\"You chose the font \" + self.font_chooser.get_font())\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/fontchooserwidget.py.page:35
-msgid "Useful methods for a FontChooserWidget"
-msgstr "Métodos útiles para un «FontChooserWidget»"
-
-#. (itstool) path: section/p
-#: C/fontchooserwidget.py.page:36
-msgid ""
-"In line 16 the <code>\"notify::font\"</code> signal from the widget is "
-"connected to the callback function <code>font_cb()</code> using "
-"<code><var>widget</var>.connect(<var>signal</var>, <var>callback function</"
-"var>)</code>. See <link xref=\"signals-callbacks.py\"/> for a more detailed "
-"explanation."
-msgstr ""
-"En la línea 16, la señal <code>«notify::font»</code> del widget se conecta a "
-"la función de retorno de llamada <code>font_cb()</code> usando "
-"<code><var>widget</var>.connect(<var>señal</var>, <var>función de retorno de "
-"llamada</var>)</code>. Consulte la <link xref=\"signals-callbacks.py\"/> "
-"para obtener una explicación más detallada."
-
-#. (itstool) path: item/p
-#: C/fontchooserwidget.py.page:38
-msgid ""
-"To set the font which is initially selected, use <code>set_font(font)</code> "
-"(where <code>font</code> is the font name) or <code>set_font_desc(font)</"
-"code> (where <code>font</code> is the PangoFontDescription)."
-msgstr ""
-"Para establecer la tipografía seleccionada inicialmente, use <code>set_font"
-"(tipografía)</code> (donde <code>tipografía</code> es el nombre de la "
-"tipografía) o <code>set_font_desc(tipografía)</code> (donde "
-"<code>tipografía</code> es la PangoFontDescription)."
-
-#. (itstool) path: item/p
-#: C/fontchooserwidget.py.page:39
-msgid ""
-"To get the selected font use <code>get_font()</code> or <code>get_font_desc()"
-"</code>."
-msgstr ""
-"Para obtener la fuente seleccionada use <code>get_font()</code> o "
-"<code>get_font_desc()</code>."
-
-#. (itstool) path: item/p
-#: C/fontchooserwidget.py.page:40
-msgid ""
-"To change the text which is shown in the preview area, use "
-"<code>set_preview_text()</code>."
-msgstr ""
-"Para cambiar el texto que se muestra en el área de previsualización, use "
-"<code>set_preview_text()</code>."
-
-#. (itstool) path: info/title
-#: C/fontchooserwidget.vala.page:8
-msgctxt "text"
-msgid "FontChooserWidget (Vala)"
-msgstr "FontChooserWidget (Vala)"
-
-#. (itstool) path: credit/name
-#: C/fontchooserwidget.vala.page:13
-msgid "Tiffany Antpoolski"
-msgstr "Tiffany Antpoolski"
-
-#. (itstool) path: page/p
-#: C/fontchooserwidget.vala.page:24
-msgid "A FontChooserWidget with a lambda callback function."
-msgstr "Un FontChooserWidget con una función de retorno de llamada lambda."
-
-#. (itstool) path: section/code
-#: C/fontchooserwidget.vala.page:30
-#, no-wrap
-msgid ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-" internal MyWindow (MyApplication app) {\n"
-" Object (application: app, title: \"FontChooserWidget\");\n"
-"\n"
-"\t\tvar font_chooser = new Gtk.FontChooserWidget ();\n"
-"\t\tfont_chooser.set_font (\"Sans\");\n"
-"\t\tfont_chooser.set_preview_text (\"This is an example of preview text!\");\n"
-"\t\tthis.add (font_chooser);\n"
-"\n"
-"\t\tfont_chooser.notify[\"font\"].connect (() => {\n"
-"\t\t\tprint (\"font: %s\\n\", font_chooser.get_font ().to_string ());\n"
-"\t\t\tprint (\"desc: %s\\n\", font_chooser.get_font_desc ().to_string ());\n"
-"\t\t\tprint (\"face: %s\\n\", font_chooser.get_font_face ().get_face_name ());\n"
-"\t\t\tprint (\"size: %d\\n\", font_chooser.get_font_size ());\n"
-"\t\t\tprint (\"family: %s\\n\", font_chooser.get_font_family ().get_name ());\n"
-"\t\t\tprint (\"monospace: %s\\n\\n\", font_chooser.get_font_family ().is_monospace ().to_string ());\n"
-"\t\t});\n"
-"\n"
-" this.show_all ();\n"
-" }\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-" protected override void activate () {\n"
-" new MyWindow (this).show ();\n"
-" }\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-" return new MyApplication ().run (args);\n"
-"}\n"
-"\n"
-msgstr ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-" internal MyWindow (MyApplication app) {\n"
-" Object (application: app, title: \"FontChooserWidget\");\n"
-"\n"
-"\t\tvar font_chooser = new Gtk.FontChooserWidget ();\n"
-"\t\tfont_chooser.set_font (\"Sans\");\n"
-"\t\tfont_chooser.set_preview_text (\"This is an example of preview text!\");\n"
-"\t\tthis.add (font_chooser);\n"
-"\n"
-"\t\tfont_chooser.notify[\"font\"].connect (() => {\n"
-"\t\t\tprint (\"font: %s\\n\", font_chooser.get_font ().to_string ());\n"
-"\t\t\tprint (\"desc: %s\\n\", font_chooser.get_font_desc ().to_string ());\n"
-"\t\t\tprint (\"face: %s\\n\", font_chooser.get_font_face ().get_face_name ());\n"
-"\t\t\tprint (\"size: %d\\n\", font_chooser.get_font_size ());\n"
-"\t\t\tprint (\"family: %s\\n\", font_chooser.get_font_family ().get_name ());\n"
-"\t\t\tprint (\"monospace: %s\\n\\n\", font_chooser.get_font_family ().is_monospace ().to_string ());\n"
-"\t\t});\n"
-"\n"
-" this.show_all ();\n"
-" }\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-" protected override void activate () {\n"
-" new MyWindow (this).show ();\n"
-" }\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-" return new MyApplication ().run (args);\n"
-"}\n"
-"\n"
-
-#. (itstool) path: item/p
-#: C/fontchooserwidget.vala.page:37
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.FontChooserWidget.html"
-"\">GtkFontChooserWidget</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.FontChooserWidget.html"
-"\">GtkFontChooserWidget</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/gmenu.c.page:22
-msgctxt "_"
-msgid "external ref='media/gmenu.c.png' md5='f305fc3cae8d16d72b734ee53b559e33'"
-msgstr ""
-"external ref='media/gmenu.c.png' md5='f305fc3cae8d16d72b734ee53b559e33'"
-
-#. (itstool) path: info/title
-#: C/gmenu.c.page:8
-msgctxt "text"
-msgid "GMenu (C)"
-msgstr "GMenu (C)"
-
-#. (itstool) path: info/desc
-#: C/gmenu.c.page:18 C/gmenu.js.page:18 C/gmenu.vala.page:24
-msgid "A simple implementation of GMenuModel"
-msgstr "Una implementación sencilla del GMenuModel"
-
-#. (itstool) path: page/title
-#: C/gmenu.c.page:21 C/gmenu.js.page:21 C/gmenu.py.page:29
-#: C/gmenu.vala.page:27
-msgid "GMenu"
-msgstr "GMenu"
-
-#. (itstool) path: page/p
-#: C/gmenu.c.page:23 C/gmenu.js.page:23 C/gmenu.py.page:31
-#: C/gmenu.vala.page:32
-msgid "A GtkApplication with a simple GMenu and SimpleActions"
-msgstr "Una GtkApplication con un GMenu sencillo y SimpleActions"
-
-#. (itstool) path: page/code
-#: C/gmenu.c.page:26
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"static void\n"
-"new_window (GSimpleAction *action,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"This does nothing. It is only a demonstration.\\n\");\n"
-"}\n"
-"\n"
-"static void\n"
-"quit (GSimpleAction *action,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GApplication *application = user_data;\n"
-"\n"
-" g_application_quit (application);\n"
-"}\n"
-"\n"
-"static void\n"
-"startup (GtkApplication *application,\n"
-" gpointer user_data)\n"
-"{\n"
-" static const GActionEntry actions[] = {\n"
-" { \"new\", new_window },\n"
-" { \"quit\", quit }\n"
-" };\n"
-"\n"
-" GMenu *menu;\n"
-"\n"
-" g_action_map_add_action_entries (G_ACTION_MAP (application), actions, G_N_ELEMENTS (actions),
application);\n"
-"\n"
-" menu = g_menu_new ();\n"
-" g_menu_append (menu, \"New\", \"app.new\");\n"
-" g_menu_append (menu, \"Quit\", \"app.quit\");\n"
-" gtk_application_set_app_menu (application, G_MENU_MODEL (menu));\n"
-" g_object_unref (menu);\n"
-"}\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-"\n"
-" gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n"
-"\n"
-" gtk_widget_show_all (GTK_WIDGET (window));\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"static void\n"
-"new_window (GSimpleAction *action,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"This does nothing. It is only a demonstration.\\n\");\n"
-"}\n"
-"\n"
-"static void\n"
-"quit (GSimpleAction *action,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GApplication *application = user_data;\n"
-"\n"
-" g_application_quit (application);\n"
-"}\n"
-"\n"
-"static void\n"
-"startup (GtkApplication *application,\n"
-" gpointer user_data)\n"
-"{\n"
-" static const GActionEntry actions[] = {\n"
-" { \"new\", new_window },\n"
-" { \"quit\", quit }\n"
-" };\n"
-"\n"
-" GMenu *menu;\n"
-"\n"
-" g_action_map_add_action_entries (G_ACTION_MAP (application), actions, G_N_ELEMENTS (actions),
application);\n"
-"\n"
-" menu = g_menu_new ();\n"
-" g_menu_append (menu, \"New\", \"app.new\");\n"
-" g_menu_append (menu, \"Quit\", \"app.quit\");\n"
-" gtk_application_set_app_menu (application, G_MENU_MODEL (menu));\n"
-" g_object_unref (menu);\n"
-"}\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-"\n"
-" gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n"
-"\n"
-" gtk_widget_show_all (GTK_WIDGET (window));\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/gmenu.js.page:22
-msgctxt "_"
-msgid ""
-"external ref='media/gmenu.js.png' md5='16b8bee122197771ec8498dac42f196b'"
-msgstr ""
-"external ref='media/gmenu.js.png' md5='16b8bee122197771ec8498dac42f196b'"
-
-#. (itstool) path: info/title
-#: C/gmenu.js.page:8
-msgctxt "text"
-msgid "GMenu (JavaScript)"
-msgstr "GMenu (JavaScript)"
-
-#. (itstool) path: page/code
-#: C/gmenu.js.page:25
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const Application = new Lang.Class ({\n"
-" Name: 'Application',\n"
-"\n"
-" //create the application\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.myapp',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" //connect to 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" //create the UI (in this case it's just the ApplicationWindow\n"
-" _buildUI: function() {\n"
-" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Welcome to GNOME\" });\n"
-"\n"
-" //uncommenting the line below will change the window size\n"
-" //this._window.set_default_size(600, 400);\n"
-"\n"
-" //show the window and all child widgets (none in this case)\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" _showNew: function() {\n"
-" print (\"This doesn't do anything. It is only a demonstration.\");\n"
-" },\n"
-"\n"
-" _showAbout: function() {\n"
-" print (\"No AboutDialog here. This is only a demonstration.\");\n"
-" },\n"
-"\n"
-" //create the menu items and connect the signals to the callback functions.\n"
-" _initMenus: function() {\n"
-" let menu = new Gio.Menu();\n"
-" menu.append(\"New\",'app.new');\n"
-" menu.append(\"About\", 'app.about');\n"
-" menu.append(\"Quit\",'app.quit');\n"
-" this.application.set_app_menu(menu);\n"
-"\n"
-" let newAction = new Gio.SimpleAction ({ name: 'new' });\n"
-" newAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showNew();\n"
-" }));\n"
-" this.application.add_action(newAction);\n"
-"\n"
-" let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n"
-" aboutAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showAbout();\n"
-" }));\n"
-" this.application.add_action(aboutAction);\n"
-"\n"
-" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-" },\n"
-"\n"
-" //callback function for 'activate' signal\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" //callback function for 'startup' signal\n"
-" _onStartup: function() {\n"
-" //You must call _initMenus() before calling _buildUI().\n"
-" this._initMenus();\n"
-" this._buildUI();\n"
-" }\n"
-"});\n"
-"\n"
-"//run the application\n"
-"let app = new Application ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const Application = new Lang.Class ({\n"
-" Name: 'Application',\n"
-"\n"
-" //create the application\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.myapp',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" //connect to 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" //create the UI (in this case it's just the ApplicationWindow\n"
-" _buildUI: function() {\n"
-" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Welcome to GNOME\" });\n"
-"\n"
-" //uncommenting the line below will change the window size\n"
-" //this._window.set_default_size(600, 400);\n"
-"\n"
-" //show the window and all child widgets (none in this case)\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" _showNew: function() {\n"
-" print (\"This doesn't do anything. It is only a demonstration.\");\n"
-" },\n"
-"\n"
-" _showAbout: function() {\n"
-" print (\"No AboutDialog here. This is only a demonstration.\");\n"
-" },\n"
-"\n"
-" //create the menu items and connect the signals to the callback functions.\n"
-" _initMenus: function() {\n"
-" let menu = new Gio.Menu();\n"
-" menu.append(\"New\",'app.new');\n"
-" menu.append(\"About\", 'app.about');\n"
-" menu.append(\"Quit\",'app.quit');\n"
-" this.application.set_app_menu(menu);\n"
-"\n"
-" let newAction = new Gio.SimpleAction ({ name: 'new' });\n"
-" newAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showNew();\n"
-" }));\n"
-" this.application.add_action(newAction);\n"
-"\n"
-" let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n"
-" aboutAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showAbout();\n"
-" }));\n"
-" this.application.add_action(aboutAction);\n"
-"\n"
-" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-" },\n"
-"\n"
-" //callback function for 'activate' signal\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" //callback function for 'startup' signal\n"
-" _onStartup: function() {\n"
-" //You must call _initMenus() before calling _buildUI().\n"
-" this._initMenus();\n"
-" this._buildUI();\n"
-" }\n"
-"});\n"
-"\n"
-"//run the application\n"
-"let app = new Application ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/gmenu.py.page:30
-msgctxt "_"
-msgid ""
-"external ref='media/gmenu.py.png' md5='52c68b34d5d566f37e9f803dedb6353a'"
-msgstr ""
-"external ref='media/gmenu.py.png' md5='52c68b34d5d566f37e9f803dedb6353a'"
-
-#. (itstool) path: info/title
-#: C/gmenu.py.page:8
-msgctxt "text"
-msgid "GMenu (Python)"
-msgstr "GMenu (Python)"
-
-#. (itstool) path: info/desc
-#: C/gmenu.py.page:26
-msgid "A simple implementation of GMenu"
-msgstr "Una implementación sencilla de GMenu"
-
-#. (itstool) path: section/code
-#: C/gmenu.py.page:37
-#, no-wrap
-#| msgid ""
-#| "\n"
-#| " from gi.repository import Gtk\n"
-#| "from gi.repository import Gio\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"GMenu Example\", application=app)\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " # start the application\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| " # create a menu\n"
-#| " menu = Gio.Menu()\n"
-#| " # append to the menu three options\n"
-#| " menu.append(\"New\", \"app.new\")\n"
-#| " menu.append(\"About\", \"app.about\")\n"
-#| " menu.append(\"Quit\", \"app.quit\")\n"
-#| " # set the menu as menu of the application\n"
-#| " self.set_app_menu(menu)\n"
-#| "\n"
-#| " # create an action for the option \"new\" of the menu\n"
-#| " new_action = Gio.SimpleAction.new(\"new\", None)\n"
-#| " # connect it to the callback function new_cb\n"
-#| " new_action.connect(\"activate\", self.new_cb)\n"
-#| " # add the action to the application\n"
-#| " self.add_action(new_action)\n"
-#| "\n"
-#| " # option \"about\"\n"
-#| " about_action = Gio.SimpleAction.new(\"about\", None)\n"
-#| " about_action.connect(\"activate\", self.about_cb)\n"
-#| " self.add_action(about_action)\n"
-#| "\n"
-#| " # option \"quit\"\n"
-#| " quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-#| " quit_action.connect(\"activate\", self.quit_cb)\n"
-#| " self.add_action(quit_action)\n"
-#| "\n"
-#| " # callback function for \"new\"\n"
-#| " def new_cb(self, action, parameter):\n"
-#| " print \"This does nothing. It is only a demonstration.\"\n"
-#| "\n"
-#| " # callback function for \"about\"\n"
-#| " def about_cb(self, action, parameter):\n"
-#| " print \"No AboutDialog for you. This is only a demonstration.\"\n"
-#| "\n"
-#| " # callback function for \"quit\"\n"
-#| " def quit_cb(self, action, parameter):\n"
-#| " print \"You have quit.\"\n"
-#| " self.quit()\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"\n"
-" from gi.repository import Gtk\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"GMenu Example\", application=app)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" # start the application\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # create a menu\n"
-" menu = Gio.Menu()\n"
-" # append to the menu three options\n"
-" menu.append(\"New\", \"app.new\")\n"
-" menu.append(\"About\", \"app.about\")\n"
-" menu.append(\"Quit\", \"app.quit\")\n"
-" # set the menu as menu of the application\n"
-" self.set_app_menu(menu)\n"
-"\n"
-" # create an action for the option \"new\" of the menu\n"
-" new_action = Gio.SimpleAction.new(\"new\", None)\n"
-" # connect it to the callback function new_cb\n"
-" new_action.connect(\"activate\", self.new_cb)\n"
-" # add the action to the application\n"
-" self.add_action(new_action)\n"
-"\n"
-" # option \"about\"\n"
-" about_action = Gio.SimpleAction.new(\"about\", None)\n"
-" about_action.connect(\"activate\", self.about_cb)\n"
-" self.add_action(about_action)\n"
-"\n"
-" # option \"quit\"\n"
-" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-" quit_action.connect(\"activate\", self.quit_cb)\n"
-" self.add_action(quit_action)\n"
-"\n"
-" # callback function for \"new\"\n"
-" def new_cb(self, action, parameter):\n"
-" print(\"This does nothing. It is only a demonstration.\")\n"
-"\n"
-" # callback function for \"about\"\n"
-" def about_cb(self, action, parameter):\n"
-" print(\"No AboutDialog for you. This is only a demonstration.\")\n"
-"\n"
-" # callback function for \"quit\"\n"
-" def quit_cb(self, action, parameter):\n"
-" print(\"You have quit.\")\n"
-" self.quit()\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"\n"
-" from gi.repository import Gtk\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"GMenu Example\", application=app)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" # start the application\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # create a menu\n"
-" menu = Gio.Menu()\n"
-" # append to the menu three options\n"
-" menu.append(\"New\", \"app.new\")\n"
-" menu.append(\"About\", \"app.about\")\n"
-" menu.append(\"Quit\", \"app.quit\")\n"
-" # set the menu as menu of the application\n"
-" self.set_app_menu(menu)\n"
-"\n"
-" # create an action for the option \"new\" of the menu\n"
-" new_action = Gio.SimpleAction.new(\"new\", None)\n"
-" # connect it to the callback function new_cb\n"
-" new_action.connect(\"activate\", self.new_cb)\n"
-" # add the action to the application\n"
-" self.add_action(new_action)\n"
-"\n"
-" # option \"about\"\n"
-" about_action = Gio.SimpleAction.new(\"about\", None)\n"
-" about_action.connect(\"activate\", self.about_cb)\n"
-" self.add_action(about_action)\n"
-"\n"
-" # option \"quit\"\n"
-" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-" quit_action.connect(\"activate\", self.quit_cb)\n"
-" self.add_action(quit_action)\n"
-"\n"
-" # callback function for \"new\"\n"
-" def new_cb(self, action, parameter):\n"
-" print(\"This does nothing. It is only a demonstration.\")\n"
-"\n"
-" # callback function for \"about\"\n"
-" def about_cb(self, action, parameter):\n"
-" print(\"No AboutDialog for you. This is only a demonstration.\")\n"
-"\n"
-" # callback function for \"quit\"\n"
-" def quit_cb(self, action, parameter):\n"
-" print(\"You have quit.\")\n"
-" self.quit()\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/gmenu.py.page:42
-msgid "Useful methods for a GSimpleAction and a GMenu"
-msgstr "Métodos útiles para una «GSimpleAction» y un GMenu"
-
-#. (itstool) path: section/p
-#: C/gmenu.py.page:44
-msgid ""
-"In line 33 the signal <code>\"activate\"</code> from the action "
-"<code>new_action</code> (not the menu!) is connected to the callback "
-"function <code>new_cb()</code> using <code><var>action</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 33, la señal <code>«activate»</code> de la acción "
-"<code>new_action</code> (no el menú) se conecta a la función de retorno de "
-"llamada <code>new_cb()</code> usando <code><var>action</var>.connect"
-"(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
-"explicación más detallada."
-
-#. (itstool) path: section/p
-#: C/gmenu.py.page:46
-msgid "Useful methods for a GSimpleAction:"
-msgstr "Métodos útiles para una «GSimpleAction»:"
-
-#. (itstool) path: item/p
-#: C/gmenu.py.page:48
-msgid ""
-"To create a new action that is <em>stateless</em>, that is, an action that "
-"do not retain or depend on a state given by the action itself, use"
-msgstr ""
-"Para crear una acción nueva que <em>no dependa del estado</em>, es decir, "
-"una acción que no retenga o dependa de un estado dado a la acción en sí, use"
-
-#. (itstool) path: item/code
-#: C/gmenu.py.page:49
-#, no-wrap
-msgid ""
-"\n"
-"action = Gio.SimpleAction.new(\"name\", parameter_type)"
-msgstr ""
-"\n"
-"action = Gio.SimpleAction.new(\"name\", parameter_type)"
-
-#. (itstool) path: item/p
-#: C/gmenu.py.page:51
-msgid ""
-"where <code>\"name\"</code> is the name of the action and "
-"<code>parameter_type</code> is the type of the parameters that the action "
-"receives when being activated. This can be <code>None</code>, or <code>GLib."
-"VariantType.new('s')</code> if the parameter is of type <code>str</code>, or "
-"instead of <code>'s'</code> a character as described <link href=\"http://"
-"developer.gnome.org/glib/unstable/glib-GVariantType.html\">here</link>. To "
-"create a new <em>stateful</em> (i.e. not stateless) action, use"
-msgstr ""
-"donde <code>\"name\"</code> es el nombre de la acción y "
-"<code>parameter_type</code> es el tipo de parámetro que recibe la acción "
-"cuando se activa. Este puede ser <code>None</code>, o <code>GLib.VariantType."
-"new('s')</code> si el parámetro es del tipo <code>str</code>, o en lugar de "
-"<code>'s'</code> un carácter como se describe <link href=\"http://developer."
-"gnome.org/glib/unstable/glib-GVariantType.html\">aquí</link>. Para crear una "
-"acción nueva <em>con estado</em>, use"
-
-#. (itstool) path: item/code
-#: C/gmenu.py.page:52
-#, no-wrap
-msgid ""
-"\n"
-"action = Gio.SimpleAction.new_stateful(\"name\", parameter_type, initial_state)"
-msgstr ""
-"\n"
-"action = Gio.SimpleAction.new_stateful(\"name\", parameter_type, initial_state)"
-
-#. (itstool) path: item/p
-#: C/gmenu.py.page:54
-msgid ""
-"where <code>initial_state</code> is defined as a GVariant - for instance "
-"<code>Glib.Variant.new_string('start')</code>; for a list of possibilities "
-"see <link href=\"http://developer.gnome.org/glib/unstable/glib-GVariant.html"
-"\">here</link>."
-msgstr ""
-"donde <code>initial_state</code> está definido como una GVariant: por "
-"ejemplo <code>Glib.Variant.new_string('start')</code>; para una lista de "
-"posibilidades consulte <link href=\"http://developer.gnome.org/glib/unstable/"
-"glib-GVariant.html\">aquí</link>."
-
-#. (itstool) path: item/p
-#: C/gmenu.py.page:55
-msgid ""
-"<code>set_enabled(True)</code> sets the action as enabled; an action must be "
-"enabled in order to be activated or in order to have its state changed from "
-"outside callers. This should only be called by the implementor of the "
-"action. Users of the action should not attempt to modify its enabled flag."
-msgstr ""
-"<code>set_enabled(True)</code> configura la acción como habilitada; una "
-"acción debe habilitarse para poder activarse o para que llamantes exteriores "
-"cambien su estado. Sólo el que implementa la acción debe llamarlo. Los "
-"usuarios de la acción no deben intentar modificar su opción «enabled»."
-
-#. (itstool) path: item/p
-#: C/gmenu.py.page:56
-msgid ""
-"<code>set_state(state)</code>, where <code>state</code> is a GVariant, sets "
-"the state of the action, updating the 'state' property to the given value. "
-"This should only be called by the implementor of the action; users of the "
-"action should instead call <code>change_state(state)</code> (where "
-"<code>state</code> is as above) to request the change."
-msgstr ""
-"<code>set_state(estado)</code>, donde <code>estado</code> es una GVariant, "
-"establece el estado de la acción, actualizando la propiedad «state» a un "
-"valor dado. Sólo el que implementa la acción debe llamarlo; los usuarios de "
-"la acción, en cambio, deben llamar a <code>change_state(estado)</code> "
-"(donde <code>estado</code> es como se mencionó) para solicitar el cambio."
-
-#. (itstool) path: section/p
-#: C/gmenu.py.page:59
-msgid "Useful methods for a GMenu:"
-msgstr "Métodos útiles para un GMenu:"
-
-#. (itstool) path: item/p
-#: C/gmenu.py.page:61
-msgid ""
-"To insert an item in the menu in position <code>position</code>, use "
-"<code>insert(position, label, detailed_action)</code>, where <code>label</"
-"code> is the label that will appear in the menu and <code>detailed_action</"
-"code> is a string composed of the name of the action to which we prepend the "
-"prefix <code>app.</code>. A more detailed discussion of this can be found in "
-"<link xref=\"menubar.py#win-app\"/>."
-msgstr ""
-"Para insertar un elemento en el menú en una <code>posición</code>, use "
-"<code>insert(posición, etiqueta, acción_detallada)</code>, donde "
-"<code>etiqueta</code> es la etiqueta que aparecerá en el menú y "
-"<code>acción_detallada</code> es una cadena compuesta por el nombre de la "
-"acción a la que se la agrega el prefijo <code>app.</code>. Puede encontrar "
-"una discusión más detallada de esto en la <link xref=\"menubar.py#win-app\"/"
-">."
-
-#. (itstool) path: item/p
-#: C/gmenu.py.page:62
-msgid ""
-"To append or prepend an item in the menu use respectively <code>append"
-"(label, detailed_action)</code> and <code>prepend(label, detailed_action)</"
-"code>."
-msgstr ""
-"Para agregar o anteponer un elemento en el menú use respectivamente "
-"<code>append(etiqueta, acción_detallada)</code> y <code>prepend(etiqueta, "
-"acción_detallada)</code>."
-
-#. (itstool) path: item/p
-#: C/gmenu.py.page:63
-msgid ""
-"Another way of adding items to the menu is to create them as "
-"<code>GMenuItem</code>s and use <code>insert_item(position, item)</code>, "
-"<code>append_item(item)</code>, or <code>prepend_item(item)</code>; so for "
-"instance we might have:"
-msgstr ""
-"Otra manera de añadir elementos al menú es crearlos como <code>GMenuItem</"
-"code> y usar <code>insert_item(posición, elemento)</code>, <code>append_item"
-"(elemento)</code>, o <code>prepend_item(elemento)</code>; por lo que por "
-"ejemplo se podría tener:"
-
-#. (itstool) path: item/code
-#: C/gmenu.py.page:64
-#, no-wrap
-msgid ""
-"\n"
-"about = Gio.MenuItem.new(\"About\", \"app.about\")\n"
-"menu.append_item(about)"
-msgstr ""
-"\n"
-"about = Gio.MenuItem.new(\"About\", \"app.about\")\n"
-"menu.append_item(about)"
-
-#. (itstool) path: item/p
-#: C/gmenu.py.page:68
-msgid ""
-"We can also add a whole subsection in a menu using <code>insert_section"
-"(position, label, section)</code>, <code>append_section(label, section)</"
-"code>, or <code>prepend_section(label, section)</code>, where <code>label</"
-"code> is the title of the subsection."
-msgstr ""
-"También se puede añadir una subsección completa a un menú usando "
-"<code>insert_section(posición, etiqueta, sección)</code>, "
-"<code>append_section(etiqueta, sección)</code>, o <code>prepend_section"
-"(etiqueta, sección)</code>, donde <code>etiqueta</code> es el título de la "
-"subsección."
-
-#. (itstool) path: item/p
-#: C/gmenu.py.page:69
-msgid ""
-"To add a submenu that will expand and collapse, use <code>insert_submenu"
-"(position, label, section)</code>, <code>append_submenu(label, section)</"
-"code>, or <code>prepend_submenu(label, section)</code>, where <code>label</"
-"code> is the title of the subsection."
-msgstr ""
-"Para añadir un submenú que se expanda y colapse, use <code>insert_submenu"
-"(posición, etiqueta, sección)</code>, <code>append_submenu(etiqueta, sección)"
-"</code>, o <code>prepend_submenu(etiqueta, sección)</code>, donde "
-"<code>etiqueta</code> es el título de la subsección."
-
-#. (itstool) path: item/p
-#: C/gmenu.py.page:70
-msgid "To remove an item from the menu, use <code>remove(position)</code>."
-msgstr "Para eliminar un elemento del menú, use <code>remove(posición)</code>."
-
-#. (itstool) path: item/p
-#: C/gmenu.py.page:71
-msgid "To set a label for the menu, use <code>set_label(label)</code>."
-msgstr ""
-"Para establecer una etiqueta para el menú, use <code>set_label(etiqueta)</"
-"code>."
-
-#. (itstool) path: item/p
-#: C/gmenu.py.page:82
-msgid ""
-"<link href=\"http://developer.gnome.org/glib/unstable/glib-GVariantType.html"
-"\">GVariantType</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/glib/unstable/glib-GVariantType.html"
-"\">GVariantType</link>"
-
-#. (itstool) path: item/p
-#: C/gmenu.py.page:83
-msgid ""
-"<link href=\"http://developer.gnome.org/glib/unstable/glib-GVariant.html"
-"\">GVariant</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/glib/unstable/glib-GVariant.html"
-"\">GVariant</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/gmenu.vala.page:28
-msgctxt "_"
-msgid ""
-"external ref='media/gmenu.vala.png' md5='7a9f381fc3ed5bf8d1c50d2acb095400'"
-msgstr ""
-"external ref='media/gmenu.vala.png' md5='7a9f381fc3ed5bf8d1c50d2acb095400'"
-
-#. (itstool) path: info/title
-#: C/gmenu.vala.page:8
-msgctxt "text"
-msgid "GMenu (Vala)"
-msgstr "GMenu (Vala)"
-
-#. (itstool) path: note/p
-#: C/gmenu.vala.page:30
-msgid ""
-"<em style=\"strong\">You need to be running GTK+-3.4 or later for this to "
-"work</em>"
-msgstr ""
-"<em style=\"strong\">Necesita ejecutar GTK+-3.4 o superior para que "
-"funcione</em>"
-
-#. (itstool) path: page/code
-#: C/gmenu.vala.page:34
-#, no-wrap
-msgid ""
-"/* A window in the application. */\n"
-"public class Window : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* Constructor */\n"
-"\tpublic Window (Application app) {\n"
-"\t\tObject (application: app, title: \"Gmenu Example\");\n"
-"\n"
-"\t\tvar about_action = new SimpleAction (\"about\", null);\n"
-"\n"
-"\t\t/* Connect the 'activate' signal to the\n"
-"\t\t * signal handler (aka. callback).\n"
-"\t\t */\n"
-"\t\tabout_action.activate.connect (this.about_cb);\n"
-"\n"
-"\t\t/* Add the action to this window. */\n"
-"\t\tthis.add_action (about_action);\n"
-"\n"
-"\t\tthis.show ();\n"
-"\t}\n"
-"\n"
-"\t/* Signal handler for 'activate' signal of the SimpleAction. */\n"
-"\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n"
-"\t\tprint (\"This does nothing. It is only a demonstration.\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the Application. */\n"
-"public class Application : Gtk.Application {\n"
-"\n"
-"\t/* Constructor */\n"
-"\tpublic Application () {\n"
-"\t\tObject (application_id: \"org.example.application\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t/* Create a new window for this application. */\n"
-"\t\tnew Window (this);\n"
-"\t}\n"
-"\n"
-"\t/* Override the 'startup' signal of GLib.Application. */\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\tvar menu = new Menu ();\n"
-"\t\tmenu.append (\"About\", \"win.about\");\n"
-"\t\tmenu.append (\"Quit\", \"app.quit\");\n"
-"\t\tthis.app_menu = menu;\n"
-"\n"
-"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
-"\t\tquit_action.activate.connect (this.quit);\n"
-"\t\tthis.add_action (quit_action);\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main function creates Application and runs it. */\n"
-"int main (string[] args) {\n"
-"\treturn new Application ().run (args);\n"
-"}\n"
-msgstr ""
-"/* A window in the application. */\n"
-"public class Window : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* Constructor */\n"
-"\tpublic Window (Application app) {\n"
-"\t\tObject (application: app, title: \"Gmenu Example\");\n"
-"\n"
-"\t\tvar about_action = new SimpleAction (\"about\", null);\n"
-"\n"
-"\t\t/* Connect the 'activate' signal to the\n"
-"\t\t * signal handler (aka. callback).\n"
-"\t\t */\n"
-"\t\tabout_action.activate.connect (this.about_cb);\n"
-"\n"
-"\t\t/* Add the action to this window. */\n"
-"\t\tthis.add_action (about_action);\n"
-"\n"
-"\t\tthis.show ();\n"
-"\t}\n"
-"\n"
-"\t/* Signal handler for 'activate' signal of the SimpleAction. */\n"
-"\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n"
-"\t\tprint (\"This does nothing. It is only a demonstration.\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the Application. */\n"
-"public class Application : Gtk.Application {\n"
-"\n"
-"\t/* Constructor */\n"
-"\tpublic Application () {\n"
-"\t\tObject (application_id: \"org.example.application\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t/* Create a new window for this application. */\n"
-"\t\tnew Window (this);\n"
-"\t}\n"
-"\n"
-"\t/* Override the 'startup' signal of GLib.Application. */\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\tvar menu = new Menu ();\n"
-"\t\tmenu.append (\"About\", \"win.about\");\n"
-"\t\tmenu.append (\"Quit\", \"app.quit\");\n"
-"\t\tthis.app_menu = menu;\n"
-"\n"
-"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
-"\t\tquit_action.activate.connect (this.quit);\n"
-"\t\tthis.add_action (quit_action);\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main function creates Application and runs it. */\n"
-"int main (string[] args) {\n"
-"\treturn new Application ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/gmenu.vala.page:41
-msgid ""
-"<link href=\"http://www.valadoc.org/gio-2.0/GLib.Menu.Menu.html\">Menu</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gio-2.0/GLib.Menu.Menu.html\">Menu</link>"
-
-#. (itstool) path: item/p
-#: C/gmenu.vala.page:42
-msgid ""
-"<link href=\"http://www.valadoc.org/gio-2.0/GLib.Menu.append.html\">append</"
-"link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gio-2.0/GLib.Menu.append.html\">append</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/gmenu.vala.page:43
-msgid ""
-"<link href=\"http://www.valadoc.org/gio-2.0/GLib.SimpleAction.html"
-"\">SimpleAction</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gio-2.0/GLib.SimpleAction.html"
-"\">SimpleAction</link>"
-
-#. (itstool) path: item/p
-#: C/gmenu.vala.page:44
-msgid ""
-"<link href=\"http://www.valadoc.org/gio-2.0/GLib.ActionMap.add_action.html"
-"\">add_action</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gio-2.0/GLib.ActionMap.add_action.html"
-"\">add_action</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/grid.c.page:23 C/grid.js.page:26 C/grid.vala.page:24
-msgctxt "_"
-msgid "external ref='media/grid.png' md5='27d45da115401127456a3b854dcfc5be'"
-msgstr "external ref='media/grid.png' md5='27d45da115401127456a3b854dcfc5be'"
-
-#. (itstool) path: info/title
-#: C/grid.c.page:8
-msgctxt "text"
-msgid "Grid (C)"
-msgstr "Grid (C)"
-
-#. (itstool) path: info/desc
-#: C/grid.c.page:18 C/grid.js.page:22 C/grid.py.page:26 C/grid.vala.page:20
-msgid "Pack widgets in rows and columns"
-msgstr "Empaquetar widgets en filas y columnas"
-
-#. (itstool) path: page/title
-#: C/grid.c.page:21 C/grid.js.page:25 C/grid.py.page:29
-msgid "Grid"
-msgstr "Rejilla"
-
-#. (itstool) path: page/p
-#: C/grid.c.page:24 C/grid.vala.page:25
-msgid "A button widget connected to a progress bar."
-msgstr "Un widget de botón conectado a una barra de progreso."
-
-#. (itstool) path: page/code
-#: C/grid.c.page:26
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/*Signal handler for the \"clicked\" signal of the Button. Each\n"
-"click generates a progress bar pulse*/\n"
-"static void\n"
-"on_button_click (GtkButton *button,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkProgressBar *progress_bar = user_data;\n"
-" gtk_progress_bar_pulse (progress_bar);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *grid;\n"
-" GtkWidget *window;\n"
-" GtkWidget *button;\n"
-" GtkWidget *progress_bar;\n"
-"\n"
-" /*Create the window and set a title*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Grid Example\");\n"
-"\n"
-" /*Create a button with a label*/\n"
-" button = gtk_button_new_with_label (\"Button\");\n"
-"\n"
-" /*Create the progress bar*/\n"
-" progress_bar = gtk_progress_bar_new ();\n"
-"\n"
-" /*Create a grid and attach the button and progress bar\n"
-" accordingly*/\n"
-" grid = gtk_grid_new ();\n"
-" gtk_grid_attach (GTK_GRID (grid), button, 1, 1, 1, 1);\n"
-" gtk_grid_attach_next_to (GTK_GRID (grid), \n"
-" progress_bar, \n"
-" button, \n"
-" GTK_POS_BOTTOM, 1, 1);\n"
-"\n"
-" /*Connecting the clicked signal to the callback function*/\n"
-" g_signal_connect (GTK_BUTTON (button), \"clicked\", \n"
-" G_CALLBACK (on_button_click), progress_bar);\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/*Signal handler for the \"clicked\" signal of the Button. Each\n"
-"click generates a progress bar pulse*/\n"
-"static void\n"
-"on_button_click (GtkButton *button,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkProgressBar *progress_bar = user_data;\n"
-" gtk_progress_bar_pulse (progress_bar);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *grid;\n"
-" GtkWidget *window;\n"
-" GtkWidget *button;\n"
-" GtkWidget *progress_bar;\n"
-"\n"
-" /*Create the window and set a title*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Grid Example\");\n"
-"\n"
-" /*Create a button with a label*/\n"
-" button = gtk_button_new_with_label (\"Button\");\n"
-"\n"
-" /*Create the progress bar*/\n"
-" progress_bar = gtk_progress_bar_new ();\n"
-"\n"
-" /*Create a grid and attach the button and progress bar\n"
-" accordingly*/\n"
-" grid = gtk_grid_new ();\n"
-" gtk_grid_attach (GTK_GRID (grid), button, 1, 1, 1, 1);\n"
-" gtk_grid_attach_next_to (GTK_GRID (grid), \n"
-" progress_bar, \n"
-" button, \n"
-" GTK_POS_BOTTOM, 1, 1);\n"
-"\n"
-" /*Connecting the clicked signal to the callback function*/\n"
-" g_signal_connect (GTK_BUTTON (button), \"clicked\", \n"
-" G_CALLBACK (on_button_click), progress_bar);\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/grid.c.page:34 C/progressbar.c.page:35
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkProgressBar.html"
-"\">GtkProgressBar</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkProgressBar.html"
-"\">GtkProgressBar</link>"
-
-#. (itstool) path: info/title
-#: C/grid.js.page:8
-msgctxt "text"
-msgid "Grid (JavaScript)"
-msgstr "Grid (JavaScript)"
-
-#. (itstool) path: page/p
-#: C/grid.js.page:27
-msgid ""
-"A button widget connected to a progress bar, inside of a grid which handles "
-"the layout."
-msgstr ""
-"Un widget de botón conectado a una barra de progreso., dentro de una rejilla "
-"que gestiona la distribución."
-
-#. (itstool) path: page/code
-#: C/grid.js.page:29
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const GridExample = new Lang.Class ({\n"
-" Name: 'Grid Example',\n"
-"\n"
-" /* Create the application itself\n"
-" This boilerplate code is needed to build any GTK+ application. */\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jsgrid',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal initializes menus and builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Grid Example\"});\n"
-"\n"
-" // Create the grid\n"
-" this.Grid = new Gtk.Grid ();\n"
-"\n"
-" // Create the widgets inside the grid\n"
-" this.progressBar = new Gtk.ProgressBar ();\n"
-" this.Button = new Gtk.Button ({ label: \"Button\" });\n"
-" this.Button.connect (\"clicked\", Lang.bind(this, this._clickHandler));\n"
-"\n"
-" // Assemble the grid\n"
-" this._window.add (this.Grid);\n"
-" this.Grid.attach (this.Button, 1, 1, 1, 1);\n"
-" this.Grid.attach_next_to (this.progressBar, this.Button, Gtk.PositionType.BOTTOM, 1, 1);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" // Here's the function that says what happens when the button is clicked\n"
-" _clickHandler: function () {\n"
-" this.progressBar.pulse ();\n"
-" }\n"
-"\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new GridExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const GridExample = new Lang.Class ({\n"
-" Name: 'Grid Example',\n"
-"\n"
-" /* Create the application itself\n"
-" This boilerplate code is needed to build any GTK+ application. */\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jsgrid',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal initializes menus and builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Grid Example\"});\n"
-"\n"
-" // Create the grid\n"
-" this.Grid = new Gtk.Grid ();\n"
-"\n"
-" // Create the widgets inside the grid\n"
-" this.progressBar = new Gtk.ProgressBar ();\n"
-" this.Button = new Gtk.Button ({ label: \"Button\" });\n"
-" this.Button.connect (\"clicked\", Lang.bind(this, this._clickHandler));\n"
-"\n"
-" // Assemble the grid\n"
-" this._window.add (this.Grid);\n"
-" this.Grid.attach (this.Button, 1, 1, 1, 1);\n"
-" this.Grid.attach_next_to (this.progressBar, this.Button, Gtk.PositionType.BOTTOM, 1, 1);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" // Here's the function that says what happens when the button is clicked\n"
-" _clickHandler: function () {\n"
-" this.progressBar.pulse ();\n"
-" }\n"
-"\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new GridExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/grid.js.page:37
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html"
-"\">Gtk.Grid</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html"
-"\">Gtk.Grid</link>"
-
-#. (itstool) path: item/p
-#: C/grid.js.page:38 C/progressbar.js.page:42
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ProgressBar."
-"html\">Gtk.ProgressBar</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ProgressBar."
-"html\">Gtk.ProgressBar</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/grid.py.page:31
-msgctxt "_"
-msgid ""
-"external ref='media/grid_simple.png' md5='c806f2e69b30373d4d2e08b41d6cc1f6'"
-msgstr ""
-"external ref='media/grid_simple.png' md5='c806f2e69b30373d4d2e08b41d6cc1f6'"
-
-#. (itstool) path: info/title
-#: C/grid.py.page:8
-msgctxt "text"
-msgid "Grid (Python)"
-msgstr "Grid (Python)"
-
-#. (itstool) path: page/p
-#: C/grid.py.page:32
-msgid "Some labels in a grid."
-msgstr "Algunas etiquetas en una rejilla."
-
-#. (itstool) path: section/code
-#: C/grid.py.page:38
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Grid Example\", application=app)\n"
-"\n"
-" # three labels\n"
-" label_top_left = Gtk.Label(label=\"This is Top Left\")\n"
-" label_top_right = Gtk.Label(label=\"This is Top Right\")\n"
-" label_bottom = Gtk.Label(label=\"This is Bottom\")\n"
-"\n"
-" # a grid\n"
-" grid = Gtk.Grid()\n"
-"\n"
-" # some space between the columns of the grid\n"
-" grid.set_column_spacing(20)\n"
-"\n"
-" # in the grid:\n"
-" # attach the first label in the top left corner\n"
-" grid.attach(label_top_left, 0, 0, 1, 1)\n"
-" # attach the second label\n"
-" grid.attach(label_top_right, 1, 0, 1, 1)\n"
-" # attach the third label below the first label\n"
-" grid.attach_next_to(\n"
-" label_bottom, label_top_left, Gtk.PositionType.BOTTOM, 2, 1)\n"
-"\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Grid Example\", application=app)\n"
-"\n"
-" # three labels\n"
-" label_top_left = Gtk.Label(label=\"This is Top Left\")\n"
-" label_top_right = Gtk.Label(label=\"This is Top Right\")\n"
-" label_bottom = Gtk.Label(label=\"This is Bottom\")\n"
-"\n"
-" # a grid\n"
-" grid = Gtk.Grid()\n"
-"\n"
-" # some space between the columns of the grid\n"
-" grid.set_column_spacing(20)\n"
-"\n"
-" # in the grid:\n"
-" # attach the first label in the top left corner\n"
-" grid.attach(label_top_left, 0, 0, 1, 1)\n"
-" # attach the second label\n"
-" grid.attach(label_top_right, 1, 0, 1, 1)\n"
-" # attach the third label below the first label\n"
-" grid.attach_next_to(\n"
-" label_bottom, label_top_left, Gtk.PositionType.BOTTOM, 2, 1)\n"
-"\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/grid.py.page:42
-msgid "Useful methods for a Grid widget"
-msgstr "Métodos útiles para un widget «Grid»"
-
-#. (itstool) path: item/p
-#: C/grid.py.page:45
-msgid ""
-"To attach a widget <code>child</code> in position <code>left, top</code> in "
-"a slot of given <code>width, height</code> use <code>attach(child, top, "
-"left, width, height)</code>. If a widget <code>sibling</code> is already in "
-"place, we can also use <code>attach_next_to(child, sibling, side, width, "
-"height)</code>, where <code>side</code> is one of <code>Gtk.PositionType."
-"LEFT, Gtk.PositionType.RIGHT, Gtk.PositionType.TOP, Gtk.PositionType.BOTTOM</"
-"code>."
-msgstr ""
-"Para añadir un widget <code>hijo</code> en la posición <code>izquierda, "
-"arriba</code> en un espacio de una <code>anchura, altura</code> dada use "
-"<code>attach(hijo, arriba, izquierda, anchura, altura</code>. Si un widget "
-"<code>hermano</code> ya está en posición, también se puede usar "
-"<code>attach_next_to(hijo, hermano, lado, anchura, altura)</code>, donde "
-"<code>lado</code> puede ser <code>Gtk.PositionType.LEFT, Gtk.PositionType."
-"RIGHT, Gtk.PositionType.TOP, Gtk.PositionType.BOTTOM</code>."
-
-#. (itstool) path: item/p
-#: C/grid.py.page:46
-msgid ""
-"<code>insert_row(position)</code> and <code>insert_column(position)</code> "
-"do exactly what they say; children which are attached at or below this "
-"position are moved one row down, and children which span across this "
-"position are grown to span the new row. <code>insert_next_to(sibling, side)</"
-"code> inserts a row or column at the specified position. The new row or "
-"column is placed next to <code>sibling</code>, on the side determined by "
-"<code>side</code>; if side is <code>Gtk.PositionType.TOP</code> or <code>Gtk."
-"PositionType.BOTTOM</code>, a row is inserted, if side is <code>Gtk."
-"PositionType.LEFT</code> or <code>Gtk.PositionType.RIGHT</code>, a column is "
-"inserted."
-msgstr ""
-"<code>insert_row(posición)</code> e <code>insert_column(posición)</code> "
-"hacen que los hijos añadidos en esa posición o por debajo se muevan una fila "
-"hacia abajo, y que los hijos que se extienden a lo largo de esta posición "
-"crezcan para ocupar la siguiente fila. <code>insert_next_to(hermano, lado)</"
-"code> inserta una fila o columna en la posición especificada. La fila o "
-"columna nueva se pone al lado del <code>hermano</code>, a su <code>lado</"
-"code>; si es <code>Gtk.PositionType.TOP</code> or <code>Gtk.PositionType."
-"BOTTOM</code>, se inserta una fila; si es <code>Gtk.PositionType.LEFT</code> "
-"o <code>Gtk.PositionType.RIGHT</code>, se inserta una columna."
-
-#. (itstool) path: item/p
-#: C/grid.py.page:47
-msgid ""
-"<code>set_row_homogeneous(True)</code> and <code>set_column_homogeneous(True)"
-"</code> ensure that (respectively) every row or every column has the same "
-"width or height."
-msgstr ""
-"<code>set_row_homogeneous(True)</code> y <code>set_column_homogeneous(True)</"
-"code> se aseguran de que (respectivamente) cada fila o cada columna tengan "
-"la misma anchura o altura."
-
-#. (itstool) path: item/p
-#: C/grid.py.page:48
-msgid ""
-"<code>set_row_spacing(spacing)</code> and <code>set_column_spacing(spacing)</"
-"code> force a spacing between (respectively) rows or columns. The value of "
-"<code>spacing</code> can be between <code>0</code>, which is the default "
-"value, and <code>32767</code>."
-msgstr ""
-"<code>set_row_spacing(espaciado)</code> y <code>set_column_spacing(espaciado)"
-"</code> fuerzan un espaciado entre (respectivamente) filas o columnas. El "
-"valor de <code>espaciado</code> puede estar entre <code>0</code>, que es el "
-"valor predeterminado, y <code>32767</code>."
-
-#. (itstool) path: item/p
-#: C/grid.py.page:59 C/label.py.page:105 C/separator.c.page:41
-#: C/separator.py.page:42 C/switch.py.page:46
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkLabel.html"
-"\">GtkLabel</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkLabel.html"
-"\">GtkLabel</link>"
-
-#. (itstool) path: item/p
-#: C/grid.py.page:60 C/paned.c.page:38 C/paned.py.page:44
-#: C/scrolledwindow.py.page:47
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkImage.html"
-"\">GtkImage</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkImage.html"
-"\">GtkImage</link>"
-
-#. (itstool) path: item/p
-#: C/grid.py.page:61 C/radiobutton.py.page:50 C/separator.c.page:40
-#: C/separator.py.page:41 C/switch.py.page:47 C/toolbar_builder.py.page:196
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkGrid.html"
-"\">GtkGrid</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkGrid.html"
-"\">GtkGrid</link>"
-
-#. (itstool) path: info/title
-#: C/grid.vala.page:8
-msgctxt "text"
-msgid "Grid (Vala)"
-msgstr "Grid (Vala)"
-
-#. (itstool) path: page/title
-#: C/grid.vala.page:23
-msgid "Grid widget"
-msgstr "Widget de rejilla"
-
-#. (itstool) path: page/code
-#: C/grid.vala.page:27
-#, no-wrap
-msgid ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\tGtk.Widget progress_bar;\n"
-"\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Grid Example\");\n"
-"\t\tvar grid = new Gtk.Grid();\n"
-"\t\tprogress_bar = new Gtk.ProgressBar ();\n"
-"\t\tprogress_bar.show ();\n"
-"\n"
-"\t\tvar button = new Gtk.Button.with_label (\"Button\");\n"
-"\t\tbutton.clicked.connect (on_button_click);\n"
-"\t\tbutton.show ();\n"
-"\n"
-"\t\tthis.add(grid);\n"
-"\t\tgrid.attach(button, 0, 1, 1, 1);\n"
-"\t\tgrid.attach_next_to (progress_bar, button, Gtk.PositionType.BOTTOM, 1, 1);\n"
-"\t\tgrid.show ();\n"
-"\t}\n"
-"\n"
-"\tvoid on_button_click (Gtk.Button button) {\n"
-"\t\t(progress_bar as Gtk.ProgressBar).pulse ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\tGtk.Widget progress_bar;\n"
-"\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Grid Example\");\n"
-"\t\tvar grid = new Gtk.Grid();\n"
-"\t\tprogress_bar = new Gtk.ProgressBar ();\n"
-"\t\tprogress_bar.show ();\n"
-"\n"
-"\t\tvar button = new Gtk.Button.with_label (\"Button\");\n"
-"\t\tbutton.clicked.connect (on_button_click);\n"
-"\t\tbutton.show ();\n"
-"\n"
-"\t\tthis.add(grid);\n"
-"\t\tgrid.attach(button, 0, 1, 1, 1);\n"
-"\t\tgrid.attach_next_to (progress_bar, button, Gtk.PositionType.BOTTOM, 1, 1);\n"
-"\t\tgrid.show ();\n"
-"\t}\n"
-"\n"
-"\tvoid on_button_click (Gtk.Button button) {\n"
-"\t\t(progress_bar as Gtk.ProgressBar).pulse ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/grid.vala.page:32
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Grid.html\">Gtk.Grid</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Grid.html\">Gtk.Grid</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/GtkApplicationWindow.c.page:22 C/GtkApplicationWindow.js.page:22
-#: C/GtkApplicationWindow.py.page:29 C/GtkApplicationWindow.vala.page:22
-#: C/window.c.page:22 C/window.js.page:25 C/window.py.page:33
-#: C/window.vala.page:25
-msgctxt "_"
-msgid "external ref='media/window.png' md5='eb0cde3530978619c25bddfaeb453345'"
-msgstr "external ref='media/window.png' md5='eb0cde3530978619c25bddfaeb453345'"
-
-#. (itstool) path: info/title
-#: C/GtkApplicationWindow.c.page:8
-msgctxt "text"
-msgid "ApplicationWindow (C)"
-msgstr "ApplicationWindow (C)"
-
-#. (itstool) path: info/desc
-#: C/GtkApplicationWindow.c.page:18
-msgid "A toplevel window which can contain other widgets, and support GMenu"
-msgstr ""
-"Una ventana de nivel superior que puede contener otros widgets, y que "
-"soporta GMenu"
-
-#. (itstool) path: page/title
-#: C/GtkApplicationWindow.c.page:21 C/GtkApplicationWindow.js.page:21
-#: C/GtkApplicationWindow.py.page:28 C/GtkApplicationWindow.vala.page:21
-msgid "ApplicationWindow"
-msgstr "ApplicationWindow"
-
-#. (itstool) path: page/p
-#: C/GtkApplicationWindow.c.page:23
-msgid "A minimal GtkApplication with a GtkApplicationWindow"
-msgstr "Una GtkApplication con una GtkApplicationWindow"
-
-#. (itstool) path: page/code
-#: C/GtkApplicationWindow.c.page:25
-#, no-wrap
-msgid ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/GtkApplicationWindow.c.page:31
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkApplicationWindow.html"
-"\">GtkApplicationWindow</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkApplicationWindow.html"
-"\">GtkApplicationWindow</link>"
-
-#. (itstool) path: info/title
-#: C/GtkApplicationWindow.js.page:8
-msgctxt "text"
-msgid "ApplicationWindow (JavaScript)"
-msgstr "ApplicationWindow (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/GtkApplicationWindow.js.page:18 C/GtkApplicationWindow.py.page:25
-#: C/GtkApplicationWindow.vala.page:18
-msgid "GtkWindow subclass with GtkApplication support"
-msgstr "Subclase GtkWindow con soporte de GtkApplication"
-
-#. (itstool) path: page/p
-#: C/GtkApplicationWindow.js.page:23
-msgid "A simple GtkApplicationWindow which can support Menus."
-msgstr "Una GtkApplicationWindow sencilla que soporta menús."
-
-#. (itstool) path: page/code
-#: C/GtkApplicationWindow.js.page:25
-#, no-wrap
-msgid ""
-"\n"
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const Application = new Lang.Class ({\n"
-" Name: 'Application',\n"
-"\n"
-" //create the application\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.myapp',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" //connect to 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" //create the UI (in this case it's just the ApplicationWindow\n"
-" _buildUI: function () {\n"
-" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Welcome to GNOME\" });\n"
-"\n"
-" //uncommenting the line below will change the window size\n"
-" //this._window.set_default_size(600, 400);\n"
-"\n"
-" //show the window and all child widgets (none in this case)\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" //callback function for 'activate' signal\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" //callback function for 'startup' signal\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" }\n"
-"});\n"
-"\n"
-"//run the application\n"
-"let app = new Application ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const Application = new Lang.Class ({\n"
-" Name: 'Application',\n"
-"\n"
-" //create the application\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.myapp',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" //connect to 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" //create the UI (in this case it's just the ApplicationWindow\n"
-" _buildUI: function () {\n"
-" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Welcome to GNOME\" });\n"
-"\n"
-" //uncommenting the line below will change the window size\n"
-" //this._window.set_default_size(600, 400);\n"
-"\n"
-" //show the window and all child widgets (none in this case)\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" //callback function for 'activate' signal\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" //callback function for 'startup' signal\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" }\n"
-"});\n"
-"\n"
-"//run the application\n"
-"let app = new Application ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: info/title
-#: C/GtkApplicationWindow.py.page:8
-msgctxt "text"
-msgid "ApplicationWindow (Python)"
-msgstr "ApplicationWindow (Python)"
-
-#. (itstool) path: page/p
-#: C/GtkApplicationWindow.py.page:30
-msgid ""
-"The simplest GtkApplication Window which can support <link xref=\"gmenu.py\"/"
-">."
-msgstr ""
-"La ventana de GtkApplication más sencilla que puede soportar <link xref="
-"\"gmenu.py\"/>."
-
-#. (itstool) path: section/code
-#: C/GtkApplicationWindow.py.page:37
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"# a Gtk ApplicationWindow\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # constructor: the title is \"Welcome to GNOME\" and the window belongs\n"
-" # to the application app\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-" # constructor of the Gtk Application\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" # create and activate a MyWindow, with self (the MyApplication) as\n"
-" # application the window belongs to.\n"
-" # Note that the function in C activate() becomes do_activate() in Python\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" # show the window and all its content\n"
-" # this line could go in the constructor of MyWindow as well\n"
-" win.show_all()\n"
-"\n"
-" # start up the application\n"
-" # Note that the function in C startup() becomes do_startup() in Python\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"# create and run the application, exit with the value returned by\n"
-"# running the program\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"# a Gtk ApplicationWindow\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # constructor: the title is \"Welcome to GNOME\" and the window belongs\n"
-" # to the application app\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-" # constructor of the Gtk Application\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" # create and activate a MyWindow, with self (the MyApplication) as\n"
-" # application the window belongs to.\n"
-" # Note that the function in C activate() becomes do_activate() in Python\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" # show the window and all its content\n"
-" # this line could go in the constructor of MyWindow as well\n"
-" win.show_all()\n"
-"\n"
-" # start up the application\n"
-" # Note that the function in C startup() becomes do_startup() in Python\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"# create and run the application, exit with the value returned by\n"
-"# running the program\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/GtkApplicationWindow.py.page:41
-msgid "Useful methods for a Gtk.ApplicationWindow widget"
-msgstr "Métodos útiles para un widget «Gtk.ApplicationWindow»"
-
-#. (itstool) path: item/p
-#: C/GtkApplicationWindow.py.page:44 C/window.py.page:54
-msgid ""
-"<code>set_default_size(200, 100)</code> sets the default size of the window "
-"to a width of <code>200</code> and a height of <code>100</code>; if instead "
-"of a positive number we pass <code>-1</code> we have the default size."
-msgstr ""
-"<code>set_default_size(200, 100)</code> establece el tamaño predeterminado "
-"de la ventana a una anchura de <code>200</code> y una altura de <code>100</"
-"code>; si en lugar de un número positivo le pasa <code>-1</code> tendrá el "
-"tamaño predeterminado."
-
-#. (itstool) path: item/p
-#: C/GtkApplicationWindow.py.page:45 C/window.py.page:55
-msgid ""
-"<code>set_position(Gtk.WindowPosition.CENTER)</code> centers the window. "
-"Other options are <code>Gtk.WindowPosition.NONE, Gtk.WindowPosition.MOUSE, "
-"Gtk.WindowPosition.CENTER_ALWAYS, Gtk.WindowPosition.CENTER_ON_PARENT</code>."
-msgstr ""
-"<code>set_position(Gtk.WindowPosition.CENTER)</code> centra la ventana. "
-"Otras opciones son <code>Gtk.WindowPosition.NONE, Gtk.WindowPosition.MOUSE, "
-"Gtk.WindowPosition.CENTER_ALWAYS, Gtk.WindowPosition.CENTER_ON_PARENT</code>."
-
-#. (itstool) path: info/title
-#: C/GtkApplicationWindow.vala.page:8
-msgctxt "text"
-msgid "ApplicationWindow (Vala)"
-msgstr "ApplicationWindow (Vala)"
-
-#. (itstool) path: page/p
-#: C/GtkApplicationWindow.vala.page:23
-msgid "The simplest GtkApplication Window which can support Menus."
-msgstr "La ventana de GtkApplication más sencilla que puede soportar menús."
-
-#. (itstool) path: page/code
-#: C/GtkApplicationWindow.vala.page:25
-#, no-wrap
-msgid ""
-"\n"
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\t\t/* Create the window of this application and show it. */\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.title = \"Welcome to GNOME\";\n"
-"\t\twindow.show ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"\n"
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\t\t/* Create the window of this application and show it. */\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.title = \"Welcome to GNOME\";\n"
-"\t\twindow.show ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/GtkApplicationWindow.vala.page:31 C/label.vala.page:31
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Application.html.content.tpl"
-"\">Gtk.Application</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Application.html.content.tpl"
-"\">Gtk.Application</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/guitar-tuner.c.page:45 C/guitar-tuner.cpp.page:43
-#: C/guitar-tuner.js.page:37 C/guitar-tuner.py.page:50
-#: C/guitar-tuner.vala.page:48
-msgctxt "_"
-msgid ""
-"external ref='media/guitar-tuner.png' md5='35e615e0f5e293671d00c5c414ac2f6b'"
-msgstr ""
-"external ref='media/guitar-tuner.png' md5='35e615e0f5e293671d00c5c414ac2f6b'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/guitar-tuner.c.page:100 C/guitar-tuner.cpp.page:94
-#: C/guitar-tuner.py.page:101 C/guitar-tuner.vala.page:101
-msgctxt "_"
-msgid ""
-"external ref='media/guitar-tuner-glade.png' "
-"md5='f6606525443ab2160f53a87a454364d0'"
-msgstr ""
-"external ref='media/guitar-tuner-glade.png' "
-"md5='f6606525443ab2160f53a87a454364d0'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/guitar-tuner.c.page:145 C/guitar-tuner.cpp.page:123
-#: C/guitar-tuner.js.page:43 C/guitar-tuner.py.page:144
-#: C/guitar-tuner.vala.page:135
-msgctxt "_"
-msgid ""
-"external ref='media/guitar-tuner-pipeline.png' "
-"md5='5adc952909d92af5dae6954781b4ad5f'"
-msgstr ""
-"external ref='media/guitar-tuner-pipeline.png' "
-"md5='5adc952909d92af5dae6954781b4ad5f'"
-
-#. (itstool) path: info/title
-#: C/guitar-tuner.c.page:8
-msgctxt "text"
-msgid "Guitar tuner (C)"
-msgstr "Afinador de guitarra (C)"
-
-#. (itstool) path: info/desc
-#: C/guitar-tuner.c.page:11 C/guitar-tuner.py.page:11
-msgid ""
-"Use GTK+ and GStreamer to build a simple guitar tuner application for GNOME. "
-"Shows off how to use the interface designer."
-msgstr ""
-"Usar GTK+ y GStreamer para construir un sencillo afinador de guitarra para "
-"GNOME. Muestra cómo usar el diseñador de interfaces."
-
-#. (itstool) path: credit/name
-#: C/guitar-tuner.c.page:19 C/guitar-tuner.cpp.page:17
-#: C/guitar-tuner.py.page:19 C/guitar-tuner.vala.page:18
-#: C/image-viewer.c.page:19 C/image-viewer.cpp.page:17
-#: C/image-viewer.js.page:19 C/image-viewer.py.page:19
-#: C/image-viewer.vala.page:19 C/index.page:18 C/magic-mirror.vala.page:19
-#: C/photo-wall.c.page:18 C/record-collection.js.page:19
-msgid "Johannes Schmid"
-msgstr "Johannes Schmid"
-
-#. (itstool) path: page/title
-#: C/guitar-tuner.c.page:29 C/guitar-tuner.cpp.page:27
-#: C/guitar-tuner.js.page:20 C/guitar-tuner.py.page:34
-#: C/guitar-tuner.vala.page:32
-msgid "Guitar tuner"
-msgstr "Afinador de guitarra"
-
-#. (itstool) path: synopsis/p
-#: C/guitar-tuner.c.page:32 C/guitar-tuner.cpp.page:30
-#: C/guitar-tuner.py.page:37
-msgid ""
-"In this tutorial, we're going to make a program which plays tones that you "
-"can use to tune a guitar. You will learn how to:"
-msgstr ""
-"En este tutorial se va a hacer un programa que reproduce tonos que puede "
-"usar para afinar su guitarra. Aprenderá a:"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:34 C/guitar-tuner.cpp.page:32
-#: C/guitar-tuner.py.page:39
-msgid "Set up a basic project in Anjuta"
-msgstr "Configurar un proyecto básico en Anjuta"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:35 C/guitar-tuner.cpp.page:33
-#: C/guitar-tuner.py.page:40
-msgid "Create a simple GUI with Anjuta's UI designer"
-msgstr "Crear una IGU sencilla con el diseñador IU de Anjuta"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:36 C/guitar-tuner.cpp.page:34
-#: C/guitar-tuner.py.page:41
-msgid "Use GStreamer to play sounds"
-msgstr "Usar GStreamer para reproducir sonidos"
-
-#. (itstool) path: synopsis/p
-#: C/guitar-tuner.c.page:38 C/guitar-tuner.cpp.page:36
-#: C/guitar-tuner.py.page:43 C/guitar-tuner.vala.page:41
-#: C/image-viewer.js.page:39 C/image-viewer.py.page:39
-#: C/image-viewer.vala.page:46 C/magic-mirror.vala.page:39
-msgid "You'll need the following to be able to follow this tutorial:"
-msgstr "Necesitará lo siguiente para poder seguir este tutorial:"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:40 C/guitar-tuner.cpp.page:38
-#: C/guitar-tuner.py.page:45 C/image-viewer.js.page:41
-#: C/image-viewer.py.page:41 C/magic-mirror.vala.page:41
-msgid "An installed copy of the <link xref=\"getting-ready\">Anjuta IDE</link>"
-msgstr "Una copia instalada del <link xref=\"getting-ready\">EID Anjuta</link>"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:41
-msgid "Basic knowledge of the C programming language"
-msgstr "Conocimiento básico del lenguaje de programación C"
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.c.page:48 C/guitar-tuner.cpp.page:46
-#: C/guitar-tuner.py.page:53 C/image-viewer.c.page:42
-#: C/image-viewer.cpp.page:40 C/image-viewer.js.page:50
-#: C/image-viewer.py.page:49 C/image-viewer.vala.page:57
-#: C/magic-mirror.vala.page:50 C/message-board.c.page:46
-#: C/photo-wall.c.page:52 C/record-collection.js.page:53
-msgid "Create a project in Anjuta"
-msgstr "Crear un proyecto en Anjuta"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:49 C/guitar-tuner.cpp.page:47
-#: C/guitar-tuner.py.page:54 C/guitar-tuner.vala.page:52
-#: C/image-viewer.c.page:43 C/image-viewer.cpp.page:41
-#: C/image-viewer.js.page:51 C/image-viewer.py.page:50
-#: C/image-viewer.vala.page:58 C/magic-mirror.vala.page:51
-#: C/photo-wall.c.page:53 C/record-collection.js.page:54
-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. "
-"It's also useful for keeping everything together."
-msgstr ""
-"Antes de empezar a programar, deberá configurar un proyecto nuevo en Anjuta. "
-"Esto creará todos los archivos que necesite para construir y ejecutar el "
-"código más adelante. También es útil para mantener todo ordenado."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:52 C/guitar-tuner.cpp.page:50
-#: C/guitar-tuner.py.page:57 C/image-viewer.c.page:46
-#: C/image-viewer.cpp.page:44 C/image-viewer.js.page:54
-#: C/image-viewer.py.page:53 C/magic-mirror.vala.page:54
-#: C/photo-wall.c.page:56 C/record-collection.js.page:57
-msgid ""
-"Start Anjuta and click <guiseq><gui>File</gui><gui>New</gui><gui>Project</"
-"gui></guiseq> to open the project wizard."
-msgstr ""
-"Inicie Anjuta y pulse <guiseq><gui>Archivo</gui><gui>Nuevo</"
-"gui><gui>Proyecto</gui></guiseq> para abrir el asistente de proyectos."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:55
-msgid ""
-"Choose <gui>GTK+ (Simple)</gui> from the <gui>C</gui> tab, click "
-"<gui>Continue</gui>, and fill out your details on the next few pages. Use "
-"<file>guitar-tuner</file> as project name and directory."
-msgstr ""
-"Seleccione <gui>GTK+ (simple)</gui> en la pestaña <gui>C</gui>, pulse "
-"<gui>Continuar</gui>, y rellene sus detalles en las siguientes páginas. Use "
-"<file>afinador-guitarra</file> como nombre del proyecto y de la carpeta."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:58
-msgid ""
-"Make sure that <gui>Configure external packages</gui> is switched <gui>ON</"
-"gui>. On the next page, select <em>gstreamer-0.10</em> from the list to "
-"include the GStreamer library in your project."
-msgstr ""
-"Asegúrese de que <gui>Configurar paquetes externos</gui> está <gui>activada</"
-"gui>. En la siguiente página, seleccione <em>gstreamer-0.10</em> de la lista "
-"para incluir la biblioteca GStreamer en su proyecto."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:62 C/image-viewer.c.page:57 C/photo-wall.c.page:71
-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:"
-msgstr ""
-"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:"
-
-#. (itstool) path: item/code
-#: C/guitar-tuner.c.page:63 C/image-viewer.c.page:58 C/photo-wall.c.page:72
-#, no-wrap
-msgid ""
-"\n"
-"#include <config.h>\n"
-"#include <gtk/gtk.h>"
-msgstr ""
-"\n"
-"#include <config.h>\n"
-"#include <gtk/gtk.h>"
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.c.page:71 C/guitar-tuner.cpp.page:69
-#: C/guitar-tuner.vala.page:74 C/image-viewer.c.page:66
-#: C/image-viewer.cpp.page:66 C/image-viewer.vala.page:113
-#: C/magic-mirror.vala.page:78
-msgid "Build the code for the first time"
-msgstr "Construir el código por primera vez"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:72
-msgid ""
-"C is a rather verbose language, so don't be surprised that the file contains "
-"quite a lot of code. Most of it is template code. It loads an (empty) window "
-"from the user interface description file and shows it. More details are "
-"given below; skip this list if you understand the basics:"
-msgstr ""
-"C es un lenguaje más detallado, por lo que no se sorprenda de que el archivo "
-"contiene un gran cantidad de código. La mayor parte es código de plantilla. "
-"Carga una ventana (vacía) desde el archivo de descripción de la interfaz de "
-"usuario y la muestra. A continuación se ofrecen más detalles; omita esta "
-"lista si entiende los conceptos básicos:"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:76 C/image-viewer.c.page:71
-msgid ""
-"The three <code>#include</code> lines at the top include the <code>config</"
-"code> (useful autoconf build defines), <code>gtk</code> (user interface) and "
-"<code>gi18n</code> (internationalization) libraries. Functions from these "
-"libraries are used in the rest of the code."
-msgstr ""
-"Las tres líneas <code>#include</code> en la parte superior incluyen las "
-"bibliotecas <code>config</code> (útil para definiciones de construcción de "
-"autoconf), <code>gtk</code> (interfaz de usuario) y <code>gi18n</code> "
-"(internacionalización). Las funciones de estas bibliotecas se usan en el "
-"resto del código."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:79
-msgid ""
-"The <code>create_window</code> function creates a new window by opening a "
-"GtkBuilder file (<file>src/guitar-tuner.ui</file>, defined a few lines "
-"above), connecting its signals and then displaying it in a window. The "
-"GtkBuilder file contains a description of a user interface and all of its "
-"elements. You can use Anjuta's editor to design GtkBuilder user interfaces."
-msgstr ""
-"La función <code>create_window</code> crea una ventana nueva abriendo un "
-"archivo de GtkBuilder (<file>src/guitar-tuner.ui</file>, definido unas pocas "
-"líneas más arriba), conectando sus señales y mostrándolo en una ventana. El "
-"archivo de GtkBuilder contiene una descripción de una interfaz de usuario y "
-"de todos sus elementos. Puede usar el editor Anjuta para diseñar interfaces "
-"de usuario con GtkBuilder."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:80 C/image-viewer.c.page:75
-#: C/image-viewer.vala.page:123
-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."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:83 C/image-viewer.c.page:78
-msgid ""
-"The <code>main</code> function is run by default when you start a C "
-"application. It calls a few functions which set up and then run the "
-"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 ""
-"La función <code>main</code> se ejecuta de manera predeterminada cuando "
-"inicia una aplicación en C. Llama a unas pocas funciones que 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 comienza a escuchar "
-"eventos (como pulsaciones del ratón y del teclado)."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:86 C/image-viewer.c.page:81
-msgid ""
-"The <code>ENABLE_NLS</code> conditional definition sets up <code>gettext</"
-"code>, which is a framework for translating applications. These functions "
-"specify how translation tools should handle your app when you run them."
-msgstr ""
-"La definición condicional <code>ENABLE_NLS</code> configura <code>gettext</"
-"code>, que es un entorno de trabajo para traducir aplicaciones. Estas "
-"funciones especifican cómo deben manejar su aplicación las herramientas de "
-"traducción cuando las ejecuta."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:90 C/guitar-tuner.cpp.page:84
-#: C/image-viewer.c.page:85 C/image-viewer.cpp.page:82
-#: C/image-viewer.vala.page:133 C/magic-mirror.vala.page:93
-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 "
-"<keyseq><key>Shift</key><key>F7</key></keyseq>)."
-msgstr ""
-"Este código está listo para usarse, por lo que puede compilarlo pulsando "
-"<guiseq><gui>Construir</gui><gui>Construir proyecto</gui></guiseq> (o "
-"pulsando <keyseq><key>Mayús</key><key>F7</key></keyseq>)."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:91 C/guitar-tuner.cpp.page:85
-#: C/image-viewer.c.page:86 C/image-viewer.cpp.page:83
-msgid ""
-"Press <gui>Execute</gui> on the next window that appears to configure a "
-"debug build. You only need to do this once, for the first build."
-msgstr ""
-"Pulse <gui>Ejecutar</gui> en la siguiente ventana que aparece para "
-"configurar una construcción de depuración. Esto sólo necesita hacer una vez "
-"para la primera construcción."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.c.page:95 C/guitar-tuner.cpp.page:89
-#: C/guitar-tuner.py.page:96 C/guitar-tuner.vala.page:96
-msgid "Create the user interface"
-msgstr "Crear la interfaz de usuario"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:96 C/guitar-tuner.cpp.page:90
-msgid ""
-"A description of the user interface (UI) is contained in the GtkBuilder "
-"file. To edit the user interface, open <file>src/guitar_tuner.ui</file>. "
-"This will switch to the interface designer. The design window is in the "
-"center; widgets and widgets' properties are on the left, and the palette of "
-"available widgets is on the right."
-msgstr ""
-"El archivo de GtkBuilder contiene una descripción de la interfaz de usuario "
-"(IU). Para editar la interfaz de usuario, abra <file>src/guitar_tuner.ui</"
-"file>. Esto cambiará al diseñador de interfaces. La ventana de diseño está "
-"en el centro; los widgets y sus propiedades están a la izquierda, y la "
-"paleta de los widgets disponibles está a la derecha."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:98 C/guitar-tuner.cpp.page:92
-#: C/guitar-tuner.py.page:99
-msgid ""
-"The layout of every UI in GTK+ is organized using boxes and tables. Let's "
-"use a vertical <gui>GtkButtonBox</gui> here to assign six <gui>GtkButtons</"
-"gui>, one for each of the six guitar strings."
-msgstr ""
-"La distribución de cualquier IU en GTK+ se organiza usando cajas y tablas. "
-"Aquí se usará una <gui>GtkButtonBox</gui> vertical para asignar seis "
-"<gui>GtkButtons</gui>, uno para cada una de las cuerdas de la guitarra."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:104 C/guitar-tuner.cpp.page:98
-#: C/guitar-tuner.py.page:105
-msgid ""
-"Select a <gui>GtkButtonBox</gui> from the <gui>Container</gui> section of "
-"the <gui>Palette</gui> on the right and put it into the window. In the "
-"<gui>Properties</gui> pane, set the number of elements to 6 (for the six "
-"strings) and the orientation to vertical."
-msgstr ""
-"Seleccione una <gui>GtkButtonBox</gui> de la sección <gui>Contenedor</gui> "
-"de la <gui>Paleta</gui> de la derecha y póngalo en la ventana. En el panel "
-"de <gui>Propiedades</gui>, establezca el número de elementos a «6» (para las "
-"seis cuerdas) y la orientación a «vertical»."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:108 C/guitar-tuner.cpp.page:102
-#: C/guitar-tuner.py.page:109
-msgid ""
-"Now, choose a <gui>GtkButton</gui> from the palette and put it into the "
-"first part of the box."
-msgstr ""
-"Ahora, elija un <gui>GtkButton</gui> de la paleta y póngalo en la primera "
-"parte de la caja."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:111 C/guitar-tuner.py.page:112
-msgid ""
-"While the button is still selected, change the <gui>Label</gui> property in "
-"the <gui>Widgets</gui> tab to <gui>E</gui>. This will be the low E string."
-msgstr ""
-"Mientras el botón esté seleccionado, cambie la propiedad <gui>Etiqueta</gui> "
-"en la pestaña <gui>Widgets</gui> a <gui>E</gui>. Esta será la cuerda Mi "
-"grave."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:114 C/guitar-tuner.py.page:115
-msgid ""
-"Switch to the <gui>Signals</gui> tab (inside the <gui>Widgets</gui> tab) and "
-"look for the <code>clicked</code> signal of the button. You can use this to "
-"connect a signal handler that will be called when the button is clicked by "
-"the user. To do this, click on the signal and type <code>on_button_clicked</"
-"code> in the <gui>Handler</gui> column and press <key>Return</key>."
-msgstr ""
-"Cambie a la pestaña <gui>Señales</gui> (dentro de la pestaña <gui>Widgets</"
-"gui>) y busque la señal <code>clicked</code> del botón. Puede usar esto para "
-"conectar un manejador de señal al que se llamará cuando el usuario pulse el "
-"botón. Para hacer esto, pulse sobre la señal, escriba "
-"<code>on_button_clicked</code> en la columna <gui>Manejador</gui> y pulse "
-"<key>Intro</key>."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:117 C/guitar-tuner.py.page:118
-#: C/guitar-tuner.vala.page:122
-msgid ""
-"Repeat the above steps for the other buttons, adding the next 5 strings with "
-"the names <em>A</em>, <em>D</em>, <em>G</em>, <em>B</em>, and <em>e</em>."
-msgstr ""
-"Repita los pasos anteriores para el resto de botones, añadiendo las 5 "
-"cuerdas restantes con los nombres <em>A</em>, <em>D</em>, <em>G</em>, <em>B</"
-"em>, y <em>e</em>."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:120 C/guitar-tuner.py.page:121
-#: C/guitar-tuner.vala.page:125
-msgid ""
-"Save the UI design (by clicking <guiseq><gui>File</gui><gui>Save</gui></"
-"guiseq>) and keep it open."
-msgstr ""
-"Guarde el diseño de la IU (pulsando <guiseq><gui>Archivo</gui><gui>Guardar</"
-"gui></guiseq>) y déjelo abierto."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.c.page:126 C/guitar-tuner.vala.page:203
-msgid "Creating the signal handler"
-msgstr "Crear el manejador de señales"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:127 C/guitar-tuner.py.page:128
-msgid ""
-"In the UI designer, you made it so that all of the buttons will call the "
-"same function, <gui>on_button_clicked</gui>, when they are clicked. We need "
-"to add that function in the source file."
-msgstr ""
-"El el diseñador de interfaces, se ha hecho que todos los botones llamen a la "
-"misma función, <gui>on_button_clicked</gui>, cuando se pulsan. Se debe "
-"añadir esta función al archivo de código fuente."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:128
-msgid ""
-"To do this, open <file>main.c</file> while the user interface file is still "
-"open. Switch to the <gui>Signals</gui> tab, which you already used to set "
-"the signal name. Now take the row where you set the <gui>clicked</gui> "
-"signal and drag it into to the source file at a position that is outside any "
-"function. The following code will be added to your source file:"
-msgstr ""
-"Para hacer esto, abra <file>main.c</file> mientras el archivo de la interfaz "
-"de usuario está abierto. Cambie a la pestaña <gui>Señales</gui>, que ya ha "
-"usado para establecer el nombre de la señal. Ahora vaya a la fila en la que "
-"estableció la señal <gui>clicked</gui> y arrástrela al archivo de código "
-"fuente, fuera de cualquier función. Se añadirá el siguiente código a su "
-"archivo de código fuente:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.c.page:131
-#, no-wrap
-msgid ""
-"\n"
-"void on_button_clicked (GtkWidget* button, gpointer user_data)\n"
-"{\n"
-"\n"
-"}"
-msgstr ""
-"\n"
-"void on_button_clicked (GtkWidget* button, gpointer user_data)\n"
-"{\n"
-"\n"
-"}"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:136
-msgid ""
-"This signal handler has two arguments: a pointer to the <code>GtkWidget</"
-"code> that called the function (in our case, always a <code>GtkButton</"
-"code>), and a pointer to some \"user data\" that you can define, but which "
-"we won't be using here. (You can set the user data by calling "
-"<code>gtk_builder_connect_signals</code>; it is normally used to pass a "
-"pointer to a data structure that you might need to access inside the signal "
-"handler.)"
-msgstr ""
-"El manejador de la señal tiene dos argumentos. un puntero al "
-"<code>GtkWidget</code> que llamó a la función (en este caso, siempre es un "
-"<code>GtkButton</code>), y un puntero a ciertos «datos de usuario» que puede "
-"definir, pero que aquí no se usan. (Puede establecer los datos de usuario "
-"llamando a <code>gtk_builder_connect_signals</code>; normalmente se usa para "
-"pasar un puntero a una estructura de datos a la que puede necesitar acceder "
-"dentro del manejador de la señal.)"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:137 C/guitar-tuner.py.page:136
-msgid ""
-"For now, we'll leave the signal handler empty while we work on writing the "
-"code to produce sounds."
-msgstr ""
-"Por ahora, se dejará el manejador de la señal vacío mientras se escribe el "
-"código para producir sonidos."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.c.page:141 C/guitar-tuner.cpp.page:118
-#: C/guitar-tuner.js.page:39 C/guitar-tuner.py.page:140
-#: C/guitar-tuner.vala.page:131
-msgid "GStreamer pipelines"
-msgstr "Tuberías de Gstreamer"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:142 C/guitar-tuner.js.page:40
-#: C/guitar-tuner.py.page:141
-msgid ""
-"GStreamer is GNOME's multimedia framework — you can use it for playing, "
-"recording, and processing video, audio, webcam streams and the like. Here, "
-"we'll be using it to produce single-frequency tones."
-msgstr ""
-"GStreamer es el entorno multimedia de trabajo de GNOME: puede usarlo para "
-"reproducir, grabar y procesar vídeo, sonido, flujos de la cámara web y "
-"similares. En este caso, se usará para generar tonos de frecuencia única."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:143 C/guitar-tuner.cpp.page:121
-#: C/guitar-tuner.js.page:41 C/guitar-tuner.py.page:142
-msgid ""
-"Conceptually, GStreamer works as follows: You create a <em>pipeline</em> "
-"containing several processing elements going from the <em>source</em> to the "
-"<em>sink</em> (output). The source can be an image file, a video, or a music "
-"file, for example, and the output could be a widget or the soundcard."
-msgstr ""
-"Conceptualmente. GStreamer funciona de la siguiente manera: puede crear una "
-"<em>tubería</em> que contenga varios elementos de procesado que van desde la "
-"<em>fuente</em> hasta el <em>sumidero</em> (salida). La fuente puede ser, "
-"por ejemplo, un archivo de imagen, un vídeo o un archivo de música, y la "
-"salida puede ser un widget o la tarjeta de sonido."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:144 C/guitar-tuner.cpp.page:122
-#: C/guitar-tuner.js.page:42 C/guitar-tuner.py.page:143
-#: C/guitar-tuner.vala.page:134
-msgid ""
-"Between source and sink, you can apply various filters and converters to "
-"handle effects, format conversions and so on. Each element of the pipeline "
-"has properties which can be used to change its behaviour."
-msgstr ""
-"Entre la fuente y el sumidero, puede aplicar varios filtros y conversores "
-"para manejar efectos, conversiones de formato, etc. Cada elemento de la "
-"tubería tiene propiedades que se pueden usar para cambiar este "
-"comportamiento."
-
-#. (itstool) path: media/p
-#: C/guitar-tuner.c.page:146 C/guitar-tuner.cpp.page:124
-#: C/guitar-tuner.js.page:44 C/guitar-tuner.py.page:145
-#: C/guitar-tuner.vala.page:136
-msgid "An example GStreamer pipeline."
-msgstr "Un ejemplo de tubería de GStreamer."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.c.page:151 C/guitar-tuner.py.page:150
-#: C/guitar-tuner.vala.page:141
-msgid "Set up the pipeline"
-msgstr "Configurar la tubería"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:152 C/guitar-tuner.cpp.page:135
-#: C/guitar-tuner.py.page:151
-msgid ""
-"In this simple example we will use a tone generator source called "
-"<code>audiotestsrc</code> and send the output to the default system sound "
-"device, <code>autoaudiosink</code>. We only need to configure the frequency "
-"of the tone generator; this is accessible through the <code>freq</code> "
-"property of <code>audiotestsrc</code>."
-msgstr ""
-"En este sencillo ejemplo se usará un generador de tonos llamado "
-"<code>audiotestsrc</code> y se enviará la salida al dispositivo de sonido "
-"predeterminado del sistema, <code>autoaudiosink</code>. Sólo es necesario "
-"configurar la frecuencia del generador de tonos; esto es accesible a través "
-"de la propiedad <code>freq</code> de <code>audiotestsrc</code>."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:154
-msgid ""
-"Insert the following line into <file>main.c</file>, just below the "
-"<code>#include <gtk/gtk.h></code> line:"
-msgstr ""
-"Inserte la siguiente línea en <file>main.c</file>, justo a continuación de "
-"la línea <code>#include <gtk/gtk.h></code>:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.c.page:155
-#, no-wrap
-msgid "#include <gst/gst.h>"
-msgstr "#include <gst/gst.h>"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:156
-msgid ""
-"This includes the GStreamer library. You also need to add a line to "
-"initialize GStreamer; put the following code on the line above the "
-"<code>gtk_init</code> call in the <code>main</code> function:"
-msgstr ""
-"Esto incluye la bilbioteca GStreamer. También necesita añadir una línea para "
-"inicializar GStreamer; ponga la siguiente línea de código antes de la "
-"llamada <code>gtk_init</code> en la función <code>main</code>:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.c.page:157
-#, no-wrap
-msgid "gst_init (&argc, &argv);"
-msgstr "gst_init (&argc, &argv);"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:158
-msgid ""
-"Then, copy the following function into <file>main.c</file> above the empty "
-"<code>on_button_clicked</code> function:"
-msgstr ""
-"Después, copie la siguiente función en <file>main.c</file> encima de la "
-"función <code>on_button_clicked</code> vacía:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.c.page:159
-#, no-wrap
-msgid ""
-"static void\n"
-"play_sound (gdouble frequency)\n"
-"{\n"
-"\tGstElement *source, *sink;\n"
-"\tGstElement *pipeline;\n"
-"\n"
-"\tpipeline = gst_pipeline_new (\"note\");\n"
-"\tsource = gst_element_factory_make (\"audiotestsrc\",\n"
-"\t \"source\");\n"
-"\tsink = gst_element_factory_make (\"autoaudiosink\",\n"
-"\t \"output\");\n"
-"\n"
-"\t/* set frequency */\n"
-"\tg_object_set (source, \"freq\", frequency, NULL);\n"
-"\n"
-"\tgst_bin_add_many (GST_BIN (pipeline), source, sink, NULL);\n"
-"\tgst_element_link (source, sink);\n"
-"\n"
-"\tgst_element_set_state (pipeline, GST_STATE_PLAYING);\n"
-"\n"
-"\t/* stop it after 500ms */\n"
-"\tg_timeout_add (LENGTH, (GSourceFunc) pipeline_stop, pipeline);\n"
-"}"
-msgstr ""
-"static void\n"
-"play_sound (gdouble frequency)\n"
-"{\n"
-"\tGstElement *source, *sink;\n"
-"\tGstElement *pipeline;\n"
-"\n"
-"\tpipeline = gst_pipeline_new (\"note\");\n"
-"\tsource = gst_element_factory_make (\"audiotestsrc\",\n"
-"\t \"source\");\n"
-"\tsink = gst_element_factory_make (\"autoaudiosink\",\n"
-"\t \"output\");\n"
-"\n"
-"\t/* set frequency */\n"
-"\tg_object_set (source, \"freq\", frequency, NULL);\n"
-"\n"
-"\tgst_bin_add_many (GST_BIN (pipeline), source, sink, NULL);\n"
-"\tgst_element_link (source, sink);\n"
-"\n"
-"\tgst_element_set_state (pipeline, GST_STATE_PLAYING);\n"
-"\n"
-"\t/* stop it after 500ms */\n"
-"\tg_timeout_add (LENGTH, (GSourceFunc) pipeline_stop, pipeline);\n"
-"}"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:185
-msgid ""
-"The first five lines create source and sink GStreamer elements "
-"(<code>GstElement</code>), and a pipeline element (which will be used as a "
-"container for the other two elements). The pipeline is given the name \"note"
-"\"; the source is named \"source\" and is set to the <code>audiotestsrc</"
-"code> source; and the sink is named \"output\" and set to the "
-"<code>autoaudiosink</code> sink (default sound card output)."
-msgstr ""
-"Las cinco primeras líneas crean los elementos «fuente» y «sumidero» de "
-"GStreamer (<code>GstElement</code>), y un elemento de tubería (que se usará "
-"como contenedor de los otros dos elementos). 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 <code>autoaudiosink</code> (la salida de la tarjeta de sonido "
-"predeterminada)."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:188
-msgid ""
-"The call to <code>g_object_set</code> sets the <code>freq</code> property of "
-"the source element to <code>frequency</code>, which is passed as an argument "
-"to the <code>play_sound</code> function. This is just the frequency of the "
-"note in Hertz; some useful frequencies will be defined later on."
-msgstr ""
-"La llamada a <code>g_object_set</code> establece la propiedad <code>freq</"
-"code> del elemento fuente a <code>frequency</code>, que se pasa como "
-"argumento a la función <code>play_sound</code>. Esto sólo es la frecuencia "
-"de la nota en Hercios; más adelante se definirán algunas frecuencias útiles."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:191
-msgid ""
-"<code>gst_bin_add_many</code> puts the source and sink into the pipeline. "
-"The pipeline is a <code>GstBin</code>, which is just an element that can "
-"contain multiple other GStreamer elements. In general, you can add as many "
-"elements as you like to the pipeline by adding more arguments to "
-"<code>gst_bin_add_many</code>."
-msgstr ""
-"<code>gst_bin_add_many</code> añade la fuente y el sumidero a la tubería. La "
-"tubería es un <code>GstBin</code>, que es un elemento que puede contener "
-"otros muchos elementos de GStreamer. En general, puede añadir tantos "
-"elementos como quiera a una tubería añadiendo más argumentos a "
-"<code>gst_bin_add_many</code>."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:194
-msgid ""
-"Next, <code>gst_element_link</code> is used to connect the elements "
-"together, so the output of <code>source</code> (a tone) goes into the input "
-"of <code>sink</code> (which is then output to the sound card). "
-"<code>gst_element_set_state</code> is then used to start playback, by "
-"setting the state of the pipeline to playing (<code>GST_STATE_PLAYING</"
-"code>)."
-msgstr ""
-"Después, se usa <code>gst_element_link</code> para conectar los elementos de "
-"forma conjunta, de tal forma que la salida de <code>source</code> (un tono) "
-"va a la entrada de <code>sink</code> (que es después la salida de la tarjeta "
-"de sonido). <code>gst_element_set_state</code> se usa al iniciar la "
-"reproducción, configurando el estado de la tubería a reproduciendo "
-"(<code>GST_STATE_PLAYING</code>)."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.c.page:201 C/guitar-tuner.py.page:191
-msgid "Stopping playback"
-msgstr "Detener la reproducción"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:202
-msgid ""
-"We don't want to play an annoying tone forever, so the last thing "
-"<code>play_sound</code> does is to call <code>g_timeout_add</code>. This "
-"sets a timeout for stopping the sound; it waits for <code>LENGTH</code> "
-"milliseconds before calling the function <code>pipeline_stop</code>, and "
-"will keep calling it until <code>pipeline_stop</code> returns <code>FALSE</"
-"code>."
-msgstr ""
-"No se quiere reproducir un tono molesto para siempre, por lo que lo último "
-"que <code>play_sound</code> hace es llamar a <code>g_timeout_add</code>. "
-"Esto establece un tiempo de expiración para detener el sonido; espera "
-"<code>LENGTH</code> milisegundos antes de llamar a la función "
-"<code>pipeline_stop</code>, y se queda llamando a <code>pipeline_stop</code> "
-"hasta que devuelve <code>FALSE</code>."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:203
-msgid ""
-"Now, we'll write the <code>pipeline_stop</code> function which is called by "
-"<code>g_timeout_add</code>. Insert the following code <em>above</em> the "
-"<code>play_sound</code> function:"
-msgstr ""
-"Ahora, se escribirá el código de la función <code>pipeline_stop</code>, "
-"llamada por <code>g_timeout_add</code>. Inserte el código siguiente "
-"<em>encima</em> de la función <code>play_sound</code>:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.c.page:204
-#, no-wrap
-msgid ""
-"\n"
-"#define LENGTH 500 /* Length of playing in ms */\n"
-"\n"
-"static gboolean\n"
-"pipeline_stop (GstElement* pipeline)\n"
-"{\n"
-"\tgst_element_set_state (pipeline, GST_STATE_NULL);\n"
-"\tg_object_unref (pipeline);\n"
-"\n"
-"\treturn FALSE;\n"
-"}"
-msgstr ""
-"\n"
-"#define LENGTH 500 /* Length of playing in ms */\n"
-"\n"
-"static gboolean\n"
-"pipeline_stop (GstElement* pipeline)\n"
-"{\n"
-"\tgst_element_set_state (pipeline, GST_STATE_NULL);\n"
-"\tg_object_unref (pipeline);\n"
-"\n"
-"\treturn FALSE;\n"
-"}"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:215
-msgid ""
-"The call to <code>gst_element_set_state</code> stops the playback of the "
-"pipeline and <code>g_object_unref</code> unreferences the pipeline, "
-"destroying it and freeing its memory."
-msgstr ""
-"La llamada a <code>gst_element_set_state</code> detiene la reproducción de "
-"la tubería y <code>g_object_unref</code> desreferencia la tubería, la "
-"destruye y libera su memoria."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.c.page:219 C/guitar-tuner.py.page:208
-msgid "Define the tones"
-msgstr "Definir los tonos"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:220
-msgid ""
-"We want to play the correct sound when the user clicks a button. First of "
-"all, we need to know the frequencies for the six guitar strings, which are "
-"defined (at the top of <file>main.c</file>) as follows:"
-msgstr ""
-"Se quiere reproducir el sonido correcto cuando un usuario pulsa un botón. En "
-"primer lugar, se necesita conocer las frecuencias de las seis cuerdas de la "
-"guitarra, que están definidas (al principio de <file>main.c</file>) de la "
-"siguiente manera:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.c.page:221
-#, no-wrap
-msgid ""
-"\n"
-"/* Frequencies of the strings */\n"
-"#define NOTE_E 329.63\n"
-"#define NOTE_A 440\n"
-"#define NOTE_D 587.33\n"
-"#define NOTE_G 783.99\n"
-"#define NOTE_B 987.77\n"
-"#define NOTE_e 1318.5"
-msgstr ""
-"\n"
-"/* Frequencies of the strings */\n"
-"#define NOTE_E 329.63\n"
-"#define NOTE_A 440\n"
-"#define NOTE_D 587.33\n"
-"#define NOTE_G 783.99\n"
-"#define NOTE_B 987.77\n"
-"#define NOTE_e 1318.5"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:229 C/guitar-tuner.py.page:222
-msgid ""
-"Now to flesh out the signal handler that we defined earlier, "
-"<code>on_button_clicked</code>. We could have connected every button to a "
-"different signal handler, but that would lead to a lot of code duplication. "
-"Instead, we can use the label of the button to figure out which button was "
-"clicked:"
-msgstr ""
-"Ahora se se profundiza en el manejador de la señal definido anteriormente, "
-"<code>on_button_clicked</code>. Se podría haber conectado cada botón a un "
-"manejador de la señal diferente, pero esto había supuesto duplicar mucho "
-"código. En su lugar, se puede usar la etiqueta del botón para saber cuál de "
-"ellos se ha pulsado:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.c.page:230
-#, no-wrap
-msgid ""
-"\n"
-"/* Callback for the buttons */\n"
-"void on_button_clicked (GtkButton* button,\n"
-" gpointer user_data)\n"
-"{\n"
-"\tconst gchar* text = gtk_button_get_label (button);\n"
-"\n"
-"\tif (g_str_equal (text, _(\"E\")))\n"
-"\t play_sound (NOTE_E);\n"
-"\telse if (g_str_equal (text, _(\"A\")))\n"
-"\t play_sound (NOTE_A);\n"
-"\telse if (g_str_equal (text, _(\"G\")))\n"
-"\t play_sound (NOTE_G);\n"
-"\telse if (g_str_equal (text, _(\"D\")))\n"
-"\t play_sound (NOTE_D);\n"
-"\telse if (g_str_equal (text, _(\"B\")))\n"
-"\t play_sound (NOTE_B);\n"
-"\telse if (g_str_equal (text, _(\"e\")))\n"
-"\t play_sound (NOTE_e);\n"
-"}\n"
-msgstr ""
-"\n"
-"/* Callback for the buttons */\n"
-"void on_button_clicked (GtkButton* button,\n"
-" gpointer user_data)\n"
-"{\n"
-"\tconst gchar* text = gtk_button_get_label (button);\n"
-"\n"
-"\tif (g_str_equal (text, _(\"E\")))\n"
-"\t play_sound (NOTE_E);\n"
-"\telse if (g_str_equal (text, _(\"A\")))\n"
-"\t play_sound (NOTE_A);\n"
-"\telse if (g_str_equal (text, _(\"G\")))\n"
-"\t play_sound (NOTE_G);\n"
-"\telse if (g_str_equal (text, _(\"D\")))\n"
-"\t play_sound (NOTE_D);\n"
-"\telse if (g_str_equal (text, _(\"B\")))\n"
-"\t play_sound (NOTE_B);\n"
-"\telse if (g_str_equal (text, _(\"e\")))\n"
-"\t play_sound (NOTE_e);\n"
-"}\n"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:251
-msgid ""
-"A pointer to the <code>GtkButton</code> that was clicked is passed as an "
-"argument (<code>button</code>) to <code>on_button_clicked</code>. We can get "
-"the text of that button using <code>gtk_button_get_label</code>."
-msgstr ""
-"A <code>on_button_clicked</code> se le pasa como argumento (<code>button</"
-"code>) un puntero al <code>GtkButton</code> que se ha pulsado. Se puede "
-"obtener el texto de este botón usando <code>gtk_label_get_label</code>."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:252
-msgid ""
-"The text is then compared to the notes that we have using <code>g_str_equal</"
-"code>, and <code>play_sound</code> is called with the frequency appropriate "
-"for that note. This plays the tone; we have a working guitar tuner!"
-msgstr ""
-"El texto se compara con las notas que se tiene usando <code>g_str_equal</"
-"code>, y se llama a <code>play_sound</code> con la frecuencia "
-"correspondiente a cada nota. Esto reproduce el tono; el afinador de guitarra "
-"ya está funcionando."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.c.page:256 C/guitar-tuner.cpp.page:255
-#: C/guitar-tuner.vala.page:253 C/image-viewer.c.page:222
-#: C/image-viewer.cpp.page:210 C/image-viewer.vala.page:280
-#: C/photo-wall.c.page:392
-msgid "Build and run the application"
-msgstr "Construir y ejecutar la aplicación"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:257 C/guitar-tuner.vala.page:254
-#: C/image-viewer.c.page:223 C/image-viewer.cpp.page:211
-#: C/image-viewer.vala.page:281
-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."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:258 C/guitar-tuner.cpp.page:257
-#: C/guitar-tuner.vala.page:255
-msgid ""
-"If you haven't already done so, choose the <file>Debug/src/guitar-tuner</"
-"file> application in the dialog that appears. Finally, hit <gui>Run</gui> "
-"and enjoy!"
-msgstr ""
-"Si todavía no lo ha hecho, elija la aplicación <file>Debug/src/afinador-"
-"guitarra</file> en el diálogo que aparece. Finalmente, pulse <gui>Ejecutar</"
-"gui> y disfrute."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.c.page:262 C/guitar-tuner.cpp.page:261
-#: C/guitar-tuner.js.page:242 C/guitar-tuner.py.page:240
-#: C/guitar-tuner.vala.page:259 C/image-viewer.c.page:228
-#: C/image-viewer.cpp.page:216 C/image-viewer.js.page:316
-#: C/image-viewer.py.page:230 C/image-viewer.vala.page:288
-#: C/magic-mirror.vala.page:150 C/photo-wall.c.page:400
-#: C/record-collection.js.page:297
-msgid "Reference Implementation"
-msgstr "Implementación de referencia"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:263
-msgid ""
-"If you run into problems with the tutorial, compare your code with this "
-"<link href=\"guitar-tuner/guitar-tuner.c\">reference code</link>."
-msgstr ""
-"Si tiene problemas con este tutorial, compare su código con este <link href="
-"\"guitar-tuner/guitar-tuner.c\">código de referencia</link>."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.c.page:267 C/guitar-tuner.cpp.page:274
-#: C/guitar-tuner.py.page:245 C/guitar-tuner.vala.page:270
-#: C/image-viewer.c.page:233 C/image-viewer.cpp.page:221
-#: C/image-viewer.js.page:321 C/image-viewer.py.page:235
-#: C/image-viewer.vala.page:293
-msgid "Next steps"
-msgstr "Siguientes pasos"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.c.page:268 C/guitar-tuner.cpp.page:275
-#: C/guitar-tuner.py.page:246 C/guitar-tuner.vala.page:271
-#: C/image-viewer.c.page:234 C/image-viewer.cpp.page:222
-#: C/image-viewer.js.page:322 C/image-viewer.py.page:236
-#: C/image-viewer.vala.page:294
-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:"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:271 C/guitar-tuner.cpp.page:278
-#: C/guitar-tuner.py.page:249 C/guitar-tuner.vala.page:274
-msgid "Have the program automatically cycle through the notes."
-msgstr "Hacer que el programa recorra las notas automáticamente."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:274 C/guitar-tuner.cpp.page:281
-#: C/guitar-tuner.py.page:252 C/guitar-tuner.vala.page:277
-msgid "Make the program play recordings of real guitar strings being plucked."
-msgstr ""
-"Hacer que el programa reproduzca grabaciones de cuerdas de guitarras que se "
-"están afinando."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:275 C/guitar-tuner.cpp.page:282
-#: C/guitar-tuner.py.page:253 C/guitar-tuner.vala.page:278
-msgid ""
-"To do this, you would need to set up a more complicated GStreamer pipeline "
-"which allows you to load and play back music files. You'll have to choose "
-"<link href=\"http://gstreamer.freedesktop.org/documentation/plugins.html"
-"\">decoder and demuxer</link> GStreamer elements based on the file format of "
-"your recorded sounds — MP3s use different elements to Ogg Vorbis files, for "
-"example."
-msgstr ""
-"PAra hacer esto, debe configurar una tubería de GStreamer más complicada, "
-"que le permite cargar y reproducir archivos de música. Deberá elegir un los "
-"elementos <link href=\"http://gstreamer.freedesktop.org/documentation/"
-"plugins.html\">decodificador y demultiplexor</link> de GStreamer basándose "
-"en el formato del archivo de sus sonidos grabados; los MP3 usan elementos "
-"diferentes de los de los archivos Ogg Vorbis, por ejemplo."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:276 C/guitar-tuner.cpp.page:283
-#: C/guitar-tuner.py.page:254 C/guitar-tuner.vala.page:279
-msgid ""
-"You might need to connect the elements in more complicated ways too. This "
-"could involve using <link href=\"http://gstreamer.freedesktop.org/data/doc/"
-"gstreamer/head/manual/html/chapter-intro-basics.html\">GStreamer concepts</"
-"link> that we didn't cover in this tutorial, such as <link href=\"http://"
-"gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-intro-"
-"basics-pads.html\">pads</link>. You may also find the <cmd>gst-inspect</cmd> "
-"command useful."
-msgstr ""
-"Puede querer conectar los elementos de maneras más complicadas. Esto puede "
-"implicar usar <link href=\"http://gstreamer.freedesktop.org/data/doc/"
-"gstreamer/head/manual/html/chapter-intro-basics.html\">conceptos de "
-"GStreamer</link> que no se han comentado en este tutorial, tales como <link "
-"href=\"http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/"
-"section-intro-basics-pads.html\">interfaces</link>. Es posible que encuentre "
-"útil el comando <cmd>gst-inspect</cmd>."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:279 C/guitar-tuner.cpp.page:286
-#: C/guitar-tuner.py.page:257 C/guitar-tuner.vala.page:282
-msgid "Automatically analyze notes that the user plays."
-msgstr "Analizar automáticamente las notas que toca el músico."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.c.page:280 C/guitar-tuner.cpp.page:287
-#: C/guitar-tuner.py.page:258 C/guitar-tuner.vala.page:283
-msgid ""
-"You could connect a microphone and record sounds from it using an <link href="
-"\"http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-"
-"plugins/html/gst-plugins-good-plugins-autoaudiosrc.html\">input source</"
-"link>. Perhaps some form of <link href=\"http://gstreamer.freedesktop.org/"
-"data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-"
-"plugins-plugin-spectrum.html\">spectrum analysis</link> would allow you to "
-"figure out what notes are being played?"
-msgstr ""
-"Puede conectar un micrófono y grabar sonidos con él usando una <link href="
-"\"http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-"
-"plugins/html/gst-plugins-good-plugins-autoaudiosrc.html\">fuente de entrada</"
-"link>. ¿Es posible que algún tipo de <link href=\"http://gstreamer."
-"freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-"
-"plugins-good-plugins-plugin-spectrum.html\">análisis de espectro</link> le "
-"permita saber qué notas se están reproduciendo?"
-
-#. (itstool) path: info/desc
-#: C/guitar-tuner.cpp.page:9
-msgid ""
-"Use GTKmm and GStreamermm to build a simple guitar tuner application for "
-"GNOME. Shows off how to use the interface designer."
-msgstr ""
-"Usar GTKmm y GStreamermm para construir un sencillo afinador de guitarra "
-"para GNOME. Muestra cómo usar el diseñador de interfaces."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:39
-msgid "Basic knowledge of the C++ programming language"
-msgstr "Conocimiento básico del lenguaje de programación C++"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:53
-msgid ""
-"Choose <gui>GTKmm (Simple)</gui> from the <gui>C++</gui> tab, click "
-"<gui>Forward</gui>, and fill out your details on the next few pages. Use "
-"<file>guitar-tuner</file> as project name and directory."
-msgstr ""
-"Elija <gui>GTKmm (simple)</gui> de la pestaña <gui>C++</gui>, pulse "
-"<gui>Adelante</gui> y rellene los detalles en las siguientes páginas. Use "
-"<file>afinador-guitarra</file> como nombre de proyecto y de carpeta."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:56
-msgid ""
-"Make sure that <gui>Configure external packages</gui> is selected. On the "
-"next page, select <em>gstreamermm-0.10</em> from the list to include the "
-"GStreamermm library in your project."
-msgstr ""
-"Asegúrese de que <gui>Configurar paquetes externos</gui> está seleccionada. "
-"En la siguiente página, seleccione <em>gstreamermm-0.10</em> de la lista "
-"para incluir la biblioteca GStreamermm en su proyecto."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:60
-msgid ""
-"Click <gui>Finished</gui> and the project will be created for you. Open "
-"<file>src/main.cc</file> from the <gui>Project</gui> or <gui>File</gui> "
-"tabs. You should see some code which starts with the lines:"
-msgstr ""
-"Pulse <gui>Terminado</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:"
-
-#. (itstool) path: item/code
-#: C/guitar-tuner.cpp.page:61
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtkmm.h>\n"
-"#include <iostream>"
-msgstr ""
-"\n"
-"#include <gtkmm.h>\n"
-"#include <iostream>"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.cpp.page:70 C/image-viewer.cpp.page:67
-msgid ""
-"This is a very basic C++ code setting up GTKmm. More details are given "
-"below; skip this list if you understand the basics:"
-msgstr ""
-"Esto es una configuración de código C++ usando GTKmm. Se ofrecen más "
-"detalles a continuación; omita esta lista si entiende los conceptos básicos:"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:74
-msgid ""
-"The three <code>#include</code> lines at the top include the <code>config</"
-"code> (useful autoconf build defines), <code>gtkmm</code> (user interface) "
-"and <code>iostream</code> (STL). Functions from these libraries are used in "
-"the rest of the code."
-msgstr ""
-"Las tres líneas <code>#include</code> en la parte superior incluyen las "
-"bibliotecas <code>config</code> (definiciones últiles para construcción con "
-"autoconf), <code>gtkmm</code> (interfaz de usuario) <code>iostream</code> "
-"(STL). Las funciones de estas bibliotecas se usan en el resto del código."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:77
-msgid ""
-"The <code>main</code> function creates a new window by opening a GtkBuilder "
-"file (<file>src/guitar-tuner.ui</file>, defined a few lines above) and then "
-"displaying it in a window. The GtkBuilder file contains a description of a "
-"user interface and all of its elements. You can use Anjuta's editor to "
-"design GtkBuilder user interfaces."
-msgstr ""
-"La función <code>main</code> crea una ventana nueva abriendo un archivo de "
-"GtkBuilder (<file>src/guitar-tuner.ui</file>, definido unas pocas líneas más "
-"arriba) y mostrándolo en una ventana. El archivo de GtkBuilder contiene una "
-"descripción de la interfaz de usuario y de todos sus elementos. Puede usar "
-"el editor Anjuta para diseñar interfaces de usuario con GtkBuilder."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:80
-msgid ""
-"Afterwards it calls a few functions which set up and then run the "
-"application. The <code>kit.run</code> function starts the GTKmm main loop, "
-"which runs the user interface and starts listening for events (like clicks "
-"and key presses)."
-msgstr ""
-"Después llama a algunas funciones que configuran y después ejecutan la "
-"aplicación. La función <code>kit.run</code> inicia el bucle principal de "
-"GTKmm, que ejecuta la interfaz de usuario y empieza a escuchar eventos (como "
-"pulsaciones del ratón y del teclado)."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:105
-msgid ""
-"While the button is still selected, change the <gui>Label</gui> property in "
-"the <gui>Widgets</gui> tab to <gui>E</gui>. This will be the low E string. "
-"Also change the <gui>Name</gui> property to <gui>button_E</gui>. This is the "
-"name we will refer to the widget later in code."
-msgstr ""
-"Mientras el botón esté seleccionado, cambie la propiedad <gui>Etiqueta</gui> "
-"en la pestaña <gui>Widgets</gui> a <gui>E</gui>. Esta será la cuerda Mi "
-"grave. Cambie también la propiedad <gui>Nombre</gui> a <gui>button_E</gui>. "
-"Este es el nombre al que se hará referencia más tarde en el código."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:109
-msgid ""
-"Repeat the above steps for the other buttons, adding the next 5 strings with "
-"the labels <em>A</em>, <em>D</em>, <em>G</em>, <em>B</em>, and <em>e</em> "
-"and the names <em>button_A</em>, etc."
-msgstr ""
-"Repita los pasos anteriores para el resto de botones, añadiendo las 5 "
-"cuerdas restantes con las etiquetas <em>A</em>, <em>D</em>, <em>G</em>, "
-"<em>B</em>, y <em>e</em> y los nombres <em>boton_A</em>, etc."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:112
-msgid ""
-"Save the UI design (by clicking <guiseq><gui>File</gui><gui>Save</gui></"
-"guiseq>) and close the file."
-msgstr ""
-"Guarde el diseño de la IU (pulsando <guiseq><gui>Archivo</gui><gui>Guardar</"
-"gui></guiseq>) y cierre el archivo."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.cpp.page:119
-msgid ""
-"GStreamer is GNOME's multimedia framework — you can use it for playing, "
-"recording, and processing video, audio, webcam streams and the like. Here, "
-"we'll be using it to produce single-frequency tones. GStreamermm is the C++ "
-"binding to GStreamer which we will use here."
-msgstr ""
-"GStreamer es el entorno multimedia de trabajo de GNOME: puede usarlo para "
-"reproducir, grabar y procesar vídeo, sonido, flujos de la cámara web y "
-"similares. En este caso, se usará para generar tonos de frecuencia única. "
-"GStreamermm es la implementación de GStreamer en C++ que se usará aquí."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.cpp.page:129
-msgid "Using GStreamermm"
-msgstr "Usar GStreamermm"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.cpp.page:130
-msgid ""
-"To use GStreamermm, it has to be initialised. We do that by adding the "
-"following line of code next to the <code>Gtk::Main kit(argc, argv);</code> "
-"line in <file>main.cc</file>:"
-msgstr ""
-"Para usar GStreamermm, se debe inicializar. Esto se hace añadiendo la "
-"siguiente línea de código junto a la línea <code>Gtk::Main kit(argc, argv);</"
-"code> en <file>main.cc</file>:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.cpp.page:132
-#, no-wrap
-msgid "\tGst::init (argc, argv);"
-msgstr "\tGst::init (argc, argv);"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.cpp.page:133
-msgid ""
-"While we are on it, also make sure that the <file>gstreamermm.h</file> is "
-"included in <file>main.cc</file> properly."
-msgstr ""
-"Mientras está con esto, asegúrese de que <file>gstreamermm.h</file> se "
-"incluye correctamente en <file>main.cc</file>."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.cpp.page:137
-msgid ""
-"To simplify the handling of the pipeline we will define a helper class "
-"<code>Sound</code>. We do that in <file>main.cc</file> in order to keep this "
-"example simple, whereas you might usually want to use a separate file:"
-msgstr ""
-"Para simplificar el manejo de la tubería, se definirá una clase <code>Sound</"
-"code> auxiliar. Esto se hace en <file>main.cc</file> para mantener la "
-"sencillez de este ejemplo, pero puede querer usar un archivo aparte."
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.cpp.page:140
-#, no-wrap
-msgid ""
-"\n"
-"class Sound\n"
-"{\n"
-"\tpublic:\n"
-"\t\tSound();\n"
-"\n"
-"\t\tvoid start_playing(double frequency);\n"
-"\t\tbool stop_playing();\n"
-"\n"
-"\tprivate:\n"
-"\t\tGlib::RefPtr<Gst::Pipeline> m_pipeline;\n"
-"\t\tGlib::RefPtr<Gst::Element> m_source;\n"
-"\t\tGlib::RefPtr<Gst::Element> m_sink;\n"
-"};\n"
-"\n"
-"Sound::Sound()\n"
-"{\n"
-"\tm_pipeline = Gst::Pipeline::create(\"note\");\n"
-"\tm_source = Gst::ElementFactory::create_element(\"audiotestsrc\",\n"
-"\t \"source\");\n"
-"\tm_sink = Gst::ElementFactory::create_element(\"autoaudiosink\",\n"
-"\t \"output\");\n"
-"\tm_pipeline->add(m_source);\n"
-"\tm_pipeline->add(m_sink);\n"
-"\tm_source->link(m_sink);\n"
-"}\n"
-"\n"
-"void Sound::start_playing (double frequency)\n"
-"{\n"
-"\tm_source->set_property(\"freq\", frequency);\n"
-"\tm_pipeline->set_state(Gst::STATE_PLAYING);\n"
-"\n"
-"\t/* stop it after 200ms */\n"
-"\tGlib::signal_timeout().connect(sigc::mem_fun(*this, &Sound::stop_playing),\n"
-"\t 200);\n"
-"}\n"
-"\n"
-"bool Sound::stop_playing()\n"
-"{\n"
-"\tm_pipeline->set_state(Gst::STATE_NULL);\n"
-"\treturn false;\n"
-"}\n"
-msgstr ""
-"\n"
-"class Sound\n"
-"{\n"
-"\tpublic:\n"
-"\t\tSound();\n"
-"\n"
-"\t\tvoid start_playing(double frequency);\n"
-"\t\tbool stop_playing();\n"
-"\n"
-"\tprivate:\n"
-"\t\tGlib::RefPtr<Gst::Pipeline> m_pipeline;\n"
-"\t\tGlib::RefPtr<Gst::Element> m_source;\n"
-"\t\tGlib::RefPtr<Gst::Element> m_sink;\n"
-"};\n"
-"\n"
-"Sound::Sound()\n"
-"{\n"
-"\tm_pipeline = Gst::Pipeline::create(\"note\");\n"
-"\tm_source = Gst::ElementFactory::create_element(\"audiotestsrc\",\n"
-"\t \"source\");\n"
-"\tm_sink = Gst::ElementFactory::create_element(\"autoaudiosink\",\n"
-"\t \"output\");\n"
-"\tm_pipeline->add(m_source);\n"
-"\tm_pipeline->add(m_sink);\n"
-"\tm_source->link(m_sink);\n"
-"}\n"
-"\n"
-"void Sound::start_playing (double frequency)\n"
-"{\n"
-"\tm_source->set_property(\"freq\", frequency);\n"
-"\tm_pipeline->set_state(Gst::STATE_PLAYING);\n"
-"\n"
-"\t/* stop it after 200ms */\n"
-"\tGlib::signal_timeout().connect(sigc::mem_fun(*this, &Sound::stop_playing),\n"
-"\t 200);\n"
-"}\n"
-"\n"
-"bool Sound::stop_playing()\n"
-"{\n"
-"\tm_pipeline->set_state(Gst::STATE_NULL);\n"
-"\treturn false;\n"
-"}\n"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.cpp.page:184
-msgid "The code has the following purpose:"
-msgstr "El código tiene el propósito siguiente:"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:187
-msgid ""
-"In the constructor, source and sink GStreamer elements (<code>Gst::Element</"
-"code>) are created, and a pipeline element (which will be used as a "
-"container for the other two elements). The pipeline is given the name \"note"
-"\"; the source is named \"source\" and is set to the <code>audiotestsrc</"
-"code> source; and the sink is named \"output\" and set to the "
-"<code>autoaudiosink</code> sink (default sound card output). After the "
-"elements have been added to the pipeline and linked together, the pipeline "
-"is ready to run."
-msgstr ""
-"En el constructor se crean los elementos «fuente» y «sumidero» de GStreamer "
-"(<code>GstElement</code>), y un elemento de tubería (que se usará como "
-"contenedor de los otros dos elementos). 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 <code>autoaudiosink</code> (la salida de la tarjeta de sonido "
-"predeterminada). Después de añadir los elementos a la tubería y de "
-"enlazarlos unos con otros, la tubería está lista para ejecutarse."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:190
-msgid ""
-"<code>start_playing</code> sets the source element to play a particular "
-"frequency and then starts the pipeline so the sound actually starts playing. "
-"As we don't want to have the annoying sound for ages, a timeout is set up to "
-"stop the pipeline after 200 ms by calling <code>stop_playing</code>."
-msgstr ""
-"<code>start_playing</code> configura el elemento fuente para reproducir una "
-"frecuencia determinada e inicia la tubería, por lo que el sonido empieza a "
-"reproducirse. Como no se quiere reproducir un sonido molesto durante mucho "
-"tiempo, se establece un tiempo de expiración para detener la tubería después "
-"de 200 ms, llamando a <code>stop_playing</code>."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:195
-msgid ""
-"In <code>stop_playing</code> which is called when the timeout has elapsed, "
-"the pipeline is stopped and as such there isn't any sound output anymore. As "
-"GStreamermm uses reference counting through the <code>Glib::RefPtr</code> "
-"object, the memory is automatically freed once the <code>Sound</code> class "
-"is destroyed."
-msgstr ""
-"En <code>stop_playing</code> a la que se llama cuando ha transcurrido el "
-"tiempo, se detiene la tubería y como tal, ya no habrá ninguna salida de "
-"sonido. Ya que GStreamermm usa una referencia continua a traves del objeto "
-"<code>Glib::RefPtr</code>, la memoria se libera automáticamente una vez que "
-"la clase <code>Sound</code> se ha destruido."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.cpp.page:203
-msgid "Connecting the signals"
-msgstr "Conectar las señales"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.cpp.page:204
-msgid ""
-"We want to play the correct sound when the user clicks a button. That means "
-"that we have to connect to the signal that is fired when the user clicks the "
-"button. We also want to provide information to the called function which "
-"tone to play. GTKmm makes that quite easy as we can easily bind information "
-"with the <em>sigc</em> library."
-msgstr ""
-"Se quiere reproducir el sonido correcto cuando el usuario pulsa un botón. Lo "
-"que significa que hay que conectar la señal disparada cuando el usuario "
-"pulsa el botón. También se quiere proporcionar información a la función "
-"llamada dependiendo del tono que reproducir. GTKmm hace que esto sea fácil "
-"ya que se puede vincular información con la biblioteca <em>sigc</em>."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.cpp.page:209
-msgid ""
-"The function that is called when the user clicks a button can be pretty "
-"simple, as all the interesting stuff is done in the helper class now:"
-msgstr ""
-"La función a la que se llama cuando el usuario pulsa un botón puede ser muy "
-"sencilla, ya que todo lo interesante se hace ahora en la clase auxiliar:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.cpp.page:211
-#, no-wrap
-msgid ""
-"\n"
-"static void\n"
-"on_button_clicked(double frequency, Sound* sound)\n"
-"{\n"
-"\tsound->start_playing (frequency);\n"
-"}\n"
-msgstr ""
-"\n"
-"static void\n"
-"on_button_clicked(double frequency, Sound* sound)\n"
-"{\n"
-"\tsound->start_playing (frequency);\n"
-"}\n"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.cpp.page:218
-msgid ""
-"It only calls the helper class we defined before to play the correct "
-"frequencies. With some more clever code we would also have been able to "
-"directly connect to the class without using the function but we will leave "
-"that to use as an exercise."
-msgstr ""
-"Sólo llama a la clase auxiliar definida anteriormente para reproducir las "
-"frecuencias correctas. Con algo de código más inteligente, se podría haber "
-"conectado directamente con la clase sin usar la función, pero esto se dejará "
-"como ejercicio."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.cpp.page:222
-msgid ""
-"The code to set up the signals should be added to the <code>main()</code> "
-"function just after the <code>builder->get_widget(\"main_window\", "
-"main_win);</code> line:"
-msgstr ""
-"El código para configurar las señales de debe añadir a la función <code>main"
-"()</code>, justo después de la línea <code>builder->get_widget"
-"(\"main_window\", main_win);</code>:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.cpp.page:224
-#, no-wrap
-msgid ""
-"\n"
-"Sound sound;\n"
-"Gtk::Button* button;\n"
-"\n"
-"builder->get_widget(\"button_E\", button);\n"
-"button->signal_clicked().connect (sigc::bind<double,
Sound*>(sigc::ptr_fun(&on_button_clicked),\n"
-" 329.63, &sound));\n"
-msgstr ""
-"\n"
-"Sound sound;\n"
-"Gtk::Button* button;\n"
-"\n"
-"builder->get_widget(\"button_E\", button);\n"
-"button->signal_clicked().connect (sigc::bind<double,
Sound*>(sigc::ptr_fun(&on_button_clicked),\n"
-" 329.63, &sound));\n"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:234
-msgid ""
-"At first we create an instance of our helper class that we want to use now "
-"and declare a variable for the button we want to connect to."
-msgstr ""
-"En primer lugar, se crea una instancia de la clase auxiliar que se quiere "
-"usar ahora y se declara una variable para el botón al que se quiere conectar."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:238
-msgid ""
-"Next, we receive the button object from the user interface that was created "
-"out of the user interface file. Remember that <em>button_E</em> is the name "
-"we gave to the first button."
-msgstr ""
-"Después se recibe el objeto de botón desde la interfaz de usuario que se "
-"creó fuera del archivo de la interfaz de usuario. Recuerde que <em>button_E</"
-"em> es el nombre que se dio al primer botón."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.cpp.page:242
-msgid ""
-"Finally we connect the <em>clicked</em> signal. This isn't fully "
-"straightforward because this is done in a fully type-safe way and we "
-"actually want to pass the frequency and our helper class to the signal "
-"handler. <code>sigc::ptr_fun(&on_button_clicked)</code> creates a "
-"<em>slot</em> for the <code>on_button_clicked</code> method we defined "
-"above. With <code>sigc::bind</code> we are able to pass additional arguments "
-"to the slot and in this case we pass the frequency (as double) and our "
-"helper class."
-msgstr ""
-"Por último, se conecta la señal <em>clicked</em>. Esto no es del todo "
-"sencillo porque se hace de manera completamente segura para el tipo, y "
-"actualmente se quiere pasar la frecuencia y la clase auxiliar al manejador "
-"de la señal. <code>sigc::ptr_fun(&on_button_clicked)</code> crea un "
-"<em>slot</em> para el método <code>on_button_clicked</code> definido "
-"anteriormente. Con <code>sigc::bind</code> es posible pasar argumentos "
-"adicionales al slot y, en este caso, se pasa la frecuencia (como «double») y "
-"la clase auxiliar."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.cpp.page:249
-msgid ""
-"Now that we have set up the <em>E</em> button we also need to connect the "
-"other buttons according to their frequencies: 440 for A, 587.33 for D, "
-"783.99 for G, 987.77 for B and 1318.5 for the high E. This is done in the "
-"same way, just passing a different frequency to the handler."
-msgstr ""
-"Ahora que se ha establecido el botón <em>E</em>, se debe conectar el resto "
-"de botones de acuerdo con sus frecuencias: 440 para A, 587.33 para D, 783.99 "
-"para G, 987.77 para B y 1318.5 para E agudo. Esto se hace de la misma "
-"manera, pasando simplemente una frecuencia diferente al manejador."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.cpp.page:256
-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>Run</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."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.cpp.page:262
-msgid ""
-"If you run into problems with the tutorial, compare your code with this "
-"<link href=\"guitar-tuner/guitar-tuner.cc\">reference code</link>."
-msgstr ""
-"Si tiene problemas con este tutorial, compare su código con este <link href="
-"\"guitar-tuner/guitar-tuner.cc\">código de referencia</link>."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.cpp.page:266
-msgid "Further Reading"
-msgstr "Lecturas adicionales"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.cpp.page:267
-msgid ""
-"Many of the things shown above are explained in detail in the <link href="
-"\"http://library.gnome.org/devel/gtkmm-tutorial/stable/\">GTKmm book</link> "
-"which also covers a lot more key concept for using the full power of GTKmm. "
-"You might also be interested in the <link href=\"http://library.gnome.org/"
-"devel/gstreamermm/\">GStreamermm reference documentation</link>."
-msgstr ""
-"La mayor parte de lo que se ha visto anteriormente se explica detalladamente "
-"en el <link href=\"http://library.gnome.org/devel/gtkmm-tutorial/stable/"
-"\">libro de GTKmm</link> que también cubre muchos más conceptos clave para "
-"usar todo el potencial de GTKmm. Es posible que también le interese la <link "
-"href=\"http://library.gnome.org/devel/gstreamermm/\">documentación de "
-"referencia de GStreamermm</link>."
-
-#. (itstool) path: info/title
-#: C/guitar-tuner.js.page:7
-msgctxt "text"
-msgid "Guitar tuner (JavaScript)"
-msgstr "Afinador de guitarra (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/guitar-tuner.js.page:17
-msgid ""
-"Use GTK+ and GStreamer to build a simple guitar tuner application for GNOME."
-msgstr ""
-"Usar GTK+ y GStreamer para construir un sencillo afinador de guitarra para "
-"GNOME."
-
-#. (itstool) path: synopsis/p
-#: C/guitar-tuner.js.page:23
-msgid ""
-"In this tutorial we'll construct a small application, Guitar Tuner, using "
-"JavaScript and GTK+ and GStreamer. To do and run all the code examples "
-"yourself, you need an editor to write code in, terminal and GNOME 3. or "
-"higher installed into your computer."
-msgstr ""
-"En este tutorial se construirá una pequeña aplicación, «Afinador de "
-"guitarra», usando JavaScript, GTK+ y GStreamer. Para escribirla y poder "
-"ejecutar los ejemplos, necesitará un editor en el que escribir el código, "
-"una terminal y GNOME 3 o superior instalado en su equipo."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.js.page:25
-msgid "<link xref=\"#gstreamer\">GStreamer pipelines</link>"
-msgstr "<link xref=\"#gstreamer\">Tuberías de GStreamer</link>"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.js.page:26 C/weatherAppMain.js.page:23
-msgid "<link xref=\"#script\">Script for running the application</link>"
-msgstr "<link xref=\"#script\">Script para ejecutar la aplicación</link>"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.js.page:27 C/weatherAppMain.js.page:24
-msgid "<link xref=\"#imports\">Libraries to import</link>"
-msgstr "<link xref=\"#imports\">Bibliotecas que importar</link>"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.js.page:28 C/weatherAppMain.js.page:25
-msgid ""
-"<link xref=\"#mainwindow\">Creating the main window for the application</"
-"link>"
-msgstr ""
-"<link xref=\"#mainwindow\">Crear la ventana principal de la aplicación</link>"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.js.page:29
-msgid "<link xref=\"#buttons\">Buttons for the tunes</link>"
-msgstr "<link xref=\"#buttons\">Botones para las melodías</link>"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.js.page:30
-msgid "<link xref=\"#playSound\">Making the sounds with GStreamer</link>"
-msgstr "<link xref=\"#playSound\">Crear sonidos con GStreamer</link>"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.js.page:31
-msgid "<link xref=\"#connecting\">Connecting buttons to playSound</link>"
-msgstr "<link xref=\"#connecting\">Conectar los botones a playSound</link>"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.js.page:32
-msgid "<link xref=\"#guitarjs\">The whole program</link>"
-msgstr "<link xref=\"#guitarjs\">El programa completo</link>"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.js.page:33
-msgid "<link xref=\"#terminal\">Running the application form Terminal</link>"
-msgstr ""
-"<link xref=\"#terminal\">Ejecutar la aplicación desde la terminal</link>"
-
-#. (itstool) path: page/p
-#: C/guitar-tuner.js.page:36 C/weatherApp.js.page:40
-msgid "After reading this tutorial, you should see this in your screen:"
-msgstr "Después de leer este tutorial, debería ver esto en su pantalla:"
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.js.page:48 C/hello-world.js.page:46
-#: C/weatherAppMain.js.page:33
-msgid "Script for running the application"
-msgstr "Script para ejecutar la aplicación"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.js.page:49 C/weatherAppMain.js.page:34
-#, no-wrap
-msgid ""
-"\n"
-" #!/usr/bin/gjs"
-msgstr ""
-"\n"
-" #!/usr/bin/gjs"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.js.page:51
-msgid ""
-"This line tells how to run the script. It needs to be the first line of the "
-"code and it needs to be executable. To get the execution rights go to "
-"terminal and run in right folder: chmod +x scriptname. Or you can use the "
-"graphical filemanager. Just go to the right folder where your code is, right "
-"click you code file, choose properties, click the permissions tab and check "
-"the box for allow executing file as a program"
-msgstr ""
-"Esta línea indica cómo ejecutar el script. Debe ser la primera línea del "
-"código y debe ser ejecutable. Para obtener permisos de ejecución vaya a la "
-"terminal y ejecute lo siguiente en la carpeta adecuada: chmod +x "
-"nombrescript. También puede usar el gestor de archivo. Simplemente vaya a la "
-"carpeta donde está el código, pulse con el botón derecho sobre el archivo de "
-"código y elija «Propiedades», pulse en la pestaña «Permisos» y marque la "
-"casilla para permitir ejecutar el archivo como un programa."
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.js.page:56
-#, no-wrap
-msgid ""
-"\n"
-"var Gtk = imports.gi.Gtk;\n"
-"var Gst = imports.gi.Gst;\n"
-"\n"
-"const Mainloop = imports.mainloop;"
-msgstr ""
-"\n"
-"var Gtk = imports.gi.Gtk;\n"
-"var Gst = imports.gi.Gst;\n"
-"\n"
-"const Mainloop = imports.mainloop;"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.js.page:61
-msgid ""
-"In order to have a working program we need to import a few GObject "
-"Introspection -libraries to our use. For working UI, we need Gtk and for "
-"Gstreamer to work we need Gst. These are imported in the beginning so we "
-"have them at use everywhere. Also in the beginning we import a construct "
-"Mainloop to handle the timeout to be used with the tuning sounds."
-msgstr ""
-"Para que el programa funcione se debe importar una biblioteca de "
-"introspección de GObject. Para que funcione la IU se necesita GTK+ y, para "
-"que funcione GStreamer se necesita GST. Estas bibliotecas se importan al "
-"inicio, por lo que están en uso en todos los sitios. También, al principio, "
-"se importa el constructor Mainloop para gestionar el tiempo de espera que "
-"usar para los tonos de afinación."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.js.page:64 C/hello-world.js.page:59 C/hello-world.py.page:52
-#: C/hello-world.vala.page:44 C/weatherAppMain.js.page:49
-msgid "Creating the main window for the application"
-msgstr "Crear la ventana principal de la aplicación"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.js.page:65
-#, no-wrap
-msgid ""
-"\n"
-"Gtk.init(null, 0);\n"
-"Gst.init(null, 0);\n"
-"\n"
-"var guitarwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL, border_width: 100});\n"
-"guitarwindow.title = \"Guitar Tuner\";\n"
-"guitarwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
-"\n"
-"guitarwindow.show();\n"
-"Gtk.main();"
-msgstr ""
-"\n"
-"Gtk.init(null, 0);\n"
-"Gst.init(null, 0);\n"
-"\n"
-"var guitarwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL, border_width: 100});\n"
-"guitarwindow.title = \"Guitar Tuner\";\n"
-"guitarwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
-"\n"
-"guitarwindow.show();\n"
-"Gtk.main();"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.js.page:75
-msgid ""
-"Importing Gtk and Gst is not enough, we need to initialize them in order to "
-"get them working. When Gtk and Gst are up and running we need to create the "
-"window for the application. Later we are going to put all the buttons for "
-"making sounds inside this window. In order to get the window showing, we "
-"need to tell it to show and we need also to run the code with the Gtk.main()"
-msgstr ""
-"Importar GTK+ y Gst no es suficiente. Se necesita inicializarlos para que "
-"funcionen juntos. Cuando GTK+ y Gst estén funcionando, se debe crear la "
-"ventana para la aplicación. Más adelante se pondrán los botones para "
-"reproducir sonidos en esta ventana. Para que la ventana se muestre, es "
-"necesario decirle que se muestre y se debe ejecutar el código con la función "
-"Gtk.main()."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.js.page:78
-msgid "Buttons for the tunes"
-msgstr "Botones para los tonos"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.js.page:79
-#, no-wrap
-msgid ""
-"\n"
-"var guitar_box = new Gtk.ButtonBox ({orientation: Gtk.Orientation.VERTICAL, spacing: 10});\n"
-"\n"
-"var E = new Gtk.Button({label: \"E\"});\n"
-"var A = new Gtk.Button({label: \"A\"});\n"
-"var D = new Gtk.Button({label: \"D\"});\n"
-"var G = new Gtk.Button({label: \"G\"});\n"
-"var B = new Gtk.Button({label: \"B\"});\n"
-"var e = new Gtk.Button({label: \"e\"});\n"
-"\n"
-"guitar_box.add(E);\n"
-"guitar_box.add(A);\n"
-"guitar_box.add(D);\n"
-"guitar_box.add(G);\n"
-"guitar_box.add(B);\n"
-"guitar_box.add(e);\n"
-"\n"
-"guitarwindow.add(guitar_box);\n"
-"\n"
-"guitar_box.show_all();"
-msgstr ""
-"\n"
-"var guitar_box = new Gtk.ButtonBox ({orientation: Gtk.Orientation.VERTICAL, spacing: 10});\n"
-"\n"
-"var E = new Gtk.Button({label: \"E\"});\n"
-"var A = new Gtk.Button({label: \"A\"});\n"
-"var D = new Gtk.Button({label: \"D\"});\n"
-"var G = new Gtk.Button({label: \"G\"});\n"
-"var B = new Gtk.Button({label: \"B\"});\n"
-"var e = new Gtk.Button({label: \"e\"});\n"
-"\n"
-"guitar_box.add(E);\n"
-"guitar_box.add(A);\n"
-"guitar_box.add(D);\n"
-"guitar_box.add(G);\n"
-"guitar_box.add(B);\n"
-"guitar_box.add(e);\n"
-"\n"
-"guitarwindow.add(guitar_box);\n"
-"\n"
-"guitar_box.show_all();"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.js.page:99
-msgid ""
-"Because Gtk.Window can only contain a single widget, we need to create "
-"something under it to be able to add all the necessary buttons inside it. In "
-"this example we use Buttonbox. After creating the Buttonbox we create "
-"buttons with necessary labels. After we have the buttons we need to add them "
-"to the Buttonbox and the Buttonbox must be added to the Gtk.Window and "
-"everything in the Buttonbox must be shown."
-msgstr ""
-"Dado que Gtk.Window sólo puede contener un único widget, se debe crear algo "
-"que pueda contener todos los botones necesarios. En este ejemplo se usa "
-"Buttonbox. Después de crear la Buttonbox, se crean los botones con las "
-"etiquetas necesarias. Una vez creados los botones necesarios, es necesario "
-"añadirlos a la Buttonbox, que se debe añadir a la Gtk.Window, y se mostrará "
-"todo el contenido de la Buttonbox."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.js.page:100
-msgid ""
-"After this stage you should have a window appearing to your screen showing 6 "
-"buttons. Right now the buttons don't do anything and we shall address that "
-"issue later. Before we can connect the button signals to something we need "
-"to code that something first."
-msgstr ""
-"Después de esto debería tener en su pantalla una ventana con 6 botones. De "
-"momento, los botones no hacen nada, esto se corregirá más adelante. Antes de "
-"poder conectar las señales de los botones a algo, es necesario codificar eso "
-"primero."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.js.page:103
-msgid "Making the sounds with GStreamer"
-msgstr "Crear sonidos con GStreamer"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.js.page:104
-#, no-wrap
-msgid ""
-"\n"
-"var frequencies = {E: 329.63, A: 440,\tD: 587.33,\tG: 783.99,\tB: 987.77,\te: 1318.5}\n"
-"\n"
-"function playSound(frequency){\n"
-" var pipeline = new Gst.Pipeline({name: \"note\"});\n"
-" var source = Gst.ElementFactory.make(\"audiotestsrc\",\"source\");\n"
-" var sink = Gst.ElementFactory.make(\"autoaudiosink\",\"output\");\n"
-"\n"
-" source.set_property('freq', frequency);\n"
-" pipeline.add(source);\n"
-" pipeline.add(sink);\n"
-" source.link(sink);\n"
-" pipeline.set_state(Gst.State.PLAYING);\n"
-"\n"
-" Mainloop.timeout_add(500, function () {\n"
-" pipeline.set_state(Gst.State.NULL);\n"
-"\t return false;\n"
-" });\n"
-"}"
-msgstr ""
-"\n"
-"var frequencies = {E: 329.63, A: 440,\tD: 587.33,\tG: 783.99,\tB: 987.77,\te: 1318.5}\n"
-"\n"
-"function playSound(frequency){\n"
-" var pipeline = new Gst.Pipeline({name: \"note\"});\n"
-" var source = Gst.ElementFactory.make(\"audiotestsrc\",\"source\");\n"
-" var sink = Gst.ElementFactory.make(\"autoaudiosink\",\"output\");\n"
-"\n"
-" source.set_property('freq', frequency);\n"
-" pipeline.add(source);\n"
-" pipeline.add(sink);\n"
-" source.link(sink);\n"
-" pipeline.set_state(Gst.State.PLAYING);\n"
-"\n"
-" Mainloop.timeout_add(500, function () {\n"
-" pipeline.set_state(Gst.State.NULL);\n"
-"\t return false;\n"
-" });\n"
-"}"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.js.page:123
-msgid ""
-"The first thing we need to do is decide what tunes we want to make when we "
-"push a button. The frequencies list takes care of that. After that we get to "
-"actually making the sounds with the function playSound. For function "
-"playSound we give as an input a frequency (that we just defined in the "
-"frequencies variable). First thing we need to construct is a pipeline, a "
-"source and a sink. For the source we set the frequency. To the pipeline we "
-"add both the source and the sink and then we tell it to keep playing. As a "
-"last thing we use the const Mainloop to get the pipeline to stop after a "
-"500ms."
-msgstr ""
-"Lo primero que se debe hacer es decidir qué tonos se quieren reproducir con "
-"la función playSound. A la función playSound se le pasa como argumento una "
-"frecuencia (que se ha definido en la lista de variables). Lo primero que se "
-"debe hacer es construir una tubería, con una fuente y un sumidero. Para la "
-"fuente se establece la frecuencia. A la tubería se añaden la fuente y el "
-"sumidero y se indica que la reproduzca. El último paso es usar la constante "
-"Mainloop para hacer que la tubería se pare después de 500ms."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.js.page:124
-msgid ""
-"Now we have the method of playing a tune when clicking a button. Next well "
-"make the connections between pushing a button and playing the correct sound "
-"from that button."
-msgstr ""
-"Ahora ya funciona el método para reproducir un sonido cuando se pulsa un "
-"botón. Lo siguiente es hacer las conexiones para que al pulsar un botón se "
-"reproduzca el sonido correcto para ese botón."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.js.page:127
-msgid "Connecting buttons to playSound"
-msgstr "Conectar los botones a playSound"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.js.page:128
-#, no-wrap
-msgid ""
-"\n"
-"E.connect(\"clicked\", function() {\n"
-" playSound(frequencies.E);\n"
-"});\n"
-"A.connect(\"clicked\", function(){\n"
-" playSound(frequencies.A);\n"
-"});\n"
-"D.connect(\"clicked\", function(){\n"
-" playSound(frequencies.D);\n"
-"});\n"
-"G.connect(\"clicked\", function(){\n"
-" playSound(frequencies.G);\n"
-"});\n"
-"B.connect(\"clicked\", function(){\n"
-" playSound(frequencies.B);\n"
-"});\n"
-"e.connect(\"clicked\", function(){\n"
-" playSound(frequencies.e);\n"
-"});"
-msgstr ""
-"\n"
-"E.connect(\"clicked\", function() {\n"
-" playSound(frequencies.E);\n"
-"});\n"
-"A.connect(\"clicked\", function(){\n"
-" playSound(frequencies.A);\n"
-"});\n"
-"D.connect(\"clicked\", function(){\n"
-" playSound(frequencies.D);\n"
-"});\n"
-"G.connect(\"clicked\", function(){\n"
-" playSound(frequencies.G);\n"
-"});\n"
-"B.connect(\"clicked\", function(){\n"
-" playSound(frequencies.B);\n"
-"});\n"
-"e.connect(\"clicked\", function(){\n"
-" playSound(frequencies.e);\n"
-"});"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.js.page:147
-msgid ""
-"The method of connecting button clicks to playSound with the correct tune is "
-"by using the connect method of the button widget. So we choose a button to "
-"be connected and type <code>E.connect(\"clicked\", function(){playSound"
-"(frequencies.E);});</code> The <code>connect</code> tells that when pushing "
-"E, something should happen. The <code>clicked</code> tells the type of the "
-"signal happening to E and then in the <code>function(){};</code> we call "
-"playSound with the correct note that should be associated with the button."
-msgstr ""
-"La forma de conectar pulsaciones del ratón a «playSound» con la melodía "
-"correcta es usar el método «connect» del widget botón. Por lo que se elije un "
-"botón que conectar y se introduce <code>E.connect(\"clicked\", function()"
-"{playSound(frequencies.E);});</code> El <code>connect</code> indica que "
-"cuando se pulsa «E», algo debe pasar. El <code>clicked</code> indica el tipo "
-"de acción sucediendo sobre «E» y después en la <code>function(){};</code> se "
-"llama a «playSound» con la melodía correcta que debe asociarse al botón."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.js.page:157
-msgid "The whole program"
-msgstr "El programa completo"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.js.page:158
-msgid ""
-"So this is what all the parts combined looks like. When running this code, "
-"you should be able to tune your guitar (if you have correctly calibrated "
-"speakers)."
-msgstr ""
-"A esto se parecen todas las partes combinadas. Al ejecutar este código, "
-"debería poder afinar su guitarra (si tiene sus altavoces calibrados "
-"correctamente)."
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.js.page:159
-#, no-wrap
-msgid ""
-"\n"
-"#!/usr/bin/gjs\n"
-"var Gtk = imports.gi.Gtk;\n"
-"var Gst = imports.gi.Gst;\n"
-"\n"
-"const Mainloop = imports.mainloop;\n"
-"\n"
-"Gtk.init(null, 0);\n"
-"Gst.init(null, 0);\n"
-"\n"
-"var guitarwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL, border_width: 100});\n"
-"guitarwindow.title = \"Guitar Tuner\";\n"
-"guitarwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
-"\n"
-"var guitar_box = new Gtk.ButtonBox ({orientation: Gtk.Orientation.VERTICAL, spacing: 10});\n"
-"\n"
-"var E = new Gtk.Button({label: \"E\"});\n"
-"var A = new Gtk.Button({label: \"A\"});\n"
-"var D = new Gtk.Button({label: \"D\"});\n"
-"var G = new Gtk.Button({label: \"G\"});\n"
-"var B = new Gtk.Button({label: \"B\"});\n"
-"var e = new Gtk.Button({label: \"e\"});\n"
-"\n"
-"var frequencies = {E: 329.63, A: 440,\tD: 587.33,\tG: 783.99,\tB: 987.77,\te: 1318.5}\n"
-"\n"
-"\n"
-"function playSound(frequency){\n"
-" var pipeline = new Gst.Pipeline({name: \"note\"});\n"
-"\n"
-" var source = Gst.ElementFactory.make(\"audiotestsrc\",\"source\");\n"
-" var sink = Gst.ElementFactory.make(\"autoaudiosink\",\"output\");\n"
-"\n"
-" source.set_property('freq', frequency);\n"
-" pipeline.add(source);\n"
-" pipeline.add(sink);\n"
-" source.link(sink);\n"
-" pipeline.set_state(Gst.State.PLAYING);\n"
-"\n"
-" Mainloop.timeout_add(500, function () {\n"
-" pipeline.set_state(Gst.State.NULL);\n"
-"\t return false;\n"
-"});\n"
-"}\n"
-"\n"
-"E.connect(\"clicked\", function() {\n"
-" playSound(frequencies.E);\n"
-"});\n"
-"A.connect(\"clicked\", function(){\n"
-" playSound(frequencies.A);\n"
-"});\n"
-"D.connect(\"clicked\", function(){\n"
-" playSound(frequencies.D);\n"
-"});\n"
-"G.connect(\"clicked\", function(){\n"
-" playSound(frequencies.G);\n"
-"});\n"
-"B.connect(\"clicked\", function(){\n"
-" playSound(frequencies.B);\n"
-"});\n"
-"e.connect(\"clicked\", function(){\n"
-" playSound(frequencies.e);\n"
-"});\n"
-"\n"
-"guitar_box.add(E);\n"
-"guitar_box.add(A);\n"
-"guitar_box.add(D);\n"
-"guitar_box.add(G);\n"
-"guitar_box.add(B);\n"
-"guitar_box.add(e);\n"
-"\n"
-"guitarwindow.add(guitar_box);\n"
-"\n"
-"guitar_box.show_all();\n"
-"guitarwindow.show();\n"
-"Gtk.main();"
-msgstr ""
-"\n"
-"#!/usr/bin/gjs\n"
-"var Gtk = imports.gi.Gtk;\n"
-"var Gst = imports.gi.Gst;\n"
-"\n"
-"const Mainloop = imports.mainloop;\n"
-"\n"
-"Gtk.init(null, 0);\n"
-"Gst.init(null, 0);\n"
-"\n"
-"var guitarwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL, border_width: 100});\n"
-"guitarwindow.title = \"Guitar Tuner\";\n"
-"guitarwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
-"\n"
-"var guitar_box = new Gtk.ButtonBox ({orientation: Gtk.Orientation.VERTICAL, spacing: 10});\n"
-"\n"
-"var E = new Gtk.Button({label: \"E\"});\n"
-"var A = new Gtk.Button({label: \"A\"});\n"
-"var D = new Gtk.Button({label: \"D\"});\n"
-"var G = new Gtk.Button({label: \"G\"});\n"
-"var B = new Gtk.Button({label: \"B\"});\n"
-"var e = new Gtk.Button({label: \"e\"});\n"
-"\n"
-"var frequencies = {E: 329.63, A: 440,\tD: 587.33,\tG: 783.99,\tB: 987.77,\te: 1318.5}\n"
-"\n"
-"\n"
-"function playSound(frequency){\n"
-" var pipeline = new Gst.Pipeline({name: \"note\"});\n"
-"\n"
-" var source = Gst.ElementFactory.make(\"audiotestsrc\",\"source\");\n"
-" var sink = Gst.ElementFactory.make(\"autoaudiosink\",\"output\");\n"
-"\n"
-" source.set_property('freq', frequency);\n"
-" pipeline.add(source);\n"
-" pipeline.add(sink);\n"
-" source.link(sink);\n"
-" pipeline.set_state(Gst.State.PLAYING);\n"
-"\n"
-" Mainloop.timeout_add(500, function () {\n"
-" pipeline.set_state(Gst.State.NULL);\n"
-"\t return false;\n"
-"});\n"
-"}\n"
-"\n"
-"E.connect(\"clicked\", function() {\n"
-" playSound(frequencies.E);\n"
-"});\n"
-"A.connect(\"clicked\", function(){\n"
-" playSound(frequencies.A);\n"
-"});\n"
-"D.connect(\"clicked\", function(){\n"
-" playSound(frequencies.D);\n"
-"});\n"
-"G.connect(\"clicked\", function(){\n"
-" playSound(frequencies.G);\n"
-"});\n"
-"B.connect(\"clicked\", function(){\n"
-" playSound(frequencies.B);\n"
-"});\n"
-"e.connect(\"clicked\", function(){\n"
-" playSound(frequencies.e);\n"
-"});\n"
-"\n"
-"guitar_box.add(E);\n"
-"guitar_box.add(A);\n"
-"guitar_box.add(D);\n"
-"guitar_box.add(G);\n"
-"guitar_box.add(B);\n"
-"guitar_box.add(e);\n"
-"\n"
-"guitarwindow.add(guitar_box);\n"
-"\n"
-"guitar_box.show_all();\n"
-"guitarwindow.show();\n"
-"Gtk.main();"
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.js.page:237
-msgid "Running the application form Terminal"
-msgstr "Ejecutar la aplicación desde la terminal"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.js.page:238
-msgid ""
-"To run this application open Terminal, go to the folder where your "
-"application is stored and then run"
-msgstr ""
-"Para ejecutar esta aplicación ,abra una terminal, vaya a la carpeta donde "
-"está la aplicación y ejecute"
-
-#. (itstool) path: section/screen
-#: C/guitar-tuner.js.page:238
-#, no-wrap
-msgid " <output style=\"prompt\">$ </output><input> GJS_PATH=`pwd` gjs guitarTuner.js</input> "
-msgstr " <output style=\"prompt\">$ </output><input> GJS_PATH=`pwd` gjs guitarTuner.js</input> "
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.js.page:243
-msgid ""
-"If you run into problems with the tutorial, compare your code with this "
-"<link href=\"guitar-tuner/guitar-tuner.js\">reference code</link>."
-msgstr ""
-"Si tiene problemas con este tutorial, compare su código con este <link href="
-"\"guitar-tuner/guitar-tuner.js\">código de referencia</link>."
-
-#. (itstool) path: info/title
-#: C/guitar-tuner.py.page:8
-msgctxt "text"
-msgid "Guitar tuner (Python)"
-msgstr "Afinador de guitarra (Python)"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.py.page:46
-msgid "Basic knowledge of the Python programming language"
-msgstr "Conocimiento básico del lenguaje de programación Python"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.py.page:60
-msgid ""
-"Choose <gui>PyGTK (automake)</gui> from the <gui>Python</gui> tab, click "
-"<gui>Continue</gui>, and fill out your details on the next few pages. Use "
-"<file>guitar-tuner</file> as project name and directory."
-msgstr ""
-"Seleccione <gui>PyGTK (automake)</gui> en la pestaña <gui>Python</gui>, "
-"pulse <gui>Continuar</gui>, y rellene los detalles en las siguientes "
-"páginas. Use <file>afinador-guiterra</file> como nombre del proyecto y de la "
-"carpeta."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.py.page:63
-msgid ""
-"Click <gui>Apply</gui> and the project will be created for you. Open "
-"<file>src/guitar_tuner.py</file> from the <gui>Project</gui> or <gui>File</"
-"gui> tabs. You should see some code which starts with the lines:"
-msgstr ""
-"Pulse <gui>Aplicar</gui> y se creará el proyecto. Abra <file>src/afinador-"
-"guitarra.py</file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</"
-"gui>. Debería ver algo de código que comience con las líneas:"
-
-#. (itstool) path: item/code
-#: C/guitar-tuner.py.page:64
-#, no-wrap
-msgid ""
-"\n"
-"from gi.repository import Gtk, GdkPixbuf, Gdk\n"
-"import os, sys"
-msgstr ""
-"\n"
-"from gi.repository import Gtk, GdkPixbuf, Gdk\n"
-"import os, sys"
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.py.page:72
-msgid "Run the code for the first time"
-msgstr "Ejecutar el código por primera vez"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:73
-msgid ""
-"Most of the code in the file is template code. It loads an (empty) window "
-"from the user interface description file and shows it. More details are "
-"given below; skip this list if you understand the basics:"
-msgstr ""
-"La mayor parte del código del archivo se usa como plantilla. 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:"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.py.page:77
-msgid ""
-"The <code>import</code> lines at the top include the tell Python to load the "
-"user interface and system libraries needed."
-msgstr ""
-"Las líneas <code>import</code> en la parte superior indican a Python que "
-"cargue la interfaz de usuario y las bibliotecas del sistema necesarias."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.py.page:81
-msgid ""
-"A class is declared that will be the main class for our application. In the "
-"<code>__init__</code> method the main window is loaded from the GtkBuilder "
-"file (<file>src/guitar-tuner.ui</file>) and the signals are connected."
-msgstr ""
-"Se declara una clase que estará en la clase principal de la aplicación. En "
-"el método <code>__init__</code> se carga la ventana principal desde el "
-"archivo de GtkBuilder (<file>src/guitar-tuner.ui</file>) y se conectan las "
-"señales."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.py.page:84
-msgid ""
-"Connecting signals is how you define what happens when you push a button, or "
-"when some other event happens. Here, the <code>destroy</code> method is "
-"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 al método <code>destroy</"
-"code> (y se sale de la aplicación) cuando cierra la ventana."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.py.page:87
-msgid ""
-"The <code>main</code> function is run by default when you start a Python "
-"application. It just creates an instance of the main class and starts the "
-"main loop to bring up the window."
-msgstr ""
-"La función <code>main</code> se ejecuta de manera predeterminada cuando "
-"inicia una aplicación Python. Simplemente crea una instancia de la clase "
-"principal e inicia el bucle principal para mostrar la ventana."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:92
-msgid ""
-"This code is ready to be used, so you can run it by clicking "
-"<guiseq><gui>Run</gui><gui>Execute</gui></guiseq>."
-msgstr ""
-"Este código está listo para usarse, por lo que puede ejecutarlo pulsando "
-"<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq>."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:97
-msgid ""
-"A description of the user interface (UI) is contained in the GtkBuilder "
-"file. To edit the user interface, open <file>src/guitar_tuner.ui</file>. "
-"This will switch to the interface designer. The design window is in the "
-"center; widgets and widgets' properties are on the right, and the palette of "
-"available widgets is on the left."
-msgstr ""
-"El archivo de GtkBuilder contiene una descripción de la interfaz de usuario "
-"(IU). Para editar la interfaz de usuario, abra <file>src/guitar_tuner.ui</"
-"file>. Esto cambiará al diseñador de interfaces. La ventana de diseño está "
-"en el centro; los widgets y sus propiedades están a la derecha, y la paleta "
-"de los widgets disponibles está a la izquierda."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.py.page:127
-msgid "Write the signal handler"
-msgstr "Escribir el manejador de señales"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:129
-msgid ""
-"To do this, open <file>guitar_tuner.py</file> while the user interface file "
-"is still open. Switch to the <gui>Signals</gui> tab, which you already used "
-"to set the signal name. Now take the row where you set the <gui>clicked</"
-"gui> signal and drag it into to the source file inside the class. The "
-"following code will be added to your source file:"
-msgstr ""
-"Para hacer esto, abra <file>guitar_tuner.py</file> mientras el archivo de la "
-"interfaz de usuario está abierto. Cambie a la pestaña <gui>Señales</gui>, "
-"que ya ha usado para establecer el nombre de la señal. Ahora vaya a la fila "
-"en la que estableció la señal <gui>clicked</gui> y arrástrela al archivo de "
-"código fuente, dentro de la clase principal. Se añadirá el siguiente código "
-"a su archivo de código fuente:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.py.page:131
-#, no-wrap
-msgid ""
-"\n"
-"def on_button_clicked (self, button):\n"
-msgstr ""
-"\n"
-"def on_button_clicked (self, button):\n"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:135
-msgid ""
-"This signal handler has two arguments: the usual Python class pointer, and "
-"the <code>Gtk.Button</code> that called the function."
-msgstr ""
-"Este manejador de la señal tiene dos argumentos: el puntero de clase Python "
-"habitual y el <code>Gtk.Button</code> que llamó a la función."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:153
-msgid ""
-"Change the import line in <file>guitar_tuner.py</file>, just at the "
-"beginning to :"
-msgstr ""
-"Cambie la línea de importación en <file>afinador_guitarra.py</file>, justo "
-"al principio, por:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.py.page:154
-#, no-wrap
-msgid "from gi.repository import Gtk, Gst, GObject "
-msgstr "from gi.repository import Gtk, Gst, GObject "
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:155
-msgid ""
-"The <code>Gst</code> includes the GStreamer library. You also need to "
-"initialise GStreamer properly which is done in the <code>main()</code> "
-"method with this call added above the <code>app = GUI()</code> line:"
-msgstr ""
-"El <code>Gst</code> incluye la biblioteca GStreamer. También debe debe "
-"inicializar GStreamer correctamente, lo que se ha hecho en el método "
-"<code>main()</code> con esta llamada añadida encima de la línea <code>app = "
-"GUI()</code>:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.py.page:158
-#, no-wrap
-msgid "Gst.init_check(sys.argv)"
-msgstr "Gst.init_check(sys.argv)"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:159
-msgid ""
-"Then, copy the following function into the class in <file>guitar_tuner.py</"
-"file> somewhere:"
-msgstr ""
-"Después, copie la siguiente función en la de <file>guitar_tuner.py</file>, "
-"en cualquier sitio:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.py.page:160
-#, no-wrap
-msgid ""
-"\n"
-"def play_sound(self, frequency):\n"
-"\tpipeline = Gst.Pipeline(name='note')\n"
-"\tsource = Gst.ElementFactory.make('audiotestsrc', 'src')\n"
-"\tsink = Gst.ElementFactory.make('autoaudiosink', 'output')\n"
-"\n"
-"\tsource.set_property('freq', frequency)\n"
-"\tpipeline.add(source)\n"
-"\tpipeline.add(sink)\n"
-"\tsource.link(sink)\n"
-"\tpipeline.set_state(Gst.State.PLAYING)\n"
-"\n"
-"\tGObject.timeout_add(self.LENGTH, self.pipeline_stop, pipeline)"
-msgstr ""
-"\n"
-"def play_sound(self, frequency):\n"
-"\tpipeline = Gst.Pipeline(name='note')\n"
-"\tsource = Gst.ElementFactory.make('audiotestsrc', 'src')\n"
-"\tsink = Gst.ElementFactory.make('autoaudiosink', 'output')\n"
-"\n"
-"\tsource.set_property('freq', frequency)\n"
-"\tpipeline.add(source)\n"
-"\tpipeline.add(sink)\n"
-"\tsource.link(sink)\n"
-"\tpipeline.set_state(Gst.State.PLAYING)\n"
-"\n"
-"\tGObject.timeout_add(self.LENGTH, self.pipeline_stop, pipeline)"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.py.page:175
-msgid ""
-"The first three lines create source and sink GStreamer elements and a "
-"pipeline element (which will be used as a container for the other two "
-"elements). The pipeline is given the name \"note\"; the source is named "
-"\"source\" and is set to the <code>audiotestsrc</code> source; and the sink "
-"is named \"output\" and set to the <code>autoaudiosink</code> sink (default "
-"sound card output)."
-msgstr ""
-"Las tres primeras líneas crean los elementos «fuente» y «sumidero» de "
-"GStreamer y un elemento de tubería (que se usará como contenedor de los "
-"otros dos elementos). 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 <code>autoaudiosink</"
-"code> (la salida de la tarjeta de sonido predeterminada)."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.py.page:178
-msgid ""
-"The call to <code>source.set_property</code> sets the <code>freq</code> "
-"property of the source element to <code>frequency</code>, which was passed "
-"as an argument to the <code>play_sound</code> function. This is just the "
-"frequency of the note in Hertz; some useful frequencies will be defined "
-"later on."
-msgstr ""
-"La llamada a <code>source.set_property</code> establece la propiedad "
-"<code>freq</code> del elemento fuente a <code>frequency</code>, que se pasa "
-"como argumento a la función <code>play_sound</code>. Esto sólo es la "
-"frecuencia de la nota en Hercios; más adelante se definirán algunas "
-"frecuencias útiles."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.py.page:181
-msgid ""
-"The next two lines call <code>pipeline.add</code>, putting the source and "
-"sink into the pipeline. The pipeline can contain multiple other GStreamer "
-"elements. In general, you can add as many elements as you like to the "
-"pipeline by calling its <code>add</code> method repeatedly."
-msgstr ""
-"Las dos siguientes líneas llaman a <code>pipeline.add</code>, poniendo la "
-"fuente y el sumidero en la tubería. La tubería puede contener muchos otros "
-"elementos de GStreamer. En general, puede añadir tantos elementos como "
-"quiera a una tubería llamando al método <code>add</code> repetidamente."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.py.page:184
-msgid ""
-"Next <code>pipeline.set_state</code> is used to start playback, by setting "
-"the state of the pipeline to playing (<code>Gst.State.PLAYING</code>)."
-msgstr ""
-"El siguiente <code>pipeline.set_state</code> se usar para iniciar la "
-"reproducción, estableciendo el estado de la tubería a «playing» (<code>Gst."
-"State.PLAYING</code>)."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:192
-msgid ""
-"We don't want to play an annoying tone forever, so the last thing "
-"<code>play_sound</code> does is to call <code>GObject.timeout_add</code>. "
-"This sets a timeout for stopping the sound; it waits for <code>LENGTH</code> "
-"milliseconds before calling the function <code>pipeline_stop</code>, and "
-"will keep calling it until <code>pipeline_stop</code> returns <code>False</"
-"code>."
-msgstr ""
-"No se quiere reproducir un tono molesto para siempre, por lo que lo último "
-"que <code>play_sound</code> hace es llamar a <code>GObject.timeout_add</"
-"code>. Esto establece un tiempo de expiración para detener el sonido; espera "
-"<code>LENGTH</code> milisegundos antes de llamar a la función "
-"<code>pipeline_stop</code>, y se queda llamando a <code>pipeline_stop</code> "
-"hasta que devuelve <code>False</code>."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:193
-msgid ""
-"Now, we'll write the <code>pipeline_stop</code> function which is called by "
-"<code>GObject.timeout_add</code>. Insert the following code <em>above</em> "
-"the <code>play_sound</code> function:"
-msgstr ""
-"Ahora se escribirá el código de la función <code>pipeline_stop</code>, "
-"llamada por <code>GObject.timeout_add</code>. Inserte el código siguiente "
-"<em>encima</em> de la función <code>play_sound</code>:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.py.page:194
-#, no-wrap
-msgid ""
-"\n"
-"def pipeline_stop(self, pipeline):\n"
-"\tpipeline.set_state(Gst.State.NULL)\n"
-"\treturn False\n"
-msgstr ""
-"\n"
-"def pipeline_stop(self, pipeline):\n"
-"\tpipeline.set_state(Gst.State.NULL)\n"
-"\treturn False\n"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:199
-msgid ""
-"You need to define the <code>LENGTH</code> constant inside the class, so add "
-"this code at the beginning of the main class:"
-msgstr ""
-"Necesita definir la constante <code>LENGTH</code> dentro de la clase, por lo "
-"que debe añadir este código al principio de la clase principal:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.py.page:201
-#, no-wrap
-msgid ""
-"\n"
-"LENGTH = 500\n"
-msgstr ""
-"\n"
-"LENGTH = 500\n"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:204
-msgid ""
-"The call to <code>pipeline.set_state</code> stops the playback of the "
-"pipeline."
-msgstr ""
-"La llamada a <code>pipeline.set_state</code> detiene la reproducción de la "
-"tubería."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:209
-msgid ""
-"We want to play the correct sound when the user clicks a button. First of "
-"all, we need to know the frequencies for the six guitar strings, which are "
-"defined (at the beginning of the main class) inside a dictionary so we can "
-"easily map them to the names of the strings:"
-msgstr ""
-"Se quiere reproducir el sonido correcto cuando un usuario pulsa un botón. En "
-"primer lugar, se necesita conocer las frecuencias de las seis cuerdas de la "
-"guitarra, que están definidas (al principio de la clase principal) dentro de "
-"un diccionario, por lo que se pueden mapear fácilmente con los nombres de "
-"las cuerdas:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.py.page:211
-#, no-wrap
-msgid ""
-"\n"
-"# Frequencies of the strings\n"
-"frequencies = {\n"
-"\t'E': 329.63,\n"
-"\t'A': 440,\n"
-"\t'D': 587.33,\n"
-"\t'G': 783.99,\n"
-"\t'B': 987.77,\n"
-"\t'e': 1318.5\n"
-"}\n"
-msgstr ""
-"\n"
-"# Frequencies of the strings\n"
-"frequencies = {\n"
-"\t'E': 329.63,\n"
-"\t'A': 440,\n"
-"\t'D': 587.33,\n"
-"\t'G': 783.99,\n"
-"\t'B': 987.77,\n"
-"\t'e': 1318.5\n"
-"}\n"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.py.page:223
-#, no-wrap
-msgid ""
-"\n"
-"def on_button_clicked(self, button):\n"
-"\tlabel = button.get_child()\n"
-"\ttext = label.get_label()\n"
-"\n"
-"\tself.play_sound (self.frequencies[text])\n"
-msgstr ""
-"\n"
-"def on_button_clicked(self, button):\n"
-"\tlabel = button.get_child()\n"
-"\ttext = label.get_label()\n"
-"\n"
-"\tself.play_sound (self.frequencies[text])\n"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:230
-msgid ""
-"The button that was clicked is passed as an argument (<code>button</code>) "
-"to <code>on_button_clicked</code>. We can get the label of that button by "
-"using <code>button.get_child</code>, and then get the text from that label "
-"using <code>label.get_label</code>."
-msgstr ""
-"El botón que se ha pulsado se pasa como argumento (<code>button</code>) a "
-"<code>on_button_clicked</code>. Se puede obtener la etiqueta de ese botón "
-"usando <code>button.get_child</code>, y obteniendo entonces el texto de esa "
-"etiqueta usando <code>label.get_label</code>."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:231
-msgid ""
-"The label text is then used as a key for the dictionary and "
-"<code>play_sound</code> is called with the frequency appropriate for that "
-"note. This plays the tone; we have a working guitar tuner!"
-msgstr ""
-"La etiqueta de texto se usa como clave para el diccionario, y se llama a "
-"<code>play_sound</code> con la frecuencia correspondiente a esa nota. Esto "
-"reproduce el tono; el afinador de guitarra ya está funcionando."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.py.page:235 C/image-viewer.js.page:311
-#: C/image-viewer.py.page:225 C/record-collection.js.page:292
-msgid "Run the application"
-msgstr "Ejecutar la aplicación"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:236
-msgid ""
-"All of the code should now be ready to go. Click <guiseq><gui>Run</"
-"gui><gui>Execute</gui></guiseq> to start the application. Enjoy!"
-msgstr ""
-"Todo el código debería estar listo para ejecutarse. Pulse "
-"<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq> para iniciar la "
-"aplicación y disfrute."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.py.page:241
-msgid ""
-"If you run into problems with the tutorial, compare your code with this "
-"<link href=\"guitar-tuner/guitar-tuner.py\">reference code</link>."
-msgstr ""
-"Si tiene problemas con este tutorial, compare su código con este <link href="
-"\"guitar-tuner/guitar-tuner.py\">código de referencia</link>."
-
-#. (itstool) path: info/desc
-#: C/guitar-tuner.vala.page:10
-msgid ""
-"Use <link href=\"http://developer.gnome.org/platform-overview/stable/gtk"
-"\">GTK+</link> and <link href=\"http://developer.gnome.org/platform-overview/"
-"stable/gstreamer\">GStreamer</link> to build a simple guitar tuner "
-"application for GNOME. Shows off how to use the interface designer."
-msgstr ""
-"Usar <link href=\"http://developer.gnome.org/platform-overview/stable/gtk"
-"\">GTK+</link> y <link href=\"http://developer.gnome.org/platform-overview/"
-"stable/gstreamer\">GStreamer</link> para construir una sencilla aplicación "
-"de afinador de guitarra para GNOME. Muestra cómo usar el diseñador de "
-"interfaces."
-
-#. (itstool) path: synopsis/p
-#: C/guitar-tuner.vala.page:35
-msgid ""
-"In this tutorial you will create an application which plays tones that you "
-"can use to tune a guitar. You will learn how to:"
-msgstr ""
-"En este tutorial se va a hacer un programa que reproduce tonos que puede "
-"usar para afinar su guitarra. Aprenderá a:"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:37
-msgid ""
-"Set up a basic project using the <link xref=\"getting-ready\">Anjuta IDE</"
-"link>."
-msgstr ""
-"Configurar un proyecto básico usando el <link xref=\"getting-ready\">EID "
-"Anjuta</link>."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:38
-msgid "Create a simple GUI with <app>Anjuta</app>'s UI designer."
-msgstr "Crear una IGU sencilla con el diseñador de IU de <app>Anjuta</app>."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:39
-msgid ""
-"Use the <link href=\"http://developer.gnome.org/platform-overview/stable/"
-"gstreamer\">GStreamer</link> library to play sounds."
-msgstr ""
-"Usar la biblioteca <link href=\"http://developer.gnome.org/platform-overview/"
-"stable/gstreamer\">GStreamer</link> para reproducir sonidos."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:43 C/image-viewer.vala.page:48
-msgid ""
-"Basic knowledge of the <link href=\"https://live.gnome.org/Vala/Tutorial"
-"\">Vala</link> programming language."
-msgstr ""
-"Conocimiento básico del lenguaje de programación <link href=\"https://live."
-"gnome.org/Vala/Tutorial\">Vala</link>."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:44 C/image-viewer.vala.page:49
-msgid "An installed copy of <app>Anjuta</app>."
-msgstr "Una copia instalada de <app>Anjuta</app>."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.vala.page:51
-msgid "Create a project in <app>Anjuta</app>"
-msgstr "Crear un proyecto en <app>Anjuta</app>"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:55 C/image-viewer.vala.page:63
-msgid ""
-"Start <app>Anjuta</app> and click <gui>Create a new project</gui> or "
-"<guiseq><gui>File</gui><gui>New</gui><gui>Project</gui></guiseq> to open the "
-"project wizard."
-msgstr ""
-"Inicie <app>Anjuta</app> y pulse <gui>Crear un proyecto nuevo</gui> o "
-"<guiseq><gui>Archivo</gui><gui>Nuevo</gui><gui>Proyecto</gui></guiseq> para "
-"abrir el asistente de proyectos."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:58
-msgid ""
-"Click on the <gui>Vala</gui> tab and select <gui>GTK+ (Simple)</gui>. Click "
-"<gui>Continue</gui>, and fill out your details on the next few pages. Use "
-"<file>guitar-tuner</file> as project name and directory."
-msgstr ""
-"Pulse en la pestaña <gui>Vala</gui> y seleccione <gui>GTK+ (simple)</gui>. "
-"Pulse <gui>Continuar</gui>, y rellene los detalles en las siguientes "
-"páginas. Use <file>afinador-guitarra</file> como nombre del proyecto y de la "
-"carpeta."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:61
-msgid ""
-"Make sure that <gui>Configure external packages</gui> is switched <gui>ON</"
-"gui>. On the next page, select <link href=\"http://valadoc.org/gstreamer-"
-"0.10/index.htm\"><em>gstreamer-0.10</em></link> from the list to include the "
-"GStreamer library in your project. Click <gui>Continue</gui>"
-msgstr ""
-"Asegúrese de que <gui>Configurar paquetes externos</gui> está <gui>activada</"
-"gui>. En la siguiente página, seleccione <link href=\"http://valadoc.org/"
-"gstreamer-0.10/index.htm\"><em>gstreamer-0.10</em></link> de la lista para "
-"incluir la biblioteca GStreamer en su proyecto. Pulse <gui>Continuar</gui>"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:65
-msgid ""
-"Click <gui>Apply</gui> and the project will be created for you. From the "
-"<gui>Project</gui> or <gui>Files</gui> tab, open <file>src/guitar_tuner."
-"vala</file> by double-clicking on it. You should see some code which starts "
-"with the lines:"
-msgstr ""
-"Pulse <gui>Aplicar</gui> y se creará el proyecto. Abra <file>src/"
-"guitar_tuner.vala</file> desde las pestañas <gui>Proyecto</gui> o "
-"<gui>Archivo</gui> pulsando dos veces sobre él. Debería ver algo de código "
-"que comience con las líneas:"
-
-#. (itstool) path: item/code
-#: C/guitar-tuner.vala.page:66 C/magic-mirror.vala.page:70
-#, no-wrap
-msgid ""
-"\n"
-"using GLib;\n"
-"using Gtk;"
-msgstr ""
-"\n"
-"using GLib;\n"
-"using Gtk;"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:75
-msgid ""
-"The code loads an (empty) window from the user interface description file "
-"and displays it. More details are given below; you may choose to skip this "
-"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:"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:79 C/magic-mirror.vala.page:82
-msgid ""
-"The two <code>using</code> lines import namespaces so we don't have to name "
-"them explicitly."
-msgstr ""
-"Las dos líneas <code>using</code> importan espacios de nombres, por lo que "
-"no hay que nombrarlas explícitamente."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:82
-msgid ""
-"The constructor of the <code>Main</code> class creates a new window by "
-"opening a GtkBuilder file (<file>src/guitar-tuner.ui</file>, defined a few "
-"lines above), connecting its signals and then displaying it in a window. "
-"This GtkBuilder file contains a description of a user interface and all of "
-"its elements. You can use Anjuta's editor to design GtkBuilder user "
-"interfaces."
-msgstr ""
-"El constructor de la clase <code>Main</code> crea una ventana nueva abriendo "
-"un archivo de GtkBuilder (<file>src/guitar-tuner.ui</file>, definido unas "
-"pocas líneas más arriba), conectando sus señales y mostrándolo en una "
-"ventana. El archivo de GtkBuilder contiene una descripción de una interfaz "
-"de usuario y de todos sus elementos. Puede usar el editor Anjuta para "
-"diseñar interfaces de usuario con GtkBuilder."
-
-#. (itstool) path: note/p
-#: C/guitar-tuner.vala.page:84
-msgid ""
-"Connecting signals is how you define what happens when you push a button, or "
-"when some other event happens. Here, the <code>on_destroy</code> function is "
-"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>on_destroy</code> (y se sale de la aplicación) cuando cierra la "
-"ventana."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:88
-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)."
-msgstr ""
-"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)."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:92
-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 "
-"<keyseq><key>Shift</key><key>F7</key></keyseq>). When you do this, a dialog "
-"will appear. Change the <gui>Configuration</gui> to <gui>Default</gui> and "
-"then click <gui>Execute</gui> to configure the build directory. You only "
-"need to do this once, for the first build."
-msgstr ""
-"Este código está listo para usarse, por lo que puede compilarlo pulsando "
-"<guiseq><gui>Construir</gui><gui>Construir proyecto</gui></guiseq> (o "
-"pulsando <keyseq><key>Mayús</key><key>F7</key></keyseq>). Cuando lo haga, "
-"aparecerá un diálogo. Cambie la <gui>Configuración</gui> a "
-"<gui>Predeterminada</gui> y pulse <gui>Ejecutar</gui> para configurar la "
-"carpeta de construcción. Sólo tendrá que hacer esto una vez, para la primera "
-"construcción."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:97
-msgid ""
-"A description of the user interface (UI) is contained in the GtkBuilder file "
-"<file>src/guitar_tuner.ui</file> defined at the top of the class. To edit "
-"the user interface, open <file>src/guitar_tuner.ui</file> by double-clicking "
-"on it in the <gui>Project</gui> or <gui>Files</gui> section. This will "
-"switch to the interface designer. The design window is in the center; "
-"<gui>Widgets</gui> and the widget properties are on the right, and the "
-"<gui>Palette</gui> of available widgets is on the left."
-msgstr ""
-"El archivo de GtkBuilder <file>src/guitar_tuner.ui</file> contiene una "
-"descripción de la interfaz de usuario (IU), definida en la parte superior de "
-"la clase. Para editar la interfaz de usuario, abra <file>src/guitar_tuner."
-"ui</file> pulsando dos veces sobre el archivo en las secciones "
-"<gui>Proyecto</gui> or <gui>Archivos</gui>. Esto cambiará al diseñador de "
-"interfaces. La ventana de diseño está en el centro; los <gui>Widgets</gui> y "
-"sus propiedades están a la izquierda, y la <gui>Paleta</gui> de los widgets "
-"disponibles está a la derecha."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:99
-msgid ""
-"The layout of every UI in GTK+ is organized using boxes and tables. Let's "
-"use a vertical GtkButtonBox here to assign six GtkButtons, one for each of "
-"the six guitar strings."
-msgstr ""
-"La distribución de cualquier IU en GTK+ se organiza usando cajas y tablas. "
-"Aquí se usará una GtkButtonBox vertical para asignar seis GtkButtons, uno "
-"para cada una de las cuerdas de la guitarra."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:105
-msgid ""
-"In the <gui>Palette</gui> tab, from the <gui>Containers</gui> section, "
-"select a <gui>Button Box</gui> (GtkButtonBox) by clicking on the icon. Then "
-"click on the design window in the center to place it into the window. A "
-"dialog will display where you can set the <gui>Number of items</gui> to "
-"<input>6</input>. Then click <gui>Create</gui>."
-msgstr ""
-"En la pestaña <gui>Paleta</gui>, en la sección <gui>Contenedores</gui>, "
-"seleccione una <gui>Caja de botones</gui> (GtkButtonBox) pulsando sobre el "
-"icono. Pulse en el centro del diseño de la ventana para colocarla en la "
-"ventana. Se mostrará un diálogo donde puede establecer el <gui>Número de "
-"elementos</gui> a <input>6</input>. Luego pulse en <gui>Crear</gui>."
-
-#. (itstool) path: note/p
-#: C/guitar-tuner.vala.page:106
-msgid ""
-"You can also change the <gui>Number of elements</gui> and the "
-"<gui>Orientation</gui> in the <gui>General</gui> tab on the right."
-msgstr ""
-"También puede cambiar el <gui>Número de elementos</gui> y la "
-"<gui>Orientación</gui> en la pestaña <gui>General</gui> a la derecha."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:110
-msgid ""
-"Now, from the <gui>Control and Display</gui> section of the <gui>Palette</"
-"gui> choose a <gui>Button</gui> (GtkButton) by clicking on it. Place it into "
-"the first section of the GtkButtonBox by clicking in the first section."
-msgstr ""
-"Ahora, desde la sección <gui>Controlar y mostrar</gui> de la <gui>Paleta</"
-"gui> elija un <gui>Botón</gui> (GtkButton) pulsando sobre él. Sitúelo en la "
-"primera sección de la GtkButtonBox pulsando sobre ella."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:113
-msgid ""
-"While the button is still selected, scroll down in the <gui>General</gui> "
-"tab on the right to the <gui>Label</gui> property, and change it to <gui>E</"
-"gui>. This will be the low E guitar string."
-msgstr ""
-"Mientras el botón esté seleccionado, cambie la propiedad <gui>Etiqueta</gui> "
-"en la pestaña <gui>General</gui> a <gui>E</gui>. Esta será la cuerda Mi "
-"grave de la guitarra."
-
-#. (itstool) path: note/p
-#: C/guitar-tuner.vala.page:114
-msgid ""
-"The <gui>General</gui> tab is located in the <gui>Widgets</gui> section on "
-"the right."
-msgstr ""
-"La pestaña <gui>General</gui> se encuentra en la sección <gui>Widgets</gui> "
-"de la derecha."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:119
-msgid ""
-"Click on the <gui>Signals</gui> tab in the <gui>Widgets</gui> section on the "
-"right, and look for the <code>clicked</code> signal of the button. You can "
-"use this to connect a signal handler that will be called when the button is "
-"clicked by the user. To do this, click on the signal and type "
-"<code>main_on_button_clicked</code> in the <gui>Handler</gui> column and "
-"press the <key>Enter</key>."
-msgstr ""
-"Cambie a la pestaña <gui>Señales</gui> dentro de la sección <gui>Widgets</"
-"gui> a la derecha y busque la señal <code>clicked</code> del botón. Puede "
-"usar esto para conectar un manejador de señal al que se llamará cuando el "
-"usuario pulse el botón. Para hacer esto, pulse sobre la señal, escriba "
-"<code>main_on_button_clicked</code> en la columna <gui>Manejador</gui> y "
-"pulse <key>Intro</key>."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:132
-msgid ""
-"This section will show you how to create the code to produce sounds. <link "
-"href=\"http://developer.gnome.org/platform-overview/stable/gstreamer"
-"\">GStreamer</link> is GNOME's multimedia framework — you can use it for "
-"playing, recording, and processing video, audio, webcam streams and the "
-"like. Here, we'll be using it to produce single-frequency tones."
-msgstr ""
-"En esta sección se mostrará cómo crear el código para generar sonidos. <link "
-"href=\"http://developer.gnome.org/platform-overview/stable/gstreamer"
-"\">GStreamer</link> es el entorno multimedia de trabajo de GNOME: puede "
-"usarlo para reproducir, grabar y procesar vídeo, sonido, flujos de la cámara "
-"web y similares. En este caso, se usará para generar tonos de frecuencia "
-"única."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:133
-msgid ""
-"Conceptually, GStreamer works as follows: You create a <link href=\"http://"
-"gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-intro-"
-"basics-bins.html\"><em>pipeline</em></link> containing several processing "
-"elements going from the <em>source</em> to the <em>sink</em> (output). The "
-"source can be an image file, a video, or a music file, for example, and the "
-"output could be a widget or the soundcard."
-msgstr ""
-"Conceptualmente. GStreamer funciona de la siguiente manera: puede crear una "
-"<link href=\"http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/"
-"html/section-intro-basics-bins.html\"><em>tubería</em></link> que contenga "
-"varios elementos de procesado que van desde la <em>fuente</em> hasta el "
-"<em>sumidero</em> (salida). La fuente puede ser, por ejemplo, un archivo de "
-"imagen, un vídeo o un archivo de música, y la salida puede ser un widget o "
-"la tarjeta de sonido."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:142
-msgid ""
-"In this example we will use a tone generator source called "
-"<code>audiotestsrc</code> and send the output to the default system sound "
-"device, <code>autoaudiosink</code>. We only need to configure the frequency "
-"of the tone generator; this is accessible through the <code>freq</code> "
-"property of <code>audiotestsrc</code>."
-msgstr ""
-"En este ejemplo se usará un generador de tonos llamado <code>audiotestsrc</"
-"code> y se enviará la salida al dispositivo de sonido predeterminado del "
-"sistema, <code>autoaudiosink</code>. Sólo es necesario configurar la "
-"frecuencia del generador de tonos; esto es accesible a través de la "
-"propiedad <code>freq</code> de <code>audiotestsrc</code>."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:144
-msgid ""
-"We need to add a line to initialize GStreamer; put the following code on the "
-"line above the <code>Gtk.init</code> call in the <code>main</code> function:"
-msgstr ""
-"Se debe añadir una línea para inicializar GStreamer; ponga el siguiente "
-"código encima de la llamada a <code>Gtk.init</code>, en la función "
-"<code>main</code>:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.vala.page:145
-#, no-wrap
-msgid "Gst.init (ref args);"
-msgstr "Gst.init (ref args);"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:146
-msgid ""
-"Then, copy the following function into <file>guitar_tuner.vala</file> inside "
-"our <code>Main</code> class:"
-msgstr ""
-"Después, copie la siguiente función en <file>guitar_tuner.vala</file> dentro "
-"de la clase <code>Main</code>:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.vala.page:147
-#, no-wrap
-msgid ""
-"\n"
-"Gst.Element sink;\n"
-"Gst.Element source;\n"
-"Gst.Pipeline pipeline;\n"
-"\n"
-"private void play_sound(double frequency)\n"
-"{\n"
-"\tpipeline = new Gst.Pipeline (\"note\");\n"
-"\tsource = Gst.ElementFactory.make (\"audiotestsrc\",\n"
-"\t \"source\");\n"
-"\tsink = Gst.ElementFactory.make (\"autoaudiosink\",\n"
-"\t \"output\");\n"
-"\n"
-"\t/* set frequency */\n"
-"\tsource.set (\"freq\", frequency);\n"
-"\n"
-"\tpipeline.add (source);\n"
-"\tpipeline.add (sink);\n"
-"\tsource.link (sink);\n"
-"\n"
-"\tpipeline.set_state (Gst.State.PLAYING);\n"
-"\n"
-"\t/* stop it after 200ms */\n"
-"\tvar time = new TimeoutSource(200);\n"
-"\n"
-"\ttime.set_callback(() => {\n"
-"\t\tpipeline.set_state (Gst.State.NULL);\n"
-"\t\treturn false;\n"
-"\t});\n"
-"\ttime.attach(null);\n"
-"}"
-msgstr ""
-"\n"
-"Gst.Element sink;\n"
-"Gst.Element source;\n"
-"Gst.Pipeline pipeline;\n"
-"\n"
-"private void play_sound(double frequency)\n"
-"{\n"
-"\tpipeline = new Gst.Pipeline (\"note\");\n"
-"\tsource = Gst.ElementFactory.make (\"audiotestsrc\",\n"
-"\t \"source\");\n"
-"\tsink = Gst.ElementFactory.make (\"autoaudiosink\",\n"
-"\t \"output\");\n"
-"\n"
-"\t/* set frequency */\n"
-"\tsource.set (\"freq\", frequency);\n"
-"\n"
-"\tpipeline.add (source);\n"
-"\tpipeline.add (sink);\n"
-"\tsource.link (sink);\n"
-"\n"
-"\tpipeline.set_state (Gst.State.PLAYING);\n"
-"\n"
-"\t/* stop it after 200ms */\n"
-"\tvar time = new TimeoutSource(200);\n"
-"\n"
-"\ttime.set_callback(() => {\n"
-"\t\tpipeline.set_state (Gst.State.NULL);\n"
-"\t\treturn false;\n"
-"\t});\n"
-"\ttime.attach(null);\n"
-"}"
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:181
-msgid ""
-"The first three lines create source and sink GStreamer elements (<link href="
-"\"http://valadoc.org/gstreamer-0.10/Gst.Element.html\"><code>Gst.Element</"
-"code></link>), and a <link href=\"http://valadoc.org/gstreamer-0.10/Gst."
-"Pipeline.html\">pipeline element</link> (which will be used as a container "
-"for the other two elements). Those are class variables so they are defined "
-"outside the method. The pipeline is given the name \"note\"; the source is "
-"named \"source\" and is set to the <code>audiotestsrc</code> source; and the "
-"sink is named \"output\" and set to the <code>autoaudiosink</code> sink "
-"(default sound card output)."
-msgstr ""
-"Las cinco primeras líneas crean los elementos «fuente» y «sumidero» de "
-"GStreamer (<link href=\"http://valadoc.org/gstreamer-0.10/Gst.Element.html"
-"\"><code>Gst.Element</code></link>), y un <link href=\"http://valadoc.org/"
-"gstreamer-0.10/Gst.Pipeline.html\">elemento de tubería</link> (que se usará "
-"como contenedor de los otros dos elementos). Son variables de clase, por lo "
-"que se definen fuera del método. A la tubería se le asigna el nombre «note»; "
-"la fuente se llama «source» y se asocia a la fuente <code>audiotestsrc</code> "
-"y el sumidero se llama «output» y se asocia con el sumidero "
-"<code>autoaudiosink</code> (la salida de la tarjeta de sonido "
-"predeterminada)."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:184
-msgid ""
-"The call to <link href=\"http://valadoc.org/gobject-2.0/GLib.Object.set.html"
-"\"><code>source.set</code></link> sets the <code>freq</code> property of the "
-"source element to <code>frequency</code>, which is passed in as an argument "
-"to the <code>play_sound</code> function. This is just the frequency of the "
-"note in Hertz; some useful frequencies will be defined later on."
-msgstr ""
-"La llamada a <link href=\"http://valadoc.org/gobject-2.0/GLib.Object.set.html"
-"\"><code>source.set</code></link> establece la propiedad <code>freq</code> "
-"del elemento fuente a <code>frequency</code>, que se pasa como argumento a "
-"la función <code>play_sound</code>. Esto sólo es la frecuencia de la nota en "
-"Hercios; más adelante se definirán algunas frecuencias útiles."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:187
-msgid ""
-"<link href=\"http://valadoc.org/gstreamer-0.10/Gst.Bin.add.html"
-"\"><code>pipeline.add</code></link> puts the source and sink into the "
-"pipeline. The pipeline is a <link href=\"http://valadoc.org/gstreamer-0.10/"
-"Gst.Bin.html\"><code>Gst.Bin</code></link>, which is just an element that "
-"can contain multiple other GStreamer elements. In general, you can add as "
-"many elements as you like to the pipeline by adding more calls to "
-"<code>pipeline.add</code>."
-msgstr ""
-"<link href=\"http://valadoc.org/gstreamer-0.10/Gst.Bin.add.html"
-"\"><code>pipeline.add</code></link> añade la fuente y el sumidero a la "
-"tubería. La tubería es un <link href=\"http://valadoc.org/gstreamer-0.10/Gst."
-"Bin.html\"><code>Gst.Bin</code></link>, que es un elemento que puede "
-"contener otros muchos elementos de GStreamer. En general, puede añadir "
-"tantos elementos como quiera a una tubería añadiendo más argumentos a "
-"<code>pipeline.add</code>."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:190
-msgid ""
-"Next, <link href=\"http://valadoc.org/gstreamer-0.10/Gst.Element.link.html"
-"\"><code>sink.link</code></link> is used to connect the elements together, "
-"so the output of source (a tone) goes into the input of sink (which is then "
-"output to the sound card). <link href=\"http://www.valadoc.org/gstreamer-"
-"0.10/Gst.Element.set_state.html\"><code>pipeline.set_state</code></link> is "
-"then used to start playback, by setting the <link href=\"http://www.valadoc."
-"org/gstreamer-0.10/Gst.State.html\">state of the pipeline</link> to playing "
-"(<code>Gst.State.PLAYING</code>)."
-msgstr ""
-"Ahora, el código <link href=\"http://valadoc.org/gstreamer-0.10/Gst.Element."
-"link.html\"><code>sink.link</code></link> se usa para conectar los elementos "
-"entre sí, por lo que la salida de la fuente (un tono) va a la entrada del "
-"sumidero (y entonces sale por la tarjeta de sonido). <link href=\"http://www."
-"valadoc.org/gstreamer-0.10/Gst.Element.set_state.html\"><code>pipeline."
-"set_state</code></link> se usa para iniciar la reproducción estableciendo el "
-"<link href=\"http://www.valadoc.org/gstreamer-0.10/Gst.State.html\">estado "
-"de la tubería</link> a «playing» (<code>Gst.State.PLAYING</code>)."
-
-#. (itstool) path: item/p
-#: C/guitar-tuner.vala.page:193
-msgid ""
-"We don't want to play an annoying tone forever, so the last thing "
-"<code>play_sound</code> does is to add a <link href=\"http://www.valadoc.org/"
-"glib-2.0/GLib.TimeoutSource.html\"><code>TimeoutSource</code></link>. This "
-"sets a timeout for stopping the sound; it waits for 200 milliseconds before "
-"calling a signal handler defined inline that stops and destroys the "
-"pipeline. It returns <code>false</code> to remove itself from the timeout, "
-"otherwise it would continue to be called every 200 ms."
-msgstr ""
-"No se quiere reproducir un tono molesto para siempre, por lo que lo último "
-"que <code>play_sound</code> hace es añadir un <link href=\"http://www."
-"valadoc.org/glib-2.0/GLib.TimeoutSource.html\"><code>TimeoutSource</code></"
-"link>. Esto establece un tiempo de expiración para detener el sonido; espera "
-"200 milisegundos antes de llamar a un manejador de la señal definido en "
-"línea y destruye la tubería. Devuelve<code>false</code> para quitarse a sí "
-"mismo del tiempo de expiración, ya que de otro modo, seguiría llamándose "
-"cada 200ms,"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:204
-msgid ""
-"In the UI designer, you made it so that all of the buttons will call the "
-"same function, <gui>on_button_clicked</gui>, when they are clicked. Actually "
-"we type <gui>main_on_button_clicked</gui> which tells the UI designer that "
-"this method is part of our <code>Main</code>. We need to add that function "
-"in the source file."
-msgstr ""
-"El el diseñador de interfaces se hizo que todos los botones llamaran a la "
-"misma función, <gui>on_button_clicked</gui> cuando se pulsasen. Ahora se "
-"escribe <gui>main_on_button_clicked</gui>, lo que indica al diseñador de "
-"interfaces que este método es parte de la función <code>Main</code>. Se debe "
-"añadir esta función al archivo de código fuente."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:205
-msgid ""
-"To do this, in the user interface file (guitar_tuner.ui) select one of the "
-"buttons by clicking on it, then open <file>guitar_tuner.vala</file> (by "
-"clicking on the tab in the center). Switch to the <gui>Signals</gui> tab on "
-"the right, which you used to set the signal name. Now take the row where you "
-"set the <gui>clicked</gui> signal and drag and drop it into to the source "
-"file at the beginning of the class. The following code will be added to your "
-"source file:"
-msgstr ""
-"Para hacer esto, en el archivo de interfaz del usuario (guitar_tuner.ui), "
-"seleccione uno de los botones pulsando sobre él, abra <file>guitar_tuner."
-"vala</file> (pulsando en la pestaña en el centro). Cambie a la pestaña "
-"<gui>Señales</gui> de la derecha, que ya ha usado para establecer el nombre "
-"de la señal. Ahora vaya a la fila en la que estableció la señal "
-"<gui>clicked</gui> y arrástrela al archivo de código fuente, al principio de "
-"la clase. Se añadirá el siguiente código a su archivo de código fuente:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.vala.page:207
-#, no-wrap
-msgid ""
-"\n"
-"public void on_button_clicked (Gtk.Button sender) {\n"
-"\n"
-"}"
-msgstr ""
-"\n"
-"public void on_button_clicked (Gtk.Button sender) {\n"
-"\n"
-"}"
-
-#. (itstool) path: note/p
-#: C/guitar-tuner.vala.page:212
-msgid ""
-"You can also just type the code at the beginning of the class instead of "
-"using the drag and drop."
-msgstr ""
-"También puede escribir simplemente el texto al principio de la clase en vez "
-"de arrastrar y soltar."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:213
-msgid ""
-"This signal handler has only one argument: the <link href=\"http://valadoc."
-"org/gtk+-3.0/Gtk.Widget.html\"><code>Gtk.Widget</code></link> that called "
-"the function (in our case, always a <link href=\"http://valadoc.org/gtk+-3.0/"
-"Gtk.Button.html\"><code>Gtk.Button</code></link>)."
-msgstr ""
-"El manejador de la señal sólo tiene un argumento: el <link href=\"http://"
-"valadoc.org/gtk+-3.0/Gtk.Widget.html\"><code>Gtk.Widget</code></link> que "
-"llama a la función (en este caso, siempre es un <link href=\"http://valadoc."
-"org/gtk+-3.0/Gtk.Button.html\"><code>Gtk.Button</code></link>)."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.vala.page:219
-msgid "Define the signal handler"
-msgstr "Definir el manejador de señales"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:220
-msgid ""
-"We want to play the correct sound when the user clicks a button. For this, "
-"we flesh out the signal handler which we defined above, "
-"<code>on_button_clicked</code>. We could have connected every button to a "
-"different signal handler, but that would lead to a lot of code duplication. "
-"Instead, we can use the label of the button to figure out which button was "
-"clicked:"
-msgstr ""
-"Se quiere reproducir el sonido correcto cuando el usuario pulsa un botón. "
-"Para esto, se profundiza en el manejador de la señal definido anteriormente, "
-"<code>on_button_clicked</code>. Se podría haber conectado cada botón a un "
-"manejador de la señal diferente, pero esto había supuesto duplicar mucho "
-"código. En su lugar, se puede usar la etiqueta del botón para saber cuál de "
-"ellos se ha pulsado:"
-
-#. (itstool) path: section/code
-#: C/guitar-tuner.vala.page:221
-#, no-wrap
-msgid ""
-"\n"
-"public void on_button_clicked (Gtk.Button sender) {\n"
-"\tvar label = sender.get_child () as Gtk.Label;\n"
-"\tswitch (label.get_label()) {\n"
-"\t\tcase \"E\":\n"
-"\t\t\tplay_sound (329.63);\n"
-"\t\t\tbreak;\n"
-"\t\tcase \"A\":\n"
-"\t\t\tplay_sound (440);\n"
-"\t\t\tbreak;\n"
-"\t\tcase \"D\":\n"
-"\t\t\tplay_sound (587.33);\n"
-"\t\t\tbreak;\n"
-"\t\tcase \"G\":\n"
-"\t\t\tplay_sound (783.99);\n"
-"\t\t\tbreak;\n"
-"\t\tcase \"B\":\n"
-"\t\t\tplay_sound (987.77);\n"
-"\t\t\tbreak;\n"
-"\t\tcase \"e\":\n"
-"\t\t\tplay_sound (1318);\n"
-"\t\t\tbreak;\n"
-"\t\tdefault:\n"
-"\t\t\tbreak;\n"
-"\t}\n"
-"}\n"
-msgstr ""
-"\n"
-"public void on_button_clicked (Gtk.Button sender) {\n"
-"\tvar label = sender.get_child () as Gtk.Label;\n"
-"\tswitch (label.get_label()) {\n"
-"\t\tcase \"E\":\n"
-"\t\t\tplay_sound (329.63);\n"
-"\t\t\tbreak;\n"
-"\t\tcase \"A\":\n"
-"\t\t\tplay_sound (440);\n"
-"\t\t\tbreak;\n"
-"\t\tcase \"D\":\n"
-"\t\t\tplay_sound (587.33);\n"
-"\t\t\tbreak;\n"
-"\t\tcase \"G\":\n"
-"\t\t\tplay_sound (783.99);\n"
-"\t\t\tbreak;\n"
-"\t\tcase \"B\":\n"
-"\t\t\tplay_sound (987.77);\n"
-"\t\t\tbreak;\n"
-"\t\tcase \"e\":\n"
-"\t\t\tplay_sound (1318);\n"
-"\t\t\tbreak;\n"
-"\t\tdefault:\n"
-"\t\t\tbreak;\n"
-"\t}\n"
-"}\n"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:248
-msgid ""
-"The <code>Gtk.Button</code> that was clicked is passed as an argument "
-"(<code>sender</code>) to <code>on_button_clicked</code>. We can get the "
-"label of that button by using <code>get_child</code>, and then get the text "
-"from that label using <code>get_label</code>."
-msgstr ""
-"El <code>Gtk.Button</code> que se ha pulsado se pasa como argumento "
-"(<code>sender</code>) a <code>on_button_clicked</code>. Se puede obtener la "
-"etiqueta de ese botón usando <code>get_child</code>, y entonces obtener el "
-"texto de esa etiqueta usando <code>get_label</code>."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:249
-msgid ""
-"The switch statement compares the label text to the notes that we can play, "
-"and <code>play_sound</code> is called with the frequency appropriate for "
-"that note. This plays the tone; we have a working guitar tuner!"
-msgstr ""
-"La sentencia «switch» compara la etiqueta de texto con las notas que se "
-"pueden reproducir, y se llama a <code>play_sound</code> con la frecuencia "
-"correspondiente a esa nota. Esto reproduce el tono; el afinador de guitarra "
-"ya está funcionando."
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:260
-msgid ""
-"If you run into problems with the tutorial, compare your code with this "
-"<link href=\"guitar-tuner/guitar-tuner.vala\">reference code</link>."
-msgstr ""
-"Si tiene problemas con este tutorial, compare su código con este <link href="
-"\"guitar-tuner/guitar-tuner.vala\">código de referencia</link>."
-
-#. (itstool) path: section/title
-#: C/guitar-tuner.vala.page:264 C/magic-mirror.vala.page:157
-msgid "Further reading"
-msgstr "Lectura complementaria"
-
-#. (itstool) path: section/p
-#: C/guitar-tuner.vala.page:265
-msgid ""
-"To find out more about the Vala programming language you might want to check "
-"out the <link href=\"http://live.gnome.org/Vala/Tutorial\">Vala Tutorial</"
-"link> and the <link href=\"http://valadoc.org/\">Vala API Documentation</"
-"link>"
-msgstr ""
-"Para obtener más información sobre el lenguaje de programación Vala, puede "
-"querer revisar el <link href=\"http://live.gnome.org/Vala/Tutorial"
-"\">Tutorial de Vala</link> y la <link href=\"http://valadoc.org/"
-"\">documentación de la API de Vala</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/hellognome.js.page:65
-msgctxt "_"
-msgid ""
-"external ref='media/hellognomewebapp.png' "
-"md5='948efb6148ede3bc6b47b4b0bbe4a74f'"
-msgstr ""
-"external ref='media/hellognomewebapp.png' "
-"md5='948efb6148ede3bc6b47b4b0bbe4a74f'"
-
-#. (itstool) path: info/desc
-#: C/hellognome.js.page:17
-msgid "Your first GNOME application!"
-msgstr "Su primera aplicación de GNOME"
-
-#. (itstool) path: page/title
-#: C/hellognome.js.page:20
-msgid "1. Hello, GNOME!"
-msgstr "1. ¡Hola, GNOME!"
-
-#. (itstool) path: synopsis/p
-#: C/hellognome.js.page:22
-msgid ""
-"This tutorial will show you how to write your first GNOME application in "
-"JavaScript. You will use JavaScript to write for GNOME the same way you "
-"would for the web. Afterwards, you will learn how to use \"native\" widgets, "
-"to write applications that look and feel like other GNOME apps."
-msgstr ""
-"Este tutorial le mostrará cómo escribir su primera aplicación de GNOME en "
-"JavaScript. Usará JavaScript para escribir para GNOME de la misma manera que "
-"lo haría para la web. Después, aprenderá cómo usar widgets «nativos», para "
-"escribir aplicaciones que se ven como otras aplicaciones de GNOME."
-
-#. (itstool) path: note/p
-#: C/hellognome.js.page:23
-msgid ""
-"Have you gotten GNOME installed on your computer, and <link xref=\"set-up-"
-"gedit.js\">gedit</link> set up to write code with? You'll want to do these "
-"things first."
-msgstr ""
-"¿Ya tiene GNOME instalado en su equipo, y <link xref=\"set-up-gedit.js"
-"\">gedit</link> configurado para escribir código? Querrá hacer estas cosas "
-"primero."
-
-#. (itstool) path: section/title
-#: C/hellognome.js.page:29
-msgid "Let's start with a web page"
-msgstr "Comience con una página web"
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:31
-msgid ""
-"Here's some basic HTML, CSS, and JavaScript code. Does this look familiar?"
-msgstr "Aquí hay código HTML, CSS, y JavaScript básico. ¿Le resulta familiar?"
-
-#. (itstool) path: section/code
-#: C/hellognome.js.page:32
-#, no-wrap
-msgid ""
-"\n"
-"<!DOCTYPE html>\n"
-"<html>\n"
-" <head>\n"
-" <title>Hello, GNOME!</title>\n"
-"\n"
-" <!-- Use JavaScript to show a greeting when someone clicks the button -->\n"
-" <script type=\"application/javascript\">\n"
-" function greeting () {\n"
-" document.getElementById (\"greeting\").innerHTML = (\"O hai!\");\n"
-" }\n"
-" </script>\n"
-"\n"
-" <!-- Very basic CSS style using the GNOME font -->\n"
-" <style type=\"text/css\">\n"
-" body {\n"
-" font-face: Cantarell, sans-serif;\n"
-" text-align: center; }\n"
-" </style>\n"
-"\n"
-" </head>\n"
-" <body>\n"
-" <br /> <br />\n"
-" <button type=\"button\" onclick=\"greeting()\">Hello, GNOME!</button>\n"
-"\n"
-" <!-- Empty H1 element gets filled in when the button is clicked -->\n"
-" <h1 id=\"greeting\"></h1>\n"
-" </body>\n"
-"</html>\n"
-msgstr ""
-"\n"
-"<!DOCTYPE html>\n"
-"<html>\n"
-" <head>\n"
-" <title>Hello, GNOME!</title>\n"
-"\n"
-" <!-- Use JavaScript to show a greeting when someone clicks the button -->\n"
-" <script type=\"application/javascript\">\n"
-" function greeting () {\n"
-" document.getElementById (\"greeting\").innerHTML = (\"O hai!\");\n"
-" }\n"
-" </script>\n"
-"\n"
-" <!-- Very basic CSS style using the GNOME font -->\n"
-" <style type=\"text/css\">\n"
-" body {\n"
-" font-face: Cantarell, sans-serif;\n"
-" text-align: center; }\n"
-" </style>\n"
-"\n"
-" </head>\n"
-" <body>\n"
-" <br /> <br />\n"
-" <button type=\"button\" onclick=\"greeting()\">Hello, GNOME!</button>\n"
-"\n"
-" <!-- Empty H1 element gets filled in when the button is clicked -->\n"
-" <h1 id=\"greeting\"></h1>\n"
-" </body>\n"
-"</html>\n"
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:63
-msgid ""
-"Let's save this as <file>hellognome.html</file>, and see what it looks like "
-"when we run it!"
-msgstr ""
-"Guarde esto como <file>hellognome.html</file>, y observe cómo se ve cuando "
-"lo ejecuta."
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:67
-msgid ""
-"You <em>can</em> run the above code by opening <file>hellognome.html</file> "
-"in a web browser. But here, we're going to create a GNOME application that "
-"runs our web app inside of it, just like you see in the screenshot. You'll "
-"be able to resize and maximize the window, and click the X in the corner to "
-"close it, just like you'd expect from any other GNOME app. The difference is "
-"that this one will run our web code inside of it."
-msgstr ""
-"<em>Puede</em> ejecutar el código anterior abriendo <file>hellognome.html</"
-"file> en un navegador web. Pero aquí, se va a crear una aplicación de GNOME "
-"que ejecute la aplicación web de dentro, como ve en la captura de pantalla. "
-"Podrá redimensionar y maximizar la ventana, y pulsar en la «X» en la esquina "
-"para cerrarla, al igual que esperaría de cualquier otra aplicación de GNOME. "
-"La diferencia es que esta ejecutará el código web de dentro."
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:68
-msgid ""
-"The best part? We're going to continue to use JavaScript, to write all the "
-"parts that make our app work with GNOME. Let's look at the code, and see how "
-"it's done!"
-msgstr ""
-"¿La mejor parte? Se va a continuar usando JavaScript para escribir todas las "
-"partes que hacen que la aplicación funcione con GNOME. Échele un vistazo al "
-"código y vea cómo se hace."
-
-#. (itstool) path: section/title
-#: C/hellognome.js.page:72
-msgid "Creating a GNOME window to frame our web app"
-msgstr "Crear una ventana de GNOME para enmarcar la aplicación web"
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:74
-msgid ""
-"First, we need to tell GNOME that this is a JavaScript application, which "
-"uses gjs. Gjs is GNOME's way of turning your JavaScript code into "
-"instructions it understands, so this line always has to go at the start of "
-"your applications."
-msgstr ""
-"Primero, se necesita decirle a GNOME que esta es una aplicación de "
-"JavaScript, que usa gjs. gjs es la forma de GNOME de convertir su código de "
-"JavaScript en instrucciones que entiende, por lo que esta línea siempre debe "
-"ir al principio de sus aplicaciones."
-
-#. (itstool) path: section/code
-#: C/hellognome.js.page:75
-#, no-wrap
-msgid ""
-"\n"
-"#!/usr/bin/gjs\n"
-msgstr ""
-"\n"
-"#!/usr/bin/gjs\n"
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:78
-msgid "After that, we need to tell GNOME which libraries we want to import."
-msgstr ""
-"Después de eso, necesita decirle a GNOME qué bibliotecas quiere importar."
-
-#. (itstool) path: section/code
-#: C/hellognome.js.page:79
-#, no-wrap
-msgid ""
-"\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"const Webkit = imports.gi.WebKit;\n"
-msgstr ""
-"\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"const Webkit = imports.gi.WebKit;\n"
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:85
-msgid ""
-"Just like how add-on libraries like jQuery let us do extra things with "
-"JavaScript, each of these libraries gives us new capabilities for our GNOME "
-"apps:"
-msgstr ""
-"Al igual que las bibliotecas adicionales como jQuery, que permiten hacer "
-"cosas adicionales con JavaScript, cada una de estas bibliotecas le da "
-"capacidades nuevas a las aplicaciones de GNOME:"
-
-#. (itstool) path: item/p
-#: C/hellognome.js.page:87
-msgid ""
-"<file>Gtk</file> and <file>Lang</file> are basic parts of any GNOME "
-"application, which let you create windows and widgets and tie them together."
-msgstr ""
-"<file>Gtk</file> y <file>Lang</file> son partes básicas de cualquier "
-"aplicación de GNOME, que le permiten crear ventanas y widgets, y juntarlos."
-
-#. (itstool) path: item/p
-#: C/hellognome.js.page:88
-msgid ""
-"<file>GLib</file> is a helper library, which lets us do things like tell "
-"GNOME where the <file>hellognome.html</file> file we created is."
-msgstr ""
-"<file>GLib</file> es una biblioteca de ayuda, que permite hacer cosas como "
-"decirle a GNOME dónde está el archivo <file>hellognome.html</file> que creó."
-
-#. (itstool) path: item/p
-#: C/hellognome.js.page:89
-msgid ""
-"And <file>Webkit</file> is a web rendering engine, which we'll use to "
-"basically create a browser window to open our HTML file with."
-msgstr ""
-"Y <file>Webkit</file> es un motor de procesamiento web, que usará "
-"básicamente para crear una ventana de navegador con la que abrir el archivo "
-"HTML."
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:92
-msgid "Now we create the application itself:"
-msgstr "Ahora se crea la aplicación en sí:"
-
-#. (itstool) path: section/code
-#: C/hellognome.js.page:93
-#, no-wrap
-msgid ""
-"\n"
-"const HelloGNOME = new Lang.Class ({\n"
-" Name: 'Hello GNOME',\n"
-msgstr ""
-"\n"
-"const HelloGNOME = new Lang.Class ({\n"
-" Name: 'Hello GNOME',\n"
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:97
-msgid ""
-"This will look familiar to you if you've worked with object-oriented "
-"JavaScript before. That's right; our whole application is a class called "
-"HelloGNOME. And as you can see, we've given it a property that says what its "
-"name is."
-msgstr ""
-"Esto le resultará familiar si ha trabajado con JavaScript orientado a "
-"objetos anteriormente. Así es; toda la aplicación es una clase llamada "
-"«HelloGNOME». Y como puede ver, se le ha dado una propiedad que dice cuál es "
-"su nombre."
-
-#. (itstool) path: section/code
-#: C/hellognome.js.page:99
-#, no-wrap
-msgid ""
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:119
-msgid ""
-"Here's some code you will more or less copy-and-paste for every JavaScript "
-"application you build. It creates a new Application, and then binds its "
-"activate and startup signals to functions that make the window show itself "
-"and build its user interface, respectively."
-msgstr ""
-"Aquí hay código que prácticamente copiará y pegará por cada aplicación que "
-"construya en JavaScript. Crea una «Application» nueva, y después enlaza sus "
-"señales «activate» y «startup» a funciones que muestran la ventana y "
-"construyen su interfaz de usuario, respectivamente."
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:120
-msgid ""
-"What does that mean? Well, everything in a GNOME application sends out a "
-"signal when something important happens. A button might send out the clicked "
-"signal when you click on it, for instance. Our job is to connect the signals "
-"to functions which handle them, and make the things that we want to have "
-"happen occur. We do this using each object's connect method, which takes two "
-"arguments: The signal we want to handle, and the Lang.bind function, which "
-"we have to use to tell connect which function we want to have handle the "
-"signal."
-msgstr ""
-"¿Qué significa eso? Bueno, todo en una aplicación de GNOME envía una señal "
-"cuando algo importante sucede. Un botón puede enviar la señal «clicked» "
-"cuando lo pulsa, por ejemplo. Su trabajo es conectar las señales a funciones "
-"que las manejen, y hagan las cosas que quiere que ocurran. Esto se hace "
-"usando el método «connect» de cada objeto, que toma dos argumentos: la señal "
-"que quiere manejar, y la función «Lang.bind», que hay que usar para decirle a "
-"«connect» qué función quiere que maneje la señal."
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:121
-msgid ""
-"In this case, we want _onActivate to handle the activate signal, and "
-"_onStartup to handle the startup signal. _onActivate just tells the window "
-"to present itself; so basically, whenever you <keyseq><key>Alt</key> "
-"<key>Tab</key></keyseq> to the application it appears, like you would expect "
-"it to. _onStartup calls _buildUI, which is the function that creates our "
-"user interface and is the next part that we will look at."
-msgstr ""
-"En este caso, se quiere que «_onActivate» maneje la señal «activate», y "
-"«_onStartup» la señal «startup». «_onActivate» sólo le dice a la ventana que se "
-"presente; para que, básicamente, cada vez que haga <keyseq><key>Alt</key> "
-"<key>Tab</key></keyseq> a la aplicación, aparezca como uno espera. "
-"«_onStartup» llama a «_buildUI», que es la función que crea la interfaz de "
-"usuario y que verá a continuación."
-
-#. (itstool) path: note/p
-#: C/hellognome.js.page:122
-msgid ""
-"When you copy and paste the above code for your own applications, be sure to "
-"change the name to a unique one each time."
-msgstr ""
-"Cuando copie y pegue el código anterior para sus propias aplicaciones, "
-"asegúrese de cambiar el nombre por uno único cada vez."
-
-#. (itstool) path: section/title
-#: C/hellognome.js.page:126
-msgid "Designing our window's UI"
-msgstr "Diseñar la IU de la ventana"
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:127
-msgid ""
-"In the _buildUI function, we're going to tell GNOME about our window and the "
-"things inside it, one at a time. After that, we're going to connect "
-"everything together and put it all on display."
-msgstr ""
-"En la función «_buildUI», se le describirá a GNOME la ventana y sus "
-"elementos, uno a la vez. Después de eso, se conectará y se mostrará todo "
-"junto."
-
-#. (itstool) path: section/code
-#: C/hellognome.js.page:129
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" title: \"Welcome to GNOME\",\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" window_position: Gtk.WindowPosition.CENTER });\n"
-msgstr ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" title: \"Welcome to GNOME\",\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" window_position: Gtk.WindowPosition.CENTER });\n"
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:142
-msgid ""
-"The first object we create is an ApplicationWindow. It needs a title to go "
-"in the title bar, and its application property needs to be the application "
-"that we created, above. Beyond that, there are various ways of customizing "
-"how it looks, which the <link xref=\"GtkApplicationWindow.js"
-"\">ApplicationWindow</link> reference page will go into more detail about. "
-"As you can see here, we gave it a default height and width (measured in "
-"pixels), and told GNOME we want our window to appear in the center of the "
-"screen."
-msgstr ""
-"El primer objeto que se crea es una «ApplicationWindow». Necesita un texto "
-"para la barra de título, y su propiedad «application» tiene que ser la "
-"aplicación que se creó anteriormente. Más allá de eso, hay varias maneras de "
-"personalizar su apariencia. Podrá encontrar más detalles en la página de "
-"referencia <link xref=\"GtkApplicationWindow.js\">ApplicationWindow</link>. "
-"Como puede ver aquí, se le dio una altura y anchura predeterminada (medidas "
-"en píxeles), y se le dijo a GNOME que se quiere que la ventana aparezca en "
-"el centro de la pantalla."
-
-#. (itstool) path: section/code
-#: C/hellognome.js.page:143
-#, no-wrap
-msgid ""
-"\n"
-" // Create a webview to show the web app\n"
-" this._webView = new Webkit.WebView ();\n"
-"\n"
-" // Put the web app into the webview\n"
-" this._webView.load_uri (GLib.filename_to_uri (GLib.get_current_dir() +\n"
-" \"/hellognome.html\", null));\n"
-msgstr ""
-"\n"
-" // Create a webview to show the web app\n"
-" this._webView = new Webkit.WebView ();\n"
-"\n"
-" // Put the web app into the webview\n"
-" this._webView.load_uri (GLib.filename_to_uri (GLib.get_current_dir() +\n"
-" \"/hellognome.html\", null));\n"
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:151
-msgid ""
-"Remember how we imported Webkit right at the start? Here we're creating a "
-"new instance of a Webkit class called a WebView, which is more or less a "
-"browser window you can put inside of your app. After that, we then give it "
-"the URI that we want it to load when the application starts up."
-msgstr ""
-"¿Recuerda cómo se importó «Webkit» al comienzo? Aquí se está creando una "
-"instancia nueva de la clase «Webkit» llamada «WebView», que es más o menos una "
-"ventana de navegador que puede poner dentro de su aplicación. Después de "
-"eso, se le da el URI que quiere que cargue cuando la aplicación inicia."
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:152
-msgid ""
-"We <em>could</em> just give it a web URI, like <link href=\"http://gnome.org"
-"\">http://gnome.org</link>. Instead, here we use a couple of GLib helper "
-"functions to tell the WebView where our <file>hellognome.html</file> file "
-"is. GLib.get_current_dir returns the directory that our app's running in, "
-"and GLib.filename_to_uri turns our file's path and filename into a URI that "
-"the WebView's load_uri function understands. (filename_to_uri's second "
-"parameter should be null unless you know what it's used for and have a "
-"reason for changing it.)"
-msgstr ""
-"Se <em>podría</em> darle sólo un URI web, como <link href=\"http://gnome.org"
-"\">http://gnome.org</link>. En su lugar, aquí se usan algunas funciones de "
-"ayuda de GLib para decirle a «WebView» dónde está el archivo <file>hellognome."
-"html</file>. «GLib.get_current_dir» devuelve la carpeta en la que se está "
-"ejecutando la aplicación, y «GLib.filename_to_uri» convierte la ruta del "
-"archivo y su nombre en un URI que la función «load_uri» del «WebView» entiende "
-"(el segundo parámetro de «filename_to_uri» debe ser «null» a menos que sepa "
-"para qué se usa y tenga una razón para cambiarlo)."
-
-#. (itstool) path: section/code
-#: C/hellognome.js.page:153
-#, no-wrap
-msgid ""
-"\n"
-" // Put the webview into the window\n"
-" this._window.add (this._webView);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"});\n"
-msgstr ""
-"\n"
-" // Put the webview into the window\n"
-" this._window.add (this._webView);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"});\n"
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:163
-msgid ""
-"Each window can hold one, and only one, widget. Normally, we'd use a "
-"container widget like a <link xref=\"grid.js\">Grid</link> to put multiple "
-"widgets into, then use the window's add function to add the Grid to it. "
-"Here, we just need the WebView, so that's all we add to the window. After "
-"that, as the last part of the _buildUI function that creates our window, we "
-"tell the window to show itself and its contents."
-msgstr ""
-"Cada ventana puede contener un, y sólo un, widget. Normalmente usaría un "
-"widget contenedor como una <link xref=\"grid.js\">Rejilla</link> para poner "
-"dentro múltiples widgets, y después usar la función «add» de la ventana para "
-"añadírsela. Aquí, sólo se necesita el «WebView», por lo que es todo lo que se "
-"añade. Después de eso, al final de la función «_buildUI» que crea la ventana, "
-"se le dice que se muestre con su contenido."
-
-#. (itstool) path: section/code
-#: C/hellognome.js.page:164
-#, no-wrap
-msgid ""
-"\n"
-"// Run the application\n"
-"let app = new HelloGNOME ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"// Run the application\n"
-"let app = new HelloGNOME ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:169
-msgid ""
-"Finally, we create a new instance of our HelloGNOME class, and tell GNOME to "
-"run it."
-msgstr ""
-"Finalmente, se crea una instancia nueva de la clase «HelloGNOME» y se le dice "
-"a GNOME que la ejecute."
-
-#. (itstool) path: section/title
-#: C/hellognome.js.page:173
-msgid "Running your GNOME application"
-msgstr "Ejecutar la aplicación de GNOME"
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:175
-msgid ""
-"Now that we've created our first GNOME application, it's time to test it "
-"out! You don't need to compile your app or install any special software for "
-"this; GNOME has gjs built in, to let it run GNOME Shell. Just save "
-"<file>hellognome.html</file> and our actual application, <file>hellognome."
-"js</file>, to a directory you can get to with the terminal. (They usually "
-"open onto your home directory, the one that's called by your username.) "
-"After that, open a terminal, go there, and type:"
-msgstr ""
-"Ahora que ha creado su primera aplicación de GNOME, es hora de probarla. No "
-"necesita compilarla o instalar algún software especial, GNOME tiene incluido "
-"gjs para permitirle ejecutar GNOME Shell. Sólo guarde <file>hellognome.html</"
-"file> y la aplicación en sí, <file>hellognome.js</file> en una carpeta a la "
-"que pueda acceder con la terminal (generalmente se abren en su carpeta "
-"personal, la que se llama como su usuario). Después de eso, abra una "
-"terminal, vaya allí, e introduzca:"
-
-#. (itstool) path: section/screen
-#: C/hellognome.js.page:176
-#, no-wrap
-msgid " <output style=\"prompt\">$ </output>gjs hellognome.js "
-msgstr " <output style=\"prompt\">$ </output>gjs hellognome.js "
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:177
-msgid ""
-"You should see more or less the same screenshot as before, with a button "
-"that you can click to make a short message appear."
-msgstr ""
-"Debería ver más o menos la misma captura de pantalla de antes, con un botón "
-"que puede pulsar para hacer aparecer un mensaje corto."
-
-#. (itstool) path: note/p
-#: C/hellognome.js.page:180
-msgid "You can use the terminal command"
-msgstr "Puede usar el comando de la terminal"
-
-#. (itstool) path: note/screen
-#: C/hellognome.js.page:181
-#, no-wrap
-msgid " <output style=\"prompt\">$ </output>cd <var>(directory name)</var> "
-msgstr " <output style=\"prompt\">$ </output>cd <var>(nombre de la carpeta)</var> "
-
-#. (itstool) path: note/p
-#: C/hellognome.js.page:182
-msgid ""
-"to navigate between directories inside the Terminal, in order to get to "
-"where you saved the files. There is also an extension for Nautilus, GNOME's "
-"file manager, which lets you right-click anywhere inside it to open a "
-"terminal window right there. Check the app you use to install new software "
-"(like Add/Remove Programs or the Software Center) for it."
-msgstr ""
-"para navegar entre carpetas dentro de la terminal, y llegar donde guardó los "
-"archivos. También hay una extensión para Nautilus, el gestor de archivos de "
-"GNOME, que le permite pulsar en cualquier lado con el botón derecho para "
-"abrir una terminal allí. Búsquela en la aplicación que usa para instalar "
-"software nuevo (como «Añadir/Quitar programas» o el «Centro de software»)."
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:189
-msgid ""
-"<link xref=\"02_welcome_to_the_grid.js\">Continue on to the next tutorial</"
-"link> to learn how to build \"native\" GNOME applications that look and feel "
-"like the others, instead of a webview with HTML code inside. Or take a look "
-"at some <link xref=\"beginner.js#samples\">code samples</link>, if you'd "
-"like to see example code for each Gtk widget."
-msgstr ""
-"<link xref=\"02_welcome_to_the_grid.js\">Siga con el próximo tutorial</link> "
-"para aprender cómo construir aplicaciones de GNOME «nativas» que se ven como "
-"las otras, en lugar de una vista web con código HTML dentro. O échele un "
-"vistazo a algunas <link xref=\"beginner.js#samples\">muestras de código</"
-"link>, si quiere ver código de ejemplo para cada widget de GTK+."
-
-#. (itstool) path: section/p
-#: C/hellognome.js.page:190
-msgid ""
-"Finally, if you want to just build GNOME applications using JavaScript "
-"libraries designed for the web, you can basically stop here and go do that! "
-"Check out <link xref=\"beginner.js#tutorials\">the later tutorials</link> if "
-"you'd like to see how to create a .desktop file for your application, which "
-"will let it appear in your desktop's Activities menu with all your other "
-"apps."
-msgstr ""
-"Finalmente, si sólo quiere construir aplicaciones de GNOME usando "
-"bibliotecas de JavaScript diseñadas para la web, puede simplemente parar "
-"aquí y hacerlo. Échele un vistazo a los <link xref=\"beginner.js#tutorials"
-"\">últimos tutoriales</link> para aprender a crear un archivo «.desktop» para "
-"su aplicación, que le permitirá aparecer en el menú de actividades de su "
-"escritorio junto a las otras."
-
-#. (itstool) path: section/code
-#: C/hellognome.js.page:195
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"const Webkit = imports.gi.WebKit;\n"
-"\n"
-"const HelloGNOME = new Lang.Class ({\n"
-" Name: 'Hello GNOME',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" title: \"Welcome to GNOME\",\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" window_position: Gtk.WindowPosition.CENTER });\n"
-"\n"
-" // Create a webview to show the web app\n"
-" this._webView = new Webkit.WebView ();\n"
-"\n"
-" // Put the web app into the webview\n"
-" this._webView.load_uri (GLib.filename_to_uri (GLib.get_current_dir() +\n"
-" \"/hellognome.html\", null));\n"
-"\n"
-" // Put the webview into the window\n"
-" this._window.add (this._webView);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new HelloGNOME ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"const Webkit = imports.gi.WebKit;\n"
-"\n"
-"const HelloGNOME = new Lang.Class ({\n"
-" Name: 'Hello GNOME',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ();\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" title: \"Welcome to GNOME\",\n"
-" default_height: 200,\n"
-" default_width: 400,\n"
-" window_position: Gtk.WindowPosition.CENTER });\n"
-"\n"
-" // Create a webview to show the web app\n"
-" this._webView = new Webkit.WebView ();\n"
-"\n"
-" // Put the web app into the webview\n"
-" this._webView.load_uri (GLib.filename_to_uri (GLib.get_current_dir() +\n"
-" \"/hellognome.html\", null));\n"
-"\n"
-" // Put the webview into the window\n"
-" this._window.add (this._webView);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new HelloGNOME ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/hello-world.c.page:51 C/hello-world.js.page:28 C/hello-world.py.page:28
-#: C/hello-world.vala.page:28
-msgctxt "_"
-msgid ""
-"external ref='media/hello-world.png' md5='4c88a27211dfd1b33e504c9f78602f2d'"
-msgstr ""
-"external ref='media/hello-world.png' md5='4c88a27211dfd1b33e504c9f78602f2d'"
-
-#. (itstool) path: info/title
-#: C/hello-world.c.page:10
-msgctxt "link"
-msgid "Hello World (C)"
-msgstr "Hola mundo (C)"
-
-#. (itstool) path: credit/name
-#: C/hello-world.c.page:24
-msgid "Bastian Ilsø"
-msgstr "Bastian Ilsø"
-
-#. (itstool) path: info/desc
-#: C/hello-world.c.page:28
-msgid "Creating a small \"Hello, World\" application using GTK+."
-msgstr "Crear una pequeña aplicación «Hola, mundo» usando GTK+."
-
-#. (itstool) path: page/title
-#: C/hello-world.c.page:31
-msgid "Hello world"
-msgstr "Hola mundo"
-
-#. (itstool) path: note/p
-#: C/hello-world.c.page:34
-msgid ""
-"For a detailed walk-through of creating a GTK+ dialog in C, see <link href="
-"\"https://developer.gnome.org/gtk3/stable/gtk-getting-started.html\">Getting "
-"Started with GTK+</link>"
-msgstr ""
-"Para obtener una explicación paso a paso sobre cómo crear un diálogo de GTK+ "
-"en C, consulte <link href=\"https://developer.gnome.org/gtk3/stable/gtk-"
-"getting-started.html\">Primeros pasos con GTK+</link>"
-
-#. (itstool) path: page/p
-#: C/hello-world.c.page:38
-msgid ""
-"Writing a hello world GTK+ dialog in C can be done as seen in the code "
-"sample below:"
-msgstr ""
-"Escribir un diálogo Hola mundo de GTK+ en C se puede hacer como se ve en "
-"siguiente código de ejemplo:"
-
-#. (itstool) path: page/code
-#: C/hello-world.c.page:39
-#, no-wrap
-msgid ""
-"\n"
-" #include <gtk/gtk.h>\n"
-"\n"
-"static void\n"
-"activate (GtkApplication* app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *label;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-" label = gtk_label_new (\"Hello GNOME!\");\n"
-" gtk_container_add (GTK_CONTAINER (window), label);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 200, 100);\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc,\n"
-" char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (NULL, G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-"\n"
-" "
-msgstr ""
-"\n"
-" #include <gtk/gtk.h>\n"
-"\n"
-"static void\n"
-"activate (GtkApplication* app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *label;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-" label = gtk_label_new (\"Hello GNOME!\");\n"
-" gtk_container_add (GTK_CONTAINER (window), label);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 200, 100);\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc,\n"
-" char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (NULL, G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-"\n"
-" "
-
-#. (itstool) path: page/p
-#: C/hello-world.c.page:43
-msgid ""
-"GtkApplication initializes GTK+. It also connects the <gui>x</gui> button "
-"that's automatically generated along with the window to the \"destroy\" "
-"signal. We can start building our first window. We do this by creating a "
-"variable called <var>window</var> and assigning it a "
-"gtk_application_window_new. The window title can be any string you want it "
-"to be. To be on the safe side, it's best to stick to UTF-8 encoding. The "
-"code above will create a dialog window similar to what can be seen below:"
-msgstr ""
-"GtkApplication inicializa GTK+. También conecta el botón <gui>x</gui> que se "
-"genera automáticamente junto con la ventana a la señal «destroy». Puede "
-"empezar a construir su primera ventana. PAra hacer esto, cree una variable "
-"llamada <var>window</var> y asígnela a gtk_application_window_new. El título "
-"de la ventana puede ser la cadena que quiera. Para asegurarse, es mejor usar "
-"la codificación UTF-8. El código anterior creará una ventana de diálogo "
-"similar a la que se ve a continuación:"
-
-#. (itstool) path: info/title
-#: C/hello-world.js.page:9
-msgctxt "text"
-msgid "Hello World (JavaScript)"
-msgstr "Hola mundo (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/hello-world.js.page:24 C/hello-world.py.page:24
-#: C/hello-world.vala.page:24
-msgid "A basic \"hello, world\" application"
-msgstr "Una aplicación «Hola mundo» básica"
-
-#. (itstool) path: page/title
-#: C/hello-world.js.page:27 C/hello-world.py.page:27
-#: C/hello-world.vala.page:27
-msgid ""
-"How to build, install and create a <file>tar.xz</file> of a Hello World "
-"program"
-msgstr ""
-"Cómo construir, instalar y crear un <file>tar.xz</file> de un programa Hola "
-"mundo"
-
-#. (itstool) path: synopsis/p
-#: C/hello-world.js.page:30 C/hello-world.py.page:30
-#: C/hello-world.vala.page:30
-msgid "This tutorial will demonstrate how to:"
-msgstr "Este tutorial le demostrará cómo:"
-
-#. (itstool) path: item/p
-#: C/hello-world.js.page:32
-msgid "create a small \"Hello, World\" application using JavaScript and GTK+"
-msgstr "crear una pequeña aplicación «Hola, mundo» usando JavaScript y GTK+"
-
-#. (itstool) path: item/p
-#: C/hello-world.js.page:33 C/hello-world.py.page:33
-#: C/hello-world.vala.page:33
-msgid "make the <file>.desktop</file> file"
-msgstr "hacer el archivo <file>.desktop</file>"
-
-#. (itstool) path: item/p
-#: C/hello-world.js.page:34 C/hello-world.py.page:34
-#: C/hello-world.vala.page:34
-msgid "how to set up the build system"
-msgstr "configurar el sistema de construcción"
-
-#. (itstool) path: section/title
-#: C/hello-world.js.page:42 C/hello-world.py.page:42
-#: C/hello-world.vala.page:40
-msgid "Create the program"
-msgstr "Crear el programa"
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:47
-msgid "This needs to be the first line of your script:"
-msgstr "Esta tiene que ser la primera línea de su script:"
-
-#. (itstool) path: section/code
-#: C/hello-world.js.page:48
-#, no-wrap
-msgid "#!/usr/bin/gjs"
-msgstr "#!/usr/bin/gjs"
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:49
-msgid ""
-"It tells the script to use <link href=\"https://live.gnome.org/Gjs/\">Gjs</"
-"link>. Gjs is a JavaScript binding for GNOME."
-msgstr ""
-"Le dice al script que use <link href=\"https://live.gnome.org/Gjs/\">Gjs</"
-"link>. Gjs es una vinculación de JavaScript para GNOME."
-
-#. (itstool) path: section/code
-#: C/hello-world.js.page:54
-#, no-wrap
-msgid ""
-"const Lang = imports.lang;\n"
-"const Gtk = imports.gi.Gtk;"
-msgstr ""
-"const Lang = imports.lang;\n"
-"const Gtk = imports.gi.Gtk;"
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:56 C/hello-world.py.page:49
-msgid ""
-"In order for our script to work with GNOME, we need to import GNOME "
-"libraries via GObject Introspection. Here we import the language bindings "
-"and GTK+, the library which contains the graphical widgets used to make "
-"GNOME applications."
-msgstr ""
-"Para que su script funcione con GNOME, se deben importar las bibliotecas de "
-"GNOME mediante introspección de GObject. En este caso, se están importando "
-"las vinculaciones de lenguaje y GTK+, la biblioteca que contiene los widgets "
-"gráficos usados para crear aplicaciones de GNOME."
-
-#. (itstool) path: section/code
-#: C/hello-world.js.page:60
-#, no-wrap
-msgid ""
-"const Application = new Lang.Class({\n"
-" //A Class requires an explicit Name parameter. This is the Class Name.\n"
-" Name: 'Application',\n"
-"\n"
-" //create the application\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" //connect to 'activate' and 'startup' signals to handlers.\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" //create the UI\n"
-" _buildUI: function() {\n"
-" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
-" title: \"Hello World!\" });\n"
-" },\n"
-"\n"
-" //handler for 'activate' signal\n"
-" _onActivate: function() {\n"
-" //show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" //handler for 'startup' signal\n"
-" _onStartup: function() {\n"
-" this._buildUI();\n"
-" }\n"
-"});\n"
-msgstr ""
-"const Application = new Lang.Class({\n"
-" //A Class requires an explicit Name parameter. This is the Class Name.\n"
-" Name: 'Application',\n"
-"\n"
-" //create the application\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" //connect to 'activate' and 'startup' signals to handlers.\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" //create the UI\n"
-" _buildUI: function() {\n"
-" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
-" title: \"Hello World!\" });\n"
-" },\n"
-"\n"
-" //handler for 'activate' signal\n"
-" _onActivate: function() {\n"
-" //show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" //handler for 'startup' signal\n"
-" _onStartup: function() {\n"
-" this._buildUI();\n"
-" }\n"
-"});\n"
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:92
-msgid ""
-"GtkApplication initializes GTK+. It also connects the <gui>x</gui> button "
-"that's automatically generated along with the window to the \"destroy\" "
-"signal."
-msgstr ""
-"«GtkApplication» inicializa GTK+. También conecta el botón <gui>x</gui> que "
-"se genera automáticamente junto con la ventana a la señal «destroy»."
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:93
-msgid ""
-"We can start building our first window. We do this by creating a variable "
-"called <var>_window</var> and assigning it a new Gtk.ApplicationWindow."
-msgstr ""
-"Se puede empezar a construir la primera ventana. Esto se hace creando una "
-"variable llamada <var>_window</var> y asignándole una «Gtk.ApplicationWindow» "
-"nueva."
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:94 C/hello-world.py.page:73
-msgid ""
-"We give the window a property called <var>title</var>. The title can be any "
-"string you want it to be. To be on the safe side, it's best to stick to UTF-"
-"8 encoding."
-msgstr ""
-"Se le asignara una propiedad llamada <var>title</var>. El título puede ser "
-"la cadena que quiera pero, para estar seguro, es conveniente que tenga una "
-"codificación UTF-8."
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:95 C/hello-world.py.page:74
-#: C/hello-world.vala.page:57
-msgid ""
-"Now we have a window which has a title and a working \"close\" button. Let's "
-"add the actual \"Hello World\" text."
-msgstr ""
-"Ya tiene una ventana que contiene un título y un botón «cerrar» que funciona. "
-"Ahora, añada el texto «Hola mundo»."
-
-#. (itstool) path: section/title
-#: C/hello-world.js.page:98 C/hello-world.py.page:77
-#: C/hello-world.vala.page:60
-msgid "Label for the window"
-msgstr "Etiqueta para la ventana"
-
-#. (itstool) path: section/code
-#: C/hello-world.js.page:99
-#, no-wrap
-msgid ""
-"// Add a label widget to your window\n"
-"this.label = new Gtk.Label({ label: \"Hello World\" });\n"
-"this._window.add(this.label);\n"
-"this._window.set_default_size(200, 200);"
-msgstr ""
-"// Add a label widget to your window\n"
-"this.label = new Gtk.Label({ label: \"Hello World\" });\n"
-"this._window.add(this.label);\n"
-"this._window.set_default_size(200, 200);"
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:104
-msgid ""
-"A text label is one of the GTK+ widgets we can use, on account of having "
-"imported the GTK+ library. To use it, we create a new variable called label, "
-"and assign it a new Gtk.Label. Then we give it properties inside the curly "
-"braces {}. In this case, we're setting the text that the label will hold. "
-"Finally, we create and run the application:"
-msgstr ""
-"Una etiqueta de texto es uno de los widgets de GTK+ que puede usar si "
-"importó la biblioteca GTK+. Para usarlo, cree una variable nueva llamada "
-"«label» y asígnele una Gtk.Label nueva. Después dele propiedades dentro de "
-"las llaves «{}». En este caso, se está estableciendo el texto que la etiqueta "
-"contendrá. Finalmente, se crea y ejecuta la aplicación:"
-
-#. (itstool) path: section/code
-#: C/hello-world.js.page:106
-#, no-wrap
-msgid ""
-"//run the application\n"
-"let app = new Application();\n"
-"app.application.run(ARGV);"
-msgstr ""
-"//run the application\n"
-"let app = new Application();\n"
-"app.application.run(ARGV);"
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:110 C/hello-world.py.page:97
-#: C/hello-world.vala.page:71
-msgid ""
-"Gtk.ApplicationWindow can only hold one widget at a time. To construct more "
-"elaborate programs you need to create a holder widget like Gtk.Grid inside "
-"the window, and then add all the other widgets to it."
-msgstr ""
-"«Gtk.ApplicationWindow» sólo puede contener un widget a la vez. Para "
-"construir programas más elaborados necesita crear un widget contenedor como "
-"«Gtk.Grid» dentro de la ventana, y después añadirle los otros."
-
-#. (itstool) path: section/title
-#: C/hello-world.js.page:114
-msgid "hello-world.js"
-msgstr "hello-world.js"
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:115 C/hello-world.py.page:102
-#: C/hello-world.vala.page:76
-msgid "The complete file:"
-msgstr "El archivo completo:"
-
-#. (itstool) path: section/code
-#: C/hello-world.js.page:116
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Lang = imports.lang;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"\n"
-"const Application = new Lang.Class({\n"
-" //A Class requires an explicit Name parameter. This is the Class Name.\n"
-" Name: 'Application',\n"
-"\n"
-" //create the application\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" //connect to 'activate' and 'startup' signals to handlers.\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" //create the UI\n"
-" _buildUI: function() {\n"
-" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
-" title: \"Hello World!\" });\n"
-" this._window.set_default_size(200, 200);\n"
-" this.label = new Gtk.Label({ label: \"Hello World\" });\n"
-" this._window.add(this.label);\n"
-" },\n"
-"\n"
-" //handler for 'activate' signal\n"
-" _onActivate: function() {\n"
-" //show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" //handler for 'startup' signal\n"
-" _onStartup: function() {\n"
-" this._buildUI();\n"
-" }\n"
-"});\n"
-"\n"
-"//run the application\n"
-"let app = new Application();\n"
-"app.application.run(ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Lang = imports.lang;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"\n"
-"const Application = new Lang.Class({\n"
-" //A Class requires an explicit Name parameter. This is the Class Name.\n"
-" Name: 'Application',\n"
-"\n"
-" //create the application\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application();\n"
-"\n"
-" //connect to 'activate' and 'startup' signals to handlers.\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" //create the UI\n"
-" _buildUI: function() {\n"
-" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
-" title: \"Hello World!\" });\n"
-" this._window.set_default_size(200, 200);\n"
-" this.label = new Gtk.Label({ label: \"Hello World\" });\n"
-" this._window.add(this.label);\n"
-" },\n"
-"\n"
-" //handler for 'activate' signal\n"
-" _onActivate: function() {\n"
-" //show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" //handler for 'startup' signal\n"
-" _onStartup: function() {\n"
-" this._buildUI();\n"
-" }\n"
-"});\n"
-"\n"
-"//run the application\n"
-"let app = new Application();\n"
-"app.application.run(ARGV);\n"
-
-#. (itstool) path: section/title
-#: C/hello-world.js.page:119 C/hello-world.py.page:106
-#: C/hello-world.vala.page:80
-msgid "Running the application from terminal"
-msgstr "Ejecutar la aplicación desde la terminal"
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:120
-msgid ""
-"To run this application, first save it as hello-world.js. Then open "
-"Terminal, go to the folder where your application is stored and run:"
-msgstr ""
-"Para ejecutar esta aplicación, primero guárdela como hello-world.js. Luego, "
-"abra una terminal, vaya a la carpeta donde está la aplicación y ejecute:"
-
-#. (itstool) path: section/screen
-#: C/hello-world.js.page:121
-#, no-wrap
-msgid "<output style=\"prompt\">$ </output><input>gjs hello-world.js</input>"
-msgstr "<output style=\"prompt\">$ </output><input>gjs hello-world.js</input>"
-
-#. (itstool) path: section/title
-#: C/hello-world.js.page:127 C/hello-world.py.page:112
-#: C/hello-world.vala.page:89
-msgid "The <file>.desktop.in</file> file"
-msgstr "El archivo <file>.desktop.in</file>"
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:128 C/hello-world.py.page:113
-#: C/hello-world.vala.page:90
-msgid ""
-"Running applications from the Terminal is useful at the beginning of the "
-"application making process. To have fully working <link href=\"https://"
-"developer.gnome.org/integration-guide/stable/mime.html.en\">application "
-"integration</link> in GNOME 3 requires a desktop launcher. For this you need "
-"to create a <file>.desktop</file> file. The <file>.desktop</file> file "
-"describes the application name, the used icon and various integration bits. "
-"A deeper insight into the <file>.desktop</file> file can be found <link href="
-"\"http://developer.gnome.org/desktop-entry-spec/\">here</link>. The <file>."
-"desktop.in</file> file will create the <file>.desktop</file>."
-msgstr ""
-"Ejecutar aplicaciones desde la terminal es útil al principio del proceso de "
-"crear la aplicación. Para tener una <link href=\"https://developer.gnome.org/"
-"integration-guide/stable/mime.html.en\">integración con la aplicación</link> "
-"completa en GNOME 3, se necesita un lanzador en el escritorio. Para esto, "
-"necesita crear un archivo <file>.desktop</file>. El archivo «.desktop» "
-"describe el nombre de la aplicación, el icono que usa y varios campos de "
-"integración. Puede encontrar una descripción de los archivos <file>.desktop</"
-"file> <link href=\"http://developer.gnome.org/desktop-entry-spec/\">aquí</"
-"link>. El archivo <file>.desktop.in</file> creará el <file>.desktop</file>."
-
-#. (itstool) path: note/p
-#: C/hello-world.js.page:131
-msgid ""
-"Before continuing, resave <file>hello-world.js</file> as <file>hello-world</"
-"file>. Then run this in the command line:"
-msgstr ""
-"Antes de continuar, guarde nuevamente <file>hello-world.js</file> como "
-"<file>hello-world</file>. Después ejecute esto en la terminal:"
-
-#. (itstool) path: note/screen
-#: C/hello-world.js.page:132
-#, no-wrap
-msgid "<output style=\"prompt\">$ </output><input>chmod +x hello-world</input>"
-msgstr "<output style=\"prompt\">$ </output><input>chmod +x hello-world</input>"
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:135 C/hello-world.py.page:115
-#: C/hello-world.vala.page:92
-msgid ""
-"The example shows you the minimum requirements for a <code>.desktop.in</"
-"code> file."
-msgstr ""
-"El ejemplo muestra los requerimientos mínimos de un archivo <code>.desktop."
-"in</code>."
-
-#. (itstool) path: section/code
-#: C/hello-world.js.page:136 C/hello-world.py.page:116
-#: C/hello-world.vala.page:93
-#, no-wrap
-msgid ""
-"[Desktop Entry]\n"
-"Version=1.0\n"
-"Encoding=UTF-8\n"
-"Name=Hello World\n"
-"Comment=Say Hello\n"
-"Exec= prefix@/bin/hello-world\n"
-"Icon=application-default-icon\n"
-"Terminal=false\n"
-"Type=Application\n"
-"StartupNotify=true\n"
-"Categories=GNOME;GTK;Utility;\n"
-msgstr ""
-"[Desktop Entry]\n"
-"Version=1.0\n"
-"Encoding=UTF-8\n"
-"Name=Hello World\n"
-"Comment=Say Hello\n"
-"Exec= prefix@/bin/hello-world\n"
-"Icon=application-default-icon\n"
-"Terminal=false\n"
-"Type=Application\n"
-"StartupNotify=true\n"
-"Categories=GNOME;GTK;Utility;\n"
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:138 C/hello-world.py.page:118
-#: C/hello-world.vala.page:95
-msgid "Now let's go through some parts of the <code>.desktop.in</code> file."
-msgstr "Ahora se verán algunas partes del archivo <code>.desktop.in</code>."
-
-#. (itstool) path: item/title
-#. (itstool) path: td/p
-#: C/hello-world.js.page:140 C/hello-world.py.page:120
-#: C/hello-world.vala.page:97 C/toolbar_builder.py.page:95
-#: C/toolbar_builder.vala.page:78
-msgid "Name"
-msgstr "Name"
-
-#. (itstool) path: item/p
-#: C/hello-world.js.page:140 C/hello-world.py.page:120
-#: C/hello-world.vala.page:97
-msgid "The application name."
-msgstr "El nombre de la aplicación."
-
-#. (itstool) path: item/title
-#: C/hello-world.js.page:141 C/hello-world.py.page:121
-#: C/hello-world.vala.page:98
-msgid "Comment"
-msgstr "Comment"
-
-#. (itstool) path: item/p
-#: C/hello-world.js.page:141 C/hello-world.py.page:121
-#: C/hello-world.vala.page:98
-msgid "A short description of the application."
-msgstr "Una descripción corta de la aplicación."
-
-#. (itstool) path: item/title
-#: C/hello-world.js.page:142 C/hello-world.py.page:122
-#: C/hello-world.vala.page:99
-msgid "Exec"
-msgstr "Exec"
-
-#. (itstool) path: item/p
-#: C/hello-world.js.page:142 C/hello-world.py.page:122
-#: C/hello-world.vala.page:99
-msgid ""
-"Specifies a command to execute when you choose the application from the "
-"menu. In this example exec just tells where to find the <file>hello-world</"
-"file> file and the file takes care of the rest."
-msgstr ""
-"Especifica un comando que ejecutar cuando se elige la aplicación en el menú. "
-"En este ejemplo, «exec» sólo indica dónde encontrar el archivo <code>hello-"
-"world</code> y el archivo se hace cargo del resto."
-
-#. (itstool) path: item/title
-#: C/hello-world.js.page:143 C/hello-world.py.page:123
-#: C/hello-world.vala.page:100
-msgid "Terminal"
-msgstr "Terminal"
-
-#. (itstool) path: item/p
-#: C/hello-world.js.page:143 C/hello-world.py.page:123
-#: C/hello-world.vala.page:100
-msgid ""
-"Specifies whether the command in the Exec key runs in a terminal window."
-msgstr ""
-"Especifica si el comando del campo «Exec» se ejecuta en una ventana de la "
-"terminal."
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:146 C/hello-world.py.page:126
-#: C/hello-world.vala.page:103
-msgid ""
-"To put your application into the appropriate category, you need to add the "
-"necessary categories to the Categories line. More information on the "
-"different categories can be found in the <link href=\"http://standards."
-"freedesktop.org/menu-spec/latest/apa.html\">menu specification</link>."
-msgstr ""
-"Para incluir su aplicación en la categoría correcta, debe añadir las "
-"categorías necesarias a la línea «Categories». Puede encontrar más "
-"información sobre las distintas categorías en la <link href=\"http://"
-"standards.freedesktop.org/menu-spec/latest/apa.html\">especificación del "
-"menú</link>."
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:147 C/hello-world.py.page:127
-#: C/hello-world.vala.page:104
-msgid ""
-"In this example we use an existing icon. For a custom icon you need to have "
-"a .svg file of your icon, stored in <file>/usr/share/icons/hicolor/scalable/"
-"apps</file>. Write the name of your icon file to the .desktop.in file, on "
-"line 7. More information on icons in: <link href=\"https://live.gnome.org/"
-"GnomeGoals/AppIcon\">Installing Icons for Themes</link> and <link href="
-"\"http://freedesktop.org/wiki/Specifications/icon-theme-spec\">on "
-"freedesktop.org: Specifications/icon-theme-spec</link>."
-msgstr ""
-"En este ejemplo se ha usado un icono existente. Para usar un icono "
-"personalizado, necesita un archivo «.svg» con su icono guardado en <file>/usr/"
-"share/icons/hicolor/scalable/apps</file>. Escriba el nombre del archivo del "
-"icono en el archivo «.desktop.in», en la línea 7. Puede obtener más "
-"información sobre los iconos en <link href=\"http://freedesktop.org/wiki/"
-"Specifications/icon-theme-spec\">Instalar iconos para temas</link>, <link "
-"href=\"https://live.gnome.org/GnomeGoals/AppIcon\">Instalar iconos para "
-"temas</link> y en <link href=\"http://freedesktop.org/wiki/Specifications/"
-"icon-theme-spec\">freedesktop.org: especificaciones/icon-theme-spec</link>."
-
-#. (itstool) path: section/title
-#: C/hello-world.js.page:150 C/hello-world.py.page:130
-#: C/hello-world.vala.page:107
-msgid "The build system"
-msgstr "El sistema de construcción"
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:151 C/hello-world.py.page:131
-#: C/hello-world.vala.page:108
-msgid ""
-"To make your application truly a part of the GNOME 3 system you need to "
-"install it with the help of autotools. The autotools build will install all "
-"the necessary files to all the right places."
-msgstr ""
-"Para que su aplicación forme parte realmente del sistema GNOME 3 debe "
-"instalarla con la ayuda de autotools. La construcción autotools instalará "
-"todos los archivos necesarios en las ubicaciones correctas."
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:152 C/hello-world.py.page:132
-#: C/hello-world.vala.page:109
-msgid "For this you need to have the following files:"
-msgstr "Para esto deberá tener los siguientes archivos:"
-
-#. (itstool) path: section/title
-#. (itstool) path: item/p
-#. (itstool) path: section/p
-#: C/hello-world.js.page:155 C/hello-world.py.page:135
-#: C/hello-world.vala.page:112 C/weatherAutotools.js.page:40
-#: C/weatherAutotools.js.page:138
-msgid "autogen.sh"
-msgstr "autogen.sh"
-
-#. (itstool) path: section/code
-#: C/hello-world.js.page:156 C/hello-world.py.page:136
-#: C/hello-world.vala.page:113
-#, no-wrap
-msgid ""
-"#!/bin/sh\n"
-"\n"
-"set -e\n"
-"\n"
-"test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n"
-"test -n \"$srcdir\" || srcdir=.\n"
-"\n"
-"olddir=`pwd`\n"
-"cd \"$srcdir\"\n"
-"\n"
-"# This will run autoconf, automake, etc. for us\n"
-"autoreconf --force --install\n"
-"\n"
-"cd \"$olddir\"\n"
-"\n"
-"if test -z \"$NOCONFIGURE\"; then\n"
-" \"$srcdir\"/configure \"$ \"\n"
-"fi\n"
-msgstr ""
-"#!/bin/sh\n"
-"\n"
-"set -e\n"
-"\n"
-"test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n"
-"test -n \"$srcdir\" || srcdir=.\n"
-"\n"
-"olddir=`pwd`\n"
-"cd \"$srcdir\"\n"
-"\n"
-"# This will run autoconf, automake, etc. for us\n"
-"autoreconf --force --install\n"
-"\n"
-"cd \"$olddir\"\n"
-"\n"
-"if test -z \"$NOCONFIGURE\"; then\n"
-" \"$srcdir\"/configure \"$ \"\n"
-"fi\n"
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:158 C/hello-world.py.page:138
-#: C/hello-world.vala.page:115
-msgid "After the <file>autogen.sh</file> file is ready and saved, run:"
-msgstr ""
-"Una vez que el archivo <file>autogen.sh</file> esté listo y guardado, "
-"ejecute:"
-
-#. (itstool) path: section/screen
-#: C/hello-world.js.page:159 C/hello-world.py.page:139
-#: C/hello-world.vala.page:116
-#, no-wrap
-msgid "<output style=\"prompt\">$ </output><input>chmod +x autogen.sh</input>"
-msgstr "<output style=\"prompt\">$ </output><input>chmod +x autogen.sh</input>"
-
-#. (itstool) path: section/title
-#. (itstool) path: item/p
-#. (itstool) path: section/p
-#: C/hello-world.js.page:163 C/hello-world.py.page:143
-#: C/hello-world.vala.page:120 C/weatherAutotools.js.page:38
-#: C/weatherAutotools.js.page:64
-msgid "Makefile.am"
-msgstr "Makefile.am"
-
-#. (itstool) path: section/code
-#: C/hello-world.js.page:164
-#, no-wrap
-msgid ""
-"# The actual runnable program is set to the SCRIPTS primitive.\n"
-"# # Prefix bin_ tells where to copy this\n"
-"bin_SCRIPTS = hello-world\n"
-"# # List of files to be distributed\n"
-"EXTRA_DIST = \\\n"
-"\t$(bin_SCRIPTS)\n"
-"#\n"
-"# # The desktop files\n"
-"desktopdir = $(datadir)/applications\n"
-"desktop_DATA = \\\n"
-"\thello-world.desktop\n"
-msgstr ""
-"# The actual runnable program is set to the SCRIPTS primitive.\n"
-"# # Prefix bin_ tells where to copy this\n"
-"bin_SCRIPTS = hello-world\n"
-"# # List of files to be distributed\n"
-"EXTRA_DIST = \\\n"
-"\t$(bin_SCRIPTS)\n"
-"#\n"
-"# # The desktop files\n"
-"desktopdir = $(datadir)/applications\n"
-"desktop_DATA = \\\n"
-"\thello-world.desktop\n"
-
-#. (itstool) path: section/title
-#. (itstool) path: item/p
-#. (itstool) path: section/p
-#: C/hello-world.js.page:168 C/hello-world.py.page:148
-#: C/hello-world.vala.page:125 C/weatherAutotools.js.page:39
-#: C/weatherAutotools.js.page:131
-msgid "configure.ac"
-msgstr "configure.ac"
-
-#. (itstool) path: section/code
-#: C/hello-world.js.page:169 C/hello-world.py.page:149
-#, no-wrap
-msgid ""
-"# This file is processed by autoconf to create a configure script\n"
-"AC_INIT([Hello World], 1.0)\n"
-"AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
-"AC_CONFIG_FILES([Makefile hello-world.desktop])\n"
-"AC_OUTPUT\n"
-msgstr ""
-"# This file is processed by autoconf to create a configure script\n"
-"AC_INIT([Hello World], 1.0)\n"
-"AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
-"AC_CONFIG_FILES([Makefile hello-world.desktop])\n"
-"AC_OUTPUT\n"
-
-#. (itstool) path: section/title
-#: C/hello-world.js.page:173 C/hello-world.py.page:153
-#: C/hello-world.vala.page:130
-msgid "README"
-msgstr "README"
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:174 C/hello-world.py.page:154
-#: C/hello-world.vala.page:131
-msgid "Information users should read first. This file can be blank."
-msgstr ""
-"Información que los usuarios deben leer primero. Este archivo puede estar "
-"vacío."
-
-#. (itstool) path: section/p
-#: C/hello-world.js.page:176 C/hello-world.py.page:156
-msgid ""
-"When you have the <file>hello-world</file>, <file>hello-world.desktop.in</"
-"file>, <file>Makefile.am</file>, <file>configure.ac</file> and <file>autogen."
-"sh</file> files with correct information and rights, the <file>README</file> "
-"file can include the following instructions:"
-msgstr ""
-"Cuando tenga los archivos <file>hello-world</file>, <file>hello-world."
-"desktop.in</file>, <file>Makefile.am</file>, <file>configure.ac</file> y "
-"<file>autogen.sh</file> con la información y los permisos correctos, el "
-"archivo <file>README</file> puede incluir las siguientes instrucciones:"
-
-#. (itstool) path: section/code
-#: C/hello-world.js.page:177 C/hello-world.py.page:157
-#, no-wrap
-msgid ""
-"To build and install this program:\n"
-"\n"
-"./autogen.sh --prefix=/home/your_username/.local\n"
-"make install\n"
-"\n"
-"-------------\n"
-"Running the first line above creates the following files:\n"
-"\n"
-"aclocal.m4\n"
-"autom4te.cache\n"
-"config.log\n"
-"config.status\n"
-"configure\n"
-"hello-world.desktop\n"
-"install-sh\n"
-"missing\n"
-"Makefile.in\n"
-"Makefile\n"
-"\n"
-"Running \"make install\", installs the application in /home/your_username/.local/bin\n"
-"and installs the hello-world.desktop file in /home/your_username/.local/share/applications\n"
-"\n"
-"You can now run the application by typing \"Hello World\" in the Overview.\n"
-"\n"
-"----------------\n"
-"To uninstall, type:\n"
-"\n"
-"make uninstall\n"
-"\n"
-"----------------\n"
-"To create a tarball type:\n"
-"\n"
-"make distcheck\n"
-"\n"
-"This will create hello-world-1.0.tar.xz\n"
-msgstr ""
-"Para construir e instalar este programa:\n"
-"\n"
-"./autogen.sh --prefix=/home/usuario/.local\n"
-"make install\n"
-"\n"
-"-------------\n"
-"Al ejecutar la primera línea se crean los siguientes archivos:\n"
-"\n"
-"aclocal.m4\n"
-"autom4te.cache\n"
-"config.log\n"
-"config.status\n"
-"configure\n"
-"helloWorld.desktop\n"
-"install-sh\n"
-"missing\n"
-"Makefile.in\n"
-"Makefile\n"
-"\n"
-"Al ejecutar «make install», se instala la aplicación en /home/usuario/.local/bin\n"
-"y se instala el archivo helloWorld.desktop en /home/usuario/.local/share/applications\n"
-"\n"
-"Ahora puede ejecutar la aplicación escribiendo «Hello World» en la vista general.\n"
-"\n"
-"----------------\n"
-"Para desinstalarla, escriba:\n"
-"\n"
-"make uninstall\n"
-"\n"
-"----------------\n"
-"Para crear un archivador tar escriba:\n"
-"\n"
-"make distcheck\n"
-"\n"
-"Esto creará el archivo hello-world-1.0.tar.xz\n"
-"\n"
-
-#. (itstool) path: info/title
-#: C/hello-world.py.page:9
-msgctxt "text"
-msgid "Hello World (Python)"
-msgstr "Hola mundo (Python)"
-
-#. (itstool) path: item/p
-#: C/hello-world.py.page:32
-msgid "create a small \"Hello, World\" application using Python and GTK+"
-msgstr "crear una pequeña aplicación «Hola, mundo» usando Python y GTK+"
-
-#. (itstool) path: section/code
-#: C/hello-world.py.page:47
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys"
-
-#. (itstool) path: section/code
-#: C/hello-world.py.page:53
-#, no-wrap
-msgid ""
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" # constructor for a Gtk.ApplicationWindow\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Hello World!\", application=app)\n"
-" self.set_default_size(200, 100)\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)"
-msgstr ""
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" # constructor for a Gtk.ApplicationWindow\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Hello World!\", application=app)\n"
-" self.set_default_size(200, 100)\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)"
-
-#. (itstool) path: section/p
-#: C/hello-world.py.page:71 C/hello-world.vala.page:54
-msgid ""
-"Gtk.Application initializes GTK+. It also connects the <gui>x</gui> button "
-"that's automatically generated along with the window to the \"destroy\" "
-"signal."
-msgstr ""
-"«Gtk.Application» inicializa GTK+. También conecta el botón <gui>x</gui>, que "
-"se genera automáticamente junto con la ventana, a la señal «destroy»."
-
-#. (itstool) path: section/p
-#: C/hello-world.py.page:72
-msgid ""
-"We can start building our first window. We do this by creating a class "
-"called <var>MyWindow</var> and assigning it a Gtk.ApplicationWindow."
-msgstr ""
-"Se puede empezar a construir la primera ventana. Esto se hace creando una "
-"clase llamada <var>MyWindow</var> y asignándole una «Gtk.ApplicationWindow»."
-
-#. (itstool) path: section/code
-#: C/hello-world.py.page:78
-#, no-wrap
-msgid ""
-"# Add a label widget to your window\n"
-"\n"
-" # create a label\n"
-" label = Gtk.Label()\n"
-"\n"
-" # set the text of the label\n"
-" label.set_text(\"Hello GNOME!\")\n"
-"\n"
-" # add the label to the window\n"
-" self.add(label)"
-msgstr ""
-"# Add a label widget to your window\n"
-"\n"
-" # create a label\n"
-" label = Gtk.Label()\n"
-"\n"
-" # set the text of the label\n"
-" label.set_text(\"Hello GNOME!\")\n"
-"\n"
-" # add the label to the window\n"
-" self.add(label)"
-
-#. (itstool) path: section/p
-#: C/hello-world.py.page:89
-msgid ""
-"A text label is one of the GTK+ widgets we can use, on account of having "
-"imported the GTK+ library. To use it, we create a variable called "
-"<var>label</var> and set the text that the label will hold. Finally, we "
-"create and run the application:"
-msgstr ""
-"Una etiqueta de texto es uno de los widgets de GTK+ que puede usar si "
-"importó la biblioteca GTK+. Para usarlo, cree una variable nueva llamada "
-"<var>label</var> y establezca el texto que la etiqueta contendrá. "
-"Finalmente, se crea y ejecuta la aplicación:"
-
-#. (itstool) path: section/code
-#: C/hello-world.py.page:91
-#, no-wrap
-msgid ""
-"#run the application\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)"
-msgstr ""
-"#run the application\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)"
-
-#. (itstool) path: section/title
-#: C/hello-world.py.page:101
-msgid "hello-world.py"
-msgstr "hola-mundo.py"
-
-#. (itstool) path: section/code
-#: C/hello-world.py.page:103 C/label.py.page:39
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # constructor for a Gtk.ApplicationWindow\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-" self.set_default_size(200, 100)\n"
-"\n"
-" # create a label\n"
-" label = Gtk.Label()\n"
-" # set the text of the label\n"
-" label.set_text(\"Hello GNOME!\")\n"
-" # add the label to the window\n"
-" self.add(label)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # constructor for a Gtk.ApplicationWindow\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-" self.set_default_size(200, 100)\n"
-"\n"
-" # create a label\n"
-" label = Gtk.Label()\n"
-" # set the text of the label\n"
-" label.set_text(\"Hello GNOME!\")\n"
-" # add the label to the window\n"
-" self.add(label)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/p
-#: C/hello-world.py.page:107
-msgid ""
-"To run this application, first save it as hello-world.py. Then open "
-"Terminal, go to the folder where your application is stored and run:"
-msgstr ""
-"Para ejecutar esta aplicación, primero guárdela como hello-world.py. Luego, "
-"vaya a la carpeta donde está la aplicación."
-
-#. (itstool) path: section/screen
-#: C/hello-world.py.page:108
-#, no-wrap
-msgid "<output style=\"prompt\">$ </output><input>python hello-world.py</input>"
-msgstr "<output style=\"prompt\">$ </output><input>python hola-mundo.py</input>"
-
-#. (itstool) path: section/code
-#: C/hello-world.py.page:144
-#, no-wrap
-msgid ""
-"# The actual runnable program is set to the SCRIPTS primitive.\n"
-"# # Prefix bin_ tells where to copy this\n"
-"bin_SCRIPTS = hello-world.py\n"
-"# # List of files to be distributed\n"
-"EXTRA_DIST= \\\n"
-"\t$(bin_SCRIPTS)\n"
-"#\n"
-"# # The desktop files\n"
-"desktopdir = $(datadir)/applications\n"
-"desktop_DATA = \\\n"
-"\thello-world.desktop\n"
-msgstr ""
-"# The actual runnable program is set to the SCRIPTS primitive.\n"
-"# # Prefix bin_ tells where to copy this\n"
-"bin_SCRIPTS = hello-world.py\n"
-"# # List of files to be distributed\n"
-"EXTRA_DIST= \\\n"
-"\t$(bin_SCRIPTS)\n"
-"#\n"
-"# # The desktop files\n"
-"desktopdir = $(datadir)/applications\n"
-"desktop_DATA = \\\n"
-"\thello-world.desktop\n"
-
-#. (itstool) path: info/title
-#: C/hello-world.vala.page:9
-msgctxt "text"
-msgid "Hello World (Vala)"
-msgstr "Hola mundo (Vala)"
-
-#. (itstool) path: item/p
-#: C/hello-world.vala.page:32
-msgid "create a small \"Hello, World\" application using GTK+"
-msgstr "crear una pequeña aplicación «Hola, mundo» usando GTK+"
-
-#. (itstool) path: section/code
-#: C/hello-world.vala.page:45
-#, no-wrap
-msgid ""
-"class MyApplication : Gtk.Application {\n"
-" protected override void activate () {\n"
-" var window = new Gtk.ApplicationWindow (this);\n"
-" window.set_title (\"Welcome to GNOME\");\n"
-" window.set_default_size (200, 100);\n"
-" window.show_all ();\n"
-" }\n"
-"}"
-msgstr ""
-"class MyApplication : Gtk.Application {\n"
-" protected override void activate () {\n"
-" var window = new Gtk.ApplicationWindow (this);\n"
-" window.set_title (\"Welcome to GNOME\");\n"
-" window.set_default_size (200, 100);\n"
-" window.show_all ();\n"
-" }\n"
-"}"
-
-#. (itstool) path: section/p
-#: C/hello-world.vala.page:55
-msgid ""
-"We can start building our first window. We do this by creating a variable "
-"called <var>window</var> and assigning it a new Gtk.ApplicationWindow."
-msgstr ""
-"Se puede empezar a construir la primera ventana. Esto se hace creando una "
-"variable llamada <var>window</var> y asignándole una «Gtk.ApplicationWindow»."
-
-#. (itstool) path: section/p
-#: C/hello-world.vala.page:56
-msgid ""
-"We give the window a title using <code>set_title</code>. The title can be "
-"any string you want it to be. To be on the safe side, it's best to stick to "
-"UTF-8 encoding."
-msgstr ""
-"Se le asignara una propiedad llamada <code>set_title</code>. El título puede "
-"ser la cadena que quiera pero, para estar seguro, es conveniente que tenga "
-"una codificación UTF-8."
-
-#. (itstool) path: section/code
-#: C/hello-world.vala.page:61
-#, no-wrap
-msgid ""
-"var label = new Gtk.Label (\"Hello GNOME!\");\n"
-" window.add (label);\n"
-msgstr ""
-"var label = new Gtk.Label (\"Hello GNOME!\");\n"
-" window.add (label);\n"
-
-#. (itstool) path: section/p
-#: C/hello-world.vala.page:65
-msgid "Finally, we create and run the application:"
-msgstr "Por último, se crea y ejecuta la aplicación"
-
-#. (itstool) path: section/code
-#: C/hello-world.vala.page:67
-#, no-wrap
-msgid ""
-"int main (string[] args) {\n"
-" return new MyApplication ().run (args);\n"
-"}"
-msgstr ""
-"int main (string[] args) {\n"
-" return new MyApplication ().run (args);\n"
-"}"
-
-#. (itstool) path: section/title
-#: C/hello-world.vala.page:75
-msgid "hello-world.vala"
-msgstr "hello-world.vala"
-
-#. (itstool) path: section/code
-#: C/hello-world.vala.page:77
-#, no-wrap
-msgid ""
-"public class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\tvar label = new Gtk.Label (\"Hello GNOME!\");\n"
-"\t\twindow.add (label);\n"
-"\t\twindow.set_title (\"Welcome to GNOME\");\n"
-"\t\twindow.set_default_size (200, 100);\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"public class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\tvar label = new Gtk.Label (\"Hello GNOME!\");\n"
-"\t\twindow.add (label);\n"
-"\t\twindow.set_title (\"Welcome to GNOME\");\n"
-"\t\twindow.set_default_size (200, 100);\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: section/p
-#: C/hello-world.vala.page:81
-msgid ""
-"To run this application, first save it as hello-world.vala. Then open "
-"Terminal, go to the folder where your application is stored."
-msgstr ""
-"Para ejecutar esta aplicación, primero guárdela como hello-world.vala. "
-"Luego, vaya a la carpeta donde está la aplicación."
-
-#. (itstool) path: section/p
-#: C/hello-world.vala.page:82
-msgid "Compile the program:"
-msgstr "Compilar el programa:"
-
-#. (itstool) path: section/screen
-#: C/hello-world.vala.page:83
-#, no-wrap
-msgid "valac --pkg gtk+-3.0 <file>hello-world.vala</file>"
-msgstr "valac --pkg gtk+-3.0 <file>hello-world.vala</file>"
-
-#. (itstool) path: section/p
-#: C/hello-world.vala.page:84
-msgid "Run the program:"
-msgstr "Ejecutar el programa:"
-
-#. (itstool) path: section/screen
-#: C/hello-world.vala.page:85
-#, no-wrap
-msgid "./<var>hello-world</var>"
-msgstr "./<var>hello-world</var>"
-
-#. (itstool) path: section/code
-#: C/hello-world.vala.page:121
-#, no-wrap
-msgid ""
-"# The actual runnable program is set to the SCRIPTS primitive.\n"
-"# # Prefix bin_ tells where to copy this\n"
-"bin_PROGRAMS = hello-world\n"
-"hello_world_CFLAGS = $(gtk_CFLAGS)\n"
-"hello_world_LDADD = $(gtk_LIBS)\n"
-"hello_world_VALAFLAGS = --pkg gtk+-3.0\n"
-"hello_world_SOURCES = hello-world.vala\n"
-"\n"
-"desktopdir = $(datadir)/applications\n"
-"desktop_DATA = \\\n"
-"\thello-world.desktop\n"
-msgstr ""
-"# The actual runnable program is set to the SCRIPTS primitive.\n"
-"# # Prefix bin_ tells where to copy this\n"
-"bin_PROGRAMS = hello-world\n"
-"hello_world_CFLAGS = $(gtk_CFLAGS)\n"
-"hello_world_LDADD = $(gtk_LIBS)\n"
-"hello_world_VALAFLAGS = --pkg gtk+-3.0\n"
-"hello_world_SOURCES = hello-world.vala\n"
-"\n"
-"desktopdir = $(datadir)/applications\n"
-"desktop_DATA = \\\n"
-"\thello-world.desktop\n"
-
-#. (itstool) path: section/code
-#: C/hello-world.vala.page:126
-#, no-wrap
-msgid ""
-"# This file is processed by autoconf to create a configure script\n"
-"AC_INIT([Hello World], 1.0)\n"
-"AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
-"AC_PROG_CC\n"
-"AM_PROG_VALAC([0.16])\n"
-"PKG_CHECK_MODULES(gtk, gtk+-3.0)\n"
-"AC_CONFIG_FILES([Makefile hello-world.desktop])\n"
-"\n"
-"AC_OUTPUT\n"
-msgstr ""
-"# This file is processed by autoconf to create a configure script\n"
-"AC_INIT([Hello World], 1.0)\n"
-"AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
-"AC_PROG_CC\n"
-"AM_PROG_VALAC([0.16])\n"
-"PKG_CHECK_MODULES(gtk, gtk+-3.0)\n"
-"AC_CONFIG_FILES([Makefile hello-world.desktop])\n"
-"\n"
-"AC_OUTPUT\n"
-
-#. (itstool) path: section/p
-#: C/hello-world.vala.page:133
-msgid ""
-"When you have the <file>hello-world.c</file>, <file>hello-world.desktop.in</"
-"file>, <file>Makefile.am</file>, <file>configure.ac</file> and <file>autogen."
-"sh</file> files with correct information and rights, the <file>README</file> "
-"file can include the following instructions:"
-msgstr ""
-"Cuando tenga los archivos <file>hello-world</file>, <file>hello-world."
-"desktop.in</file>, <file>Makefile.am</file>, <file>configure.ac</file> y "
-"<file>autogen.sh</file> con la información y los permisos correctos, el "
-"archivo <file>README</file> puede incluir las siguientes instrucciones:"
-
-#. (itstool) path: section/code
-#: C/hello-world.vala.page:134
-#, no-wrap
-msgid ""
-"To build and install this program:\n"
-"\n"
-"./autogen.sh --prefix=/home/your_username/.local\n"
-"make\n"
-"make install\n"
-"\n"
-"-------------\n"
-"Running the first line above creates the following files:\n"
-"\n"
-"aclocal.m4\n"
-"autom4te.cache\n"
-"config.log\n"
-"config.status\n"
-"configure\n"
-"depcomp\n"
-"hello-world\n"
-"hello-world.c\n"
-"hello-world.desktop\n"
-"hello_world-hello-world.o\n"
-"hello_world_vala.stamp\n"
-"install-sh\n"
-"missing\n"
-"Makefile.in\n"
-"Makefile\n"
-"\n"
-"Running \"make\" links all the appropriate libraries.\n"
-"\n"
-"Running \"make install\", installs the application in /home/your_username/.local/bin\n"
-"and installs the hello-world.desktop file in /home/your_username/.local/share/applications\n"
-"\n"
-"You can now run the application by typing \"Hello World\" in the Overview.\n"
-"\n"
-"----------------\n"
-"To uninstall, type:\n"
-"\n"
-"make uninstall\n"
-"\n"
-"----------------\n"
-"To create a tarball type:\n"
-"\n"
-"make distcheck\n"
-"\n"
-"This will create hello-world-1.0.tar.xz\n"
-msgstr ""
-"Para compilar e instalar este programa:\n"
-"\n"
-"./autogen.sh --prefix=/home/usuario/.local\n"
-"make install\n"
-"\n"
-"-------------\n"
-"Al ejecutar la primera línea se crean los siguientes archivos:\n"
-"\n"
-"aclocal.m4\n"
-"autom4te.cache\n"
-"config.log\n"
-"config.status\n"
-"configure\n"
-"helloWorld.desktop\n"
-"install-sh\n"
-"missing\n"
-"Makefile.in\n"
-"Makefile\n"
-"\n"
-"Al ejecutar «make install», se instala la aplicación en /home/usuario/.local/bin\n"
-"y se instala el archivo helloWorld.desktop en /home/usuario/.local/share/applications\n"
-"\n"
-"ahora puede ejecutar la aplicación escribiendo «Hello World» en la vista general.\n"
-"\n"
-"----------------\n"
-"Para desinstalarla, escriba:\n"
-"\n"
-"make uninstall\n"
-"\n"
-"----------------\n"
-"Para crear un archivador tar, escriba:\n"
-"\n"
-"make distcheck\n"
-"\n"
-"Esto creará el archivo hello-world-1.0.tar.xz\n"
-"\n"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/image.c.page:22 C/image.js.page:21 C/image.py.page:29
-#: C/image.vala.page:22
-msgctxt "_"
-msgid "external ref='media/image.png' md5='9416aa74d9d6a857783f7a36338e7a02'"
-msgstr "external ref='media/image.png' md5='9416aa74d9d6a857783f7a36338e7a02'"
-
-#. (itstool) path: info/title
-#: C/image.c.page:8
-msgctxt "text"
-msgid "Image (C)"
-msgstr "Image (C)"
-
-#. (itstool) path: info/desc
-#: C/image.c.page:18 C/image.js.page:17 C/image.py.page:25
-#: C/image.vala.page:18
-msgid "A widget displaying an image"
-msgstr "Un widget que muestra una imagen"
-
-#. (itstool) path: page/title
-#: C/image.c.page:21 C/image.js.page:20 C/image.py.page:28
-#: C/image.vala.page:21
-msgid "Image"
-msgstr "Image"
-
-#. (itstool) path: page/p
-#: C/image.c.page:23 C/image.js.page:22 C/image.py.page:30
-#: C/image.vala.page:23
-msgid "This GtkApplication displays an image file from the current directory."
-msgstr ""
-"Esta GtkApplication muestra una archivo de imagen de la carpeta actual."
-
-#. (itstool) path: note/p
-#: C/image.c.page:24 C/image.js.page:23 C/image.vala.page:24
-msgid ""
-"If the image file isn't loaded successfully, the image will contain a "
-"\"broken image\" icon. The <file>filename.png</file> needs to be in the "
-"current directory for this code to work. Use your favorite picture!"
-msgstr ""
-"Si el archivo de imagen no se ha cargado correctamente, la imagen tendrá un "
-"icono de «imagen rota» El archivo <file>nombre_archivo.png</file> debe estar "
-"en la carpeta actual para que este código funcione. Use su imagen favorita."
-
-#. (itstool) path: page/code
-#: C/image.c.page:28
-#, no-wrap
-msgid ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *image;\n"
-"\n"
-" /*Create a window with a title and a default size*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);\n"
-"\n"
-" image = gtk_image_new_from_file (\"gnome-image.png\");\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (image));\n"
-"\n"
-" gtk_widget_show_all (GTK_WIDGET (window));\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *image;\n"
-"\n"
-" /*Create a window with a title and a default size*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);\n"
-"\n"
-" image = gtk_image_new_from_file (\"gnome-image.png\");\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (image));\n"
-"\n"
-" gtk_widget_show_all (GTK_WIDGET (window));\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/image.c.page:35
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkImage.html"
-"\">GtkImage</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkImage.html"
-"\">GtkImage</link>"
-
-#. (itstool) path: info/title
-#: C/image.js.page:7
-msgctxt "text"
-msgid "Image (JavaScript)"
-msgstr "Image (JavaScript)"
-
-#. (itstool) path: page/code
-#: C/image.js.page:27
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ImageExample = new Lang.Class ({\n"
-"\tName: 'Image Example',\n"
-"\n"
-"\t/* Create the application itself\n"
-"\t This boilerplate code is needed to build any GTK+ application. */\n"
-" _init: function () {\n"
-" \t this.application = new Gtk.Application ({\n"
-" \t application_id: 'org.example.jsimage',\n"
-" \t flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" \t });\n"
-"\n"
-"\t// Connect 'activate' and 'startup' signals to the callback functions\n"
-"\tthis.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-"\tthis.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-"\t},\n"
-"\n"
-"\t// Callback function for 'activate' signal presents windows when active\n"
-"\t_onActivate: function () {\n"
-"\t\tthis._window.present ();\n"
-"\t},\n"
-"\n"
-"\t// Callback function for 'startup' signal initializes menus and builds the UI\n"
-"\t_onStartup: function () {\n"
-"\t\tthis._buildUI ();\n"
-"\t},\n"
-"\n"
-"\n"
-"\n"
-"\n"
-"\t// Build the application's UI\n"
-"\t_buildUI: function () {\n"
-"\n"
-"\t\t// Create the application window\n"
-" \tthis._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" \t window_position: Gtk.WindowPosition.CENTER,\n"
-" \t title: \"Welcome to GNOME\",\n"
-" \t default_height: 300,\n"
-" \t default_width: 300 });\n"
-"\n"
-"\t\t// Create the label\n"
-"\t\tthis.jsimage = new Gtk.Image ({file: \"gnome-image.png\"});\n"
-"\t\tthis._window.add (this.jsimage);\n"
-"\n"
-" \t \t// Show the window and all child widgets\n"
-" \t \tthis._window.show_all();\n"
-"\t}\n"
-"\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ImageExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ImageExample = new Lang.Class ({\n"
-"\tName: 'Image Example',\n"
-"\n"
-"\t/* Create the application itself\n"
-"\t This boilerplate code is needed to build any GTK+ application. */\n"
-" _init: function () {\n"
-" \t this.application = new Gtk.Application ({\n"
-" \t application_id: 'org.example.jsimage',\n"
-" \t flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" \t });\n"
-"\n"
-"\t// Connect 'activate' and 'startup' signals to the callback functions\n"
-"\tthis.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-"\tthis.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-"\t},\n"
-"\n"
-"\t// Callback function for 'activate' signal presents windows when active\n"
-"\t_onActivate: function () {\n"
-"\t\tthis._window.present ();\n"
-"\t},\n"
-"\n"
-"\t// Callback function for 'startup' signal initializes menus and builds the UI\n"
-"\t_onStartup: function () {\n"
-"\t\tthis._buildUI ();\n"
-"\t},\n"
-"\n"
-"\n"
-"\n"
-"\n"
-"\t// Build the application's UI\n"
-"\t_buildUI: function () {\n"
-"\n"
-"\t\t// Create the application window\n"
-" \tthis._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" \t window_position: Gtk.WindowPosition.CENTER,\n"
-" \t title: \"Welcome to GNOME\",\n"
-" \t default_height: 300,\n"
-" \t default_width: 300 });\n"
-"\n"
-"\t\t// Create the label\n"
-"\t\tthis.jsimage = new Gtk.Image ({file: \"gnome-image.png\"});\n"
-"\t\tthis._window.add (this.jsimage);\n"
-"\n"
-" \t \t// Show the window and all child widgets\n"
-" \t \tthis._window.show_all();\n"
-"\t}\n"
-"\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ImageExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/image.js.page:34
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html"
-"\">Gtk.Image</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html"
-"\">Gtk.Image</link>"
-
-#. (itstool) path: info/title
-#: C/image.py.page:8
-msgctxt "text"
-msgid "Image (Python)"
-msgstr "Image (Python)"
-
-#. (itstool) path: credit/name
-#: C/image.py.page:20
-msgid "Sindhu S"
-msgstr "Sindhu S"
-
-#. (itstool) path: credit/years
-#: C/image.py.page:22
-msgid "2014"
-msgstr "2014"
-
-#. (itstool) path: note/p
-#: C/image.py.page:32
-msgid ""
-"If the image file is not loaded successfully, the image will contain a "
-"\"broken image\" icon. <file>filename.png</file> needs to be in the current "
-"directory for this code to work."
-msgstr ""
-"Si el archivo de imagen no se carga correctamente, la imagen tendrá un icono "
-"de «imagen rota». El archivo <file>nombre_archivo.png</file> debe estar en la "
-"carpeta actual para que este código funcione."
-
-#. (itstool) path: section/code
-#: C/image.py.page:43
-#, no-wrap
-msgid ""
-"\n"
-" from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # create a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-" self.set_default_size(300, 300)\n"
-"\n"
-" # create an image\n"
-" image = Gtk.Image()\n"
-" # set the content of the image as the file filename.png\n"
-" image.set_from_file(\"gnome-image.png\")\n"
-" # add the image to the window\n"
-" self.add(image)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-"\n"
-" "
-msgstr ""
-"\n"
-" from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # create a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-" self.set_default_size(300, 300)\n"
-"\n"
-" # create an image\n"
-" image = Gtk.Image()\n"
-" # set the content of the image as the file filename.png\n"
-" image.set_from_file(\"gnome-image.png\")\n"
-" # add the image to the window\n"
-" self.add(image)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-"\n"
-" "
-
-#. (itstool) path: section/p
-#: C/image.py.page:47
-msgid ""
-"Another way to obtain what we have in the example is to create the image as "
-"an instance of another class and add it to the instance of <code>MyWindow</"
-"code> in the <code>do_activate(self)</code> method:"
-msgstr ""
-"Otra manera de obtener lo que se tiene en el ejemplo es crear la imagen como "
-"una instancia de otra clase y añadírsela a la instancia de <code>MyWindow</"
-"code> en el método <code>do_activate(self)</code>:"
-
-#. (itstool) path: section/code
-#: C/image.py.page:51
-#, no-wrap
-msgid ""
-"\n"
-" # a class to create a window\n"
-" class MyWindow(Gtk.ApplicationWindow):\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-" self.set_default_size(300, 300)\n"
-"\n"
-" # a class to create an image\n"
-" class MyImage(Gtk.Image):\n"
-" def __init__(self):\n"
-" Gtk.Image.__init__(self)\n"
-" self.set_from_file(\"gnome-image.png\")\n"
-"\n"
-" class MyApplication(Gtk.Application):\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" # create an instance of MyWindow\n"
-" win = MyWindow(self)\n"
-" # create an instance of MyImage and add it to the window\n"
-" win.add(MyImage())\n"
-" # show the window and everything on it\n"
-" win.show_all()\n"
-" "
-msgstr ""
-"\n"
-" # a class to create a window\n"
-" class MyWindow(Gtk.ApplicationWindow):\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-" self.set_default_size(300, 300)\n"
-"\n"
-" # a class to create an image\n"
-" class MyImage(Gtk.Image):\n"
-" def __init__(self):\n"
-" Gtk.Image.__init__(self)\n"
-" self.set_from_file(\"gnome-image.png\")\n"
-"\n"
-" class MyApplication(Gtk.Application):\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" # create an instance of MyWindow\n"
-" win = MyWindow(self)\n"
-" # create an instance of MyImage and add it to the window\n"
-" win.add(MyImage())\n"
-" # show the window and everything on it\n"
-" win.show_all()\n"
-" "
-
-#. (itstool) path: note/p
-#: C/image.py.page:78
-msgid ""
-"To use this code snippet, you will need to add the code that imports "
-"<code>Gtk</code> and <code>GdkPixbuf</code> from <code>gi.repository</code> "
-"and lines that instantiate the <code>MyApplication</code> window."
-msgstr ""
-"Para usar este fragmento de código necesitará aádir el código que importa "
-"<code>Gtk</code> y <code>GdkPixbuf</code> desde <code>gi.repository</code> y "
-"las líneas que crean una instancia de la ventana <code>MyApplication</code>."
-
-#. (itstool) path: section/title
-#: C/image.py.page:85
-msgid "Useful methods for an Image widget"
-msgstr "Métodos útiles para un widget «Image»"
-
-#. (itstool) path: item/p
-#: C/image.py.page:89
-msgid ""
-"To load an image over a network use <code>set_from_pixbuf(pixbuf)</code>, "
-"where <code>pixbuf</code> is a <link href=\"https://developer.gnome.org/gdk-"
-"pixbuf/unstable/index.html\"> GdkPixbuf</link>."
-msgstr ""
-"Para cargar una imagen por red, use <code>set_from_pixbuf(pixbuf)</code>, "
-"donde <code>pixbuf</code> es un <link href=\"http://developer.gnome.org/gdk-"
-"pixbuf/unstable//index.html\"> GdkPixbuf</link>."
-
-#. (itstool) path: item/code
-#: C/image.py.page:93
-#, no-wrap
-msgid ""
-"\n"
-" from gi.repository import Gtk\n"
-" from gi.repository import GdkPixbuf\n"
-" import sys\n"
-"\n"
-" class MyWindow(Gtk.ApplicationWindow):\n"
-" # create a window\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-" self.set_default_size(300, 300)\n"
-"\n"
-" # create a pixbuf from file filename=\"gnome-image.png\", with width=32\n"
-" # and height=64 amd boolean preserve_aspect_ratio=False.\n"
-" pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(\"gnome-image.png\", 64, 128, False)\n"
-"\n"
-" # create an image\n"
-" image = Gtk.Image()\n"
-" # set the content of the image as the pixbuf\n"
-" image.set_from_pixbuf(pixbuf)\n"
-" # add the image to the window\n"
-" self.add(image)\n"
-" "
-msgstr ""
-"\n"
-" from gi.repository import Gtk\n"
-" from gi.repository import GdkPixbuf\n"
-" import sys\n"
-"\n"
-" class MyWindow(Gtk.ApplicationWindow):\n"
-" # create a window\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-" self.set_default_size(300, 300)\n"
-"\n"
-" # create a pixbuf from file filename=\"gnome-image.png\", with width=32\n"
-" # and height=64 amd boolean preserve_aspect_ratio=False.\n"
-" pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(\"gnome-image.png\", 64, 128, False)\n"
-"\n"
-" # create an image\n"
-" image = Gtk.Image()\n"
-" # set the content of the image as the pixbuf\n"
-" image.set_from_pixbuf(pixbuf)\n"
-" # add the image to the window\n"
-" self.add(image)\n"
-" "
-
-#. (itstool) path: item/p
-#: C/image.py.page:115
-msgid ""
-"If <code>preserve_aspect_ratio=True</code> we can use "
-"<code>new_from_file_at_size(filename, width, height)</code>. If <code>width</"
-"code> or <code>height</code> is <code>-1</code>, it is not constrained."
-msgstr ""
-"Si <code>preserve_aspect_ratio=True</code> puede usar "
-"<code>new_from_file_at_size(nombre_archivo, anchura, altura)</code>. Si "
-"<code>anchura</code> o <code>altura</code> son <code>-1</code>, no se "
-"restringen."
-
-#. (itstool) path: item/p
-#: C/image.py.page:119
-msgid ""
-"For loading from an input stream, see <code>new_from_stream()</code> and "
-"<code>new_from_stream_at_scale()</code> in the documentation."
-msgstr ""
-"Para cargar de un flujo de entrada, consulte <code>new_from_stream()</code> "
-"y <code>new_from_stream_at_scale()</code> en la documentación."
-
-#. (itstool) path: item/p
-#: C/image.py.page:131
-msgid ""
-"<link href=\"https://developer.gnome.org/gtk3/unstable/GtkImage.html\"> "
-"GtkImage</link>"
-msgstr ""
-"<link href=\"https://developer.gnome.org/gtk3/unstable/GtkImage.html\"> "
-"GtkImage</link>"
-
-#. (itstool) path: item/p
-#: C/image.py.page:135
-msgid ""
-"<link href=\"https://developer.gnome.org/gtk3/unstable/GtkWindow.html\"> "
-"GtkWindow</link>"
-msgstr ""
-"<link href=\"https://developer.gnome.org/gtk3/unstable/GtkWindow.html\"> "
-"GtkWindow</link>"
-
-#. (itstool) path: info/title
-#: C/image.vala.page:8
-msgctxt "text"
-msgid "Image (Vala)"
-msgstr "Imagen (Vala)"
-
-#. (itstool) path: page/code
-#: C/image.vala.page:27
-#, no-wrap
-msgid ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
-"\n"
-"\t\tvar image = new Gtk.Image ();\n"
-"\t\timage.set_from_file (\"gnome-image.png\");\n"
-"\t\tthis.add (image);\n"
-"\t\tthis.set_default_size (300, 300);\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show_all ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
-"\n"
-"\t\tvar image = new Gtk.Image ();\n"
-"\t\timage.set_from_file (\"gnome-image.png\");\n"
-"\t\tthis.add (image);\n"
-"\t\tthis.set_default_size (300, 300);\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show_all ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/image.vala.page:32 C/separator.vala.page:40
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Application.html"
-"\">GtkApplication</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Application.html"
-"\">GtkApplication</link>"
-
-#. (itstool) path: item/p
-#: C/image.vala.page:33
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ApplicationWindow.html"
-"\">GtkApplicationWindow</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ApplicationWindow.html"
-"\">GtkApplicationWindow</link>"
-
-#. (itstool) path: item/p
-#: C/image.vala.page:34 C/paned.vala.page:38
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Image.html\">GtkImage</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Image.html\">GtkImage</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/image-viewer.c.page:39 C/image-viewer.cpp.page:37
-#: C/image-viewer.js.page:47 C/image-viewer.py.page:46
-#: C/image-viewer.vala.page:54
-msgctxt "_"
-msgid ""
-"external ref='media/image-viewer.png' md5='7720360611243b14283b83527be968c2'"
-msgstr ""
-"external ref='media/image-viewer.png' md5='7720360611243b14283b83527be968c2'"
-
-#. (itstool) path: info/title
-#: C/image-viewer.c.page:8
-msgctxt "text"
-msgid "Image viewer (C)"
-msgstr "Visor de imágenes (C)"
-
-#. (itstool) path: info/desc
-#: C/image-viewer.c.page:11
-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."
-
-#. (itstool) path: page/title
-#: C/image-viewer.c.page:29 C/image-viewer.cpp.page:27
-#: C/image-viewer.js.page:29 C/image-viewer.py.page:29
-#: C/image-viewer.vala.page:37
-msgid "Image viewer"
-msgstr "Visor de imágenes"
-
-#. (itstool) path: synopsis/p
-#: C/image-viewer.c.page:32 C/image-viewer.cpp.page:30
-#: C/message-board.c.page:29 C/record-collection.js.page:32
-msgid "In this tutorial, you will learn:"
-msgstr "En este tutorial aprenderá:"
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:34
-msgid "Some basic concepts of C/GObject programming"
-msgstr "Algunos conceptos básicos de programación en C/GObject"
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:35
-msgid "How to write a Gtk application in C"
-msgstr "Cómo escribir una aplicación GTK en C"
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:49
-msgid ""
-"Choose <gui>GTK+ (Simple)</gui> from the <gui>C</gui> tab, click "
-"<gui>Continue</gui>, and fill out your details on the next few pages. Use "
-"<file>image-viewer</file> as project name and directory."
-msgstr ""
-"Seleccione <gui>GTK+ (simple)</gui> en la pestaña <gui>C</gui>, pulse "
-"<gui>Continuar</gui>, y rellene los detalles en las siguientes páginas. Use "
-"<file>visor-imagenes</file> como nombre del proyecto y de la carpeta."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:52
-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."
-msgstr ""
-"Asegúrese de que <gui>Usar GtkBuilder para la interfaz del usuario</gui> "
-"está desactivado, ya que, en este tutorial, la IU se creará manualmente. "
-"Revise el tutorial del <link xref=\"guitar-tuner.c\">afinador de guitarra</"
-"link> si quiere aprender a usar el constructor de interfaces."
-
-#. (itstool) path: section/p
-#: C/image-viewer.c.page:67
-msgid ""
-"C is a rather verbose language, so don't be surprised that the file contains "
-"quite a lot of code. Most of it is template code. It loads an (empty) window "
-"and shows it. More details are given below; skip this list if you understand "
-"the basics:"
-msgstr ""
-"C es un lenguaje más detallado, por lo que no se sorprenda de que el archivo "
-"contiene un gran cantidad de código. La mayor parte es código de plantilla. "
-"Carga una ventana (vacía) y se muestra. A continuación se ofrecen más "
-"detalles; omita esta lista si entiende los conceptos básicos:"
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:74
-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."
-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."
-
-#. (itstool) path: section/title
-#: C/image-viewer.c.page:90 C/image-viewer.cpp.page:87
-#: C/image-viewer.vala.page:139
-msgid "Creating the user interface"
-msgstr "Crear la interfaz de usuario"
-
-#. (itstool) path: section/p
-#: C/image-viewer.c.page:91
-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>:"
-msgstr ""
-"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>:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.c.page:94
-#, no-wrap
-msgid ""
-"\n"
-"static GtkWidget*\n"
-"create_window (void)\n"
-"{\n"
-"\tGtkWidget *window;\n"
-"\tGtkWidget *button;\n"
-"\tGtkWidget *image;\n"
-"\tGtkWidget *box;\n"
-"\n"
-"\t/* Set up the UI */\n"
-"\twindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n"
-"\tgtk_window_set_title (GTK_WINDOW (window), \"image-viewer-c\");\n"
-"\n"
-"\tbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);\n"
-"\tbutton = gtk_button_new_with_label (_(\"Open image\"));\n"
-"\timage = gtk_image_new ();\n"
-"\n"
-"\tgtk_box_pack_start (GTK_BOX (box), image, TRUE, TRUE, 0);\n"
-"\tgtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);\n"
-"\n"
-"\tgtk_container_add (GTK_CONTAINER (window), box);\n"
-"\n"
-"\t/* Connect signals */\n"
-"\n"
-"\t/* Show open dialog when opening a file */\n"
-"\tg_signal_connect (button, \"clicked\", G_CALLBACK (on_open_image), image);\n"
-"\n"
-"\t/* Exit when the window is closed */\n"
-"\tg_signal_connect (window, \"destroy\", G_CALLBACK (gtk_main_quit), NULL);\n"
-"\n"
-"\treturn window;\n"
-"}\n"
-msgstr ""
-"\n"
-"static GtkWidget*\n"
-"create_window (void)\n"
-"{\n"
-"\tGtkWidget *window;\n"
-"\tGtkWidget *button;\n"
-"\tGtkWidget *image;\n"
-"\tGtkWidget *box;\n"
-"\n"
-"\t/* Set up the UI */\n"
-"\twindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n"
-"\tgtk_window_set_title (GTK_WINDOW (window), \"image-viewer-c\");\n"
-"\n"
-"\tbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);\n"
-"\tbutton = gtk_button_new_with_label (_(\"Open image\"));\n"
-"\timage = gtk_image_new ();\n"
-"\n"
-"\tgtk_box_pack_start (GTK_BOX (box), image, TRUE, TRUE, 0);\n"
-"\tgtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);\n"
-"\n"
-"\tgtk_container_add (GTK_CONTAINER (window), box);\n"
-"\n"
-"\t/* Connect signals */\n"
-"\n"
-"\t/* Show open dialog when opening a file */\n"
-"\tg_signal_connect (button, \"clicked\", G_CALLBACK (on_open_image), image);\n"
-"\n"
-"\t/* Exit when the window is closed */\n"
-"\tg_signal_connect (window, \"destroy\", G_CALLBACK (gtk_main_quit), NULL);\n"
-"\n"
-"\treturn window;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:129
-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. The macros like <code>GTK_BOX</code> are used for dynamic type "
-"checking and casting which is needed as C doesn't support object-orientation "
-"out-of-the-box."
-msgstr ""
-"La primera línea crea los widgets que se quieren usar: un botón para abrir "
-"una imagen, el widget para ver la imagen y la caja que se usará como "
-"contenedor. Las macros como <code>GTK_BOX</code> se usan para comprobaciones "
-"de tipos dinámicos y conversiones de tipos necesarias, ya que C no soporta "
-"orientación a objetos."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:134
-msgid ""
-"The calls to <code>gtk_box_pack_start</code> add the two widgets to the box "
-"and define their behaviour. The image will expand into any available space "
-"while 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 ""
-"Las llamadas a <code>gtk_box_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 GTK+ 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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:140
-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."
-msgstr ""
-"Se debe definir qué sucede cuando el usuario pulsa el botón. GTK+ usa el "
-"concepto de <em>señales</em>. Cuando se pulsa el botón, emite la señal "
-"<em>clicked</em>, que se puede conectar a alguna acción. Esto se ha hecho "
-"usando el método <code>g_signal_connect</code>, que indica a GTK+ que llame "
-"a la función <code>on_image_open</code> cuando se pulsa el botón y que pase "
-"la imagen como un argumento adicional a la función. El <em>retorno de la "
-"llamada</em> se definirá en la siguiente sección."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:145
-msgid ""
-"The last <code>g_signal_connect()</code> makes sure that the application "
-"exits when the window is closed."
-msgstr ""
-"La última <code>g_signal_connect()</code> se asegura de que la aplicación "
-"finaliza al cerrar la ventana."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:148
-msgid ""
-"As a last step, make sure to replace the <code>gtk_widget_show</code> call "
-"in the <code>main()</code> function by <code>gtk_widget_show_all()</code> to "
-"show the window and all the widgets it contains."
-msgstr ""
-"Como último paso, asegúrese de reemplazar la llamada <code>gtk_widget_show</"
-"code>, en la función <code>main()</code>, por <code>gtk_widget_show_all()</"
-"code>, para mostrar todos los widgets que contiene la ventana."
-
-#. (itstool) path: section/title
-#: C/image-viewer.c.page:155 C/image-viewer.cpp.page:142
-#: C/image-viewer.vala.page:210
-msgid "Showing the image"
-msgstr "Mostrar la imagen"
-
-#. (itstool) path: section/p
-#: C/image-viewer.c.page:156
-msgid ""
-"We will now define the signal handler for the <em>clicked</em> signal or the "
-"button we mentioned before. Add this code before the <code>create_window()</"
-"code> method."
-msgstr ""
-"Ahora se definirá el manejador de la señal para la señal <em>clicked</em> en "
-"el botón mencionado anteriormente. Añada este código antes del método "
-"<code>create_window()</code>."
-
-#. (itstool) path: section/code
-#: C/image-viewer.c.page:159
-#, no-wrap
-msgid ""
-"\n"
-"static void\n"
-"on_open_image (GtkButton* button, gpointer user_data)\n"
-"{\n"
-"\tGtkWidget *image = GTK_WIDGET (user_data);\n"
-"\tGtkWidget *toplevel = gtk_widget_get_toplevel (image);\n"
-"\tGtkFileFilter *filter = gtk_file_filter_new ();\n"
-"\tGtkWidget *dialog = gtk_file_chooser_dialog_new (_(\"Open image\"),\n"
-"\t GTK_WINDOW (toplevel),\n"
-"\t GTK_FILE_CHOOSER_ACTION_OPEN,\n"
-"\t GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,\n"
-"\t GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,\n"
-"\t NULL);\n"
-"\n"
-"\tgtk_file_filter_add_pixbuf_formats (filter);\n"
-"\tgtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog),\n"
-"\t filter);\n"
-"\n"
-"\tswitch (gtk_dialog_run (GTK_DIALOG (dialog)))\n"
-"\t{\n"
-"\t\tcase GTK_RESPONSE_ACCEPT:\n"
-"\t\t{\n"
-"\t\t\tgchar *filename =\n"
-"\t\t\t\tgtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));\n"
-"\t\t\tgtk_image_set_from_file (GTK_IMAGE (image), filename);\n"
-"\t\t\tbreak;\n"
-"\t\t}\n"
-"\t\tdefault:\n"
-"\t\t\tbreak;\n"
-"\t}\n"
-"\tgtk_widget_destroy (dialog);\n"
-"}\n"
-msgstr ""
-"\n"
-"static void\n"
-"on_open_image (GtkButton* button, gpointer user_data)\n"
-"{\n"
-"\tGtkWidget *image = GTK_WIDGET (user_data);\n"
-"\tGtkWidget *toplevel = gtk_widget_get_toplevel (image);\n"
-"\tGtkFileFilter *filter = gtk_file_filter_new ();\n"
-"\tGtkWidget *dialog = gtk_file_chooser_dialog_new (_(\"Open image\"),\n"
-"\t GTK_WINDOW (toplevel),\n"
-"\t GTK_FILE_CHOOSER_ACTION_OPEN,\n"
-"\t GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,\n"
-"\t GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,\n"
-"\t NULL);\n"
-"\n"
-"\tgtk_file_filter_add_pixbuf_formats (filter);\n"
-"\tgtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog),\n"
-"\t filter);\n"
-"\n"
-"\tswitch (gtk_dialog_run (GTK_DIALOG (dialog)))\n"
-"\t{\n"
-"\t\tcase GTK_RESPONSE_ACCEPT:\n"
-"\t\t{\n"
-"\t\t\tgchar *filename =\n"
-"\t\t\t\tgtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));\n"
-"\t\t\tgtk_image_set_from_file (GTK_IMAGE (image), filename);\n"
-"\t\t\tbreak;\n"
-"\t\t}\n"
-"\t\tdefault:\n"
-"\t\t\tbreak;\n"
-"\t}\n"
-"\tgtk_widget_destroy (dialog);\n"
-"}\n"
-
-#. (itstool) path: section/p
-#: C/image-viewer.c.page:192 C/image-viewer.cpp.page:178
-#: C/image-viewer.js.page:283 C/image-viewer.py.page:197
-msgid ""
-"This is a bit more complicated than anything we've attempted so far, so "
-"let's break it down:"
-msgstr ""
-"Esto es un poco más complicado que todo lo que se ha intentado hasta ahora, "
-"así que se puede desglosar:"
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:194
-msgid ""
-"The first argument of the signal is always the widget that sent the signal. "
-"Sometimes other arguments related to the signal come after that, but "
-"<em>clicked</em> doesn't have any. Next is the <code>user_data</code> "
-"argument which is a pointer to the data we passed when connecting the "
-"signal. In this case it is our <code>GtkImage</code> object."
-msgstr ""
-"El primer argumento de la señal es siempre el widget que envía la señal. "
-"Algunas veces se añaden otros argumentos relativos a la señal, pero "
-"<em>clicked</em> no tiene ninguno. Lo siguiente es el argumento "
-"<code>user_data</code>, que es un puntero a los datos que se han pasado al "
-"conectar la señal. En este caso, es el objeto <code>GtkImage</code>."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:200
-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."
-msgstr ""
-"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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:204 C/image-viewer.cpp.page:186
-#: C/image-viewer.js.page:290 C/image-viewer.py.page:204
-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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:207
-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."
-msgstr ""
-"Las dos líneas siguientes restringen el diálogo <gui>Abrir</gui> para que "
-"sólo muestre archivos que se puedan abrir con «GtkImage». Primero se crea un "
-"objeto de filtro; luego se añaden los tipos de archivos soportados por el "
-"<code>GdkPixbuf</code> (que incluye la mayoría de los 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>."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:210
-msgid ""
-"<code>gtk_dialog_run</code> displays the <gui>Open</gui> dialog. The dialog "
-"will wait for the user to choose an image; when they do, "
-"<code>gtk_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."
-msgstr ""
-"<code>gtk_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>gtk_dialog_run</code> devolverá el valor <code>GTK_RESPONSE_ACCEPT</"
-"code> (devolvería <code>GTK_RESPONSE_CANCEL</code> si el usuario pulsara "
-"<gui>Cancelar</gui>). La sentencia <code>switch</code> comprueba esto."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:212
-msgid ""
-"Assuming that the user did click <gui>Open</gui>, the next line sets the "
-"<code>file</code> property of the GtkImage to the filename of the image "
-"selected by the user. The GtkImage will then load and display the chosen "
-"image."
-msgstr ""
-"Asumiendo que el usuario pulsó <gui>Abrir</gui>, la siguiente línea "
-"establece la propiedad <code>file</code> de la «GtkImage» con el nombre del "
-"archivo de imagen seleccionado por el usuario. La «GtkImage» cargará y "
-"mostrará la imagen elegida."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:215
-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."
-
-#. (itstool) path: section/p
-#: C/image-viewer.c.page:224 C/image-viewer.cpp.page:212
-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!"
-msgstr ""
-"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."
-
-#. (itstool) path: section/p
-#: C/image-viewer.c.page:229
-msgid ""
-"If you run into problems with the tutorial, compare your code with this "
-"<link href=\"image-viewer/image-viewer.c\">reference code</link>."
-msgstr ""
-"Si tiene problemas con este tutorial, compare su código con este <link href="
-"\"image-viewer/image-viewer.c\">código de referencia</link>."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:237 C/image-viewer.cpp.page:225
-#: C/image-viewer.js.page:325 C/image-viewer.py.page:239
-#: C/image-viewer.vala.page:298
-msgid ""
-"Have the user select a directory rather than a file, and provide controls to "
-"cycle through all of the images in a 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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:240 C/image-viewer.cpp.page:228
-#: C/image-viewer.js.page:328 C/image-viewer.py.page:242
-#: C/image-viewer.vala.page:301
-msgid ""
-"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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:241 C/image-viewer.cpp.page:229
-#: C/image-viewer.js.page:329 C/image-viewer.py.page:243
-#: C/image-viewer.vala.page:302
-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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:244 C/image-viewer.cpp.page:232
-#: C/image-viewer.js.page:332 C/image-viewer.py.page:246
-#: C/image-viewer.vala.page:305
-msgid ""
-"Allow the user to load images from network shares, scanners, and other more "
-"complicated sources."
-msgstr ""
-"Permitir al usuario cargar imágenes desde recursos de red compartidos, "
-"escáneres y otras fuentes más complicadas."
-
-#. (itstool) path: item/p
-#: C/image-viewer.c.page:245 C/image-viewer.cpp.page:233
-#: C/image-viewer.js.page:333 C/image-viewer.py.page:247
-#: C/image-viewer.vala.page:306
-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."
-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."
-
-#. (itstool) path: info/desc
-#: C/image-viewer.cpp.page:9
-msgid "A little bit more than a simple \"Hello world\" GTKmm application."
-msgstr "Algo más que una sencilla aplicación «Hola mundo» en GTKmm."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:32
-msgid "Some basic concepts of C++/GObject programming"
-msgstr "Algunos conceptos básicos de programación en C++/GObject"
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:33
-msgid "How to write a Gtk application in C++"
-msgstr "Cómo escribir una aplicación GTK en C++"
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:47
-msgid ""
-"Choose <gui>GTKmm (Simple)</gui> from the <gui>C++</gui> tab, click "
-"<gui>Forward</gui>, and fill out your details on the next few pages. Use "
-"<file>image-viewer</file> as project name and directory."
-msgstr ""
-"Elija <gui>GTKmm (simple)</gui> de la pestaña <gui>C++</gui>, pulse "
-"<gui>Adelante</gui> y rellene los detalles en las siguientes páginas. Use "
-"<file>visor-imagenes</file> como nombre de proyecto y de carpeta."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:50
-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.cpp\">Guitar-Tuner</link> tutorial if you want to learn how "
-"to use the interface builder."
-msgstr ""
-"Asegúrese de que <gui>Usar GtkBuilder para la interfaz del usuario</gui> "
-"está desactivado, ya que, en este tutorial, la IU se creará manualmente. "
-"Revise el tutorial del <link xref=\"guitar-tuner.cpp\">afinador de guitarra</"
-"link> si quiere aprender a usar el constructor de interfaces."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:55
-msgid ""
-"Click <gui>Apply</gui> and the project will be created for you. Open "
-"<file>src/main.cc</file> from the <gui>Project</gui> or <gui>File</gui> "
-"tabs. You should see some code which starts with the lines:"
-msgstr ""
-"Pulse <gui>Aplicar</gui> y se creará el proyecto. Abra <file>src/main.cc</"
-"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:"
-
-#. (itstool) path: item/code
-#: C/image-viewer.cpp.page:56
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtkmm.h>\n"
-"#include <iostream>\n"
-"\n"
-"#include \"config.h\">"
-msgstr ""
-"\n"
-"#include <gtkmm.h>\n"
-"#include <iostream>\n"
-"\n"
-"#include \"config.h\">"
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:70
-msgid ""
-"The three <code>#include</code> lines at the top include the <code>config</"
-"code> (useful autoconf build defines), <code>gtkmm</code> (user interface) "
-"and <code>iostream</code> (C++-STL) libraries. Functions from these "
-"libraries are used in the rest of the code."
-msgstr ""
-"Las tres líneas <code>#include</code> en la parte superior incluyen las "
-"bibliotecas <code>config</code> (definiciones útiles para construcción con "
-"autoconf), <code>gtkmm</code> (interfaz de usuario) <code>iostream</code> (C+"
-"+-STL). Las funciones de estas bibliotecas se usan en el resto del código."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:73
-msgid ""
-"The <code>main</code> function creates a new (empty) window and sets the "
-"window title."
-msgstr ""
-"La función <code>main</code> crea una ventana (vacía) nueva y establece el "
-"título de la ventana."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:76
-msgid ""
-"The <code>kit::run()</code> call starts the GTKmm main loop, which runs the "
-"user interface and starts listening for events (like clicks and key "
-"presses). As we give the window as an argument to that function, the "
-"application will automatically exit when that window is closed."
-msgstr ""
-"La llamada <code>kit::run()</code> inicia el bucle principal de GTKmm, que "
-"ejecuta la interfaz de usuario y empieza a escuchar eventos (como "
-"pulsaciones del ratón y del teclado). Como se ha pasado la ventana como "
-"argumento a esta función, la aplicación se cerrará automáticamente cuando se "
-"cierre la ventana."
-
-#. (itstool) path: section/p
-#: C/image-viewer.cpp.page:88
-msgid ""
-"Now we will bring life into the empty window. GTKmm organizes the user "
-"interface with <code>Gtk::Container</code>s that can contain other widgets "
-"and even other containers. Here we will use the simplest available "
-"container, a <code>Gtk::Box</code>:"
-msgstr ""
-"Ahora se dará vida a la ventana vacía. GTKmm organiza la interfaz de usuario "
-"con varios <code>Gtk::Container</code> que pueden contener otros widgets e "
-"incluso otros contenedores. Aquí se usará el contenedor más sencillo "
-"disponible, una <code>Gtk::Box</code>:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.cpp.page:91
-#, no-wrap
-msgid ""
-"\n"
-"int\n"
-"main (int argc, char *argv[])\n"
-"{\n"
-"\tGtk::Main kit(argc, argv);\n"
-"\n"
-"\tGtk::Window main_win;\n"
-"\tmain_win.set_title (\"image-viewer-cpp\");\n"
-"\n"
-"\tGtk::Box* box = Gtk::manage(new Gtk::Box());\n"
-"\tbox->set_orientation (Gtk::ORIENTATION_VERTICAL);\n"
-"\tbox->set_spacing(6);\n"
-"\tmain_win.add(*box);\n"
-"\n"
-"\timage = Gtk::manage(new Gtk::Image());\n"
-"\tbox->pack_start (*image, true, true);\n"
-"\n"
-"\tGtk::Button* button = Gtk::manage(new Gtk::Button(\"Open Image…\"));\n"
-"\tbutton->signal_clicked().connect (\n"
-"\t\tsigc::ptr_fun(&on_open_image));\n"
-"\tbox->pack_start (*button, false, false);\n"
-"\n"
-"\tmain_win.show_all_children();\n"
-"\tkit.run(main_win);\n"
-"\n"
-"\treturn 0;\n"
-"}\n"
-msgstr ""
-"\n"
-"int\n"
-"main (int argc, char *argv[])\n"
-"{\n"
-"\tGtk::Main kit(argc, argv);\n"
-"\n"
-"\tGtk::Window main_win;\n"
-"\tmain_win.set_title (\"image-viewer-cpp\");\n"
-"\n"
-"\tGtk::Box* box = Gtk::manage(new Gtk::Box());\n"
-"\tbox->set_orientation (Gtk::ORIENTATION_VERTICAL);\n"
-"\tbox->set_spacing(6);\n"
-"\tmain_win.add(*box);\n"
-"\n"
-"\timage = Gtk::manage(new Gtk::Image());\n"
-"\tbox->pack_start (*image, true, true);\n"
-"\n"
-"\tGtk::Button* button = Gtk::manage(new Gtk::Button(\"Open Image…\"));\n"
-"\tbutton->signal_clicked().connect (\n"
-"\t\tsigc::ptr_fun(&on_open_image));\n"
-"\tbox->pack_start (*button, false, false);\n"
-"\n"
-"\tmain_win.show_all_children();\n"
-"\tkit.run(main_win);\n"
-"\n"
-"\treturn 0;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:121
-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."
-msgstr ""
-"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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:124
-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."
-msgstr ""
-"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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:130
-msgid ""
-"We need to define what happens when the user clicks on the button. GTKmm "
-"uses the concept of <em>signals</em>. When the button is clicked, it fires "
-"the <em>clicked</em> signal, which we can connect to some action. This is "
-"done using the <code>signal_clicked().connect</code> method which tells "
-"GTKmm to call the <code>on_open_image</code> function when the button is "
-"clicked. We will define the <em>callback</em> in the next section."
-msgstr ""
-"Se debe definir qué sucede cuando el usuario pulsa el botón. GTKmm usa el "
-"concepto de <em>señales</em>. Cuando se pulsa el botón, emite la señal "
-"<em>clicked</em>, que se puede conectar a alguna acción. Esto se ha hecho "
-"usando el método <code>signal_clicked().connect</code>, que indica a GTKmm "
-"que llame a la función <code>on_open_image</code> cuando se pulsa el botón y "
-"que pase la imagen como un argumento adicional a la función. El <em>retorno "
-"de la llamada</em> se definirá en la siguiente sección."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:134
-msgid ""
-"The last step is to show all widgets in the window using "
-"<code>show_all_children()</code>. This is equivalent to using the <code>show"
-"()</code> method on all our child widgets."
-msgstr ""
-"El último paso es mostrar todos los widgets en la ventana usando "
-"<code>show_all_children()</code>. Esto es equivalente a usar el método "
-"<code>show()</code> en cada uno de los widgets."
-
-#. (itstool) path: section/p
-#: C/image-viewer.cpp.page:143
-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."
-msgstr ""
-"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>."
-
-#. (itstool) path: section/code
-#: C/image-viewer.cpp.page:146
-#, no-wrap
-msgid ""
-"\n"
-"Gtk::Image* image = 0;\n"
-"\n"
-"static void\n"
-"on_open_image ()\n"
-"{\n"
-"\tGtk::FileChooserDialog dialog(\"Open image\",\n"
-"\t Gtk::FILE_CHOOSER_ACTION_OPEN);\n"
-"\tdialog.add_button (Gtk::Stock::OPEN,\n"
-"\t Gtk::RESPONSE_ACCEPT);\n"
-"\tdialog.add_button (Gtk::Stock::CANCEL,\n"
-"\t Gtk::RESPONSE_CANCEL);\n"
-"\n"
-"\tGlib::RefPtr<Gtk::FileFilter> filter =\n"
-"\t\tGtk::FileFilter::create();\n"
-"\tfilter->add_pixbuf_formats();\n"
-"\tfilter->set_name(\"Images\");\n"
-"\tdialog.add_filter (filter);\n"
-"\n"
-"\tconst int response = dialog.run();\n"
-"\tdialog.hide();\n"
-"\n"
-"\tswitch (response)\n"
-"\t{\n"
-"\t\tcase Gtk::RESPONSE_ACCEPT:\n"
-"\t\t\timage->set(dialog.get_filename());\n"
-"\t\t\tbreak;\n"
-"\t\tdefault:\n"
-"\t\t\tbreak;\n"
-"\t}\n"
-"}\n"
-msgstr ""
-"\n"
-"Gtk::Image* image = 0;\n"
-"\n"
-"static void\n"
-"on_open_image ()\n"
-"{\n"
-"\tGtk::FileChooserDialog dialog(\"Open image\",\n"
-"\t Gtk::FILE_CHOOSER_ACTION_OPEN);\n"
-"\tdialog.add_button (Gtk::Stock::OPEN,\n"
-"\t Gtk::RESPONSE_ACCEPT);\n"
-"\tdialog.add_button (Gtk::Stock::CANCEL,\n"
-"\t Gtk::RESPONSE_CANCEL);\n"
-"\n"
-"\tGlib::RefPtr<Gtk::FileFilter> filter =\n"
-"\t\tGtk::FileFilter::create();\n"
-"\tfilter->add_pixbuf_formats();\n"
-"\tfilter->set_name(\"Images\");\n"
-"\tdialog.add_filter (filter);\n"
-"\n"
-"\tconst int response = dialog.run();\n"
-"\tdialog.hide();\n"
-"\n"
-"\tswitch (response)\n"
-"\t{\n"
-"\t\tcase Gtk::RESPONSE_ACCEPT:\n"
-"\t\t\timage->set(dialog.get_filename());\n"
-"\t\t\tbreak;\n"
-"\t\tdefault:\n"
-"\t\t\tbreak;\n"
-"\t}\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:181
-msgid ""
-"The dialog for choosing the file is created using the <code>Gtk::"
-"FileChooserDialog</code> constructor. This takes the title and type of the "
-"dialog. In our case, it is an <em>Open</em> dialog."
-msgstr ""
-"El diálogo para elegir el archivo se crea usando el constructor de "
-"<code>Gtk::FileChooserDialog</code>. La función toma el título y el tipo del "
-"diálogo. En este caso, es un diálogo de tipo <em>Open</em>."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:185
-msgid ""
-"The next two lines add an <em>Open</em> and a <em>Close</em> button to the "
-"dialog."
-msgstr ""
-"Las siguientes dos líneas añaden un botón <em>Abrir</em> y <em>Cerrar</em> "
-"en el diálogo."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:187
-msgid ""
-"The second argument to the <code>add_button()</code> method is a value to "
-"identify the clicked button. We use predefined values provided by GTKmm "
-"here, too."
-msgstr ""
-"El segundo argumento del método <code>add_button()</code> es un valor para "
-"identificar el botón pulsado. Aquí también se usan valores predefinidos "
-"proporcionados por GTKmm."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:192
-msgid ""
-"The next two lines restrict the <gui>Open</gui> dialog to only display files "
-"which can be opened by <code>Gtk::Image</code>. A filter object is created "
-"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 ""
-"Las dos líneas siguientes restringen el diálogo <gui>Abrir</gui> para que "
-"sólo muestre archivos que se puedan abrir con <code>Gtk::Image</code>. "
-"Primero se crea un objeto de filtro; luego se añaden los tipos de archivos "
-"soportados por el <code>Gdk::Pixbuf</code> (que incluye la mayoría de los "
-"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>."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:193
-msgid ""
-"<code>Glib::RefPtr</code> is a smart pointer used here, that makes sure that "
-"the filter is destroyed when there is no reference to it anymore."
-msgstr ""
-"<code>Glib::RefPtr</code> es un puntero inteligente usado aquí que se "
-"asegura de que el filtro se destruye cuando ya no se hace ninguna referencia "
-"a él."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:197
-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."
-msgstr ""
-"<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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:200
-msgid ""
-"We hide the <gui>Open</gui> dialog because we don't need it any more. The "
-"dialog would be hidden later anyway, as it is only a local variable and is "
-"destroyed (and therefore hidden) when the scope ends."
-msgstr ""
-"Se oculta el diálogo <gui>Abrir</gui> porque ya no se necesita más. El "
-"diálogo se ocultará de todos modos, ya que sólo es una variable local, y se "
-"destruye (y por lo tanto se oculta) cuando el ámbito termina."
-
-#. (itstool) path: item/p
-#: C/image-viewer.cpp.page:203
-msgid ""
-"Assuming that the user did click <gui>Open</gui>, the next line loads the "
-"file into the <code>Gtk::Image</code> so that it is displayed."
-msgstr ""
-"Asumiendo que el usuario pulsó <gui>Abrir</gui>, la siguiente línea carga el "
-"archivo en la <code>Gtk::Image</code>, por lo que se muestra."
-
-#. (itstool) path: section/p
-#: C/image-viewer.cpp.page:217
-msgid ""
-"If you run into problems with the tutorial, compare your code with this "
-"<link href=\"image-viewer/image-viewer.cc\">reference code</link>."
-msgstr ""
-"Si tiene problemas con este tutorial, compare su código con este <link href="
-"\"image-viewer/image-viewer.cc\">código de referencia</link>."
-
-#. (itstool) path: info/title
-#: C/image-viewer.js.page:8
-msgctxt "text"
-msgid "Image viewer (JavaScript)"
-msgstr "Visor de imágenes (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/image-viewer.js.page:11
-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»; escriba un visor de "
-"imágenes en GTK+. Incluye una introducción al lenguaje JavaScript."
-
-#. (itstool) path: credit/name
-#: C/image-viewer.js.page:15 C/image-viewer.py.page:15
-msgid "Jonh Wendell"
-msgstr "Jonh Wendell"
-
-#. (itstool) path: synopsis/p
-#: C/image-viewer.js.page:32 C/image-viewer.py.page:32
-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:"
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:34
-msgid "Write a basic GTK user interface in JavaScript"
-msgstr "Escribir una interfaz GTK+ de usuario básica usando JavaScript"
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:35 C/image-viewer.py.page:35
-msgid "Deal with events by connecting signals to signal handlers"
-msgstr "Trabajar con eventos conectando señales a manejadores de señales"
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:36 C/image-viewer.py.page:36
-msgid "Lay out GTK user interfaces using containers"
-msgstr "La disposición de las interfaces de usuario usando contenedores"
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:37 C/image-viewer.py.page:37
-msgid "Load and display image files"
-msgstr "Cargar y mostrar archivos de imagen"
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:42
-msgid "An installed copy of the <em>gjs</em> interpreter"
-msgstr "Una copia instalada del intérprete <em>gjs</em>"
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:43
-msgid "Basic knowledge of any object-orientated programming language"
-msgstr ""
-"Conocimiento básico de cualquier lenguaje de programación orientado a objetos"
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:57
-msgid ""
-"Choose <gui>Generic Javascript</gui> from the <gui>JS</gui> tab, click "
-"<gui>Forward</gui>, and fill out your details on the next few pages. Use "
-"<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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:60
-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."
-msgstr ""
-"Pulse <gui>Aplicar</gui> y se creará el proyecto. Abra <file>src/main.js</"
-"file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</gui>. Contiene "
-"un ejemplo de código muy básico:"
-
-#. (itstool) path: section/title
-#: C/image-viewer.js.page:67
-msgid "JavaScript basics: Hello World"
-msgstr "JavaScript básico: hola mundo"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:68
-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>:"
-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>:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:69
-#, no-wrap
-msgid "print (\"Hello world!\");"
-msgstr "print (\"¡Hola mundo!\");"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:70
-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."
-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 «;»."
-
-#. (itstool) path: section/title
-#: C/image-viewer.js.page:74
-msgid "Classes in JavaScript"
-msgstr "Clases en JavaScript"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:75
-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:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:76
-#, no-wrap
-msgid ""
-"\n"
-"function MyClass () {\n"
-" this._init ();\n"
-"}\n"
-"\n"
-"MyClass.prototype = {\n"
-"\n"
-" _init: function () {\n"
-" this.propertyA = \"This is an object's field\";\n"
-" this.propertyB = 10;\n"
-" },\n"
-"\n"
-" aMethod: function (arg1, arg2) {\n"
-" print (\"inside aMethod: \" + arg1 + \" \" + arg2);\n"
-" },\n"
-"\n"
-" dumpProperties: function () {\n"
-" print (this.propertyA);\n"
-" print (this.propertyB);\n"
-" }\n"
-"\n"
-"}"
-msgstr ""
-"\n"
-"function MyClass () {\n"
-" this._init ();\n"
-"}\n"
-"\n"
-"MyClass.prototype = {\n"
-"\n"
-" _init: function () {\n"
-" this.propertyA = \"This is an object's field\";\n"
-" this.propertyB = 10;\n"
-" },\n"
-"\n"
-" aMethod: function (arg1, arg2) {\n"
-" print (\"inside aMethod: \" + arg1 + \" \" + arg2);\n"
-" },\n"
-"\n"
-" dumpProperties: function () {\n"
-" print (this.propertyA);\n"
-" print (this.propertyB);\n"
-" }\n"
-"\n"
-"}"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:98
-msgid ""
-"This defines a class called <code>MyClass</code>. Let's go through each part "
-"of the class definition:"
-msgstr ""
-"Esto define una clase llamada <code>MyClass</code>. Vea cada una de las "
-"partes de la definición de la clase:"
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:101
-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."
-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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:104
-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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:107
-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:"
-
-#. (itstool) path: item/code
-#: C/image-viewer.js.page:108
-#, no-wrap
-msgid "_init: function ()"
-msgstr "_init: function ()"
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:109
-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."
-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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:112
-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>."
-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>."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:115
-msgid ""
-"Note how the class definition (prototype) is arranged; each function "
-"definition is separated by a comma."
-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."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:119
-msgid "Now that MyClass has been defined, we can play with it:"
-msgstr "Ahora que «MyClass» se ha definido, se puede jugar con ella:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:120
-#, no-wrap
-msgid ""
-"\n"
-"var o = new MyClass ();\n"
-"o.aMethod (\"Hello\", \"world\");\n"
-"o.propertyA = \"Just changed its value!\";\n"
-"o.dumpProperties ();"
-msgstr ""
-"\n"
-"var o = new MyClass ();\n"
-"o.aMethod (\"Hello\", \"world\");\n"
-"o.propertyA = \"Just changed its value!\";\n"
-"o.dumpProperties ();"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:125
-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)."
-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)."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:126
-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."
-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."
-
-#. (itstool) path: section/title
-#: C/image-viewer.js.page:131 C/image-viewer.py.page:70
-msgid "A first Gtk application"
-msgstr "Una primera aplicación en GTK"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:132
-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:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:133
-#, no-wrap
-msgid ""
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"\n"
-"Gtk.init (null, null);\n"
-"\n"
-"var w = new Gtk.Window ({title: \"Image Viewer Demo\"});\n"
-"w.show ();\n"
-"\n"
-"Gtk.main ();"
-msgstr ""
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"\n"
-"Gtk.init (null, null);\n"
-"\n"
-"var w = new Gtk.Window ({title: \"Image Viewer Demo\"});\n"
-"w.show ();\n"
-"\n"
-"Gtk.main ();"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:142 C/image-viewer.py.page:95
-msgid "Let's take a look at what's happening:"
-msgstr "Eche un vistazo a lo que está pasando:"
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:145 C/image-viewer.py.page:98
-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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:148
-msgid ""
-"<code>Gtk.init</code> initializes the Gtk library; this statement is "
-"mandatory for all Gtk programs."
-msgstr ""
-"<code>Gtk.init</code> inicializa la biblioteca GTK; esta sentencia es "
-"obligatoria para todos los programas GTK."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:151
-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."
-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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:152
-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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:153
-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."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:156
-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."
-
-#. (itstool) path: section/title
-#: C/image-viewer.js.page:161
-msgid "Adding classes"
-msgstr "Añadir clases"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:162
-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:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:163
-#, no-wrap
-msgid ""
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"\n"
-"function ImageViewer () {\n"
-" this._init ();\n"
-"}\n"
-"\n"
-"ImageViewer.prototype = {\n"
-" _init: function () {\n"
-" this.window = new Gtk.Window ({title: \"Image Viewer Demo\"});\n"
-" this.window.show ();\n"
-" }\n"
-"}\n"
-"\n"
-"Gtk.init (null, null);\n"
-"var iv = new ImageViewer ();\n"
-"Gtk.main ();"
-msgstr ""
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"\n"
-"function ImageViewer () {\n"
-" this._init ();\n"
-"}\n"
-"\n"
-"ImageViewer.prototype = {\n"
-" _init: function () {\n"
-" this.window = new Gtk.Window ({title: \"Image Viewer Demo\"});\n"
-" this.window.show ();\n"
-" }\n"
-"}\n"
-"\n"
-"Gtk.init (null, null);\n"
-"var iv = new ImageViewer ();\n"
-"Gtk.main ();"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:181
-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>)."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:182
-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."
-
-#. (itstool) path: section/title
-#: C/image-viewer.js.page:186 C/image-viewer.py.page:119
-msgid "Signals"
-msgstr "Señales"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:187 C/image-viewer.py.page:120
-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:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:188
-#, no-wrap
-msgid ""
-"\n"
-"function button_clicked () {\n"
-" print (\"you clicked me!\");\n"
-"}\n"
-"var b = new Gtk.Button ({label:\"Click me\"});\n"
-"b.connect (\"clicked\", button_clicked);"
-msgstr ""
-"\n"
-"function button_clicked () {\n"
-" print (\"you clicked me!\");\n"
-"}\n"
-"var b = new Gtk.Button ({label:\"Click me\"});\n"
-"b.connect (\"clicked\", button_clicked);"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:194 C/image-viewer.py.page:127
-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í."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:195
-msgid "The syntax for connecting any signal to a function is:"
-msgstr "La sintaxis para conectar cualquier señal a una función es:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:196
-#, no-wrap
-msgid ""
-"\n"
-"object.connect (<signal_name>, <function_to_be_called>);"
-msgstr ""
-"\n"
-"object.connect (<signal_name>, <function_to_be_called>);"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:198
-msgid ""
-"You can find signal definitions for any object in the <link href=\"https://"
-"developer.gnome.org/gtk3/stable/gtkobjects.html\">GTK class reference</link>."
-msgstr ""
-"Puede encontrar definiciones de señales para cualquier objeto en la <link "
-"href=\"https://developer.gnome.org/gtk3/stable/gtkobjects.html\">referencia "
-"de clases de GTK+</link>."
-
-#. (itstool) path: note/p
-#: C/image-viewer.js.page:201
-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:"
-
-#. (itstool) path: note/code
-#: C/image-viewer.js.page:202
-#, no-wrap
-msgid ""
-"\n"
-"b.connect (\"clicked\", function () { print (\"you clicked me!\"); });"
-msgstr ""
-"\n"
-"b.connect (\"clicked\", function () { print (\"you clicked me!\"); });"
-
-#. (itstool) path: section/title
-#: C/image-viewer.js.page:209
-msgid "Closing the window"
-msgstr "Cerrar la ventana"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:210
-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)."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:211
-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>:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:212
-#, no-wrap
-msgid "this.window.connect (\"hide\", Gtk.main_quit);"
-msgstr "this.window.connect (\"hide\", Gtk.main_quit);"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:213
-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."
-
-#. (itstool) path: section/title
-#: C/image-viewer.js.page:217 C/image-viewer.py.page:131
-msgid "Containers: Laying-out the user interface"
-msgstr "Contenedores: diseñar la interfaz de usuario"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:218 C/image-viewer.py.page:132
-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 "
-"different types of containers, like boxes and grids."
-msgstr ""
-"Los widgets (controles, como botones y etiquetas) se pueden organizar en la "
-"ventana usando <em>contenedores</em>. Puede organizar el diseño mezclando "
-"diferentes tipos de contenedores, como cajas y rejillas."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:219 C/image-viewer.py.page:133
-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 "
-"and a button, so we must put a \"higher-capacity\" container inside the "
-"window to hold the other widgets. A number of <link href=\"http://library."
-"gnome.org/devel/gtk/stable/GtkContainer.html\">container types</link> are "
-"available, but we will use a <code>Gtk.Box</code> here. A <code>Gtk.Box</"
-"code> can hold several widgets, organized horizontally or vertically. You "
-"can do more complicated layouts by putting several boxes inside another box "
-"and so on."
-msgstr ""
-"Una <code>Gtk.Window</code> es en sí misma un tipo de contenedor, pero sólo "
-"puede poner un widget directamente en ella. Se quieren poner dos widgets, "
-"una imagen y un botón, por lo que se necesita poner un contenedor «de mayor "
-"capacidad» dentro de la ventana para que contenga otros widgets. Hay varios "
-"<link href=\"http://library.gnome.org/devel/gtk/stable/GtkContainer.html"
-"\">tipos de contenedores</link> disponibles, pero aquí se usará una "
-"<code>Gtk.Box</code>. Una <code>Gtk.Box</code> puede contener varios "
-"widgets, organizados horizontal o verticalmente. Se pueden hacer diseños más "
-"complejos poniendo varias cajas dentro de otras, y así sucesivamente."
-
-#. (itstool) path: note/p
-#: C/image-viewer.js.page:221 C/image-viewer.py.page:135
-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 "
-"simple example, however, we will code everything manually."
-msgstr ""
-"Hay un diseñador de interfaces gráficas llamado <app>Glade</app> integrado "
-"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."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:223
-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:"
-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>:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:224
-#, no-wrap
-msgid ""
-"\n"
-"var main_box = new Gtk.Box ({orientation: Gtk.Orientation.VERTICAL, spacing: 0});\n"
-"this.window.add (main_box);"
-msgstr ""
-"\n"
-"var main_box = new Gtk.Box ({orientation: Gtk.Orientation.VERTICAL, spacing: 0});\n"
-"this.window.add (main_box);"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:227
-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."
-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."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:228 C/image-viewer.py.page:146
-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> "
-"is a transparent container, so you can't see that it's there)."
-msgstr ""
-"De momento, la ventana sólo contiene una <code>Gtk.Box</code> vacía, y si "
-"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í)."
-
-#. (itstool) path: section/title
-#: C/image-viewer.js.page:232 C/image-viewer.py.page:150
-msgid "Packing: Adding widgets to the container"
-msgstr "Empaquetado: añadir widgets al contenedor"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:233
-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>:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:234
-#, no-wrap
-msgid ""
-"\n"
-"this.image = new Gtk.Image ();\n"
-"main_box.pack_start (this.image, true, true, 0);"
-msgstr ""
-"\n"
-"this.image = new Gtk.Image ();\n"
-"main_box.pack_start (this.image, true, true, 0);"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:237
-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>."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:238
-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>)."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:239 C/image-viewer.py.page:158
-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-"
-"coordinate location in the window; rather, they are positioned relative to "
-"one another. This makes handling window resizing much easier, and widgets "
-"should automatically take a sensible size in most situations."
-msgstr ""
-"Los contenedores (y los widgets) de GTK+ se expanden dinámicamente, si les "
-"deja, para rellenar el espacio disponible. No posicione widgets indicando "
-"unas coordenadas x-y precisas en la ventana; en lugar de eso, se posicionan "
-"relativos a otro. Esto hace que el manejo de la redimensión de las ventanas "
-"sea más fácil, y que los widgets tengan un tamaño sensible automática en la "
-"mayoría de las situaciones."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:240 C/image-viewer.py.page:159
-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</"
-"em> of the <code>Gtk.Box</code>. This allows you to treat all of the "
-"children of a widget as a group; for example, you could hide the <code>Gtk."
-"Box</code>, which would also hide all of its children at the same time."
-msgstr ""
-"También tenga en cuenta cómo se organizan los widgets de manera jerárquica. "
-"Una vez empaquetados en la <code>Gtk.Box</code>, la <code>Gtk.Image</code> "
-"se considera un <em>hijo</em> de la <code>Gtk.Box</code>. Esto le permite "
-"tratar a todos los hijos de un widget como un grupo; por ejemplo, puede "
-"ocultar la <code>Gtk.Box</code>, lo que haría que también se ocultaran todos "
-"sus hijos a la vez."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:241 C/image-viewer.py.page:160
-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."
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:242
-#, no-wrap
-msgid ""
-"\n"
-"var open_button = new Gtk.Button ({label: \"Open a picture...\"});\n"
-"main_box.pack_start (open_button, false, false, 0);"
-msgstr ""
-"\n"
-"var open_button = new Gtk.Button ({label: \"Open a picture...\"});\n"
-"main_box.pack_start (open_button, false, false, 0);"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:245
-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."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:246
-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:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:247
-#, no-wrap
-msgid "this.window.show_all ();"
-msgstr "this.window.show_all ();"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:248
-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.)"
-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.)"
-
-#. (itstool) path: section/title
-#: C/image-viewer.js.page:252 C/image-viewer.py.page:169
-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"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:253
-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."
-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."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:254
-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:"
-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:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:255
-#, no-wrap
-msgid ""
-"\n"
-"open_button.connect (\"clicked\", Lang.bind (this, this._openClicked));"
-msgstr ""
-"\n"
-"open_button.connect (\"clicked\", Lang.bind (this, this._openClicked));"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:257
-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:"
-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:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:258
-#, no-wrap
-msgid "const Lang = imports.lang;"
-msgstr "const Lang = imports.lang;"
-
-#. (itstool) path: section/title
-#: C/image-viewer.js.page:262 C/image-viewer.py.page:180
-msgid "Loading the image: Writing the signal's callback"
-msgstr "Cargar la imagen: escribir la llamada de retorno de la señal"
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:263
-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):"
-
-#. (itstool) path: section/code
-#: C/image-viewer.js.page:264
-#, no-wrap
-msgid ""
-"\n"
-" _openClicked: function () {\n"
-" var chooser = new Gtk.FileChooserDialog ({title: \"Select an image\",\n"
-" action: Gtk.FileChooserAction.OPEN,\n"
-" transient_for: this.window,\n"
-" modal: true});\n"
-" chooser.add_button (Gtk.STOCK_CANCEL, 0);\n"
-" chooser.add_button (Gtk.STOCK_OPEN, 1);\n"
-" chooser.set_default_response (1);\n"
-"\n"
-" var filter = new Gtk.FileFilter ();\n"
-" filter.add_pixbuf_formats ();\n"
-" chooser.filter = filter;\n"
-"\n"
-" if (chooser.run () == 1)\n"
-" this.image.file = chooser.get_filename ();\n"
-"\n"
-" chooser.destroy ();\n"
-" }"
-msgstr ""
-"\n"
-" _openClicked: function () {\n"
-" var chooser = new Gtk.FileChooserDialog ({title: \"Select an image\",\n"
-" action: Gtk.FileChooserAction.OPEN,\n"
-" transient_for: this.window,\n"
-" modal: true});\n"
-" chooser.add_button (Gtk.STOCK_CANCEL, 0);\n"
-" chooser.add_button (Gtk.STOCK_OPEN, 1);\n"
-" chooser.set_default_response (1);\n"
-"\n"
-" var filter = new Gtk.FileFilter ();\n"
-" filter.add_pixbuf_formats ();\n"
-" chooser.filter = filter;\n"
-"\n"
-" if (chooser.run () == 1)\n"
-" this.image.file = chooser.get_filename ();\n"
-"\n"
-" chooser.destroy ();\n"
-" }"
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:286
-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 "
-"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."
-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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:289 C/image-viewer.py.page:203
-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 "
-"(integer) value that is returned when the button is pressed: 0 for "
-"<gui>Cancel</gui> and 1 for <gui>Open</gui>."
-msgstr ""
-"Las dos siguientes líneas añaden los botones <gui>Cancelar</gui> y "
-"<gui>Abrir</gui> al diálogo. el segundo argumento del método "
-"<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>."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:293 C/image-viewer.py.page:207
-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 "
-"our case, we are using the <gui>Open</gui> button as default (which has the "
-"value 1)."
-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»)."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:296 C/image-viewer.py.page:210
-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 "
-"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 ""
-"Las tres líneas siguientes restringen el diálogo <gui>Abrir</gui> para que "
-"sólo muestre archivos que se puedan abrir con <code>Gtk.Image</code>. "
-"Primero se crea un objeto de filtro; luego se añaden los tipos de archivos "
-"soportados por el <code>Gdk.Pixbuf</code> (que incluye la mayoría de los "
-"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>."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:299
-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."
-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."
-"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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:301 C/image-viewer.py.page:215
-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."
-msgstr ""
-"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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.js.page:304 C/image-viewer.py.page:218
-#: C/image-viewer.vala.page:273
-msgid ""
-"In the final line of this method, we destroy the <gui>Open</gui> dialog "
-"because we don't need it any more."
-msgstr ""
-"En la última línea de este método se destruye el diálogo <gui>Abrir</gui> "
-"porque ya no se necesita."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:312
-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!"
-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 "
-"tiempo."
-
-#. (itstool) path: section/p
-#: C/image-viewer.js.page:317
-msgid ""
-"If you run into problems with the tutorial, compare your code with this "
-"<link href=\"image-viewer/image-viewer.js\">reference code</link>."
-msgstr ""
-"Si tiene problemas con este tutorial, compare su código con este <link href="
-"\"image-viewer/image-viewer.js\">código de referencia</link>."
-
-#. (itstool) path: info/title
-#: C/image-viewer.py.page:8
-msgctxt "text"
-msgid "Image viewer (Python)"
-msgstr "Visor de imágenes (Python)"
-
-#. (itstool) path: info/desc
-#: C/image-viewer.py.page:11
-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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.py.page:34
-msgid "Write a basic GTK user interface in Python"
-msgstr "Escribir una interfaz de usuario básica en Python"
-
-#. (itstool) path: item/p
-#: C/image-viewer.py.page:42
-msgid "Basic knowledge of the python programming language"
-msgstr "Conocimiento básico del lenguaje de programación Python"
-
-#. (itstool) path: item/p
-#: C/image-viewer.py.page:56
-msgid ""
-"Choose <gui>PyGTK (automake)</gui> from the <gui>Python</gui> tab, click "
-"<gui>Continue</gui>, and fill out your details on the next few pages. Use "
-"<file>image-viewer</file> as project name and directory."
-msgstr ""
-"Seleccione <gui>PyGTK (automake)</gui> en la pestaña <gui>Python</gui>, "
-"pulse <gui>Continuar</gui>, y rellene los detalles en las siguientes "
-"páginas. Use <file>visor-imagenes</file> como nombre del proyecto y de la "
-"carpeta."
-
-#. (itstool) path: item/p
-#: C/image-viewer.py.page:59
-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>."
-
-#. (itstool) path: item/p
-#: C/image-viewer.py.page:64
-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 creará el proyecto. Abra <file>src/visor-"
-"imagenes.py</file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</"
-"gui>. Contiene un ejemplo de código muy básico:"
-
-#. (itstool) path: section/p
-#: C/image-viewer.py.page:71
-msgid "Let's see what a very basic Gtk application looks like in Python:"
-msgstr "Vea como queda una aplicación GTK+ muy básica en Python:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.py.page:72
-#, no-wrap
-msgid ""
-"\n"
-"from gi.repository import Gtk, GdkPixbuf, Gdk\n"
-"import os, sys\n"
-"\n"
-"class GUI:\n"
-"\tdef __init__(self):\n"
-"\t\twindow = Gtk.Window()\n"
-"\t\twindow.set_title (\"Hello World\")\n"
-"\t\twindow.connect_after('destroy', self.destroy)\n"
-"\n"
-"\t\twindow.show_all()\n"
-"\n"
-"\tdef destroy(window, self):\n"
-"\t\tGtk.main_quit()\n"
-"\n"
-"def main():\n"
-"\tapp = GUI()\n"
-"\tGtk.main()\n"
-"\n"
-"if __name__ == \"__main__\":\n"
-" sys.exit(main())\n"
-"\n"
-" "
-msgstr ""
-"\n"
-"from gi.repository import Gtk, GdkPixbuf, Gdk\n"
-"import os, sys\n"
-"\n"
-"class GUI:\n"
-"\tdef __init__(self):\n"
-"\t\twindow = Gtk.Window()\n"
-"\t\twindow.set_title (\"Hello World\")\n"
-"\t\twindow.connect_after('destroy', self.destroy)\n"
-"\n"
-"\t\twindow.show_all()\n"
-"\n"
-"\tdef destroy(window, self):\n"
-"\t\tGtk.main_quit()\n"
-"\n"
-"def main():\n"
-"\tapp = GUI()\n"
-"\tGtk.main()\n"
-"\n"
-"if __name__ == \"__main__\":\n"
-" sys.exit(main())\n"
-"\n"
-" "
-
-#. (itstool) path: item/p
-#: C/image-viewer.py.page:101
-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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.py.page:106
-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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.py.page:110
-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."
-
-#. (itstool) path: section/p
-#: C/image-viewer.py.page:114
-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."
-
-#. (itstool) path: section/code
-#: C/image-viewer.py.page:121
-#, no-wrap
-msgid ""
-"\n"
-"def button_clicked () :\n"
-" print \"you clicked me!\"\n"
-"\n"
-"b = new Gtk.Button (\"Click me\")\n"
-"b.connect_after ('clicked', button_clicked)"
-msgstr ""
-"\n"
-"def button_clicked () :\n"
-" print \"you clicked me!\"\n"
-"\n"
-"b = new Gtk.Button (\"Click me\")\n"
-"b.connect_after ('clicked', button_clicked)"
-
-#. (itstool) path: section/p
-#: C/image-viewer.py.page:137
-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:"
-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>:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.py.page:138
-#, no-wrap
-msgid ""
-"\n"
-"box = Gtk.Box()\n"
-"box.set_spacing (5)\n"
-"box.set_orientation (Gtk.Orientation.VERTICAL)\n"
-"window.add (box)\n"
-"\n"
-msgstr ""
-"\n"
-"box = Gtk.Box()\n"
-"box.set_spacing (5)\n"
-"box.set_orientation (Gtk.Orientation.VERTICAL)\n"
-"window.add (box)\n"
-"\n"
-
-#. (itstool) path: section/p
-#: C/image-viewer.py.page:145
-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."
-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."
-
-#. (itstool) path: section/p
-#: C/image-viewer.py.page:151
-msgid ""
-"To add some widgets to the <code>Gtk.Box</code>, insert the following code "
-"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>window.add (box)</code>:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.py.page:152
-#, no-wrap
-msgid ""
-"\n"
-"self.image = Gtk.Image()\n"
-"box.pack_start (self.image, False, False, 0)"
-msgstr ""
-"\n"
-"self.image = Gtk.Image()\n"
-"box.pack_start (self.image, False, False, 0)"
-
-#. (itstool) path: section/p
-#: C/image-viewer.py.page:155
-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."
-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."
-
-#. (itstool) path: section/p
-#: C/image-viewer.py.page:157
-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>)."
-
-#. (itstool) path: section/code
-#: C/image-viewer.py.page:161
-#, no-wrap
-msgid ""
-"\n"
-"button = Gtk.Button (\"Open a picture...\")\n"
-"box.pack_start (button, False, False, 0)\n"
-msgstr ""
-"\n"
-"button = Gtk.Button (\"Open a picture...\")\n"
-"box.pack_start (button, False, False, 0)\n"
-
-#. (itstool) path: section/p
-#: C/image-viewer.py.page:165
-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."
-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>box</code>. Tenga en cuenta "
-"que 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."
-
-#. (itstool) path: section/p
-#: C/image-viewer.py.page:170
-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."
-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."
-
-#. (itstool) path: section/p
-#: C/image-viewer.py.page:171
-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:"
-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:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.py.page:172
-#, no-wrap
-msgid ""
-"\n"
-"button.connect_after('clicked', self.on_open_clicked)\n"
-msgstr ""
-"\n"
-"button.connect_after('clicked', self.on_open_clicked)\n"
-
-#. (itstool) path: section/p
-#: C/image-viewer.py.page:175
-msgid ""
-"This will connect the <code>clicked</code> signal to <code>on_open_clicked</"
-"code> method that we will define below."
-msgstr ""
-"Esto conectará la señal <code>clicked</code> al método "
-"<code>on_open_clicked</code> que se definirá más adelante."
-
-#. (itstool) path: section/p
-#: C/image-viewer.py.page:181
-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:"
-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>:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.py.page:182
-#, no-wrap
-msgid ""
-"\n"
-"def on_open_clicked (self, button):\n"
-"\tdialog = Gtk.FileChooserDialog (\"Open Image\", button.get_toplevel(), Gtk.FileChooserAction.OPEN);\n"
-"\tdialog.add_button (Gtk.STOCK_CANCEL, 0)\n"
-"\tdialog.add_button (Gtk.STOCK_OK, 1)\n"
-"\tdialog.set_default_response(1)\n"
-"\n"
-"\tfilefilter = Gtk.FileFilter ()\n"
-"\tfilefilter.add_pixbuf_formats ()\n"
-"\tdialog.set_filter(filefilter)\n"
-"\n"
-"\tif dialog.run() == 1:\n"
-"\t\tself.image.set_from_file(dialog.get_filename())\n"
-"\n"
-"\tdialog.destroy()"
-msgstr ""
-"\n"
-"def on_open_clicked (self, button):\n"
-"\tdialog = Gtk.FileChooserDialog (\"Open Image\", button.get_toplevel(), Gtk.FileChooserAction.OPEN);\n"
-"\tdialog.add_button (Gtk.STOCK_CANCEL, 0)\n"
-"\tdialog.add_button (Gtk.STOCK_OK, 1)\n"
-"\tdialog.set_default_response(1)\n"
-"\n"
-"\tfilefilter = Gtk.FileFilter ()\n"
-"\tfilefilter.add_pixbuf_formats ()\n"
-"\tdialog.set_filter(filefilter)\n"
-"\n"
-"\tif dialog.run() == 1:\n"
-"\t\tself.image.set_from_file(dialog.get_filename())\n"
-"\n"
-"\tdialog.destroy()"
-
-#. (itstool) path: item/p
-#: C/image-viewer.py.page:200
-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 "
-"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."
-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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.py.page:213
-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."
-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."
-"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."
-
-#. (itstool) path: section/p
-#: C/image-viewer.py.page:226
-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!"
-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 "
-"tiempo."
-
-#. (itstool) path: section/p
-#: C/image-viewer.py.page:231
-msgid ""
-"If you run into problems with the tutorial, compare your code with this "
-"<link href=\"image-viewer/image-viewer.py\">reference code</link>."
-msgstr ""
-"Si tiene problemas con este tutorial, compare su código con este <link href="
-"\"image-viewer/image-viewer.py\">código de referencia</link>."
-
-#. (itstool) path: info/title
-#: C/image-viewer.vala.page:8
-msgctxt "text"
-msgid "Image viewer (Vala)"
-msgstr "Visor de imágenes (Vala)"
-
-#. (itstool) path: info/desc
-#: C/image-viewer.vala.page:11
-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+."
-
-#. (itstool) path: credit/name
-#: C/image-viewer.vala.page:23
-msgid "Philip Chimento"
-msgstr "Philip Chimento"
-
-#. (itstool) path: synopsis/p
-#: C/image-viewer.vala.page:39
-msgid ""
-"In this tutorial you will create an application which opens and displays an "
-"image file. You will learn:"
-msgstr ""
-"En este tutorial se va a crear un programa que abre un archivo de imagen y "
-"lo muestra. Aprenderá a:"
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:41
-msgid ""
-"How to set up a basic project using the <link xref=\"getting-ready\">Anjuta "
-"IDE</link>."
-msgstr ""
-"Cómo configurar un proyecto básico usando el <link xref=\"getting-ready"
-"\">EID Anjuta</link>."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:42
-msgid ""
-"How to write a <link href=\"http://developer.gnome.org/platform-overview/"
-"stable/gtk\">Gtk application</link> in Vala"
-msgstr ""
-"Cómo escribir una <link href=\"http://developer.gnome.org/platform-overview/"
-"stable/gtk\">aplicación de GTK+</link> en Vala"
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:43
-msgid ""
-"Some basic concepts of <link href=\"http://developer.gnome.org/gobject/"
-"stable/\">GObject</link> programming"
-msgstr ""
-"Algunos conceptos básicos de programación en <link href=\"http://developer."
-"gnome.org/gobject/stable/\">GObject</link>"
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:50
-msgid ""
-"You may find the <link href=\"http://valadoc.org/gtk+-3.0/\">gtk+-3.0</link> "
-"API Reference useful, although it is not necessary to follow the tutorial."
-msgstr ""
-"Puede que la referencia de la API de <link href=\"http://valadoc.org/gtk+-"
-"3.0/\">gtk+-3.0</link> le resulte útil, aunque no es necesaria para seguir "
-"el tutorial."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:66
-msgid ""
-"From the <gui>Vala</gui> tab choose <gui>GTK+ (Simple)</gui>, click "
-"<gui>Continue</gui>, and fill out your details on the next page. Use "
-"<file>image-viewer</file> as project name and directory."
-msgstr ""
-"En la pestaña <gui>Vala</gui> seleccione <gui>GTK+ (simple)</gui>, pulse "
-"<gui>Continuar</gui>, y rellene los detalles en las siguientes páginas. Use "
-"<file>visor-imagenes</file> como nombre del proyecto y de la carpeta."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:70
-msgid ""
-"Make sure that <gui>Use GtkBuilder for user interface</gui> is unchecked as "
-"we will create the UI manually in this tutorial."
-msgstr ""
-"Asegúrese de que <gui>Usar GtkBuilder para la interfaz del usuario</gui> "
-"está desactivado, ya que, en este tutorial, la IU se creará manualmente."
-
-#. (itstool) path: note/p
-#: C/image-viewer.vala.page:71
-msgid ""
-"You will learn how to use the interface builder in the <link xref=\"guitar-"
-"tuner.vala\">Guitar-Tuner</link> tutorial."
-msgstr ""
-"Aprenderá a usar el constructor de interfaces en el tutorial del <link xref="
-"\"guitar-tuner.vala\">afinador de guitarra</link>."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:75
-msgid ""
-"Click <gui>Continue</gui> then <gui>Apply</gui> and the project will be "
-"created for you. Open <file>src/image_viewer.vala</file> from the "
-"<gui>Project</gui> or <gui>File</gui> tabs. You will see this code:"
-msgstr ""
-"Pulse <gui>Continuar</gui> y luego <gui>Aplicar</gui> y se creará el "
-"proyecto. Abra <file>src/visor-imagenes.vala</file> desde las pestañas "
-"<gui>Proyecto</gui> o <gui>Archivo</gui>. Verá el siguiente código:"
-
-#. (itstool) path: item/code
-#: C/image-viewer.vala.page:78
-#, no-wrap
-msgid ""
-"\n"
-"using GLib;\n"
-"using Gtk;\n"
-"\n"
-"public class Main : Object\n"
-"{\n"
-"\n"
-"\tpublic Main ()\n"
-"\t{\n"
-"\t\tWindow window = new Window();\n"
-"\t\twindow.set_title (\"Hello World\");\n"
-"\t\twindow.show_all();\n"
-"\t\twindow.destroy.connect(on_destroy);\n"
-"\t}\n"
-"\n"
-"\tpublic void on_destroy (Widget window)\n"
-"\t{\n"
-"\t\tGtk.main_quit();\n"
-"\t}\n"
-"\n"
-"\tstatic int main (string[] args)\n"
-"\t{\n"
-"\t\tGtk.init (ref args);\n"
-"\t\tvar app = new Main ();\n"
-"\n"
-"\t\tGtk.main ();\n"
-"\n"
-"\t\treturn 0;\n"
-"\t}\n"
-"}"
-msgstr ""
-"\n"
-"using GLib;\n"
-"using Gtk;\n"
-"\n"
-"public class Main : Object\n"
-"{\n"
-"\n"
-"\tpublic Main ()\n"
-"\t{\n"
-"\t\tWindow window = new Window();\n"
-"\t\twindow.set_title (\"Hello World\");\n"
-"\t\twindow.show_all();\n"
-"\t\twindow.destroy.connect(on_destroy);\n"
-"\t}\n"
-"\n"
-"\tpublic void on_destroy (Widget window)\n"
-"\t{\n"
-"\t\tGtk.main_quit();\n"
-"\t}\n"
-"\n"
-"\tstatic int main (string[] args)\n"
-"\t{\n"
-"\t\tGtk.init (ref args);\n"
-"\t\tvar app = new Main ();\n"
-"\n"
-"\t\tGtk.main ();\n"
-"\n"
-"\t\treturn 0;\n"
-"\t}\n"
-"}"
-
-#. (itstool) path: section/p
-#: C/image-viewer.vala.page:114
-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:"
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:119
-msgid ""
-"The two <code>using</code> lines at the top import namespaces so we don't "
-"have to name them explicitly."
-msgstr ""
-"Las dos líneas <code>using</code> importan espacios de nombres, por lo que "
-"no hay que nombrarlas explícitamente."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:122
-msgid ""
-"The constructor of the <code>Main</code> class creates a new (empty) window "
-"and connects a <link href=\"https://live.gnome.org/Vala/SignalsAndCallbacks"
-"\">signal</link> to exit the application when that window is closed."
-msgstr ""
-"El constructor de la clase <code>Main</code> crea una ventana (vacía) nueva "
-"y conecta una <link href=\"https://live.gnome.org/Vala/SignalsAndCallbacks"
-"\">señal</link> para salir de la aplicación cuando se cierra esa ventana."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:127
-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 <link href=\"http://"
-"valadoc.org/gtk+-3.0/Gtk.main.html\"><code>Gtk.main</code></link> function "
-"starts the GTK <link href=\"http://en.wikipedia.org/wiki/Event_loop\">main "
-"loop</link>, which runs the user interface and starts listening for events "
-"(like clicks and key presses)."
-msgstr ""
-"La función <code>static main</code> se ejecuta de manera predeterminada "
-"cuando inicia una aplicación en Vala. Llama a algunas funciones que crean la "
-"clase <code>Main</code> y configuran y ejecutan la aplicación. La función "
-"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.main.html\"><code>Gtk.main</"
-"code></link> inicia el <link href=\"http://en.wikipedia.org/wiki/Event_loop"
-"\">bucle principal</link> de GTK+, que ejecuta la interfaz de usuario y "
-"empieza a escuchar eventos (como pulsaciones del ratón y del teclado)."
-
-#. (itstool) path: section/p
-#: C/image-viewer.vala.page:134 C/magic-mirror.vala.page:94
-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 "
-"this once, for the first build."
-msgstr ""
-"Cambie la <gui>Configuración</gui> a <gui>Predeterminada</gui> y pulse "
-"<gui>Ejecutar</gui> para configurar la carpeta de construcción. Sólo "
-"necesita hacer esto una vez, para la primera construcción."
-
-#. (itstool) path: section/p
-#: C/image-viewer.vala.page:140
-msgid ""
-"Now we will bring life into the empty window. GTK organizes the user "
-"interface with <link href=\"http://www.valadoc.org/gtk+-2.0/Gtk.Container."
-"html\"><code>Gtk.Container</code></link>s that can contain other widgets and "
-"even other containers. Here we will use the simplest available container, a "
-"<link href=\"http://unstable.valadoc.org/gtk+-2.0/Gtk.Box.html\"><code>Gtk."
-"Box</code></link>."
-msgstr ""
-"Ahora se dará vida a la ventana vacía. GTK+ organiza la interfaz de usuario "
-"con varios <link href=\"http://www.valadoc.org/gtk+-2.0/Gtk.Container.html"
-"\"><code>Gtk.Container</code></link> que pueden contener otros widgets e "
-"incluso otros contenedores. Aquí se usará el contenedor más sencillo "
-"disponible, una <link href=\"http://unstable.valadoc.org/gtk+-2.0/Gtk.Box."
-"html\"><code>Gtk.Box</code></link>."
-
-#. (itstool) path: section/p
-#: C/image-viewer.vala.page:144
-msgid "Add the following lines to the top of the <code>Main</code> class:"
-msgstr ""
-"Añada las siguientes líneas a la parte superior de la clase <code>Main</"
-"code>:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.vala.page:145
-#, no-wrap
-msgid ""
-"\n"
-"private Window window;\n"
-"private Image image;\n"
-msgstr ""
-"\n"
-"private Window window;\n"
-"private Image image;\n"
-
-#. (itstool) path: section/p
-#: C/image-viewer.vala.page:150
-msgid "Now replace the current constructor with the one below:"
-msgstr "Ahora reemplace el constructor actual con el siguiente:"
-
-#. (itstool) path: section/code
-#: C/image-viewer.vala.page:151
-#, no-wrap
-msgid ""
-"\n"
-"\n"
-"public Main () {\n"
-"\n"
-"\twindow = new Window ();\n"
-"\twindow.set_title (\"Image Viewer in Vala\");\n"
-"\n"
-"\t// Set up the UI\n"
-"\tvar box = new Box (Orientation.VERTICAL, 5);\n"
-"\tvar button = new Button.with_label (\"Open image\");\n"
-"\timage = new Image ();\n"
-"\n"
-"\tbox.pack_start (image, true, true, 0);\n"
-"\tbox.pack_start (button, false, false, 0);\n"
-"\twindow.add (box);\n"
-"\n"
-"\t// Show open dialog when opening a file\n"
-"\tbutton.clicked.connect (on_open_image);\n"
-"\n"
-"\twindow.show_all ();\n"
-"\twindow.destroy.connect (main_quit);\n"
-"}\n"
-msgstr ""
-"\n"
-"\n"
-"public Main () {\n"
-"\n"
-"\twindow = new Window ();\n"
-"\twindow.set_title (\"Image Viewer in Vala\");\n"
-"\n"
-"\t// Set up the UI\n"
-"\tvar box = new Box (Orientation.VERTICAL, 5);\n"
-"\tvar button = new Button.with_label (\"Open image\");\n"
-"\timage = new Image ();\n"
-"\n"
-"\tbox.pack_start (image, true, true, 0);\n"
-"\tbox.pack_start (button, false, false, 0);\n"
-"\twindow.add (box);\n"
-"\n"
-"\t// Show open dialog when opening a file\n"
-"\tbutton.clicked.connect (on_open_image);\n"
-"\n"
-"\twindow.show_all ();\n"
-"\twindow.destroy.connect (main_quit);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:176
-msgid ""
-"The first two lines are the parts of the GUI that we will need to access "
-"from more than one method. We declare them up here so that they are "
-"accessible throughout the class instead of only in the method where they are "
-"created."
-msgstr ""
-"Las dos primeras líneas son partes de la IGU a las que se debe acceder desde "
-"más de un método. Se declaran aquí, por lo que son accesibles mediante la "
-"clase en vez de serlo solamente en el método en el que se crearon."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:180
-msgid ""
-"The first lines of the constructor create the empty window. The next lines "
-"create the widgets we want to use: a button for opening up an image, the "
-"image view widget itself and the box we will use as a container."
-msgstr ""
-"Las primeras líneas del constructor crean la ventana vacía. Las siguientes "
-"líneas crean los widgets que se quieren usar: un botón para abrir una "
-"imagen, el widget de la vista de la imagen en sí y la caja que se usará como "
-"contenedor."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:184
-msgid ""
-"The calls to <link href=\"http://unstable.valadoc.org/gtk+-2.0/Gtk.Box."
-"pack_start.html\"><code>pack_start</code></link> add the two widgets to the "
-"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 ""
-"Las llamadas a <link href=\"http://unstable.valadoc.org/gtk+-2.0/Gtk.Box."
-"pack_start.html\"><code>pack_start</code></link> 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 GTK+ 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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:191
-msgid ""
-"We need to define what happens when the user clicks on the button. GTK uses "
-"the concept of <em>signals</em>."
-msgstr ""
-"Se debe definir qué pasa cuando el usuario pulsa en el botón. GTK+ usa el "
-"concepto de <em>señales</em>."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:192
-msgid ""
-"When the <link href=\"http://valadoc.org/gtk+-3.0/Gtk.Button.html\">button</"
-"link> is clicked, it fires the <link href=\"http://valadoc.org/gtk+-3.0/Gtk."
-"Button.clicked.html\"><code>clicked</code></link> signal, which we can "
-"connect to some action (defined in a <link href=\"https://live.gnome.org/"
-"Vala/SignalsAndCallbacks\">callback</link> method)."
-msgstr ""
-"Cuando se pulsa el <link href=\"http://valadoc.org/gtk+-3.0/Gtk.Button.html"
-"\">botón</link> se emite la señal <link href=\"http://valadoc.org/gtk+-3.0/"
-"Gtk.Button.clicked.html\"><code>clicked</code></link>, que se puede conectar "
-"a alguna acción (definida en un método de un <link href=\"https://live.gnome."
-"org/Vala/SignalsAndCallbacks\">retorno de la llamada</link>)."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:195
-msgid ""
-"This is done using the <code>connect</code> method of the button's "
-"<code>clicked</code> signal, which in this case tells GTK to call the (yet "
-"undefined) <code>on_image_open</code> callback method when the button is "
-"clicked. We will define the <em>callback</em> in the next section."
-msgstr ""
-"Esto se hace usando el método <code>connect</code> de la señal "
-"<code>clicked</code> de los botones, que en este caso indica a GTK+ que "
-"llame al método del retorno de la llamada <code>on_image_open</code> "
-"(todavía no definida) cuando se pulsa el botón. El <em>retorno de la "
-"llamada</em> se definirá en la siguiente sección."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:199
-msgid ""
-"In the callback, we need to access the <code>window</code> and <code>image</"
-"code> widgets, which is why we defined them as private members at the top of "
-"our class."
-msgstr ""
-"En el retorno de la llamada, se debe acceder a los widgets <code>window</"
-"code> y <code>image</code> que es por lo que se definen como miembros "
-"privados en la parte superior de la clase."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:203
-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> callback method which called <link href=\"http://www."
-"valadoc.org/gtk+-2.0/Gtk.main_quit.html\"><code>Gtk.main_quit</code></link>, "
-"but just connecting our signal to <code>main_quit</code> directly is easier. "
-"You can delete the <code>on_destroy</code> method."
-msgstr ""
-"La última llamada a <code>connect</code> asegura que la aplicación termina "
-"cuando se cierra la ventana. El código generado por Anjuta llamaba a un "
-"método <code>on_destroy</code> que llamaba a <link href=\"http://www.valadoc."
-"org/gtk+-2.0/Gtk.main_quit.html\"><code>Gtk.main_quit</code></link>, pero "
-"simplemente conectando la señal <code>main_quit</code> directamente es más "
-"fácil. Puede eliminar el método <code>on_destroy</code>."
-
-#. (itstool) path: section/p
-#: C/image-viewer.vala.page:211
-msgid ""
-"We will now define the signal handler for the <code>clicked</code> signal "
-"for the button we mentioned before. Add this code after the constructor:"
-msgstr ""
-"Ahora se definirá el manejador de la señal <em>clicked</em> para el botón "
-"mencionado anteriormente. Añada este código después del constructor."
-
-#. (itstool) path: section/code
-#: C/image-viewer.vala.page:214
-#, no-wrap
-msgid ""
-"\n"
-"public void on_open_image (Button self) {\n"
-"\tvar filter = new FileFilter ();\n"
-"\tvar dialog = new FileChooserDialog (\"Open image\",\n"
-"\t window,\n"
-"\t FileChooserAction.OPEN,\n"
-"\t Stock.OK, ResponseType.ACCEPT,\n"
-"\t Stock.CANCEL, ResponseType.CANCEL);\n"
-"\tfilter.add_pixbuf_formats ();\n"
-"\tdialog.add_filter (filter);\n"
-"\n"
-"\tswitch (dialog.run ())\n"
-"\t{\n"
-"\t\tcase ResponseType.ACCEPT:\n"
-"\t\t\tvar filename = dialog.get_filename ();\n"
-"\t\t\timage.set_from_file (filename);\n"
-"\t\t\tbreak;\n"
-"\t\tdefault:\n"
-"\t\t\tbreak;\n"
-"\t}\n"
-"\tdialog.destroy ();\n"
-"}\n"
-msgstr ""
-"\n"
-"public void on_open_image (Button self) {\n"
-"\tvar filter = new FileFilter ();\n"
-"\tvar dialog = new FileChooserDialog (\"Open image\",\n"
-"\t window,\n"
-"\t FileChooserAction.OPEN,\n"
-"\t Stock.OK, ResponseType.ACCEPT,\n"
-"\t Stock.CANCEL, ResponseType.CANCEL);\n"
-"\tfilter.add_pixbuf_formats ();\n"
-"\tdialog.add_filter (filter);\n"
-"\n"
-"\tswitch (dialog.run ())\n"
-"\t{\n"
-"\t\tcase ResponseType.ACCEPT:\n"
-"\t\t\tvar filename = dialog.get_filename ();\n"
-"\t\t\timage.set_from_file (filename);\n"
-"\t\t\tbreak;\n"
-"\t\tdefault:\n"
-"\t\t\tbreak;\n"
-"\t}\n"
-"\tdialog.destroy ();\n"
-"}\n"
-
-#. (itstool) path: section/p
-#: C/image-viewer.vala.page:237
-msgid "This is a bit complicated, so let's break it down:"
-msgstr "Esto es un poco más complicado, así que se puede desglosar:"
-
-#. (itstool) path: note/p
-#: C/image-viewer.vala.page:238
-msgid ""
-"A signal handler is a type of callback method that is called when a signal "
-"is emitted. Here the terms are used interchangeably."
-msgstr ""
-"Un manejador de señal es un tipo de método de retorno de la llamada al que "
-"se llama cuando se emite la señal. Aquí se usan los términos intercambiados."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:241
-msgid ""
-"The first argument of the callback method is always the widget that sent the "
-"signal. Sometimes other arguments related to the signal come after that, but "
-"<em>clicked</em> doesn't have any."
-msgstr ""
-"El primer argumento del método del retorno de la llamada es siempre el "
-"widget que envía la señal. A veces hay otros argumentos relativos a la señal "
-"que vienen después, pero <em>clicked</em> no tiene ninguno."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:243
-msgid ""
-"In this case the <code>button</code> sent the <code>clicked</code> signal, "
-"which is connected to the <code>on_open_image</code> callback method:"
-msgstr ""
-"En este caso, el <code>button</code> envía la señal <code>clicked</code>, "
-"que se conecta al método del retorno de la llamada <code>on_open_image</"
-"code>:"
-
-#. (itstool) path: item/code
-#: C/image-viewer.vala.page:244
-#, no-wrap
-msgid ""
-"\n"
-" button.clicked.connect (on_open_image);\n"
-msgstr ""
-"\n"
-" button.clicked.connect (on_open_image);\n"
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:248
-msgid ""
-"The <code>on_open_image</code> method takes the button that emitted the "
-"signal as an argument:"
-msgstr ""
-"El método <code>on_open_image</code> toma como argumento el botón que ha "
-"emitido la señal:"
-
-#. (itstool) path: item/code
-#: C/image-viewer.vala.page:249
-#, no-wrap
-msgid ""
-"\n"
-" public void on_open_image (Button self)\n"
-msgstr ""
-"\n"
-" public void on_open_image (Button self)\n"
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:254
-msgid ""
-"The next interesting line is where the dialog for choosing the file is "
-"created. <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.FileChooserDialog."
-"html\"><code>FileChooserDialog</code></link>'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 interesante es en la que se crea el diálogo para elegir "
-"el archivo. El constructor de <link href=\"http://www.valadoc.org/gtk+-3.0/"
-"Gtk.FileChooserDialog.html\"><code>FileChooserDialog</code></link> 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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:256
-msgid ""
-"Notice that we are using <link href=\"http://unstable.valadoc.org/gtk+-3.0/"
-"Gtk.Stock.html\"><em>stock</em></link> button names from Gtk, instead of "
-"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 ""
-"Tenga en cuenta que se está usando nombres de botones del <link href="
-"\"http://unstable.valadoc.org/gtk+-3.0/Gtk.Stock.html\"><em>almacén</em></"
-"link> 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."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:260
-msgid ""
-"The next two lines restrict the <gui>Open</gui> dialog to only display files "
-"which can be opened by <em>GtkImage</em>. GtkImage is a widget which "
-"displays an image. A filter object is created first; we then add all kinds "
-"of files supported by <link href=\"http://www.valadoc.org/gdk-pixbuf-2.0/Gdk."
-"Pixbuf.html\"><code>Gdk.Pixbuf</code></link> (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 ""
-"Las dos líneas siguientes restringen el diálogo <gui>Abrir</gui> para que "
-"sólo muestre archivos que se puedan abrir con <code>GtkImage</code>. "
-"GtkImage es un widget que muestra una imagen. Primero se crea un objeto; "
-"luego se añaden los tipos de archivos soportados por el <link href=\"http://"
-"www.valadoc.org/gdk-pixbuf-2.0/Gdk.Pixbuf.html\"><code>Gdk.Pixbuf</code></"
-"link> (que incluye la mayoría de los 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>."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:265
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.run.html"
-"\"><code>dialog.run</code></link> displays the <gui>Open</gui> dialog. The "
-"dialog will wait for the user to choose an image; when they do, <code>dialog."
-"run</code> will return the <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk."
-"ResponseType.html\">ResponseType</link> 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 ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.run.html"
-"\"><code>dialog.run</code></link> 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>ResponseType.ACCEPT</code> "
-"de <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ResponseType.html"
-"\">ResponseType</link> (devolvería <code>ResponseType.CANCEL</code> si el "
-"usuario pulsara <gui>Cancel</gui>). La sentencia <code>switch</code> "
-"comprueba esto."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:270
-msgid ""
-"Assuming that the user did click <gui>Open</gui>, the next lines get the "
-"filename of the image selected by the user, and tell the <code>GtkImage</"
-"code> widget to load and display the selected image."
-msgstr ""
-"Asumiendo que el usuario pulsó <gui>Abrir</gui>, las siguientes líneas "
-"obtienen el nombre de archivo de la imagen seleccionada por el usuario e "
-"indican al widget <code>GtkImage</code> que cargue y muestre la imagen "
-"elegida."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:274
-msgid "Destroying automatically hides the dialog."
-msgstr "Al destruir se oculta el diálogo automáticamente."
-
-#. (itstool) path: section/p
-#: C/image-viewer.vala.page:283
-msgid ""
-"If you haven't already done so, choose the <file>src/image-viewer</file> "
-"application in the dialog that appears. Finally, hit <gui>Run</gui> and "
-"enjoy!"
-msgstr ""
-"Si todavía no lo ha hecho, elija la aplicación <file>src/visor-imagenes</"
-"file> en el diálogo que aparece. Finalmente, pulse <gui>Ejecutar</gui> y "
-"disfrute."
-
-#. (itstool) path: section/p
-#: C/image-viewer.vala.page:289
-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 código con este <link href="
-"\"image-viewer/image-viewer.vala\">código de referencia</link>."
-
-#. (itstool) path: item/p
-#: C/image-viewer.vala.page:296
-msgid ""
-"Set it up so that when the window opens it is of a specific size to start "
-"off with. For example, 200 X 200 pixels."
-msgstr ""
-"Configúrela de tal manera que la ventana se abra con un tamaño determinado. "
-"Por ejemplo, 200x200 píxeles."
-
-#. (itstool) path: credit/name
-#: C/index.page:8
-msgid "GNOME Documentation Team"
-msgstr "Equipo de documentación de GNOME"
-
-#. (itstool) path: credit/years
-#: C/index.page:10
-msgid "2010, 2011"
-msgstr "2010, 2011"
-
-#. (itstool) path: credit/name
-#: C/index.page:13 C/message-board.c.page:15
-msgid "Shaun McCance"
-msgstr "Shaun McCance"
-
-#. (itstool) path: credit/years
-#: C/index.page:15 C/message-board.c.page:17
-msgid "2010"
-msgstr "2010"
-
-#. (itstool) path: page/title
-#: C/index.page:28
-msgid "GNOME Developer Platform Demos"
-msgstr "Demostraciones de la plataforma de desarrollo de GNOME"
-
-#. (itstool) path: page/p
-#: C/index.page:30
-msgid ""
-"This guide includes a variety of coding examples, such writing an image "
-"viewer or weather application. Each demo comes with code that you can try, "
-"and explains how each example works. They are a great way to get started "
-"with the GNOME developer platform."
-msgstr ""
-"Esta guía incluye varios ejemplos de código, tales como escribir un visor de "
-"imágenes o una aplicación meteorológica. Cada demostración incluye su código "
-"fuente, que puede probar, y explica cómo funciona cada ejemplo. Estos "
-"ejemplos son una muy buena manera de empezar con la plataforma de desarrollo "
-"de GNOME."
-
-#. (itstool) path: section/title
-#: C/index.page:36
-msgid "Pick a Language"
-msgstr "Elija un idioma"
-
-#. (itstool) path: section/p
-#: C/index.page:37
-msgid ""
-"These developer demos are available in a range of programming languages. "
-"Pick one to get started:"
-msgstr ""
-"Esta demostraciones están disponibles en varios lenguajes de programación. "
-"Elija uno para empezar:"
-
-#. (itstool) path: info/title
-#: C/js.page:8
-msgctxt "link"
-msgid "JavaScript"
-msgstr "JavaScript"
-
-#. (itstool) path: credit/name
-#: C/js.page:21
-msgid "Ekaterina Gerasimova"
-msgstr "Ekaterina Gerasimova"
-
-#. (itstool) path: page/title
-#: C/js.page:26
-msgid "Tutorials, code samples and platform demos in JavaScript"
-msgstr ""
-"Tutoriales, ejemplos de código y demostraciones de la plataforma en "
-"JavaScript"
-
-#. (itstool) path: section/title
-#: C/js.page:31
-msgid "Code samples and tutorials"
-msgstr "Código de ejemplo tutoriales"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/label.c.page:26 C/label.js.page:22 C/label.py.page:31
-#: C/label.vala.page:22
-msgctxt "_"
-msgid "external ref='media/label.png' md5='734975c18653d88379f983e4501c3fc0'"
-msgstr "external ref='media/label.png' md5='734975c18653d88379f983e4501c3fc0'"
-
-#. (itstool) path: info/title
-#: C/label.c.page:8
-msgctxt "text"
-msgid "Label (C)"
-msgstr "Label (C)"
-
-#. (itstool) path: info/desc
-#: C/label.c.page:19 C/label.vala.page:18
-msgid "A widget which displays text"
-msgstr "Un widget que muestra un texto"
-
-#. (itstool) path: page/title
-#. (itstool) path: td/p
-#: C/label.c.page:22 C/label.js.page:21 C/label.py.page:30
-#: C/label.vala.page:21 C/toolbar_builder.py.page:98
-#: C/toolbar_builder.vala.page:81
-msgid "Label"
-msgstr "Etiqueta"
-
-#. (itstool) path: td/p
-#. (itstool) path: page/p
-#: C/label.c.page:27 C/label.py.page:32 C/label.vala.page:23
-msgid "A simple label"
-msgstr "Una etiqueta sencilla"
-
-#. (itstool) path: page/code
-#: C/label.c.page:32
-#, no-wrap
-msgid ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *label;\n"
-"\n"
-" /*Create a window with a title and a default size*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 200,100);\n"
-" \n"
-" /*Create a label and set its alignment. Setting the line wrap to TRUE makes \n"
-" the label break lines if the text exceeds the widget's size. When set to \n"
-" FALSE the text gets cut off by the edge of the widget*/\n"
-" label = gtk_label_new (\"Hello GNOME!\");\n"
-" gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER);\n"
-" gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (label));\n"
-"\n"
-" gtk_widget_show_all (GTK_WIDGET (window));\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *label;\n"
-"\n"
-" /*Create a window with a title and a default size*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 200,100);\n"
-" \n"
-" /*Create a label and set its alignment. Setting the line wrap to TRUE makes \n"
-" the label break lines if the text exceeds the widget's size. When set to \n"
-" FALSE the text gets cut off by the edge of the widget*/\n"
-" label = gtk_label_new (\"Hello GNOME!\");\n"
-" gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER);\n"
-" gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (label));\n"
-"\n"
-" gtk_widget_show_all (GTK_WIDGET (window));\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/label.c.page:39
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkLabel.html\">GtkLabel</"
-"link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkLabel.html\">GtkLabel</"
-"link>"
-
-#. (itstool) path: info/title
-#: C/label.js.page:8
-msgctxt "text"
-msgid "Label (JavaScript)"
-msgstr "Label (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/label.js.page:18
-msgid "A label which can contain text"
-msgstr "Una etiqueta que puede contener texto"
-
-#. (itstool) path: page/p
-#: C/label.js.page:23
-msgid "A label displaying a friendly message."
-msgstr "Un widget que muestra un mensaje amigable"
-
-#. (itstool) path: page/code
-#: C/label.js.page:25
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const LabelExample = new Lang.Class ({\n"
-" Name: 'Label Example',\n"
-"\n"
-" /* Create the application itself\n"
-" This boilerplate code is needed to build any GTK+ application. */\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jslabel',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal initializes menus and builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Welcome to GNOME\",\n"
-" default_height: 100,\n"
-" default_width: 200 });\n"
-"\n"
-" // Create the label\n"
-" this.label = new Gtk.Label ({label: \"Hello GNOME!\"});\n"
-" this._window.add (this.label);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" }\n"
-"\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new LabelExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const LabelExample = new Lang.Class ({\n"
-" Name: 'Label Example',\n"
-"\n"
-" /* Create the application itself\n"
-" This boilerplate code is needed to build any GTK+ application. */\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jslabel',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal initializes menus and builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Welcome to GNOME\",\n"
-" default_height: 100,\n"
-" default_width: 200 });\n"
-"\n"
-" // Create the label\n"
-" this.label = new Gtk.Label ({label: \"Hello GNOME!\"});\n"
-" this._window.add (this.label);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" }\n"
-"\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new LabelExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/label.js.page:32
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Label.html"
-"\">Gtk.Label</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Label.html"
-"\">Gtk.Label</link>"
-
-#. (itstool) path: info/title
-#: C/label.py.page:9
-msgctxt "text"
-msgid "Label (Python)"
-msgstr "Label (Python)"
-
-#. (itstool) path: info/desc
-#: C/label.py.page:27
-msgid "A widget that displays a small to medium amount of text"
-msgstr "Un widget que muestra una cantidad pequeña o mediana de texto"
-
-#. (itstool) path: section/p
-#: C/label.py.page:41
-msgid ""
-"Another way to obtain what we have in the example is to create the label as "
-"an instance of another class and add it to the instance of <code>MyWindow</"
-"code> in the <code>do_activate(self)</code> method:"
-msgstr ""
-"Otra manera de obtener lo que se tiene en el ejemplo es crear la etiqueta "
-"como una instancia de otra clase y añadirle la instancia de <code>MyWindow</"
-"code> en el método <code>do_activate(self)</code>:"
-
-#. (itstool) path: note/p
-#: C/label.py.page:43
-msgid ""
-"The highlighted lines indicate code that is different from the previous "
-"snippet."
-msgstr ""
-"Las líneas de texto resaltadas indican que el código es diferente al del "
-"fragmento anterior."
-
-#. (itstool) path: section/code
-#: C/label.py.page:45
-#, no-wrap
-msgid ""
-"\n"
-"# a class to define a window\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-" self.set_default_size(200, 100)\n"
-"\n"
-"# a class to define a label\n"
-"<hi>\n"
-"class MyLabel(Gtk.Label):\n"
-" def __init__(self):\n"
-" Gtk.Label.__init__(self)\n"
-" self.set_text(\"Hello GNOME!\")\n"
-"</hi>\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" # create an instance of MyWindow\n"
-" win = MyWindow(self)\n"
-"\n"
-" # create an instance of MyLabel\n"
-"<hi>\n"
-" label = MyLabel()\n"
-"</hi>\n"
-" # and add it to the window\n"
-"<hi>\n"
-" win.add(label)\n"
-"</hi>\n"
-" # show the window and everything on it\n"
-" win.show_all()"
-msgstr ""
-"\n"
-"# a class to define a window\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
-" self.set_default_size(200, 100)\n"
-"\n"
-"# a class to define a label\n"
-"<hi>\n"
-"class MyLabel(Gtk.Label):\n"
-" def __init__(self):\n"
-" Gtk.Label.__init__(self)\n"
-" self.set_text(\"Hello GNOME!\")\n"
-"</hi>\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" # create an instance of MyWindow\n"
-" win = MyWindow(self)\n"
-"\n"
-" # create an instance of MyLabel\n"
-"<hi>\n"
-" label = MyLabel()\n"
-"</hi>\n"
-" # and add it to the window\n"
-"<hi>\n"
-" win.add(label)\n"
-"</hi>\n"
-" # show the window and everything on it\n"
-" win.show_all()"
-
-#. (itstool) path: section/title
-#: C/label.py.page:82
-msgid "Useful methods for a Label widget"
-msgstr "Métodos útiles para un widget «Label»"
-
-#. (itstool) path: note/p
-#: C/label.py.page:85
-msgid ""
-"An explanation of how to work with strings in GTK+ can be found in <link "
-"xref=\"strings.py\"/>."
-msgstr ""
-"Puede encontrar una explicación de cómo trabajar con cadenas en GTK+ en la "
-"<link xref=\"strings.py\"/>."
-
-#. (itstool) path: item/p
-#: C/label.py.page:89
-msgid ""
-"<code>set_line_wrap(True)</code> breaks lines if the text of the label "
-"exceeds the size of the widget."
-msgstr ""
-"<code>set_line_wrap(True)</code> rompe líneas si el texto de la etiqueta "
-"excede el tamaño del widget."
-
-#. (itstool) path: item/p
-#: C/label.py.page:90
-msgid ""
-"<code>set_justify(Gtk.Justification.LEFT)</code> (or <code>Gtk.Justification."
-"RIGHT, Gtk.Justification.CENTER, Gtk.Justification.FILL</code>) sets the "
-"alignment of the lines in the text of the label relative to each other. The "
-"method has no effect on a single-line label."
-msgstr ""
-"<code>set_justify(Gtk.Justification.LEFT)</code> (o <code>Gtk.Justification."
-"RIGHT, Gtk.Justification.CENTER, Gtk.Justification.FILL</code>) establece la "
-"alineación de las líneas en el texto de la etiqueta respecto de sí. El "
-"método no tiene efecto en una etiqueta de una sola línea."
-
-#. (itstool) path: item/p
-#: C/label.py.page:91
-msgid ""
-"For decorated text we can use <code>set_markup(\"text\")</code>, where <code>"
-"\"text\"</code> is a text in the <link href=\"http://developer.gnome.org/"
-"pango/stable/PangoMarkupFormat.html\">Pango Markup Language</link>. An "
-"example:"
-msgstr ""
-"Para decorar el texto se puede usar <code>set_markup(\"texto\")</code>, "
-"donde <code>\"texto\"</code> es un texto en el <link href=\"http://developer."
-"gnome.org/pango/stable/PangoMarkupFormat.html\">lenguaje de marcación Pango</"
-"link>. Un ejemplo:"
-
-#. (itstool) path: item/code
-#: C/label.py.page:92
-#, no-wrap
-msgid ""
-"\n"
-"label.set_markup(\"Text can be <small>small</small>, <big>big</big>, \"\n"
-" \"<b>bold</b>, <i>italic</i> and even point to somewhere \"\n"
-" \"in the <a href=\\\"http://www.gtk.org\\\" \"\n"
-" \"title=\\\"Click to find out more\\\">internets</a>.\")"
-msgstr ""
-"\n"
-"label.set_markup(\"Text can be <small>small</small>, <big>big</big>, \"\n"
-" \"<b>bold</b>, <i>italic</i> and even point to somewhere \"\n"
-" \"in the <a href=\\\"http://www.gtk.org\\\" \"\n"
-" \"title=\\\"Click to find out more\\\">internets</a>.\")"
-
-#. (itstool) path: info/title
-#: C/label.vala.page:8
-msgctxt "text"
-msgid "Label (Vala)"
-msgstr "Label (Vala)"
-
-#. (itstool) path: page/code
-#: C/label.vala.page:25
-#, no-wrap
-msgid ""
-"\n"
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
-"\n"
-"\t\tvar label = new Gtk.Label (\"Hello GNOME!\");\n"
-"\n"
-"\t\tthis.add (label);\n"
-"\t\tthis.set_default_size (200, 100);\n"
-"\t\tthis.show_all ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"\n"
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
-"\n"
-"\t\tvar label = new Gtk.Label (\"Hello GNOME!\");\n"
-"\n"
-"\t\tthis.add (label);\n"
-"\t\tthis.set_default_size (200, 100);\n"
-"\t\tthis.show_all ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: p/link
-#: C/legal.xml:3
-msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License"
-msgstr "Creative Commons de Atribución-Compartir Igual 3.0 sin soporte"
-
-#. (itstool) path: license/p
-#: C/legal.xml:3
-msgid ""
-"This work is licensed under a <_:link-1/>. As a special exception, the "
-"copyright holders give you permission to copy, modify, and distribute the "
-"example code contained in this documentation under the terms of your "
-"choosing, without restriction."
-msgstr ""
-"Este trabajo está licenciado bajo la <_:link-1/>. Como una excepción "
-"especial, los titulares de los derechos de autor le dan el permiso de "
-"copiar, modificar, y distribuir el código de ejemplo contenido en esta "
-"documentación bajo sus propios términos, sin restricción."
-
-#. (itstool) path: info/desc
-#: C/license.page:8
-msgid "Legal information."
-msgstr "Información legal."
-
-#. (itstool) path: page/title
-#: C/license.page:11
-msgid "License"
-msgstr "Licencia"
-
-#. (itstool) path: page/p
-#: C/license.page:12
-msgid ""
-"This work is distributed under a CreativeCommons Attribution-Share Alike 3.0 "
-"Unported license."
-msgstr ""
-"Este trabajo está distribuido bajo una licencia Creative Commons Compartir-"
-"Igual 3.0 sin soporte."
-
-#. (itstool) path: page/p
-#: C/license.page:20
-msgid "You are free:"
-msgstr "Es libre de:"
-
-#. (itstool) path: item/title
-#: C/license.page:25
-msgid "<em>To share</em>"
-msgstr "Compartir"
-
-#. (itstool) path: item/p
-#: C/license.page:26
-msgid "To copy, distribute and transmit the work."
-msgstr "Copiar, distribuir y comunicar públicamente la obra"
-
-#. (itstool) path: item/title
-#: C/license.page:29
-msgid "<em>To remix</em>"
-msgstr "Hacer obras derivadas"
-
-#. (itstool) path: item/p
-#: C/license.page:30
-msgid "To adapt the work."
-msgstr "Adaptar el trabajo."
-
-#. (itstool) path: page/p
-#: C/license.page:33
-msgid "Under the following conditions:"
-msgstr "Bajo las siguientes condiciones:"
-
-#. (itstool) path: item/title
-#: C/license.page:38
-msgid "<em>Attribution</em>"
-msgstr "Atribución"
-
-#. (itstool) path: item/p
-#: C/license.page:39
-msgid ""
-"You must attribute the work in the manner specified by the author or "
-"licensor (but not in any way that suggests that they endorse you or your use "
-"of the work)."
-msgstr ""
-"Debe reconocer los créditos de la obra de la manera especificada por el "
-"autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo "
-"o apoyan el uso que hace de su obra)."
-
-#. (itstool) path: item/title
-#: C/license.page:46
-msgid "<em>Share Alike</em>"
-msgstr "Compartir igual"
-
-#. (itstool) path: item/p
-#: C/license.page:47
-msgid ""
-"If you alter, transform, or build upon this work, you may distribute the "
-"resulting work only under the same, similar or a compatible license."
-msgstr ""
-"Si altera, transforma, o se basa en este trabajo, puede distribuir el "
-"trabajo resultante sólo bajo una licencia igual, similar o compatible."
-
-#. (itstool) path: page/p
-#: C/license.page:53
-msgid ""
-"For the full text of the license, see the <link href=\"http://"
-"creativecommons.org/licenses/by-sa/3.0/legalcode\">CreativeCommons website</"
-"link>, or read the full <link href=\"http://creativecommons.org/licenses/by-"
-"sa/3.0/\">Commons Deed</link>."
-msgstr ""
-"Para un texto completo de la licencia, consulte el <link href=\"http://"
-"creativecommons.org/licenses/by-sa/3.0/legalcode\">sitio web de "
-"CreativeCommons</link>, o lea el <link href=\"http://creativecommons.org/"
-"licenses/by-sa/3.0/\">resumen de Commons</link> completo."
-
-#. (itstool) path: note/p
-#: C/license.page:60
-msgid ""
-"As a special exception, the copyright holders give you permission to copy, "
-"modify, and distribute the example code contained in this documentation "
-"under the terms of your choosing, without restriction."
-msgstr ""
-"Como una excepción especial, los titulares de los derechos de autor le dan "
-"el permiso de copiar, modificar, y distribuir el código de ejemplo contenido "
-"en esta documentación bajo sus propios términos, sin restricción."
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/linkbutton.c.page:23 C/linkbutton.js.page:22 C/linkbutton.py.page:24
-#: C/linkbutton.vala.page:22
-msgctxt "_"
-msgid ""
-"external ref='media/linkbutton.png' md5='3712eae8953e87c65a6aa74503b8e32b'"
-msgstr ""
-"external ref='media/linkbutton.png' md5='3712eae8953e87c65a6aa74503b8e32b'"
-
-#. (itstool) path: info/title
-#: C/linkbutton.c.page:8
-msgctxt "text"
-msgid "LinkButton (C)"
-msgstr "LinkButton (C)"
-
-#. (itstool) path: info/desc
-#: C/linkbutton.c.page:18 C/linkbutton.vala.page:18
-msgid "Create buttons bound to a URL"
-msgstr "Crear botones asociados a un URL"
-
-#. (itstool) path: page/title
-#: C/linkbutton.c.page:21 C/linkbutton.js.page:21 C/linkbutton.py.page:22
-#: C/linkbutton.vala.page:21
-msgid "LinkButton"
-msgstr "LinkButton"
-
-#. (itstool) path: page/p
-#: C/linkbutton.c.page:24
-msgid "This button links to the GNOME live webpage."
-msgstr "Este botón enlaza con la página web de GNOME Live."
-
-#. (itstool) path: page/code
-#: C/linkbutton.c.page:26
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *linkbutton;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-"\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"GNOME LinkButton\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n"
-"\n"
-" linkbutton = gtk_link_button_new (\"Link to GNOME live!\");\n"
-" gtk_link_button_set_uri (GTK_LINK_BUTTON(linkbutton), \"http://live.gnome.org\");\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (linkbutton));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *linkbutton;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-"\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"GNOME LinkButton\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n"
-"\n"
-" linkbutton = gtk_link_button_new (\"Link to GNOME live!\");\n"
-" gtk_link_button_set_uri (GTK_LINK_BUTTON(linkbutton), \"http://live.gnome.org\");\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (linkbutton));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/linkbutton.c.page:34
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkLinkButton.html"
-"\">GtkLinkButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkLinkButton.html"
-"\">GtkLinkButton</link>"
-
-#. (itstool) path: info/title
-#: C/linkbutton.js.page:8
-msgctxt "text"
-msgid "LinkButton (JavaScript)"
-msgstr "LinkButton (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/linkbutton.js.page:18
-msgid "A button that links to a web page"
-msgstr "Un botón que enlaza con una página web"
-
-#. (itstool) path: page/p
-#: C/linkbutton.js.page:23
-msgid "A button that links to live.gnome.org."
-msgstr "Un botón que enlaza con live.gnome.org."
-
-#. (itstool) path: page/code
-#: C/linkbutton.js.page:25
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const LinkButtonExample = new Lang.Class ({\n"
-" Name: 'LinkButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jslinkbutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal initializes menus and builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"GNOME LinkButton\",\n"
-" default_height: 50,\n"
-" default_width: 250 });\n"
-"\n"
-" // Create the LinkButton and have it link to live.gnome.org\n"
-" this.LinkButton = new Gtk.LinkButton ({label: \"Link to GNOME live!\",\n"
-" uri: \"http://live.gnome.org\"});\n"
-" this._window.add (this.LinkButton);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new LinkButtonExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const LinkButtonExample = new Lang.Class ({\n"
-" Name: 'LinkButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jslinkbutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal initializes menus and builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"GNOME LinkButton\",\n"
-" default_height: 50,\n"
-" default_width: 250 });\n"
-"\n"
-" // Create the LinkButton and have it link to live.gnome.org\n"
-" this.LinkButton = new Gtk.LinkButton ({label: \"Link to GNOME live!\",\n"
-" uri: \"http://live.gnome.org\"});\n"
-" this._window.add (this.LinkButton);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new LinkButtonExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/linkbutton.js.page:32
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.LinkButton."
-"html\">Gtk.LinkButton</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.LinkButton."
-"html\">Gtk.LinkButton</link>"
-
-#. (itstool) path: info/title
-#: C/linkbutton.py.page:8
-msgctxt "text"
-msgid "LinkButton (Python)"
-msgstr "LinkButton (Python)"
-
-#. (itstool) path: info/desc
-#: C/linkbutton.py.page:19
-msgid "A button bound to an URL"
-msgstr "Un botón asociado a un URL"
-
-#. (itstool) path: page/p
-#: C/linkbutton.py.page:25
-msgid "A button that links to a web page."
-msgstr "Un botón que enlaza con una página web."
-
-#. (itstool) path: section/code
-#: C/linkbutton.py.page:32
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"GNOME LinkButton\", application=app)\n"
-" self.set_default_size(250, 50)\n"
-"\n"
-" # a linkbutton pointing to the given URI\n"
-" button = Gtk.LinkButton(uri=\"http://live.gnome.org\")\n"
-" # with given text\n"
-" button.set_label(\"Link to GNOME live!\")\n"
-"\n"
-" # add the button to the window\n"
-" self.add(button)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"GNOME LinkButton\", application=app)\n"
-" self.set_default_size(250, 50)\n"
-"\n"
-" # a linkbutton pointing to the given URI\n"
-" button = Gtk.LinkButton(uri=\"http://live.gnome.org\")\n"
-" # with given text\n"
-" button.set_label(\"Link to GNOME live!\")\n"
-"\n"
-" # add the button to the window\n"
-" self.add(button)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/linkbutton.py.page:36
-msgid "Useful methods for a LinkButton widget"
-msgstr "Métodos útiles para un widget «LinkButton»"
-
-#. (itstool) path: item/p
-#: C/linkbutton.py.page:38
-msgid ""
-"<code>get_visited()</code> returns the 'visited' state (<code>True</code> or "
-"<code>False</code>) of the URI where the LinkButton points. The button "
-"becomes visited when it is clicked."
-msgstr ""
-"<code>get_visited()</code> devuelve el estado «visitado» (<code>True</code> o "
-"<code>False</code>) del URI al que el «LinkButton» apunta. El botón se vuelve "
-"«visitado» cuando se pulsa."
-
-#. (itstool) path: item/p
-#: C/linkbutton.py.page:39
-msgid ""
-"<code>set_visited(True)</code> sets the 'visited' state of the URI where the "
-"LinkButton points as <code>True</code> (analogously for <code>False</code>)."
-msgstr ""
-"<code>set_visited(True)</code> establece el estado «visitado» del URI al que "
-"el LinkButton apunta a <code>True</code> (análogamente para <code>False</"
-"code>)."
-
-#. (itstool) path: item/p
-#: C/linkbutton.py.page:40
-msgid ""
-"Each time the button is clicked, the signal <code>\"activate-link\"</code> "
-"is emitted. For an explanation of signals and callback functions, see <link "
-"xref=\"signals-callbacks.py\"/>."
-msgstr ""
-"Cada vez que se pulsa un botón, se emite la señal <code>«activate-link»</"
-"code>. Para obtener una explicación de señales y funciones de retorno de "
-"llamada, consulte la <link xref=\"signals-callbacks.py\"/>."
-
-#. (itstool) path: item/p
-#: C/linkbutton.py.page:48
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkLinkButton.html"
-"\">GtkLinkButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkLinkButton.html"
-"\">GtkLinkButton</link>"
-
-#. (itstool) path: info/title
-#: C/linkbutton.vala.page:8
-msgctxt "text"
-msgid "LinkButton (Vala)"
-msgstr "LinkButton (Vala)"
-
-#. (itstool) path: page/p
-#: C/linkbutton.vala.page:23
-msgid "This button links to GNOME live."
-msgstr "Un botón que enlaza con GNOME live."
-
-#. (itstool) path: page/code
-#: C/linkbutton.vala.page:25
-#, no-wrap
-msgid ""
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t/* Create the window of this application and child widget and show all the things. */\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.set_default_size (250, 50);\n"
-"\t\twindow.title = \"GNOME LinkButton\";\n"
-"\n"
-"\t\tvar linkbutton = new Gtk.LinkButton.with_label (\"http://live.gnome.org\", \"Link to GNOME live!\");\n"
-"\n"
-"\t\twindow.add (linkbutton);\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t/* Create the window of this application and child widget and show all the things. */\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.set_default_size (250, 50);\n"
-"\t\twindow.title = \"GNOME LinkButton\";\n"
-"\n"
-"\t\tvar linkbutton = new Gtk.LinkButton.with_label (\"http://live.gnome.org\", \"Link to GNOME live!\");\n"
-"\n"
-"\t\twindow.add (linkbutton);\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/linkbutton.vala.page:30
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.LinkButton.html\">Gtk."
-"LinkButton</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.LinkButton.html\">Gtk."
-"LinkButton</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/magic-mirror.vala.page:47
-msgctxt "_"
-msgid ""
-"external ref='media/magic-mirror.png' md5='8171faea6ed3b6ddac0da084c29e4e22'"
-msgstr ""
-"external ref='media/magic-mirror.png' md5='8171faea6ed3b6ddac0da084c29e4e22'"
-
-#. (itstool) path: info/title
-#: C/magic-mirror.vala.page:8
-msgctxt "text"
-msgid "Magic mirror (Vala)"
-msgstr "Espejo mágico (Vala)"
-
-#. (itstool) path: info/desc
-#: C/magic-mirror.vala.page:11
-msgid "Use your webcam as a mirror using the GStreamer framework and GTK+"
-msgstr ""
-"Utilice su cámara web como un espejo usando el entorno de trabajo GStreamer "
-"y GTK+"
-
-#. (itstool) path: credit/name
-#: C/magic-mirror.vala.page:15
-msgid "Daniel G. Siegel"
-msgstr "Daniel G. Siegel"
-
-#. (itstool) path: page/title
-#: C/magic-mirror.vala.page:29
-msgid "Magic mirror"
-msgstr "Espejo mágico"
-
-#. (itstool) path: synopsis/p
-#: C/magic-mirror.vala.page:32
-msgid ""
-"<em>Your mirror just fell off the wall and broke into a thousand pieces — "
-"but you need a mirror to shave your beard off or add some makeup! You only "
-"have 15 minutes left before catching the bus to work. So what can you do?</"
-"em>"
-msgstr ""
-"<em>Su espejo se ha caído al suelo y se ha roto en miles de pedazos; pero "
-"necesita un espejo para afeitarse o para maquillarse. Solo tiene 15 minutos "
-"antes de coger el autobús para ir al trabajo. ¿Qué puede hacer?</em>"
-
-#. (itstool) path: synopsis/p
-#: C/magic-mirror.vala.page:33
-msgid ""
-"In this tutorial, we're going to make a program which lets you use your "
-"webcam as a mirror. You will learn how to:"
-msgstr ""
-"En este tutorial se va a hacer un programa que le permite usar su cámara web "
-"como un espejo. Aprenderá a:"
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:35
-msgid "Create a GTK+ application"
-msgstr "Crear una aplicación GTK+"
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:36
-msgid "Access your webcam using GStreamer and embed the result into a window"
-msgstr ""
-"Acceder a su cámara web usando GStreamer y empotrar el resultado en una "
-"ventana"
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:37
-msgid "Grab photos off your webcam"
-msgstr "Obtener las fotos de su cámara web"
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:42
-msgid "Installed copies of GTK, GStreamer, and a Vala compiler"
-msgstr "Copias instaladas de GTK, GStreamer y de un compilador de Vala"
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:43
-msgid "Basic knowledge of an object-oriented programming language"
-msgstr ""
-"Conocimientos básico de un lenguaje de programación orientado a objetos"
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:57
-msgid ""
-"Choose <gui>GTK+ (simple)</gui> from the <gui>Vala</gui> tab, click "
-"<gui>Forward</gui>, and fill out your details on the next few pages. Use "
-"<file>magic-mirror</file> as project name and directory."
-msgstr ""
-"Elija <gui>GTK+ (simple)</gui> de la pestaña <gui>Vala</gui>, pulse "
-"<gui>Adelante</gui> y rellene los detalles en las siguientes páginas. Use "
-"<file>espejo-magico</file> como nombre de proyecto y de carpeta."
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:60
-msgid ""
-"Disable <gui>Use GtkBuilder for user interface</gui> as we will create the "
-"UI manually in this tutorial. Check the <link xref=\"guitar-tuner.vala"
-"\">Guitar-Tuner</link> tutorial using the interface builder."
-msgstr ""
-"Desactive la opción <gui>Usar GtkBuilder para la interfaz del usuario</gui>, "
-"ya que, en este tutorial, la interfaz de usuario se creará manualmente. "
-"Revise el tutorial <link xref=\"guitar-tuner.vala\">afinador-guitarra</link> "
-"usando el constructor de interfaces."
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:65
-msgid ""
-"Make sure that <gui>Configure external packages</gui> is selected. On the "
-"next page, select <em>gstreamer-0.10</em> from the list to include the "
-"<app>GStreamer</app> library into your project."
-msgstr ""
-"Asegúrese de que <gui>Configurar paquetes externos</gui> está seleccionada. "
-"En la siguiente página, seleccione <em>gstreamermm-0.10</em> de la lista "
-"para incluir la biblioteca <app>GStreamer</app> en su proyecto."
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:69
-msgid ""
-"Click <gui>Apply</gui> and the project will be created for you. Open "
-"<file>src/magic_mirror.vala</file> from the <gui>Project</gui> or <gui>File</"
-"gui> tabs. You should see some code which starts with the lines:"
-msgstr ""
-"Pulse <gui>Aplicar</gui> y se creará el proyecto. Abra <file>src/espejo-"
-"magico.vala</file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</"
-"gui>. Debería ver algo de código que comience con las líneas:"
-
-#. (itstool) path: section/p
-#: C/magic-mirror.vala.page:79
-msgid ""
-"The code loads an (empty) window 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) y la muestra. A continuación hay más "
-"detalles; omita esta lista si entiende los conceptos básicos:"
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:85
-msgid ""
-"The constructor of the <code>Main</code> class creates a new window and sets "
-"its title. Afterwards the window is shown and a signal is connected which "
-"quits the application if the window is closed. More on signals later on."
-msgstr ""
-"El constructor de la clase <code>Main</code> crea una ventana nueva y "
-"establece su título. Después se muestra la ventana y se conecta una señal "
-"que cierra la aplicación si se cierra la ventana. Se verán más señales más "
-"adelante."
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:89
-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)."
-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)."
-
-#. (itstool) path: section/title
-#: C/magic-mirror.vala.page:98
-msgid "Access the webcam video stream with GStreamer"
-msgstr "Acceder al flujo de vídeo de la cámara web con GStreamer"
-
-#. (itstool) path: section/p
-#: C/magic-mirror.vala.page:99
-msgid ""
-"The GStreamer multimedia framework is able to handle video from webcams. "
-"Let's add GStreamer to our application and so we can access the video stream."
-msgstr ""
-"El entorno multimedia de trabajo GStreamer es capaz de manejar vídeo desde "
-"cámaras web. Añada GStreamer a su aplicación y podrá acceder al flujo de "
-"vídeo."
-
-#. (itstool) path: section/code
-#: C/magic-mirror.vala.page:101
-#, no-wrap
-msgid ""
-"\n"
-"using GLib;\n"
-"using Gtk;\n"
-"\n"
-"public class Main : Object\n"
-"{\n"
-"\tprivate Gst.Element camerabin;\n"
-"\n"
-"\tpublic Main () {\n"
-"\t\tthis.camerabin = Gst.ElementFactory.make (\"camerabin\", \"camera\");\n"
-"\t\tthis.camerabin.set_state (Gst.State.PLAYING);\n"
-"\t}\n"
-"\n"
-"\tstatic int main (string[] args) {\n"
-"\t\tGtk.init (ref args);\n"
-"\t\tGst.init (ref args);\n"
-"\t\tvar app = new Main ();\n"
-"\n"
-"\t\tGtk.main ();\n"
-"\n"
-"\t\treturn 0;\n"
-"\t}\n"
-"}\n"
-msgstr ""
-"\n"
-"using GLib;\n"
-"using Gtk;\n"
-"\n"
-"public class Main : Object\n"
-"{\n"
-"\tprivate Gst.Element camerabin;\n"
-"\n"
-"\tpublic Main () {\n"
-"\t\tthis.camerabin = Gst.ElementFactory.make (\"camerabin\", \"camera\");\n"
-"\t\tthis.camerabin.set_state (Gst.State.PLAYING);\n"
-"\t}\n"
-"\n"
-"\tstatic int main (string[] args) {\n"
-"\t\tGtk.init (ref args);\n"
-"\t\tGst.init (ref args);\n"
-"\t\tvar app = new Main ();\n"
-"\n"
-"\t\tGtk.main ();\n"
-"\n"
-"\t\treturn 0;\n"
-"\t}\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:126
-msgid ""
-"First we remove the window we created before because GStreamer will take "
-"care of showing the picture on screen."
-msgstr ""
-"Primero se quita la ventana creada anteriormente, ya que GStreamer se "
-"encargará de mostrar la imagen en la pantalla."
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:130
-msgid ""
-"Now we are creating a GStreamer element which accesses our webcam. We are "
-"using the Camerabin element, which is an all-in-one camera element and is "
-"capable of taking photos, videos, applying effects and much more. Perfect "
-"for our use case! With <code>this.camerabin.set_state (Gst.State.PLAYING)</"
-"code> we tell the GStreamer pipeline we just created to start playing. Easy, "
-"no?"
-msgstr ""
-"Ahora se va a crear un elemento de GStreamer que accede a la cámara web. Se "
-"va a usar el elemento «Camerabin», que es un elemento de cámara todo en uno "
-"capaz de hacer fotos, vídeos, aplicar efectos y mucho más. Perfecto para "
-"nuestro caso de uso. Con <code>this.camerabin.set_state (Gst.State.PLAYING)</"
-"code> se indica a la tubería de GStreamer que se acaba de crear que empiece "
-"a reproducir. Fácil, ¿no?"
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:137
-msgid ""
-"Of course it is also possible to integrate the video more tighly into other "
-"windows but that is an advanced topic that includes some details of the X "
-"Window System we will omit here."
-msgstr ""
-"Por supuesto, también es posible integrar el vídeo más ajustadamente en "
-"otras ventanas, pero esto es un tema avanzado que incluye algunos detalles "
-"sobre el sistema «X-Window» que aquí se omiten."
-
-#. (itstool) path: item/p
-#: C/magic-mirror.vala.page:141
-msgid ""
-"Compile and run it again. You will end up with two windows. In the next step "
-"we will integrate the video into the GTK+ window."
-msgstr ""
-"Compile y ejecute de nuevo. Acabará teniendo dos ventanas. En el siguiente "
-"paso, se integrará el vídeo en una ventana de GTK+."
-
-#. (itstool) path: section/p
-#: C/magic-mirror.vala.page:151
-msgid ""
-"If you run into problems with the tutorial, compare your code with this "
-"<link href=\"magic-mirror/magic-mirror.vala\">reference code</link>. There "
-"is also a more <link href=\"magic-mirror/magic-mirror-advanced.vala"
-"\">extensive implementation</link> that embeds the window into a regular Gtk."
-"Window which involves some advanced techniques, and adds buttons to start/"
-"stop the picture."
-msgstr ""
-"Si tiene problemas con este tutorial, compare su código con este <link href="
-"\"magic-mirror/magic-mirror.vala\">código de referencia</link>. También hay "
-"una <link href=\"magic-mirror/magic-mirror-advanced.vala\">implemnetación "
-"más amplia</link> que empotra la ventana en una ventana GTK regular que "
-"implica algunas técnicas avanzadas, y añade botones para iniciar/parar la "
-"imagen."
-
-#. (itstool) path: section/p
-#: C/magic-mirror.vala.page:158
-msgid ""
-"To find out more about the Vala programming language you might want to check "
-"out the <link href=\"http://live.gnome.org/Vala/Tutorial\">Vala Tutorial</"
-"link>."
-msgstr ""
-"Para obtener más información sobre el lenguaje de programación Vala, puede "
-"querer revisar el <link href=\"http://live.gnome.org/Vala/Tutorial"
-"\">tutorial de Vala</link>."
-
-#. (itstool) path: section/title
-#: C/magic-mirror.vala.page:163
-msgid "Conclusion"
-msgstr "Conclusión"
-
-#. (itstool) path: section/p
-#: C/magic-mirror.vala.page:164
-msgid ""
-"That's it, you have managed to create a full-featured webcam photo "
-"application in 15 minutes. Now you can shave your beard off or add some "
-"makeup to your beautiful face, right before having a beautiful day at your "
-"workplace, where you can impress your friends and colleagues with an awesome "
-"application you just made in 15 minutes."
-msgstr ""
-"Ya está, ha conseguido crear una aplicación de cámara web con todas las "
-"funciones de fotos en 15 minutos. Ahora puede afeitarse la barba o maquillar "
-"su bonita cara justo antes de tener un gran día en su trabajo, donde puede "
-"impresionar a sus amigos y colegas con una impresionante aplicación que ha "
-"hecho en 15 minutos."
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/menubar.c.page:25 C/menubar.py.page:29 C/menubar.vala.page:24
-msgctxt "_"
-msgid "external ref='media/menubar.png' md5='7b642aaa1628d5e43ab85ac230ac1c78'"
-msgstr ""
-"external ref='media/menubar.png' md5='7b642aaa1628d5e43ab85ac230ac1c78'"
-
-#. (itstool) path: info/title
-#: C/menubar.c.page:8
-msgctxt "text"
-msgid "MenuBar (C)"
-msgstr "MenuBar (C)"
-
-#. (itstool) path: info/desc
-#: C/menubar.c.page:20 C/menubar.py.page:25 C/menubar.vala.page:20
-msgid "A widget which holds GtkMenuItem widgets"
-msgstr "Un widget que contiene widgets «GtkMenuItem»"
-
-#. (itstool) path: page/title
-#: C/menubar.c.page:23 C/menubar.vala.page:23
-msgid "MenuBar"
-msgstr "MenuBar"
-
-#. (itstool) path: page/p
-#: C/menubar.c.page:26 C/menubar.py.page:30 C/menubar.vala.page:25
-msgid "A MenuBar created using XML and GtkBuilder."
-msgstr "Una barra de menú usando XML y GtkBuilder."
-
-#. (itstool) path: note/p
-#: C/menubar.c.page:27
-msgid ""
-"For a more in-depth look at this sample, please do not hesitate to check out "
-"the <link xref=\"menubar.vala\">Vala MenuBar</link> and/or <link xref="
-"\"menubar.py\">Python MenuBar</link> tutorials."
-msgstr ""
-"Para una visión más profunda a este ejemplo, no dude en echarle un vistazo a "
-"los tutoriales de la <link xref=\"menubar.vala\">Barra de menú Vala</link> y/"
-"o la <link xref=\"menubar.py\">Barra de menú Python</link>."
-
-#. (itstool) path: page/code
-#: C/menubar.c.page:31
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the \"copy\" action */\n"
-"static void\n"
-"copy_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"\\\"Copy\\\" activated\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the \"paste\" action */\n"
-"static void\n"
-"paste_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"\\\"Paste\\\" activated\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the \"shape\" action */\n"
-"static void\n"
-"shape_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* We first gather the value of the GVariant instance with a string type.\n"
-" * The overall goal here is to see if shape is set to line, triangle, etc,\n"
-" * and put that value within the variable \"answer\".\n"
-" */\n"
-" const gchar *answer = g_variant_get_string (parameter, NULL);\n"
-" g_printf (\"Shape is set to %s.\\n\", answer);\n"
-" /* Note that we set the state of the action */\n"
-" g_simple_action_set_state (simple, parameter);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function in which closes the about_dialog created below */\n"
-"static void\n"
-"on_close (GtkDialog *dialog,\n"
-" gint response_id,\n"
-" gpointer user_data)\n"
-"{\n"
-" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the about action (see aboutdialog.c example) */\n"
-"static void\n"
-"about_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *about_dialog;\n"
-"\n"
-" about_dialog = gtk_about_dialog_new ();\n"
-"\n"
-" const gchar *authors[] = {\"GNOME Documentation Team\", NULL};\n"
-" const gchar *documenters[] = {\"GNOME Documentation Team\", NULL};\n"
-"\n"
-" /* Fill in the about_dialog with the desired information */\n"
-" gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (about_dialog), \"AboutDialog Example\");\n"
-" gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about_dialog), \"Copyright \\xc2\\xa9 2012 GNOME
Documentation Team\");\n"
-" gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about_dialog), authors);\n"
-" gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (about_dialog), documenters);\n"
-" gtk_about_dialog_set_website_label (GTK_ABOUT_DIALOG (about_dialog), \"GNOME Developer Website\");\n"
-" gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about_dialog), \"http://developer.gnome.org\");\n"
-"\n"
-" /* The \"response\" signal is emitted when the dialog receives a delete event,\n"
-" * therefore we connect that signal to the on_close callback function\n"
-" * created above.\n"
-" */\n"
-" g_signal_connect (GTK_DIALOG (about_dialog), \"response\",\n"
-" G_CALLBACK (on_close), NULL);\n"
-"\n"
-" /* Show the about dialog */\n"
-" gtk_widget_show (about_dialog);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-"\n"
-" GSimpleAction *copy_action;\n"
-" GSimpleAction *paste_action;\n"
-" GSimpleAction *shape_action;\n"
-" GSimpleAction *about_action;\n"
-"\n"
-" /* Create a window with a title and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"MenuBar Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n"
-"\n"
-" /* Begin creating the \"copy\" action.\n"
-" * Note that it is an action without a state.\n"
-" */\n"
-" copy_action = g_simple_action_new (\"copy\", NULL);\n"
-" /* Connected to a callback function */\n"
-" g_signal_connect (copy_action, \"activate\", G_CALLBACK (copy_callback),\n"
-" GTK_WINDOW (window));\n"
-" /* Added to the window */\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (copy_action));\n"
-"\n"
-" /* Begin creating the \"paste\" action.\n"
-" * Note that it is an action without a state.\n"
-" */\n"
-" paste_action = g_simple_action_new (\"paste\", NULL);\n"
-" /* Connect the action to a callback function */\n"
-" g_signal_connect (paste_action, \"activate\", G_CALLBACK (paste_callback),\n"
-" GTK_WINDOW (window));\n"
-" /* Add it to the window */\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (paste_action));\n"
-"\n"
-" /* Begin creating the \"shape\" action.\n"
-" * Note that it is an action with a state.\n"
-" * First we state that the parameter type of the simple action is a string.\n"
-" * When using g_variant_type_new, it is appropriate to free the return value\n"
-" * once you're done with it.\n"
-" */\n"
-" GVariantType *type_string = g_variant_type_new (\"s\");\n"
-" /* parameters for the g_simple_action_new_stateful are: (name, parameter type,\n"
-" * initial state).\n"
-" */\n"
-" shape_action = g_simple_action_new_stateful (\"shape\", type_string,\n"
-" g_variant_new_string (\"line\"));\n"
-" /* Connect the action to a callback function */\n"
-" g_signal_connect (shape_action, \"activate\", G_CALLBACK (shape_callback),\n"
-" GTK_WINDOW (window));\n"
-" /* Add it to the window */\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (shape_action));\n"
-" g_variant_type_free (type_string);\n"
-"\n"
-" /* Begin creating the \"about\" action.\n"
-" * Note that it is an action without a state.\n"
-" */\n"
-" about_action = g_simple_action_new (\"about\", NULL);\n"
-" /* Connect the action to a callback function */\n"
-" g_signal_connect (about_action, \"activate\", G_CALLBACK (about_callback),\n"
-" GTK_WINDOW (window));\n"
-" /* Add it to the window */\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the \"new\" action */\n"
-"static void\n"
-"new_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"New\\\"\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the \"quit\" action */\n"
-"static void\n"
-"quit_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GApplication *application = user_data;\n"
-"\n"
-" g_print (\"You clicked \\\"Quit\\\"\\n\");\n"
-" g_application_quit (application);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the \"state\" action */\n"
-"static void\n"
-"state_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* The two possibilities in this case for the \"answer\" variable are either\n"
-" * \"on\" or \"off\".\n"
-" */\n"
-" const gchar *answer = g_variant_get_string (parameter, NULL);\n"
-" /* We print the information to the user */\n"
-" g_printf (\"State is set to %s.\\n\", answer);\n"
-" /* Note that we set the state of the action */\n"
-" g_simple_action_set_state (simple, parameter);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the \"awesome\" action */\n"
-"static void\n"
-"awesome_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GVariant *action_state = g_action_get_state (G_ACTION (simple));\n"
-" gboolean active = g_variant_get_boolean (action_state);\n"
-" GVariant *new_state = g_variant_new_boolean (!active);\n"
-" /* Set the new state for the action.\n"
-" * (Keeps track of whether it was last checked or unchecked).\n"
-" */\n"
-" g_simple_action_set_state (simple, new_state);\n"
-"\n"
-" if (active)\n"
-" g_print (\"You unchecked \\\"Awesome\\\"\\n\");\n"
-" else\n"
-" g_print (\"You checked \\\"Awesome\\\"\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the menu we are creating in this sample */\n"
-"static void\n"
-"startup (GApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* Initialize variables */\n"
-" GSimpleAction *new_action;\n"
-" GSimpleAction *quit_action;\n"
-" GSimpleAction *state_action;\n"
-" GSimpleAction *awesome_action;\n"
-"\n"
-" GtkBuilder *builder;\n"
-"\n"
-" GError *error = NULL;\n"
-"\n"
-" /* Begin creating the \"new\" action.\n"
-" * Note that it is an action without a state.\n"
-" */\n"
-" new_action = g_simple_action_new (\"new\", NULL);\n"
-" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
-" /* It is added to the overall application */\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
-"\n"
-" /* Begin creating the \"quit\" action.\n"
-" * Note that it is an action without a state.\n"
-" */\n"
-" quit_action = g_simple_action_new (\"quit\", NULL);\n"
-" g_signal_connect (quit_action, \"activate\", G_CALLBACK (quit_callback), app);\n"
-" /* It is added to the overall application */\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
-"\n"
-" /* Begin creating the \"state\" action.\n"
-" * Note that it is an action with a state.\n"
-" */\n"
-" GVariantType *type_string2 = g_variant_type_new (\"s\");\n"
-" state_action = g_simple_action_new_stateful (\"state\", type_string2,\n"
-" g_variant_new_string (\"off\"));\n"
-" g_signal_connect (state_action, \"activate\", G_CALLBACK (state_callback), app);\n"
-" /* It is added to the overall application */\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (state_action));\n"
-" g_variant_type_free (type_string2);\n"
-"\n"
-" /* Begin creating the \"awesome\" action.\n"
-" * Note that it is an action with a state.\n"
-" */\n"
-" awesome_action = g_simple_action_new_stateful (\"awesome\", NULL, g_variant_new_boolean (FALSE));\n"
-" g_signal_connect (awesome_action, \"activate\", G_CALLBACK (awesome_callback), app);\n"
-" /* It is added to the overall application */\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (awesome_action));\n"
-"\n"
-" /* A builder to add the User Interface designed with GLADE to the grid: */\n"
-" builder = gtk_builder_new ();\n"
-" /* Get the file (if it is there):\n"
-" * Note: you must make sure that the file is in the current directory for\n"
-" * this to work. The function used here returns a non-null value within\n"
-" * our variable \"error\" if an error is indeed found.\n"
-" */\n"
-" gtk_builder_add_from_file (builder, \"menubar.ui\", &error);\n"
-" if (error != NULL) {\n"
-" g_print (\"%s\\n\", error->message);\n"
-" g_error_free (error);\n"
-" }\n"
-"\n"
-" /* Extract the menubar */\n"
-" GObject *menubar = gtk_builder_get_object (builder, \"menubar\");\n"
-" gtk_application_set_menubar (GTK_APPLICATION (app), G_MENU_MODEL (menubar));\n"
-"\n"
-" /* Extract the appmenu */\n"
-" GObject *appmenu = gtk_builder_get_object (builder, \"appmenu\");\n"
-" gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (appmenu));\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the application */\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the \"copy\" action */\n"
-"static void\n"
-"copy_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"\\\"Copy\\\" activated\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the \"paste\" action */\n"
-"static void\n"
-"paste_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"\\\"Paste\\\" activated\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the \"shape\" action */\n"
-"static void\n"
-"shape_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* We first gather the value of the GVariant instance with a string type.\n"
-" * The overall goal here is to see if shape is set to line, triangle, etc,\n"
-" * and put that value within the variable \"answer\".\n"
-" */\n"
-" const gchar *answer = g_variant_get_string (parameter, NULL);\n"
-" g_printf (\"Shape is set to %s.\\n\", answer);\n"
-" /* Note that we set the state of the action */\n"
-" g_simple_action_set_state (simple, parameter);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function in which closes the about_dialog created below */\n"
-"static void\n"
-"on_close (GtkDialog *dialog,\n"
-" gint response_id,\n"
-" gpointer user_data)\n"
-"{\n"
-" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the about action (see aboutdialog.c example) */\n"
-"static void\n"
-"about_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *about_dialog;\n"
-"\n"
-" about_dialog = gtk_about_dialog_new ();\n"
-"\n"
-" const gchar *authors[] = {\"GNOME Documentation Team\", NULL};\n"
-" const gchar *documenters[] = {\"GNOME Documentation Team\", NULL};\n"
-"\n"
-" /* Fill in the about_dialog with the desired information */\n"
-" gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (about_dialog), \"AboutDialog Example\");\n"
-" gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about_dialog), \"Copyright \\xc2\\xa9 2012 GNOME
Documentation Team\");\n"
-" gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about_dialog), authors);\n"
-" gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (about_dialog), documenters);\n"
-" gtk_about_dialog_set_website_label (GTK_ABOUT_DIALOG (about_dialog), \"GNOME Developer Website\");\n"
-" gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about_dialog), \"http://developer.gnome.org\");\n"
-"\n"
-" /* The \"response\" signal is emitted when the dialog receives a delete event,\n"
-" * therefore we connect that signal to the on_close callback function\n"
-" * created above.\n"
-" */\n"
-" g_signal_connect (GTK_DIALOG (about_dialog), \"response\",\n"
-" G_CALLBACK (on_close), NULL);\n"
-"\n"
-" /* Show the about dialog */\n"
-" gtk_widget_show (about_dialog);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-"\n"
-" GSimpleAction *copy_action;\n"
-" GSimpleAction *paste_action;\n"
-" GSimpleAction *shape_action;\n"
-" GSimpleAction *about_action;\n"
-"\n"
-" /* Create a window with a title and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"MenuBar Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n"
-"\n"
-" /* Begin creating the \"copy\" action.\n"
-" * Note that it is an action without a state.\n"
-" */\n"
-" copy_action = g_simple_action_new (\"copy\", NULL);\n"
-" /* Connected to a callback function */\n"
-" g_signal_connect (copy_action, \"activate\", G_CALLBACK (copy_callback),\n"
-" GTK_WINDOW (window));\n"
-" /* Added to the window */\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (copy_action));\n"
-"\n"
-" /* Begin creating the \"paste\" action.\n"
-" * Note that it is an action without a state.\n"
-" */\n"
-" paste_action = g_simple_action_new (\"paste\", NULL);\n"
-" /* Connect the action to a callback function */\n"
-" g_signal_connect (paste_action, \"activate\", G_CALLBACK (paste_callback),\n"
-" GTK_WINDOW (window));\n"
-" /* Add it to the window */\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (paste_action));\n"
-"\n"
-" /* Begin creating the \"shape\" action.\n"
-" * Note that it is an action with a state.\n"
-" * First we state that the parameter type of the simple action is a string.\n"
-" * When using g_variant_type_new, it is appropriate to free the return value\n"
-" * once you're done with it.\n"
-" */\n"
-" GVariantType *type_string = g_variant_type_new (\"s\");\n"
-" /* parameters for the g_simple_action_new_stateful are: (name, parameter type,\n"
-" * initial state).\n"
-" */\n"
-" shape_action = g_simple_action_new_stateful (\"shape\", type_string,\n"
-" g_variant_new_string (\"line\"));\n"
-" /* Connect the action to a callback function */\n"
-" g_signal_connect (shape_action, \"activate\", G_CALLBACK (shape_callback),\n"
-" GTK_WINDOW (window));\n"
-" /* Add it to the window */\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (shape_action));\n"
-" g_variant_type_free (type_string);\n"
-"\n"
-" /* Begin creating the \"about\" action.\n"
-" * Note that it is an action without a state.\n"
-" */\n"
-" about_action = g_simple_action_new (\"about\", NULL);\n"
-" /* Connect the action to a callback function */\n"
-" g_signal_connect (about_action, \"activate\", G_CALLBACK (about_callback),\n"
-" GTK_WINDOW (window));\n"
-" /* Add it to the window */\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the \"new\" action */\n"
-"static void\n"
-"new_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"New\\\"\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the \"quit\" action */\n"
-"static void\n"
-"quit_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GApplication *application = user_data;\n"
-"\n"
-" g_print (\"You clicked \\\"Quit\\\"\\n\");\n"
-" g_application_quit (application);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the \"state\" action */\n"
-"static void\n"
-"state_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* The two possibilities in this case for the \"answer\" variable are either\n"
-" * \"on\" or \"off\".\n"
-" */\n"
-" const gchar *answer = g_variant_get_string (parameter, NULL);\n"
-" /* We print the information to the user */\n"
-" g_printf (\"State is set to %s.\\n\", answer);\n"
-" /* Note that we set the state of the action */\n"
-" g_simple_action_set_state (simple, parameter);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the \"awesome\" action */\n"
-"static void\n"
-"awesome_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GVariant *action_state = g_action_get_state (G_ACTION (simple));\n"
-" gboolean active = g_variant_get_boolean (action_state);\n"
-" GVariant *new_state = g_variant_new_boolean (!active);\n"
-" /* Set the new state for the action.\n"
-" * (Keeps track of whether it was last checked or unchecked).\n"
-" */\n"
-" g_simple_action_set_state (simple, new_state);\n"
-"\n"
-" if (active)\n"
-" g_print (\"You unchecked \\\"Awesome\\\"\\n\");\n"
-" else\n"
-" g_print (\"You checked \\\"Awesome\\\"\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the menu we are creating in this sample */\n"
-"static void\n"
-"startup (GApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* Initialize variables */\n"
-" GSimpleAction *new_action;\n"
-" GSimpleAction *quit_action;\n"
-" GSimpleAction *state_action;\n"
-" GSimpleAction *awesome_action;\n"
-"\n"
-" GtkBuilder *builder;\n"
-"\n"
-" GError *error = NULL;\n"
-"\n"
-" /* Begin creating the \"new\" action.\n"
-" * Note that it is an action without a state.\n"
-" */\n"
-" new_action = g_simple_action_new (\"new\", NULL);\n"
-" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
-" /* It is added to the overall application */\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
-"\n"
-" /* Begin creating the \"quit\" action.\n"
-" * Note that it is an action without a state.\n"
-" */\n"
-" quit_action = g_simple_action_new (\"quit\", NULL);\n"
-" g_signal_connect (quit_action, \"activate\", G_CALLBACK (quit_callback), app);\n"
-" /* It is added to the overall application */\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
-"\n"
-" /* Begin creating the \"state\" action.\n"
-" * Note that it is an action with a state.\n"
-" */\n"
-" GVariantType *type_string2 = g_variant_type_new (\"s\");\n"
-" state_action = g_simple_action_new_stateful (\"state\", type_string2,\n"
-" g_variant_new_string (\"off\"));\n"
-" g_signal_connect (state_action, \"activate\", G_CALLBACK (state_callback), app);\n"
-" /* It is added to the overall application */\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (state_action));\n"
-" g_variant_type_free (type_string2);\n"
-"\n"
-" /* Begin creating the \"awesome\" action.\n"
-" * Note that it is an action with a state.\n"
-" */\n"
-" awesome_action = g_simple_action_new_stateful (\"awesome\", NULL, g_variant_new_boolean (FALSE));\n"
-" g_signal_connect (awesome_action, \"activate\", G_CALLBACK (awesome_callback), app);\n"
-" /* It is added to the overall application */\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (awesome_action));\n"
-"\n"
-" /* A builder to add the User Interface designed with GLADE to the grid: */\n"
-" builder = gtk_builder_new ();\n"
-" /* Get the file (if it is there):\n"
-" * Note: you must make sure that the file is in the current directory for\n"
-" * this to work. The function used here returns a non-null value within\n"
-" * our variable \"error\" if an error is indeed found.\n"
-" */\n"
-" gtk_builder_add_from_file (builder, \"menubar.ui\", &error);\n"
-" if (error != NULL) {\n"
-" g_print (\"%s\\n\", error->message);\n"
-" g_error_free (error);\n"
-" }\n"
-"\n"
-" /* Extract the menubar */\n"
-" GObject *menubar = gtk_builder_get_object (builder, \"menubar\");\n"
-" gtk_application_set_menubar (GTK_APPLICATION (app), G_MENU_MODEL (menubar));\n"
-"\n"
-" /* Extract the appmenu */\n"
-" GObject *appmenu = gtk_builder_get_object (builder, \"appmenu\");\n"
-" gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (appmenu));\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the application */\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/menubar.c.page:37 C/scrolledwindow.c.page:34
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkApplication.html"
-"\">GtkApplication</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkApplication.html"
-"\">GtkApplication</link>"
-
-#. (itstool) path: item/p
-#: C/menubar.c.page:40
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk/stable/GtkAboutDialog.html"
-"\">GtkAboutDialog</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk/stable/GtkAboutDialog.html"
-"\">GtkAboutDialog</link>"
-
-#. (itstool) path: item/p
-#: C/menubar.c.page:41
-msgid ""
-"<link href=\"http://developer.gnome.org/glib/stable/glib-GVariantType.html"
-"\">GtkVariantType</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/glib/stable/glib-GVariantType.html"
-"\">GtkVariantType</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/menubar.py.page:132 C/menubar.vala.page:134
-msgctxt "_"
-msgid ""
-"external ref='media/menubar_choices.png' "
-"md5='47cdfa12caf85ba20dd3e835bd7f893f'"
-msgstr ""
-"external ref='media/menubar_choices.png' "
-"md5='47cdfa12caf85ba20dd3e835bd7f893f'"
-
-#. (itstool) path: info/title
-#: C/menubar.py.page:8
-msgctxt "text"
-msgid "MenuBar (Python)"
-msgstr "MenuBar (Python)"
-
-#. (itstool) path: page/title
-#: C/menubar.py.page:28
-msgid "MenuBar created using XML and GtkBuilder"
-msgstr "Una barra de menú creada usando XML y GtkBuilder."
-
-#. (itstool) path: section/title
-#: C/menubar.py.page:34 C/menubar.vala.page:29
-msgid "Create a MenuBar using XML"
-msgstr "Crear una barra de menú usando XML"
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:35 C/menubar.vala.page:30
-msgid "To create the menubar using XML:"
-msgstr "Para crear la barra de menú usando XML:"
-
-#. (itstool) path: item/p
-#: C/menubar.py.page:37 C/menubar.vala.page:32
-msgid "Create <file>menubar.ui</file> using your favorite text editor."
-msgstr "Cree <file>menubar.ui</file> usando su editor de texto favorito."
-
-#. (itstool) path: item/p
-#: C/menubar.py.page:38 C/menubar.vala.page:33
-msgid "Enter the following line at the top of the file:"
-msgstr "Añada la siguiente línea en la parte superior del archivo:"
-
-#. (itstool) path: item/code
-#: C/menubar.py.page:39 C/menubar.vala.page:34
-#, no-wrap
-msgid ""
-"\n"
-"<?xml version=\"1.0\"? encoding=\"UTF-8\"?>"
-msgstr ""
-"\n"
-"<?xml version=\"1.0\"? encoding=\"UTF-8\"?>"
-
-#. (itstool) path: item/p
-#: C/menubar.py.page:42 C/menubar.vala.page:37
-msgid ""
-"We want to create the interface which will contain our menubar and its "
-"submenus. Our menubar will contain <gui>File</gui>, <gui>Edit</gui>, "
-"<gui>Choices</gui> and <gui>Help</gui> submenus. We add the following XML "
-"code to the file:"
-msgstr ""
-"Se quiere crear la interfaz que contendrá la barra de menú y sus submenús. "
-"Su barra de menú contendrá los submenús <gui>File</gui>, <gui>Edit</gui>, "
-"<gui>Choices</gui> y <gui>Help</gui>. Se le añade el siguiente código XML al "
-"archivo:"
-
-#. (itstool) path: item/code
-#: C/menubar.py.page:43 C/menubar.vala.page:38
-#, no-wrap
-msgid ""
-"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<interface>\n"
-" <menu id=\"menubar\">\n"
-" <submenu>\n"
-" <attribute name=\"label\">File</attribute>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Edit</attribute>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Choices</attribute>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Help</attribute>\n"
-" </submenu>\n"
-" </menu>\n"
-"</interface>\n"
-msgstr ""
-"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<interface>\n"
-" <menu id=\"menubar\">\n"
-" <submenu>\n"
-" <attribute name=\"label\">File</attribute>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Edit</attribute>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Choices</attribute>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Help</attribute>\n"
-" </submenu>\n"
-" </menu>\n"
-"</interface>\n"
-
-#. (itstool) path: item/p
-#: C/menubar.py.page:45
-msgid ""
-"Now we will create the .py file and use GtkBuilder to import the "
-"<file>menubar.ui</file> we just created."
-msgstr ""
-"Ahora se crea el archivo .py y se usa «GtkBuilder» para importar el "
-"<file>menubar.ui</file> que acaba de crear."
-
-#. (itstool) path: section/title
-#: C/menubar.py.page:49 C/menubar.vala.page:43
-msgid "Add the MenuBar to the window using GtkBuilder"
-msgstr "Añadir la barra de menú a la ventana usando «GtkBuilder»"
-
-#. (itstool) path: section/code
-#: C/menubar.py.page:50
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"MenuBar Example\", application=app)\n"
-#| " self.set_default_size(200, 200)\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| " # a builder to add the UI designed with Glade to the grid:\n"
-#| " builder = Gtk.Builder()\n"
-#| " # get the file (if it is there)\n"
-#| " try:\n"
-#| " builder.add_from_file(\"menubar_basis.ui\")\n"
-#| " except:\n"
-#| " print \"file not found\"\n"
-#| " sys.exit()\n"
-#| "\n"
-#| " # we use the method Gtk.Application.set_menubar(menubar) to add the menubar\n"
-#| " # to the application (Note: NOT the window!)\n"
-#| " self.set_menubar(builder.get_object(\"menubar\"))\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"MenuBar Example\", application=app)\n"
-" self.set_default_size(200, 200)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # a builder to add the UI designed with Glade to the grid:\n"
-" builder = Gtk.Builder()\n"
-" # get the file (if it is there)\n"
-" try:\n"
-" builder.add_from_file(\"menubar_basis.ui\")\n"
-" except:\n"
-" print(\"file not found\")\n"
-" sys.exit()\n"
-"\n"
-" # we use the method Gtk.Application.set_menubar(menubar) to add the menubar\n"
-" # to the application (Note: NOT the window!)\n"
-" self.set_menubar(builder.get_object(\"menubar\"))\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"MenuBar Example\", application=app)\n"
-" self.set_default_size(200, 200)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # a builder to add the UI designed with Glade to the grid:\n"
-" builder = Gtk.Builder()\n"
-" # get the file (if it is there)\n"
-" try:\n"
-" builder.add_from_file(\"menubar_basis.ui\")\n"
-" except:\n"
-" print(\"file not found\")\n"
-" sys.exit()\n"
-"\n"
-" # we use the method Gtk.Application.set_menubar(menubar) to add the menubar\n"
-" # to the application (Note: NOT the window!)\n"
-" self.set_menubar(builder.get_object(\"menubar\"))\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:51
-msgid ""
-"Now run the python application. It should look like the picture at the top "
-"of this page."
-msgstr ""
-"Ahora ejecute la aplicación de Python. Se debería ver como la imagen en la "
-"parte superior de esta página."
-
-#. (itstool) path: section/title
-#: C/menubar.py.page:55 C/menubar.vala.page:51
-msgid "Add items to the menus"
-msgstr "Añadir elementos a los menús"
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:56 C/menubar.vala.page:52
-msgid ""
-"We start off by adding 2 menuitems to the <gui>File</gui> menu: <gui>New</"
-"gui> and <gui>Quit</gui>. We do this by adding a <code>section</code> to the "
-"the <code>File</code> submenu with these items. The <file>menubar.ui</file> "
-"should look like this (lines 6 to 13 inclusive comprise the newly added "
-"section):"
-msgstr ""
-"Se empieza añadiendo 2 elementos al menú <gui>File</gui>: <gui>New</gui> y "
-"<gui>Quit</gui>. Esto se hace añadiéndole una <code>section</code> al "
-"submenú <code>File</code> con estos elementos. El <file>menubar.ui</file> "
-"debe verse así (líneas 6 a 13 inclusive conforman la sección nueva):"
-
-#. (itstool) path: listing/title
-#: C/menubar.py.page:59
-msgid "menubar.ui"
-msgstr "menubar.ui"
-
-#. (itstool) path: listing/code
-#. (itstool) path: section/code
-#: C/menubar.py.page:60 C/menubar.vala.page:53
-#, no-wrap
-msgid ""
-"\n"
-"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<interface>\n"
-" <menu id=\"menubar\">\n"
-" <submenu>\n"
-" <attribute name=\"label\">File</attribute>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">New</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name =\"label\">Quit</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Edit</attribute>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Choices</attribute>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Help</attribute>\n"
-" </submenu>\n"
-" </menu>\n"
-"</interface>"
-msgstr ""
-"\n"
-"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<interface>\n"
-" <menu id=\"menubar\">\n"
-" <submenu>\n"
-" <attribute name=\"label\">File</attribute>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">New</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name =\"label\">Quit</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Edit</attribute>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Choices</attribute>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Help</attribute>\n"
-" </submenu>\n"
-" </menu>\n"
-"</interface>"
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:88
-msgid ""
-"Following this pattern, you can now add a <code>Copy</code> and a "
-"<code>Paste</code> item to the <code>Edit</code> submenu, and an "
-"<code>About</code> item to the <code>Help</code> submenu."
-msgstr ""
-"De esta misma manera puede añadirle un elemento <code>Copy</code> y uno "
-"<code>Paste</code> al submenú <code>Edit</code>, y un elemento <code>About</"
-"code> al submenú <code>Help</code>."
-
-#. (itstool) path: section/title
-#: C/menubar.py.page:93 C/menubar.vala.page:87
-msgid "Setup actions"
-msgstr "Configurar las acciones"
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:95
-msgid ""
-"We now create the actions for \"New\" and \"Quit\" connected to a callback "
-"function in the Python file; for instance we create \"new\" as:"
-msgstr ""
-"Ahora se crean las acciones para «New» y «Quit», conectadas a una función de "
-"retorno de llamada en el archivo de Python; por ejemplo se crea «new» así:"
-
-#. (itstool) path: section/code
-#: C/menubar.py.page:96
-#, no-wrap
-msgid ""
-"\n"
-"new_action = Gio.SimpleAction.new(\"new\", None)\n"
-"new_action.connect(\"activate\", self.new_callback)"
-msgstr ""
-"\n"
-"new_action = Gio.SimpleAction.new(\"new\", None)\n"
-"new_action.connect(\"activate\", self.new_callback)"
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:100
-msgid "And we create the callback function of \"new\" as"
-msgstr "Y se crea la función de retorno de llamada de «new» como"
-
-#. (itstool) path: section/code
-#: C/menubar.py.page:101
-#, no-wrap
-msgid ""
-"\n"
-"def new_callback(self, action, parameter):\n"
-" print \"You clicked \\\"New\\\"\""
-msgstr ""
-"\n"
-"def new_callback(self, action, parameter):\n"
-" print \"You clicked \\\"New\\\"\""
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:105
-msgid ""
-"Now, in the XML file, we connect the menu items to the actions in the XML "
-"file by adding the \"action\" attribute:"
-msgstr ""
-"Ahora, en el archivo XML, se conectan los elementos del menú a las acciones "
-"en el archivo XML añadiendo el atributo «action»:"
-
-#. (itstool) path: section/code
-#: C/menubar.py.page:106
-#, no-wrap
-msgid ""
-"\n"
-"<item>\n"
-" <attribute name=\"label\">New</attribute>\n"
-" <attribute name=\"action\">app.new</attribute>\n"
-"</item>"
-msgstr ""
-"\n"
-"<item>\n"
-" <attribute name=\"label\">New</attribute>\n"
-" <attribute name=\"action\">app.new</attribute>\n"
-"</item>"
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:112
-msgid ""
-"Note that for an action that is relative to the application, we use the "
-"prefix <code>app.</code>; for actions that are relative to the window we use "
-"the prefix <code>win.</code>."
-msgstr ""
-"Tenga en cuenta que para una acción relativa a la aplicación, se usa el "
-"prefijo <code>app.</code>; para acciones relativas a la ventana, se usa el "
-"prefijo <code>win.</code>."
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:114
-msgid ""
-"Finally, in the Python file, we add the action to the application or to the "
-"window - so for instance <code>app.new</code> will be added to the "
-"application in the method <code>do_startup(self)</code> as"
-msgstr ""
-"Finalmente, en el archivo de Python, se añade la acción a la aplicación o a "
-"la ventana: por ejemplo <code>app.new</code> se añadirá a la aplicación en "
-"el método <code>do_startup(self)</code> así:"
-
-#. (itstool) path: section/code
-#: C/menubar.py.page:115
-#, no-wrap
-msgid ""
-"\n"
-"self.add_action(new_action)"
-msgstr ""
-"\n"
-"self.add_action(new_action)"
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:118
-msgid ""
-"See <link xref=\"signals-callbacks.py\"/> for a more detailed explanation of "
-"signals and callbacks."
-msgstr ""
-"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
-"explicación más detallada sobre señales y retornos de llamada."
-
-#. (itstool) path: section/title
-#: C/menubar.py.page:122 C/menubar.vala.page:139
-msgid "Actions: Application or Window?"
-msgstr "Acciones: ¿aplicación o ventana?"
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:123 C/menubar.vala.page:140
-msgid ""
-"Above, we created the \"new\" and \"open\" actions as part of the "
-"MyApplication class. Actions which control the application itself, such as "
-"\"quit\" should be created similarly."
-msgstr ""
-"Anteriormente, se crearon las acciones «new» y «open» como parte de la clase "
-"«MyApplication». Las acciones que controlan la aplicación en sí, como «quit» "
-"deben crearse de manera similar."
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:125 C/menubar.vala.page:143
-msgid ""
-"Some actions, such as \"copy\" and \"paste\" deal with the window, not the "
-"application. Window actions should be created as part of the window class."
-msgstr ""
-"Algunas acciones, como «copy» y «paste» trabajan con la ventana, no con la "
-"aplicación. Las acciones de ventanas deben crearse como parte de la clase de "
-"la ventana."
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:127
-msgid ""
-"The complete example files contain both application actions and window "
-"actions. The window actions are the ones usually included in the <link xref="
-"\"gmenu.py\">application menu</link> also. It is not good practice to "
-"include window actions in the application menu. For demonstration purposes, "
-"the complete example files which follow include XML in the UI file which "
-"creates the application menu which includes a \"New\" and \"Open\" item, and "
-"these are hooked up to the same actions as the menubar items of the same "
-"name."
-msgstr ""
-"Los archivos de ejemplo completos contienen tanto acciones de aplicación "
-"como de ventana. Estas últimas son generalmente también las incluidas en el "
-"<link xref=\"gmenu.py\">menú de la aplicación</link>. No es una buena "
-"práctica incluir acciones de ventana en el menú de la aplicación. Con motivo "
-"de demostración, los archivos de ejemplo completos incluyen XML en el "
-"archivo de IU que crea el menú de la aplicación incluyendo elementos «New» y "
-"«Open», y estos están vinculados a las mismas acciones que los elementos de "
-"la barra de menú del mismo nombre."
-
-#. (itstool) path: section/title
-#: C/menubar.py.page:131 C/menubar.vala.page:133
-msgid "Choices submenu and items with state"
-msgstr "Submenú «choices» y elementos con estado"
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:133
-msgid ""
-"Lines 30 to 80 inclusive of the <link xref=\"menubar.py#xml-code\"/> "
-"demonstrate the XML code used to create the UI for <gui>Choices</gui> menu."
-msgstr ""
-"Las líneas 30 a 80 inclusive del <link xref=\"menubar.py#xml-code\"/> "
-"demuestran el código XML usado para crear la IU del menú <gui>Choices</gui>."
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:135
-msgid ""
-"The actions created so far are <em>stateless</em>, that is they do not "
-"retain or depend on a state given by the action itself. The actions we need "
-"to create for the Choices submenu, on the other hand, are <em>stateful</em>. "
-"An example of creation of a stateful action is:"
-msgstr ""
-"Las acciones creadas hasta ahora <em>no tienen estado</em>, esto significa "
-"que no mantienen o dependen de un estado dado por la acción en sí. Las "
-"acciones que necesita crear para el submenú «Choices», por otro lado, "
-"<em>tienen estado</em>. Un ejemplo de creación de una acción con estado es:"
-
-#. (itstool) path: section/code
-#: C/menubar.py.page:136
-#, no-wrap
-msgid ""
-"\n"
-"shape_action = Gio.SimpleAction.new_stateful(\"shape\", GLib.VariantType.new('s'),
GLib.Variant.new_string('line'))"
-msgstr ""
-"\n"
-"shape_action = Gio.SimpleAction.new_stateful(\"shape\", GLib.VariantType.new('s'),
GLib.Variant.new_string('line'))"
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:139
-msgid ""
-"where the variables of the method are: name, parameter type (in this case, a "
-"string - see <link href=\"http://developer.gnome.org/glib/unstable/glib-"
-"GVariantType.html\">here</link> for a complete list of character meanings), "
-"initial state (in this case, 'line' - in case of a <code>True</code> boolean "
-"value it should be <code>Glib.Variant.new_boolean(True)</code>, and so on, "
-"see <link href=\"http://developer.gnome.org/glib/unstable/glib-GVariant.html"
-"\">here</link> for a complete list)"
-msgstr ""
-"donde las variables del método son: nombre, tipo de parámetro (en este caso, "
-"una cadena: consulte <link href=\"http://developer.gnome.org/glib/unstable/"
-"glib-GVariantType.html\">aquí</link> para una lista completa de significados "
-"de caracteres), estado inicial (en este caso, «line»; en el caso de un valor "
-"booleano <code>True</code> debería ser <code>Glib.Variant.new_boolean(True)</"
-"code>, y así sucesivamente, consulte <link href=\"http://developer.gnome.org/"
-"glib/unstable/glib-GVariant.html\">aquí</link> para ver una lista completa)."
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:141
-msgid ""
-"After creating the stateful SimpleAction we connect it to the callback "
-"function and we add it to the window (or the application, if it is the "
-"case), as before:"
-msgstr ""
-"Después de haber creado la «SimpleAction» con estado se conecta a su función "
-"de retorno de llamada y se añade a la ventana (o la aplicación, si es el "
-"caso), como antes:"
-
-#. (itstool) path: section/code
-#: C/menubar.py.page:143
-#, no-wrap
-msgid ""
-"\n"
-"shape_action.connect(\"activate\", self.shape_callback)\n"
-"self.add_action(shape_action)"
-msgstr ""
-"\n"
-"shape_action.connect(\"activate\", self.shape_callback)\n"
-"self.add_action(shape_action)"
-
-#. (itstool) path: section/title
-#: C/menubar.py.page:150 C/menubar.vala.page:154
-msgid "Complete XML UI file for this example"
-msgstr "Archivo de IU XML completo de este ejemplo"
-
-#. (itstool) path: section/code
-#: C/menubar.py.page:151 C/menubar.vala.page:155
-#, no-wrap
-msgid ""
-"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<interface>\n"
-" <menu id=\"menubar\">\n"
-" <submenu>\n"
-" <attribute name=\"label\">File</attribute>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">New</attribute>\n"
-" <attribute name=\"action\">app.new</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Quit</attribute>\n"
-" <attribute name=\"action\">app.quit</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Edit</attribute>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">Copy</attribute>\n"
-" <attribute name=\"action\">win.copy</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Paste</attribute>\n"
-" <attribute name=\"action\">win.paste</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Choices</attribute>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Shapes</attribute>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">Line</attribute>\n"
-" <attribute name=\"action\">win.shape</attribute>\n"
-" <attribute name=\"target\">line</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Triangle</attribute>\n"
-" <attribute name=\"action\">win.shape</attribute>\n"
-" <attribute name=\"target\">triangle</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Square</attribute>\n"
-" <attribute name=\"action\">win.shape</attribute>\n"
-" <attribute name=\"target\">square</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Polygon</attribute>\n"
-" <attribute name=\"action\">win.shape</attribute>\n"
-" <attribute name=\"target\">polygon</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Circle</attribute>\n"
-" <attribute name=\"action\">win.shape</attribute>\n"
-" <attribute name=\"target\">circle</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </submenu>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">On</attribute>\n"
-" <attribute name=\"action\">app.state</attribute>\n"
-" <attribute name=\"target\">on</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Off</attribute>\n"
-" <attribute name=\"action\">app.state</attribute>\n"
-" <attribute name=\"target\">off</attribute>\n"
-" </item>\n"
-" </section>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">Awesome</attribute>\n"
-" <attribute name=\"action\">app.awesome</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Help</attribute>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">About</attribute>\n"
-" <attribute name=\"action\">win.about</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </submenu>\n"
-" </menu>\n"
-" <menu id=\"appmenu\">\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">New</attribute>\n"
-" <attribute name=\"action\">app.new</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Quit</attribute>\n"
-" <attribute name=\"action\">app.quit</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </menu>\n"
-"</interface>\n"
-msgstr ""
-"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<interface>\n"
-" <menu id=\"menubar\">\n"
-" <submenu>\n"
-" <attribute name=\"label\">File</attribute>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">New</attribute>\n"
-" <attribute name=\"action\">app.new</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Quit</attribute>\n"
-" <attribute name=\"action\">app.quit</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Edit</attribute>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">Copy</attribute>\n"
-" <attribute name=\"action\">win.copy</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Paste</attribute>\n"
-" <attribute name=\"action\">win.paste</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Choices</attribute>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Shapes</attribute>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">Line</attribute>\n"
-" <attribute name=\"action\">win.shape</attribute>\n"
-" <attribute name=\"target\">line</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Triangle</attribute>\n"
-" <attribute name=\"action\">win.shape</attribute>\n"
-" <attribute name=\"target\">triangle</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Square</attribute>\n"
-" <attribute name=\"action\">win.shape</attribute>\n"
-" <attribute name=\"target\">square</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Polygon</attribute>\n"
-" <attribute name=\"action\">win.shape</attribute>\n"
-" <attribute name=\"target\">polygon</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Circle</attribute>\n"
-" <attribute name=\"action\">win.shape</attribute>\n"
-" <attribute name=\"target\">circle</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </submenu>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">On</attribute>\n"
-" <attribute name=\"action\">app.state</attribute>\n"
-" <attribute name=\"target\">on</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Off</attribute>\n"
-" <attribute name=\"action\">app.state</attribute>\n"
-" <attribute name=\"target\">off</attribute>\n"
-" </item>\n"
-" </section>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">Awesome</attribute>\n"
-" <attribute name=\"action\">app.awesome</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </submenu>\n"
-" <submenu>\n"
-" <attribute name=\"label\">Help</attribute>\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">About</attribute>\n"
-" <attribute name=\"action\">win.about</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </submenu>\n"
-" </menu>\n"
-" <menu id=\"appmenu\">\n"
-" <section>\n"
-" <item>\n"
-" <attribute name=\"label\">New</attribute>\n"
-" <attribute name=\"action\">app.new</attribute>\n"
-" </item>\n"
-" <item>\n"
-" <attribute name=\"label\">Quit</attribute>\n"
-" <attribute name=\"action\">app.quit</attribute>\n"
-" </item>\n"
-" </section>\n"
-" </menu>\n"
-"</interface>\n"
-
-#. (itstool) path: section/title
-#: C/menubar.py.page:155
-msgid "Complete Python file for this example"
-msgstr "Archivo de Python completo de este ejemplo"
-
-#. (itstool) path: section/code
-#: C/menubar.py.page:156
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "from gi.repository import GLib\n"
-#| "from gi.repository import Gio\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"MenuBar Example\", application=app)\n"
-#| " self.set_default_size(200, 200)\n"
-#| "\n"
-#| " # action without a state created (name, parameter type)\n"
-#| " copy_action = Gio.SimpleAction.new(\"copy\", None)\n"
-#| " # connected with the callback function\n"
-#| " copy_action.connect(\"activate\", self.copy_callback)\n"
-#| " # added to the window\n"
-#| " self.add_action(copy_action)\n"
-#| "\n"
-#| " # action without a state created (name, parameter type)\n"
-#| " paste_action = Gio.SimpleAction.new(\"paste\", None)\n"
-#| " # connected with the callback function\n"
-#| " paste_action.connect(\"activate\", self.paste_callback)\n"
-#| " # added to the window\n"
-#| " self.add_action(paste_action)\n"
-#| "\n"
-#| " # action with a state created (name, parameter type, initial state)\n"
-#| " shape_action = Gio.SimpleAction.new_stateful(\n"
-#| " \"shape\", GLib.VariantType.new('s'), GLib.Variant.new_string('line'))\n"
-#| " # connected to the callback function\n"
-#| " shape_action.connect(\"activate\", self.shape_callback)\n"
-#| " # added to the window\n"
-#| " self.add_action(shape_action)\n"
-#| "\n"
-#| " # action with a state created\n"
-#| " about_action = Gio.SimpleAction.new(\"about\", None)\n"
-#| " # action connected to the callback function\n"
-#| " about_action.connect(\"activate\", self.about_callback)\n"
-#| " # action added to the application\n"
-#| " self.add_action(about_action)\n"
-#| "\n"
-#| " # callback function for copy_action\n"
-#| " def copy_callback(self, action, parameter):\n"
-#| " print \"\\\"Copy\\\" activated\"\n"
-#| "\n"
-#| " # callback function for paste_action\n"
-#| " def paste_callback(self, action, parameter):\n"
-#| " print \"\\\"Paste\\\" activated\"\n"
-#| "\n"
-#| " # callback function for shape_action\n"
-#| " def shape_callback(self, action, parameter):\n"
-#| " print \"Shape is set to\", parameter.get_string()\n"
-#| " # Note that we set the state of the action!\n"
-#| " action.set_state(parameter)\n"
-#| "\n"
-#| " # callback function for about (see the AboutDialog example)\n"
-#| " def about_callback(self, action, parameter):\n"
-#| " # a Gtk.AboutDialog\n"
-#| " aboutdialog = Gtk.AboutDialog()\n"
-#| "\n"
-#| " # lists of authors and documenters (will be used later)\n"
-#| " authors = [\"GNOME Documentation Team\"]\n"
-#| " documenters = [\"GNOME Documentation Team\"]\n"
-#| "\n"
-#| " # we fill in the aboutdialog\n"
-#| " aboutdialog.set_program_name(\"MenuBar Example\")\n"
-#| " aboutdialog.set_copyright(\n"
-#| " \"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\")\n"
-#| " aboutdialog.set_authors(authors)\n"
-#| " aboutdialog.set_documenters(documenters)\n"
-#| " aboutdialog.set_website(\"http://developer.gnome.org\")\n"
-#| " aboutdialog.set_website_label(\"GNOME Developer Website\")\n"
-#| "\n"
-#| " # to close the aboutdialog when \"close\" is clicked we connect the\n"
-#| " # \"response\" signal to on_close\n"
-#| " aboutdialog.connect(\"response\", self.on_close)\n"
-#| " # show the aboutdialog\n"
-#| " aboutdialog.show()\n"
-#| "\n"
-#| " # a callback function to destroy the aboutdialog\n"
-#| " def on_close(self, action, parameter):\n"
-#| " action.destroy()\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " # FIRST THING TO DO: do_startup()\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| " # action without a state created\n"
-#| " new_action = Gio.SimpleAction.new(\"new\", None)\n"
-#| " # action connected to the callback function\n"
-#| " new_action.connect(\"activate\", self.new_callback)\n"
-#| " # action added to the application\n"
-#| " self.add_action(new_action)\n"
-#| "\n"
-#| " # action without a state created\n"
-#| " quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-#| " # action connected to the callback function\n"
-#| " quit_action.connect(\"activate\", self.quit_callback)\n"
-#| " # action added to the application\n"
-#| " self.add_action(quit_action)\n"
-#| "\n"
-#| " # action with a state created\n"
-#| " state_action = Gio.SimpleAction.new_stateful(\n"
-#| " \"state\", GLib.VariantType.new('s'), GLib.Variant.new_string('off'))\n"
-#| " # action connected to the callback function\n"
-#| " state_action.connect(\"activate\", self.state_callback)\n"
-#| " # action added to the application\n"
-#| " self.add_action(state_action)\n"
-#| "\n"
-#| " # action with a state created\n"
-#| " awesome_action = Gio.SimpleAction.new_stateful(\n"
-#| " \"awesome\", None, GLib.Variant.new_boolean(False))\n"
-#| " # action connected to the callback function\n"
-#| " awesome_action.connect(\"activate\", self.awesome_callback)\n"
-#| " # action added to the application\n"
-#| " self.add_action(awesome_action)\n"
-#| "\n"
-#| " # a builder to add the UI designed with Glade to the grid:\n"
-#| " builder = Gtk.Builder()\n"
-#| " # get the file (if it is there)\n"
-#| " try:\n"
-#| " builder.add_from_file(\"menubar.ui\")\n"
-#| " except:\n"
-#| " print \"file not found\"\n"
-#| " sys.exit()\n"
-#| "\n"
-#| " # we use the method Gtk.Application.set_menubar(menubar) to add the menubar\n"
-#| " # and the menu to the application (Note: NOT the window!)\n"
-#| " self.set_menubar(builder.get_object(\"menubar\"))\n"
-#| " self.set_app_menu(builder.get_object(\"appmenu\"))\n"
-#| "\n"
-#| " # callback function for new\n"
-#| " def new_callback(self, action, parameter):\n"
-#| " print \"You clicked \\\"New\\\"\"\n"
-#| "\n"
-#| " # callback function for quit\n"
-#| " def quit_callback(self, action, parameter):\n"
-#| " print \"You clicked \\\"Quit\\\"\"\n"
-#| " sys.exit()\n"
-#| "\n"
-#| " # callback function for state\n"
-#| " def state_callback(self, action, parameter):\n"
-#| " print \"State is set to\", parameter.get_string()\n"
-#| " action.set_state(parameter)\n"
-#| "\n"
-#| " # callback function for awesome\n"
-#| " def awesome_callback(self, action, parameter):\n"
-#| " action.set_state(GLib.Variant.new_boolean(not action.get_state()))\n"
-#| " if action.get_state().get_boolean() is True:\n"
-#| " print \"You checked \\\"Awesome\\\"\"\n"
-#| " else:\n"
-#| " print \"You unchecked \\\"Awesome\\\"\"\n"
-#| "\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import GLib\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"MenuBar Example\", application=app)\n"
-" self.set_default_size(200, 200)\n"
-"\n"
-" # action without a state created (name, parameter type)\n"
-" copy_action = Gio.SimpleAction.new(\"copy\", None)\n"
-" # connected with the callback function\n"
-" copy_action.connect(\"activate\", self.copy_callback)\n"
-" # added to the window\n"
-" self.add_action(copy_action)\n"
-"\n"
-" # action without a state created (name, parameter type)\n"
-" paste_action = Gio.SimpleAction.new(\"paste\", None)\n"
-" # connected with the callback function\n"
-" paste_action.connect(\"activate\", self.paste_callback)\n"
-" # added to the window\n"
-" self.add_action(paste_action)\n"
-"\n"
-" # action with a state created (name, parameter type, initial state)\n"
-" shape_action = Gio.SimpleAction.new_stateful(\n"
-" \"shape\", GLib.VariantType.new('s'), GLib.Variant.new_string('line'))\n"
-" # connected to the callback function\n"
-" shape_action.connect(\"activate\", self.shape_callback)\n"
-" # added to the window\n"
-" self.add_action(shape_action)\n"
-"\n"
-" # action with a state created\n"
-" about_action = Gio.SimpleAction.new(\"about\", None)\n"
-" # action connected to the callback function\n"
-" about_action.connect(\"activate\", self.about_callback)\n"
-" # action added to the application\n"
-" self.add_action(about_action)\n"
-"\n"
-" # callback function for copy_action\n"
-" def copy_callback(self, action, parameter):\n"
-" print(\"\\\"Copy\\\" activated\")\n"
-"\n"
-" # callback function for paste_action\n"
-" def paste_callback(self, action, parameter):\n"
-" print(\"\\\"Paste\\\" activated\")\n"
-"\n"
-" # callback function for shape_action\n"
-" def shape_callback(self, action, parameter):\n"
-" print(\"Shape is set to\", parameter.get_string())\n"
-" # Note that we set the state of the action!\n"
-" action.set_state(parameter)\n"
-"\n"
-" # callback function for about (see the AboutDialog example)\n"
-" def about_callback(self, action, parameter):\n"
-" # a Gtk.AboutDialog\n"
-" aboutdialog = Gtk.AboutDialog()\n"
-"\n"
-" # lists of authors and documenters (will be used later)\n"
-" authors = [\"GNOME Documentation Team\"]\n"
-" documenters = [\"GNOME Documentation Team\"]\n"
-"\n"
-" # we fill in the aboutdialog\n"
-" aboutdialog.set_program_name(\"MenuBar Example\")\n"
-" aboutdialog.set_copyright(\n"
-" \"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\")\n"
-" aboutdialog.set_authors(authors)\n"
-" aboutdialog.set_documenters(documenters)\n"
-" aboutdialog.set_website(\"http://developer.gnome.org\")\n"
-" aboutdialog.set_website_label(\"GNOME Developer Website\")\n"
-"\n"
-" # to close the aboutdialog when \"close\" is clicked we connect the\n"
-" # \"response\" signal to on_close\n"
-" aboutdialog.connect(\"response\", self.on_close)\n"
-" # show the aboutdialog\n"
-" aboutdialog.show()\n"
-"\n"
-" # a callback function to destroy the aboutdialog\n"
-" def on_close(self, action, parameter):\n"
-" action.destroy()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" # FIRST THING TO DO: do_startup()\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # action without a state created\n"
-" new_action = Gio.SimpleAction.new(\"new\", None)\n"
-" # action connected to the callback function\n"
-" new_action.connect(\"activate\", self.new_callback)\n"
-" # action added to the application\n"
-" self.add_action(new_action)\n"
-"\n"
-" # action without a state created\n"
-" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-" # action connected to the callback function\n"
-" quit_action.connect(\"activate\", self.quit_callback)\n"
-" # action added to the application\n"
-" self.add_action(quit_action)\n"
-"\n"
-" # action with a state created\n"
-" state_action = Gio.SimpleAction.new_stateful(\n"
-" \"state\", GLib.VariantType.new('s'), GLib.Variant.new_string('off'))\n"
-" # action connected to the callback function\n"
-" state_action.connect(\"activate\", self.state_callback)\n"
-" # action added to the application\n"
-" self.add_action(state_action)\n"
-"\n"
-" # action with a state created\n"
-" awesome_action = Gio.SimpleAction.new_stateful(\n"
-" \"awesome\", None, GLib.Variant.new_boolean(False))\n"
-" # action connected to the callback function\n"
-" awesome_action.connect(\"activate\", self.awesome_callback)\n"
-" # action added to the application\n"
-" self.add_action(awesome_action)\n"
-"\n"
-" # a builder to add the UI designed with Glade to the grid:\n"
-" builder = Gtk.Builder()\n"
-" # get the file (if it is there)\n"
-" try:\n"
-" builder.add_from_file(\"menubar.ui\")\n"
-" except:\n"
-" print(\"file not found\")\n"
-" sys.exit()\n"
-"\n"
-" # we use the method Gtk.Application.set_menubar(menubar) to add the menubar\n"
-" # and the menu to the application (Note: NOT the window!)\n"
-" self.set_menubar(builder.get_object(\"menubar\"))\n"
-" self.set_app_menu(builder.get_object(\"appmenu\"))\n"
-"\n"
-" # callback function for new\n"
-" def new_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"New\\\"\")\n"
-"\n"
-" # callback function for quit\n"
-" def quit_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Quit\\\"\")\n"
-" sys.exit()\n"
-"\n"
-" # callback function for state\n"
-" def state_callback(self, action, parameter):\n"
-" print(\"State is set to\", parameter.get_string())\n"
-" action.set_state(parameter)\n"
-"\n"
-" # callback function for awesome\n"
-" def awesome_callback(self, action, parameter):\n"
-" action.set_state(GLib.Variant.new_boolean(not action.get_state()))\n"
-" if action.get_state().get_boolean() is True:\n"
-" print(\"You checked \\\"Awesome\\\"\")\n"
-" else:\n"
-" print(\"You unchecked \\\"Awesome\\\"\")\n"
-"\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import GLib\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"MenuBar Example\", application=app)\n"
-" self.set_default_size(200, 200)\n"
-"\n"
-" # action without a state created (name, parameter type)\n"
-" copy_action = Gio.SimpleAction.new(\"copy\", None)\n"
-" # connected with the callback function\n"
-" copy_action.connect(\"activate\", self.copy_callback)\n"
-" # added to the window\n"
-" self.add_action(copy_action)\n"
-"\n"
-" # action without a state created (name, parameter type)\n"
-" paste_action = Gio.SimpleAction.new(\"paste\", None)\n"
-" # connected with the callback function\n"
-" paste_action.connect(\"activate\", self.paste_callback)\n"
-" # added to the window\n"
-" self.add_action(paste_action)\n"
-"\n"
-" # action with a state created (name, parameter type, initial state)\n"
-" shape_action = Gio.SimpleAction.new_stateful(\n"
-" \"shape\", GLib.VariantType.new('s'), GLib.Variant.new_string('line'))\n"
-" # connected to the callback function\n"
-" shape_action.connect(\"activate\", self.shape_callback)\n"
-" # added to the window\n"
-" self.add_action(shape_action)\n"
-"\n"
-" # action with a state created\n"
-" about_action = Gio.SimpleAction.new(\"about\", None)\n"
-" # action connected to the callback function\n"
-" about_action.connect(\"activate\", self.about_callback)\n"
-" # action added to the application\n"
-" self.add_action(about_action)\n"
-"\n"
-" # callback function for copy_action\n"
-" def copy_callback(self, action, parameter):\n"
-" print(\"\\\"Copy\\\" activated\")\n"
-"\n"
-" # callback function for paste_action\n"
-" def paste_callback(self, action, parameter):\n"
-" print(\"\\\"Paste\\\" activated\")\n"
-"\n"
-" # callback function for shape_action\n"
-" def shape_callback(self, action, parameter):\n"
-" print(\"Shape is set to\", parameter.get_string())\n"
-" # Note that we set the state of the action!\n"
-" action.set_state(parameter)\n"
-"\n"
-" # callback function for about (see the AboutDialog example)\n"
-" def about_callback(self, action, parameter):\n"
-" # a Gtk.AboutDialog\n"
-" aboutdialog = Gtk.AboutDialog()\n"
-"\n"
-" # lists of authors and documenters (will be used later)\n"
-" authors = [\"GNOME Documentation Team\"]\n"
-" documenters = [\"GNOME Documentation Team\"]\n"
-"\n"
-" # we fill in the aboutdialog\n"
-" aboutdialog.set_program_name(\"MenuBar Example\")\n"
-" aboutdialog.set_copyright(\n"
-" \"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\")\n"
-" aboutdialog.set_authors(authors)\n"
-" aboutdialog.set_documenters(documenters)\n"
-" aboutdialog.set_website(\"http://developer.gnome.org\")\n"
-" aboutdialog.set_website_label(\"GNOME Developer Website\")\n"
-"\n"
-" # to close the aboutdialog when \"close\" is clicked we connect the\n"
-" # \"response\" signal to on_close\n"
-" aboutdialog.connect(\"response\", self.on_close)\n"
-" # show the aboutdialog\n"
-" aboutdialog.show()\n"
-"\n"
-" # a callback function to destroy the aboutdialog\n"
-" def on_close(self, action, parameter):\n"
-" action.destroy()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" # FIRST THING TO DO: do_startup()\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # action without a state created\n"
-" new_action = Gio.SimpleAction.new(\"new\", None)\n"
-" # action connected to the callback function\n"
-" new_action.connect(\"activate\", self.new_callback)\n"
-" # action added to the application\n"
-" self.add_action(new_action)\n"
-"\n"
-" # action without a state created\n"
-" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-" # action connected to the callback function\n"
-" quit_action.connect(\"activate\", self.quit_callback)\n"
-" # action added to the application\n"
-" self.add_action(quit_action)\n"
-"\n"
-" # action with a state created\n"
-" state_action = Gio.SimpleAction.new_stateful(\n"
-" \"state\", GLib.VariantType.new('s'), GLib.Variant.new_string('off'))\n"
-" # action connected to the callback function\n"
-" state_action.connect(\"activate\", self.state_callback)\n"
-" # action added to the application\n"
-" self.add_action(state_action)\n"
-"\n"
-" # action with a state created\n"
-" awesome_action = Gio.SimpleAction.new_stateful(\n"
-" \"awesome\", None, GLib.Variant.new_boolean(False))\n"
-" # action connected to the callback function\n"
-" awesome_action.connect(\"activate\", self.awesome_callback)\n"
-" # action added to the application\n"
-" self.add_action(awesome_action)\n"
-"\n"
-" # a builder to add the UI designed with Glade to the grid:\n"
-" builder = Gtk.Builder()\n"
-" # get the file (if it is there)\n"
-" try:\n"
-" builder.add_from_file(\"menubar.ui\")\n"
-" except:\n"
-" print(\"file not found\")\n"
-" sys.exit()\n"
-"\n"
-" # we use the method Gtk.Application.set_menubar(menubar) to add the menubar\n"
-" # and the menu to the application (Note: NOT the window!)\n"
-" self.set_menubar(builder.get_object(\"menubar\"))\n"
-" self.set_app_menu(builder.get_object(\"appmenu\"))\n"
-"\n"
-" # callback function for new\n"
-" def new_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"New\\\"\")\n"
-"\n"
-" # callback function for quit\n"
-" def quit_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Quit\\\"\")\n"
-" sys.exit()\n"
-"\n"
-" # callback function for state\n"
-" def state_callback(self, action, parameter):\n"
-" print(\"State is set to\", parameter.get_string())\n"
-" action.set_state(parameter)\n"
-"\n"
-" # callback function for awesome\n"
-" def awesome_callback(self, action, parameter):\n"
-" action.set_state(GLib.Variant.new_boolean(not action.get_state()))\n"
-" if action.get_state().get_boolean() is True:\n"
-" print(\"You checked \\\"Awesome\\\"\")\n"
-" else:\n"
-" print(\"You unchecked \\\"Awesome\\\"\")\n"
-"\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/menubar.py.page:159
-msgid "Mnemonics and Accelerators"
-msgstr "Atajos y aceleradores"
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:160 C/menubar.vala.page:162
-msgid ""
-"Labels may contain mnemonics. Mnemonics are underlined characters in the "
-"label, used for keyboard navigation. Mnemonics are created by placing an "
-"underscore before the mnemonic character. For example \"_File\" instead of "
-"just \"File\" in the menubar.ui label attribute."
-msgstr ""
-"Las etiquetas pueden contener atajos. Los atajos son caracteres subrayados "
-"en la etiqueta, usados para navegar con el teclado. Se crean poniendo un "
-"guión bajo antes del carácter de atajo. Por ejemplo «_Archivo» en lugar de "
-"solo «Archivo» en el atributo «label» del «menubar.ui»."
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:161 C/menubar.vala.page:163
-msgid ""
-"The mnemonics are visible when you press the <key>Alt</key> key. Pressing "
-"<keyseq><key>Alt</key><key>F</key></keyseq> will open the <gui>File</gui> "
-"menu."
-msgstr ""
-"Los atajos son visibles cuando pulsa la tecla <key>Alt</key>. Presionar "
-"<keyseq><key>Alt</key><key>A</key></keyseq> abrirá el menú <gui>Archivo</"
-"gui>."
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:163 C/menubar.vala.page:168
-msgid ""
-"Accelerators can be explicitly added in the UI definitions. For example, it "
-"is common to be able to quit an application by pressing <keyseq><key>Ctrl</"
-"key><key>Q</key></keyseq> or to save a file by pressing <keyseq><key>Ctrl</"
-"key><key>S</key></keyseq>. To add an accelerator to the UI definition, you "
-"simply need add an \"accel\" attribute to the item."
-msgstr ""
-"Los aceleradores pueden añadirse explícitamente en las definiciones de la "
-"IU. Por ejemplo, es común poder cerrar una aplicación presionando "
-"<keyseq><key>Ctrl</key><key>Q</key></keyseq> o guardar un archivo "
-"presionando <keyseq><key>Ctrl</key><key>S</key></keyseq>. Para añadir un "
-"acelerador a la definición de IU, simplemente añádale un atributo «accel» al "
-"elemento."
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:164 C/menubar.vala.page:169
-msgid ""
-"<code mime=\"application/xml\"><attribute name=\"accel\">&lt;"
-"Primary&gt;q</attribute></code> will create the <keyseq><key>Ctrl</"
-"key><key>Q</key></keyseq> sequence when added to the <code>Quit</code> label "
-"item. Here, \"Primary\" refers to the <key>Ctrl</key> key on a PC or the "
-"<key>⌘</key> key on a Mac."
-msgstr ""
-"<code mime=\"application/xml\"><attribute name=\"accel\">&lt;"
-"Primary&gt;q</attribute></code> creará la secuencia "
-"<keyseq><key>Ctrl</key><key>Q</key></keyseq> cuando se añada al elemento de "
-"la etiqueta <code>Quit</code>. Aquí, «Primary» se refiere a la tecla "
-"<key>Ctrl</key> en una PC o <key>⌘</key> en una Mac."
-
-#. (itstool) path: section/code
-#: C/menubar.py.page:166 C/menubar.vala.page:171
-#, no-wrap
-msgid ""
-"\n"
-"<item>\n"
-" <attribute name=\"label\">_Quit</attribute>\n"
-" <attribute name=\"action\">app.quit</attribute>\n"
-" <attribute name=\"accel\">&lt;Primary&gt;q</attribute>\n"
-"</item>"
-msgstr ""
-"\n"
-"<item>\n"
-" <attribute name=\"label\">_Quit</attribute>\n"
-" <attribute name=\"action\">app.quit</attribute>\n"
-" <attribute name=\"accel\">&lt;Primary&gt;q</attribute>\n"
-"</item>"
-
-#. (itstool) path: section/title
-#: C/menubar.py.page:174 C/menubar.vala.page:179
-msgid "Translatable strings"
-msgstr "Cadenas traducibles"
-
-#. (itstool) path: section/p
-#: C/menubar.py.page:175 C/menubar.vala.page:180
-msgid ""
-"Since GNOME applications are being translated into <link href=\"http://l10n."
-"gnome.org/languages/\">many languages</link>, it is important that the "
-"strings in your application are translatable. To make a label translatable, "
-"simple set <code>translatable=\"yes\"</code>:"
-msgstr ""
-"Dado que las aplicaciones de GNOME se traducen a <link href=\"http://l10n."
-"gnome.org/languages/\">muchos idiomas</link>, es importante que las cadenas "
-"en su aplicación puedan traducirse. Para hacer una etiqueta traducible, "
-"simplemente añada <code>translatable=\"yes\"</code>:"
-
-#. (itstool) path: section/code
-#: C/menubar.py.page:179
-#, no-wrap
-msgid "<attribute name=\"label\" translatable=\"yes\">Quit</attribute>"
-msgstr "<attribute name=\"label\" translatable=\"yes\">Quit</attribute>"
-
-#. (itstool) path: item/p
-#: C/menubar.py.page:186
-msgid ""
-"<link href=\"http://developer.gnome.org/gio/unstable/GSimpleAction.html"
-"\">GSimpleAction</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gio/unstable/GSimpleAction.html"
-"\">GSimpleAction</link>"
-
-#. (itstool) path: item/p
-#: C/menubar.py.page:187 C/toolbar_builder.py.page:197
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkBuilder.html"
-"\">GtkBuilder</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkBuilder.html"
-"\">GtkBuilder</link>"
-
-#. (itstool) path: info/title
-#: C/menubar.vala.page:8
-msgctxt "text"
-msgid "MenuBar (Vala)"
-msgstr "MenuBar (Vala)"
-
-#. (itstool) path: item/p
-#: C/menubar.vala.page:40
-msgid ""
-"Now we will create the .vala file and use GtkBuilder to import the "
-"<file>menubar.ui</file> we just created."
-msgstr ""
-"Ahora se creará el archivo «.vala» y se usará «GtkBuilder» para importar el "
-"<file>menubar.ui</file> que acaba de crear."
-
-#. (itstool) path: section/code
-#: C/menubar.vala.page:44
-#, no-wrap
-msgid ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"MenuBar Example\");\n"
-"\t\tthis.set_default_size (200, 200);\n"
-"\t}\n"
-"}\n"
-"\n"
-"class MyApplication: Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\t/* Setup menubar. */\n"
-"\t\t/* Get the UI file. */\n"
-"\t\tvar builder = new Gtk.Builder ();\n"
-"\t\ttry {\n"
-"\t\t\tbuilder.add_from_file (\"menubar_basis.ui\");\n"
-"\t\t/* Handle the exception. */\n"
-"\t\t} catch (Error e) {\n"
-"\t\t\terror (\"Unable to load file: %s\", e.message);\n"
-"\t\t}\n"
-"\n"
-"\t\t/* Get the menubar from the builder. */\n"
-"\t\tthis.menubar = builder.get_object (\"menubar\") as MenuModel;\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"MenuBar Example\");\n"
-"\t\tthis.set_default_size (200, 200);\n"
-"\t}\n"
-"}\n"
-"\n"
-"class MyApplication: Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\t/* Setup menubar. */\n"
-"\t\t/* Get the UI file. */\n"
-"\t\tvar builder = new Gtk.Builder ();\n"
-"\t\ttry {\n"
-"\t\t\tbuilder.add_from_file (\"menubar_basis.ui\");\n"
-"\t\t/* Handle the exception. */\n"
-"\t\t} catch (Error e) {\n"
-"\t\t\terror (\"Unable to load file: %s\", e.message);\n"
-"\t\t}\n"
-"\n"
-"\t\t/* Get the menubar from the builder. */\n"
-"\t\tthis.menubar = builder.get_object (\"menubar\") as MenuModel;\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: section/p
-#: C/menubar.vala.page:45
-msgid ""
-"Now, compile the vala file, and run it. The application should look like the "
-"picture at the top of this page."
-msgstr ""
-"Ahora, compile el archivo vala y ejecútelo. La aplicación debería verse como "
-"la imagen en la parte superior de esta página."
-
-#. (itstool) path: section/p
-#: C/menubar.vala.page:80
-msgid ""
-"Following this pattern, you can now add a <code>Copy</code> and a "
-"<code>Paste</code> item to the <code>Edit</code> submenu, and an "
-"<code>About</code> item to the <code>Help</code> submenu. We will hold off "
-"on adding items to the <link xref=\"menubar.vala#choices\">Choices submenu</"
-"link> until further in the tutorial."
-msgstr ""
-"De esta misma manera, ahora puede añadir elementos <code>Copy</code> y "
-"<code>Paste</code> al submenú <code>Edit</code>, y un elemento <code>About</"
-"code> al submenú <code>Help</code>. No añadiremos elementos al <link xref="
-"\"menubar.vala#choices\">submenú Choices</link> hasta más adelante en el "
-"tutorial."
-
-#. (itstool) path: note/p
-#: C/menubar.vala.page:82
-msgid ""
-"You do not need to recompile the vala program if you only made changes to "
-"the UI file. Just run your previously compiled application, and the UI "
-"changes will be reflected."
-msgstr ""
-"No necesita recompilar el programa vala si sólo ha hecho cambios al archivo "
-"UI. Simplemente ejecute su aplicación anteriormente compilada y se "
-"reflejarán los cambios en la IU."
-
-#. (itstool) path: section/p
-#: C/menubar.vala.page:88
-msgid "This is a three step process."
-msgstr "Este es un proceso de tres pasos."
-
-#. (itstool) path: item/p
-#: C/menubar.vala.page:90
-msgid ""
-"First we create the ActionEntry array in the MyApplication class. An "
-"ActionEntry consists of:"
-msgstr ""
-"Primero se crea la matriz «ActionEntry» en la clase «MyApplication». Un "
-"«ActionEntry» consiste de:"
-
-#. (itstool) path: item/p
-#: C/menubar.vala.page:93
-msgid "the \"action name\" (mandatory)"
-msgstr "el «nombre de la acción» (obligatorio)"
-
-#. (itstool) path: item/p
-#: C/menubar.vala.page:94
-msgid ""
-"the callback function to connect to the \"activate\" signal of the action "
-"(if applicable)"
-msgstr ""
-"la función de retorno de llamada que conectar a la señal «activate» de la "
-"acción (si corresponde)"
-
-#. (itstool) path: item/p
-#: C/menubar.vala.page:95
-msgid ""
-"the type of the parameter that must be passed to the activate function for "
-"the action (if applicable)"
-msgstr ""
-"el tipo de parámetro que debe pasarse a la función «activate» para la acción "
-"(si corresponde)"
-
-#. (itstool) path: item/p
-#: C/menubar.vala.page:96
-msgid "the initial state for this action (if applicable)"
-msgstr "el estado inicial de la acción (si corresponde)"
-
-#. (itstool) path: item/p
-#: C/menubar.vala.page:97
-msgid "the callback to connect to \"change-state\" signal (if applicable)"
-msgstr ""
-"el retorno de llamada que conectar a la señal «change-state» (si corresponde)"
-
-#. (itstool) path: item/code
-#: C/menubar.vala.page:99
-#, no-wrap
-msgid ""
-"\n"
-"const ActionEntry[] actions = {\n"
-" { \"new\", new_cb }, // {\"action name\", callback_function}\n"
-" { \"quit\", quit_cb }\n"
-"};"
-msgstr ""
-"\n"
-"const ActionEntry[] actions = {\n"
-" { \"new\", new_cb }, // {\"action name\", callback_function}\n"
-" { \"quit\", quit_cb }\n"
-"};"
-
-#. (itstool) path: item/p
-#: C/menubar.vala.page:106
-msgid "Second, we create the callback functions the actions are connected to."
-msgstr ""
-"Segundo, se crean las funciones de retorno de llamada a las que se conectan "
-"las acciones."
-
-#. (itstool) path: item/code
-#: C/menubar.vala.page:107
-#, no-wrap
-msgid ""
-"\n"
-"void new_cb (SimpleAction action, Variant? parameter) {\n"
-" print (\"You clicked \\\"New\\\"\\n\");\n"
-" //new MyWindow (this).show ();\n"
-"}\n"
-"\n"
-"void quit_cb (SimpleAction action, Variant? parameter) {\n"
-" print (\"You clicked \\\"Quit\\\"\\n\");\n"
-" this.quit ();\n"
-"}"
-msgstr ""
-"\n"
-"void new_cb (SimpleAction action, Variant? parameter) {\n"
-" print (\"You clicked \\\"New\\\"\\n\");\n"
-" //new MyWindow (this).show ();\n"
-"}\n"
-"\n"
-"void quit_cb (SimpleAction action, Variant? parameter) {\n"
-" print (\"You clicked \\\"Quit\\\"\\n\");\n"
-" this.quit ();\n"
-"}"
-
-#. (itstool) path: item/p
-#: C/menubar.vala.page:118
-msgid ""
-"And lastly, we connect the menu items to the actions in the XML file by "
-"adding the \"action\" attribute:"
-msgstr ""
-"Y por último, se conectan los elementos del menú a las acciones en el "
-"archivo XML añadiendo el atributo «action»:"
-
-#. (itstool) path: item/code
-#: C/menubar.vala.page:119
-#, no-wrap
-msgid ""
-"\n"
-"<item>\n"
-" <attribute name=\"label\">New</attribute>\n"
-" <attribute name=\"action\">app.new</attribute>\n"
-"</item>\n"
-"<item>\n"
-" <attribute name=\"label\">Quit</attribute>\n"
-" <attribute name=\"action\">app.quit</attribute>\n"
-"</item>"
-msgstr ""
-"\n"
-"<item>\n"
-" <attribute name=\"label\">New</attribute>\n"
-" <attribute name=\"action\">app.new</attribute>\n"
-"</item>\n"
-"<item>\n"
-" <attribute name=\"label\">Quit</attribute>\n"
-" <attribute name=\"action\">app.quit</attribute>\n"
-"</item>"
-
-#. (itstool) path: section/p
-#: C/menubar.vala.page:135
-msgid ""
-"Lines 30 to 80 inclusive of the <link xref=\"menubar.vala#xml-code\"/> "
-"demonstrate the XML code used to create the UI for <gui>Choices</gui> menu."
-msgstr ""
-"Las líneas 30 a 80 inclusive del <link xref=\"menubar.vala#xml-code\"/> "
-"demuestran el código XML usado para crear la IU del menú <gui>Choices</gui>."
-
-#. (itstool) path: section/p
-#: C/menubar.vala.page:146
-msgid ""
-"The complete example files contain both application actions and window "
-"applications. The window actions are the ones usually included in the <link "
-"xref=\"gmenu.vala\">application menu</link> also. It is not good practice to "
-"include window actions in the application menu. For demonstration purposes, "
-"the complete example files which follow include XML in the UI file which "
-"creates the application menu which includes a \"New\" and \"Open\" item, and "
-"these are hooked up to the same actions as the menubar items of the same "
-"name."
-msgstr ""
-"Los archivos de ejemplo completos contienen tanto acciones de aplicación "
-"como de ventana. Las acciones de ventana son las que generalmente también se "
-"incluyen en el <link xref=\"gmenu.vala\">menú de la aplicación</link>. No es "
-"buena práctica incluir acciones de ventana en el menú de la aplicación. Con "
-"motivo de demostración, los archivos completos de ejemplo a continuación "
-"incluyen XML en el archivo UI que crea el menú de la aplicación incluyendo "
-"elementos «New» y «Open», vinculados a las mismas acciones que los elementos "
-"de la barra de menú del mismo nombre."
-
-#. (itstool) path: section/title
-#: C/menubar.vala.page:157
-msgid "Complete Vala file for this example"
-msgstr "Archivo de vala completo para este ejemplo"
-
-#. (itstool) path: section/code
-#: C/menubar.vala.page:158
-#, no-wrap
-msgid ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* Callback functions for the window actions. */\n"
-"\tvoid copy_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"\\\"Copy\\\" activated\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid paste_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"\\\"Paste\\\" activated\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid shape_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"shape is set to %s\\n\", parameter.get_string(null));\n"
-"\t\taction.set_state (parameter);\n"
-"\t}\n"
-"\n"
-"\t/* Create the window actions. */\n"
-"\tconst ActionEntry[] actions = {\n"
-"\t\t/*{ \"action name\", cb to connect to \"activate\" signal, parameter type,\n"
-"\t\t initial state, cb to connect to \"change-state\" signal } */\n"
-"\t\t{ \"copy\", copy_cb },\n"
-"\t\t{ \"paste\", paste_cb },\n"
-"\t\t{ \"shape\", shape_cb, \"s\", \"'line'\"}\n"
-"\t};\n"
-"\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"MenuBar Example\");\n"
-"\t\tthis.set_default_size (200, 200);\n"
-"\n"
-"\t\t/* Setup window actions. */\n"
-"\t\tthis.add_action_entries (actions, this);\n"
-"\t}\n"
-"}\n"
-"\n"
-"class MyApplication: Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"\t/* Callback functions for the application actions. */\n"
-"\tvoid new_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\t//new MyWindow (this).show ();\n"
-"\t\tprint (\"You clicked \\\"New\\\"\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid quit_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"You clicked \\\"Quit\\\"\\n\");\n"
-"\t\tthis.quit ();\n"
-"\t}\n"
-"\n"
-"\tvoid awesome_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tvar active = action.get_state ().get_boolean ();\n"
-"\t\taction.set_state (new Variant.boolean (!active));\n"
-"\t\tif (active)\n"
-"\t\t\tprint (\"You unchecked \\\"Awesome\\\"\\n\");\n"
-"\t\telse\n"
-"\t\t\tprint (\"You checked \\\"Awesome\\\"\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid state_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"state is set to %s\\n\", parameter.get_string(null));\n"
-"\t\taction.set_state (parameter);\n"
-"\t}\n"
-"\n"
-"\t/* Create the application actions. */\n"
-"\tconst ActionEntry[] actions = {\n"
-"\t\t{ \"new\", new_cb },\n"
-"\t\t{ \"quit\", quit_cb },\n"
-"\t\t{ \"awesome\", awesome_cb, null, \"false\" },\n"
-"\t\t{ \"state\", state_cb, \"s\", \"'off'\" }\n"
-"\t};\n"
-"\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\t/* Setup application actions. */\n"
-"\t\tthis.add_action_entries (actions, this);\n"
-"\n"
-"\t\t/* Setup menubar and app_menu. */\n"
-"\t\t/* Get the UI file. */\n"
-"\t\tvar builder = new Gtk.Builder ();\n"
-"\t\ttry {\n"
-"\t\t\tbuilder.add_from_file (\"menubar.ui\");\n"
-"\t\t} catch (Error e) {\n"
-"\t\t\terror (\"Unable to load file: %s\", e.message);\n"
-"\t\t}\n"
-"\n"
-"\t\t/* Get the menubar from the builder. */\n"
-"\t\tthis.menubar = builder.get_object (\"menubar\") as MenuModel;\n"
-"\n"
-"\t\t/* Get the app_menu from the builder. */\n"
-"\t\tthis.app_menu = builder.get_object (\"appmenu\") as MenuModel;\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* Callback functions for the window actions. */\n"
-"\tvoid copy_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"\\\"Copy\\\" activated\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid paste_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"\\\"Paste\\\" activated\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid shape_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"shape is set to %s\\n\", parameter.get_string(null));\n"
-"\t\taction.set_state (parameter);\n"
-"\t}\n"
-"\n"
-"\t/* Create the window actions. */\n"
-"\tconst ActionEntry[] actions = {\n"
-"\t\t/*{ \"action name\", cb to connect to \"activate\" signal, parameter type,\n"
-"\t\t initial state, cb to connect to \"change-state\" signal } */\n"
-"\t\t{ \"copy\", copy_cb },\n"
-"\t\t{ \"paste\", paste_cb },\n"
-"\t\t{ \"shape\", shape_cb, \"s\", \"'line'\"}\n"
-"\t};\n"
-"\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"MenuBar Example\");\n"
-"\t\tthis.set_default_size (200, 200);\n"
-"\n"
-"\t\t/* Setup window actions. */\n"
-"\t\tthis.add_action_entries (actions, this);\n"
-"\t}\n"
-"}\n"
-"\n"
-"class MyApplication: Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"\t/* Callback functions for the application actions. */\n"
-"\tvoid new_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\t//new MyWindow (this).show ();\n"
-"\t\tprint (\"You clicked \\\"New\\\"\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid quit_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"You clicked \\\"Quit\\\"\\n\");\n"
-"\t\tthis.quit ();\n"
-"\t}\n"
-"\n"
-"\tvoid awesome_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tvar active = action.get_state ().get_boolean ();\n"
-"\t\taction.set_state (new Variant.boolean (!active));\n"
-"\t\tif (active)\n"
-"\t\t\tprint (\"You unchecked \\\"Awesome\\\"\\n\");\n"
-"\t\telse\n"
-"\t\t\tprint (\"You checked \\\"Awesome\\\"\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid state_cb (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"state is set to %s\\n\", parameter.get_string(null));\n"
-"\t\taction.set_state (parameter);\n"
-"\t}\n"
-"\n"
-"\t/* Create the application actions. */\n"
-"\tconst ActionEntry[] actions = {\n"
-"\t\t{ \"new\", new_cb },\n"
-"\t\t{ \"quit\", quit_cb },\n"
-"\t\t{ \"awesome\", awesome_cb, null, \"false\" },\n"
-"\t\t{ \"state\", state_cb, \"s\", \"'off'\" }\n"
-"\t};\n"
-"\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\t/* Setup application actions. */\n"
-"\t\tthis.add_action_entries (actions, this);\n"
-"\n"
-"\t\t/* Setup menubar and app_menu. */\n"
-"\t\t/* Get the UI file. */\n"
-"\t\tvar builder = new Gtk.Builder ();\n"
-"\t\ttry {\n"
-"\t\t\tbuilder.add_from_file (\"menubar.ui\");\n"
-"\t\t} catch (Error e) {\n"
-"\t\t\terror (\"Unable to load file: %s\", e.message);\n"
-"\t\t}\n"
-"\n"
-"\t\t/* Get the menubar from the builder. */\n"
-"\t\tthis.menubar = builder.get_object (\"menubar\") as MenuModel;\n"
-"\n"
-"\t\t/* Get the app_menu from the builder. */\n"
-"\t\tthis.app_menu = builder.get_object (\"appmenu\") as MenuModel;\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: section/title
-#: C/menubar.vala.page:161
-msgid "Mnemonics"
-msgstr "Mnemónicos"
-
-#. (itstool) path: section/title
-#: C/menubar.vala.page:167
-msgid "Accelerators"
-msgstr "Aceleradores"
-
-#. (itstool) path: section/p
-#: C/menubar.vala.page:183
-msgid ""
-"<code mime=\"application/xml\"><attribute name=\"label\" translatable="
-"\"yes\">Quit</attribute></code>"
-msgstr ""
-"<code mime=\"application/xml\"><attribute name=\"label\" translatable="
-"\"yes\">Quit</attribute></code>"
-
-#. (itstool) path: item/p
-#: C/menubar.vala.page:192
-msgid ""
-"<link href=\"http://valadoc.org/gio-2.0/GLib.ActionEntry.html\">Glib."
-"ActionEntry</link>"
-msgstr ""
-"<link href=\"http://valadoc.org/gio-2.0/GLib.ActionEntry.html\">Glib."
-"ActionEntry</link>"
-
-#. (itstool) path: item/p
-#: C/menubar.vala.page:193
-msgid ""
-"<link href=\"http://valadoc.org/gio-2.0/Gtk.Builder.html\">Gtk.Builder</link>"
-msgstr ""
-"<link href=\"http://valadoc.org/gio-2.0/Gtk.Builder.html\">Gtk.Builder</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/menubutton.c.page:22 C/menubutton.js.page:22 C/menubutton.py.page:29
-#: C/menubutton.vala.page:22
-msgctxt "_"
-msgid ""
-"external ref='media/menubutton.png' md5='99eedc5ef2d6c56d32ca9ae7f3f3320f'"
-msgstr ""
-"external ref='media/menubutton.png' md5='99eedc5ef2d6c56d32ca9ae7f3f3320f'"
-
-#. (itstool) path: info/title
-#: C/menubutton.c.page:8 C/menubutton.py.page:8
-msgctxt "text"
-msgid "MenuButton"
-msgstr "MenuButton"
-
-#. (itstool) path: info/desc
-#: C/menubutton.c.page:18 C/menubutton.js.page:18 C/menubutton.py.page:25
-#: C/menubutton.vala.page:18
-msgid "A widget that shows a menu when clicked on"
-msgstr "Un widget que muestra un menú cuando se pulsa"
-
-#. (itstool) path: page/title
-#: C/menubutton.c.page:21 C/menubutton.js.page:21 C/menubutton.py.page:28
-#: C/menubutton.vala.page:21
-msgid "MenuButton"
-msgstr "MenuButton"
-
-#. (itstool) path: page/p
-#: C/menubutton.c.page:23 C/menubutton.js.page:23 C/menubutton.py.page:30
-#: C/menubutton.vala.page:23
-msgid ""
-"The GtkMenuButton widget is used to display a menu when clicked on. This "
-"menu can be provided either as a GtkMenu, or an abstract GMenuModel. The "
-"GtkMenuButton widget can hold any valid child widget. That is, it can hold "
-"almost any other standard GtkWidget. The most commonly used child is the "
-"provided GtkArrow."
-msgstr ""
-"El widget «GtkMenuButton» se usa para mostrar un menú cuando se pulsa. Este "
-"menú puede proporcionarse como un «GtkMenu», o un «GMenuModel» abstracto. El "
-"widget «GtkMenuButton» puede contener cualquier widget hijo válido. Esto es "
-"casi cualquier «GtkWidget» estándar. El hijo más comúnmente usado es el "
-"«GtkArrow» proporcionado."
-
-#. (itstool) path: note/p
-#: C/menubutton.c.page:25 C/menubutton.js.page:27
-msgid "You need to be running GNOME 3.6 or later for the MenuButton to work."
-msgstr ""
-"Necesita ejecutar GNOME 3.6 o superior para que el «MenuButton» funcione."
-
-#. (itstool) path: section/code
-#: C/menubutton.c.page:31
-#, no-wrap
-msgid ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"/* Callback function for the undo action */\n"
-"static void\n"
-"about_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"About\\\"\\n\");\n"
-"}\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GMenu *submenu;\n"
-" GtkWidget *grid;\n"
-" GMenu *menumodel;\n"
-" GtkWidget *window;\n"
-" GtkWidget *menubutton;\n"
-" GSimpleAction *about_action;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-" grid = gtk_grid_new ();\n"
-"\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"MenuButton Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);\n"
-"\n"
-" menubutton = gtk_menu_button_new ();\n"
-" gtk_widget_set_size_request (menubutton, 80, 35);\n"
-"\n"
-" gtk_grid_attach (GTK_GRID (grid), menubutton, 0, 0, 1, 1);\n"
-" gtk_container_add (GTK_CONTAINER (window), grid);\n"
-"\n"
-" menumodel = g_menu_new ();\n"
-" g_menu_append (menumodel, \"New\", \"app.new\");\n"
-" g_menu_append (menumodel, \"About\", \"win.about\");\n"
-"\n"
-" submenu = g_menu_new ();\n"
-" g_menu_append_submenu (menumodel, \"Other\", G_MENU_MODEL (submenu));\n"
-" g_menu_append (submenu, \"Quit\", \"app.quit\");\n"
-" gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (menubutton), G_MENU_MODEL (menumodel));\n"
-"\n"
-" about_action = g_simple_action_new (\"about\", NULL);\n"
-" g_signal_connect (about_action, \"activate\", G_CALLBACK (about_callback),\n"
-" GTK_WINDOW (window));\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"static void\n"
-"new_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"New\\\"\\n\");\n"
-"}\n"
-"\n"
-"static void\n"
-"quit_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GApplication *application = user_data;\n"
-"\n"
-" g_application_quit (application);\n"
-"}\n"
-"\n"
-"static void\n"
-"startup (GApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GSimpleAction *new_action;\n"
-" GSimpleAction *quit_action;\n"
-"\n"
-" new_action = g_simple_action_new (\"new\", NULL);\n"
-" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
-"\n"
-" quit_action = g_simple_action_new (\"quit\", NULL);\n"
-" g_signal_connect (quit_action, \"activate\", G_CALLBACK (quit_callback), app);\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
-"}\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"/* Callback function for the undo action */\n"
-"static void\n"
-"about_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"About\\\"\\n\");\n"
-"}\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GMenu *submenu;\n"
-" GtkWidget *grid;\n"
-" GMenu *menumodel;\n"
-" GtkWidget *window;\n"
-" GtkWidget *menubutton;\n"
-" GSimpleAction *about_action;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-" grid = gtk_grid_new ();\n"
-"\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"MenuButton Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);\n"
-"\n"
-" menubutton = gtk_menu_button_new ();\n"
-" gtk_widget_set_size_request (menubutton, 80, 35);\n"
-"\n"
-" gtk_grid_attach (GTK_GRID (grid), menubutton, 0, 0, 1, 1);\n"
-" gtk_container_add (GTK_CONTAINER (window), grid);\n"
-"\n"
-" menumodel = g_menu_new ();\n"
-" g_menu_append (menumodel, \"New\", \"app.new\");\n"
-" g_menu_append (menumodel, \"About\", \"win.about\");\n"
-"\n"
-" submenu = g_menu_new ();\n"
-" g_menu_append_submenu (menumodel, \"Other\", G_MENU_MODEL (submenu));\n"
-" g_menu_append (submenu, \"Quit\", \"app.quit\");\n"
-" gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (menubutton), G_MENU_MODEL (menumodel));\n"
-"\n"
-" about_action = g_simple_action_new (\"about\", NULL);\n"
-" g_signal_connect (about_action, \"activate\", G_CALLBACK (about_callback),\n"
-" GTK_WINDOW (window));\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"static void\n"
-"new_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"New\\\"\\n\");\n"
-"}\n"
-"\n"
-"static void\n"
-"quit_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GApplication *application = user_data;\n"
-"\n"
-" g_application_quit (application);\n"
-"}\n"
-"\n"
-"static void\n"
-"startup (GApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GSimpleAction *new_action;\n"
-" GSimpleAction *quit_action;\n"
-"\n"
-" new_action = g_simple_action_new (\"new\", NULL);\n"
-" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
-"\n"
-" quit_action = g_simple_action_new (\"quit\", NULL);\n"
-" g_signal_connect (quit_action, \"activate\", G_CALLBACK (quit_callback), app);\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
-"}\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/menubutton.c.page:38
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMenuButton.html"
-"\">GtkMenuButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMenuButton.html"
-"\">GtkMenuButton</link>"
-
-#. (itstool) path: item/p
-#: C/menubutton.c.page:39
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMenu.html"
-"\">GtkMenu</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMenu.html"
-"\">GtkMenu</link>"
-
-#. (itstool) path: item/p
-#: C/menubutton.c.page:40
-msgid ""
-"<link href=\"https://developer.gnome.org/gio/unstable/GMenuModel.html"
-"\">GMenuModel</link>"
-msgstr ""
-"<link href=\"https://developer.gnome.org/gio/unstable/GMenuModel.html"
-"\">GMenuModel</link>"
-
-#. (itstool) path: item/p
-#: C/menubutton.c.page:41
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkArrow.html"
-"\">GtkArrow</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkArrow.html"
-"\">GtkArrow</link>"
-
-#. (itstool) path: info/title
-#: C/menubutton.js.page:8
-msgctxt "text"
-msgid "MenuButton (JavaScript)"
-msgstr "MenuButton (JavaScript)"
-
-#. (itstool) path: credit/name
-#: C/menubutton.js.page:13
-msgid "Anna Zacchi"
-msgstr "Anna Zacchi"
-
-#. (itstool) path: page/code
-#: C/menubutton.js.page:28
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const Application = new Lang.Class ({\n"
-" Name: 'Application',\n"
-"\n"
-" //create the application\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application ({ application_id: 'org.example.myapp',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE });\n"
-"\n"
-" //connect to 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" //create the UI (in this case it's just the ApplicationWindow)\n"
-" _buildUI: function() {\n"
-" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"MenuButton Example\" });\n"
-" this._window.set_default_size(600, 400);\n"
-" this.grid = new Gtk.Grid();\n"
-" this._window.add(this.grid);\n"
-"\n"
-"\n"
-" this._menuButton = new Gtk.MenuButton();\n"
-" this.grid.attach(this._menuButton, 0, 0, 1, 1 );\n"
-" this.menu = new Gtk.Menu.new_from_model(this.menuModel);\n"
-"\n"
-" this.menu.show();\n"
-" this._menuButton.set_menu_model (this.menuModel);\n"
-" this._menuButton.set_size_request(80, 35);\n"
-" this._menuButton.show();\n"
-"\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" _showNew: function() {\n"
-" print(\"You clicked \\\"New\\\"\");\n"
-" },\n"
-"\n"
-" _showAbout: function() {\n"
-" print(\"You clicked \\\"About\\\"\");\n"
-" },\n"
-"\n"
-" //create the menu items and connect the signals to the callback functions.\n"
-" _initMenus: function() {\n"
-" let newAction = new Gio.SimpleAction({ name: 'new' });\n"
-" newAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showNew();\n"
-" }));\n"
-" this.application.add_action(newAction);\n"
-"\n"
-" let aboutAction = new Gio.SimpleAction({ name: 'about' });\n"
-" aboutAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showAbout();\n"
-" }));\n"
-" this.application.add_action(aboutAction);\n"
-"\n"
-" let quitAction = new Gio.SimpleAction({ name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-"\n"
-" this.menuModel = new Gio.Menu();\n"
-"\n"
-" this.menuItemNew = Gio.MenuItem.new(\"New\", 'app.new');\n"
-" this.menuItemAbout = Gio.MenuItem.new(\"About\", 'app.about');\n"
-" this.fileMenuItem = Gio.MenuItem.new(\"Other\", null);\n"
-"\n"
-" this.menuModel.append_item(this.menuItemNew);\n"
-" this.menuModel.append_item(this.menuItemAbout);\n"
-"\n"
-" //submenu\n"
-" this.subMenu = new Gio.Menu();\n"
-" this.fileMenuItem.set_submenu(this.subMenu);\n"
-" this.menuItemQuit = Gio.MenuItem.new(\"Quit\", 'app.quit');\n"
-" this.subMenu.append_item(this.menuItemQuit);\n"
-" this.menuModel.append_item(this.fileMenuItem);\n"
-" },\n"
-"\n"
-" //callback function for 'activate' signal\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" //callback function for 'startup' signal\n"
-" _onStartup: function() {\n"
-" //You must call _initMenus() before calling _buildUI().\n"
-" this._initMenus();\n"
-" this._buildUI();\n"
-" }\n"
-"});\n"
-"\n"
-"//run the application\n"
-"let app = new Application();\n"
-"app.application.run(ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const Application = new Lang.Class ({\n"
-" Name: 'Application',\n"
-"\n"
-" //create the application\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application ({ application_id: 'org.example.myapp',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE });\n"
-"\n"
-" //connect to 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" //create the UI (in this case it's just the ApplicationWindow)\n"
-" _buildUI: function() {\n"
-" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"MenuButton Example\" });\n"
-" this._window.set_default_size(600, 400);\n"
-" this.grid = new Gtk.Grid();\n"
-" this._window.add(this.grid);\n"
-"\n"
-"\n"
-" this._menuButton = new Gtk.MenuButton();\n"
-" this.grid.attach(this._menuButton, 0, 0, 1, 1 );\n"
-" this.menu = new Gtk.Menu.new_from_model(this.menuModel);\n"
-"\n"
-" this.menu.show();\n"
-" this._menuButton.set_menu_model (this.menuModel);\n"
-" this._menuButton.set_size_request(80, 35);\n"
-" this._menuButton.show();\n"
-"\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-" _showNew: function() {\n"
-" print(\"You clicked \\\"New\\\"\");\n"
-" },\n"
-"\n"
-" _showAbout: function() {\n"
-" print(\"You clicked \\\"About\\\"\");\n"
-" },\n"
-"\n"
-" //create the menu items and connect the signals to the callback functions.\n"
-" _initMenus: function() {\n"
-" let newAction = new Gio.SimpleAction({ name: 'new' });\n"
-" newAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showNew();\n"
-" }));\n"
-" this.application.add_action(newAction);\n"
-"\n"
-" let aboutAction = new Gio.SimpleAction({ name: 'about' });\n"
-" aboutAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showAbout();\n"
-" }));\n"
-" this.application.add_action(aboutAction);\n"
-"\n"
-" let quitAction = new Gio.SimpleAction({ name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-"\n"
-" this.menuModel = new Gio.Menu();\n"
-"\n"
-" this.menuItemNew = Gio.MenuItem.new(\"New\", 'app.new');\n"
-" this.menuItemAbout = Gio.MenuItem.new(\"About\", 'app.about');\n"
-" this.fileMenuItem = Gio.MenuItem.new(\"Other\", null);\n"
-"\n"
-" this.menuModel.append_item(this.menuItemNew);\n"
-" this.menuModel.append_item(this.menuItemAbout);\n"
-"\n"
-" //submenu\n"
-" this.subMenu = new Gio.Menu();\n"
-" this.fileMenuItem.set_submenu(this.subMenu);\n"
-" this.menuItemQuit = Gio.MenuItem.new(\"Quit\", 'app.quit');\n"
-" this.subMenu.append_item(this.menuItemQuit);\n"
-" this.menuModel.append_item(this.fileMenuItem);\n"
-" },\n"
-"\n"
-" //callback function for 'activate' signal\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" //callback function for 'startup' signal\n"
-" _onStartup: function() {\n"
-" //You must call _initMenus() before calling _buildUI().\n"
-" this._initMenus();\n"
-" this._buildUI();\n"
-" }\n"
-"});\n"
-"\n"
-"//run the application\n"
-"let app = new Application();\n"
-"app.application.run(ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/menubutton.js.page:33 C/menubutton.vala.page:33
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/3.5/gtk3-GtkMenuButton.html"
-"\">MenuButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/3.5/gtk3-GtkMenuButton.html"
-"\">MenuButton</link>"
-
-#. (itstool) path: note/p
-#: C/menubutton.py.page:32 C/menubutton.vala.page:27
-msgid "You need to be running GNOME 3.6 for the MenuButton to work."
-msgstr "Necesita ejecutar GNOME 3.6 para que el «MenuButton» funcione."
-
-#. (itstool) path: section/code
-#: C/menubutton.py.page:38
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "from gi.repository import Gio\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"Menubutton Example\", application=app)\n"
-#| " self.set_default_size(600, 400)\n"
-#| "\n"
-#| " grid = Gtk.Grid()\n"
-#| "\n"
-#| " # a menubutton\n"
-#| " menubutton = Gtk.MenuButton()\n"
-#| " menubutton.set_size_request(80, 35)\n"
-#| "\n"
-#| " grid.attach(menubutton, 0, 0, 1, 1)\n"
-#| "\n"
-#| " # a menu with two actions\n"
-#| " menumodel = Gio.Menu()\n"
-#| " menumodel.append(\"New\", \"app.new\")\n"
-#| " menumodel.append(\"About\", \"win.about\")\n"
-#| "\n"
-#| " # a submenu with one action for the menu\n"
-#| " submenu = Gio.Menu()\n"
-#| " submenu.append(\"Quit\", \"app.quit\")\n"
-#| " menumodel.append_submenu(\"Other\", submenu)\n"
-#| "\n"
-#| " # the menu is set as the menu of the menubutton\n"
-#| " menubutton.set_menu_model(menumodel)\n"
-#| "\n"
-#| " # the action related to the window (about)\n"
-#| " about_action = Gio.SimpleAction.new(\"about\", None)\n"
-#| " about_action.connect(\"activate\", self.about_callback)\n"
-#| " self.add_action(about_action)\n"
-#| "\n"
-#| " self.add(grid)\n"
-#| "\n"
-#| " # callback for \"about\"\n"
-#| " def about_callback(self, action, parameter):\n"
-#| " print \"You clicked \\\"About\\\"\"\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| " # the actions related to the application\n"
-#| " new_action = Gio.SimpleAction.new(\"new\", None)\n"
-#| " new_action.connect(\"activate\", self.new_callback)\n"
-#| " self.add_action(new_action)\n"
-#| "\n"
-#| " quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-#| " quit_action.connect(\"activate\", self.quit_callback)\n"
-#| " self.add_action(quit_action)\n"
-#| "\n"
-#| " # callback functions for the actions related to the application\n"
-#| " def new_callback(self, action, parameter):\n"
-#| " print \"You clicked \\\"New\\\"\"\n"
-#| "\n"
-#| " def quit_callback(self, action, parameter):\n"
-#| " print \"You clicked \\\"Quit\\\"\"\n"
-#| " self.quit()\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Menubutton Example\", application=app)\n"
-" self.set_default_size(600, 400)\n"
-"\n"
-" grid = Gtk.Grid()\n"
-"\n"
-" # a menubutton\n"
-" menubutton = Gtk.MenuButton()\n"
-" menubutton.set_size_request(80, 35)\n"
-"\n"
-" grid.attach(menubutton, 0, 0, 1, 1)\n"
-"\n"
-" # a menu with two actions\n"
-" menumodel = Gio.Menu()\n"
-" menumodel.append(\"New\", \"app.new\")\n"
-" menumodel.append(\"About\", \"win.about\")\n"
-"\n"
-" # a submenu with one action for the menu\n"
-" submenu = Gio.Menu()\n"
-" submenu.append(\"Quit\", \"app.quit\")\n"
-" menumodel.append_submenu(\"Other\", submenu)\n"
-"\n"
-" # the menu is set as the menu of the menubutton\n"
-" menubutton.set_menu_model(menumodel)\n"
-"\n"
-" # the action related to the window (about)\n"
-" about_action = Gio.SimpleAction.new(\"about\", None)\n"
-" about_action.connect(\"activate\", self.about_callback)\n"
-" self.add_action(about_action)\n"
-"\n"
-" self.add(grid)\n"
-"\n"
-" # callback for \"about\"\n"
-" def about_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"About\\\"\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # the actions related to the application\n"
-" new_action = Gio.SimpleAction.new(\"new\", None)\n"
-" new_action.connect(\"activate\", self.new_callback)\n"
-" self.add_action(new_action)\n"
-"\n"
-" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-" quit_action.connect(\"activate\", self.quit_callback)\n"
-" self.add_action(quit_action)\n"
-"\n"
-" # callback functions for the actions related to the application\n"
-" def new_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"New\\\"\")\n"
-"\n"
-" def quit_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Quit\\\"\")\n"
-" self.quit()\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Menubutton Example\", application=app)\n"
-" self.set_default_size(600, 400)\n"
-"\n"
-" grid = Gtk.Grid()\n"
-"\n"
-" # a menubutton\n"
-" menubutton = Gtk.MenuButton()\n"
-" menubutton.set_size_request(80, 35)\n"
-"\n"
-" grid.attach(menubutton, 0, 0, 1, 1)\n"
-"\n"
-" # a menu with two actions\n"
-" menumodel = Gio.Menu()\n"
-" menumodel.append(\"New\", \"app.new\")\n"
-" menumodel.append(\"About\", \"win.about\")\n"
-"\n"
-" # a submenu with one action for the menu\n"
-" submenu = Gio.Menu()\n"
-" submenu.append(\"Quit\", \"app.quit\")\n"
-" menumodel.append_submenu(\"Other\", submenu)\n"
-"\n"
-" # the menu is set as the menu of the menubutton\n"
-" menubutton.set_menu_model(menumodel)\n"
-"\n"
-" # the action related to the window (about)\n"
-" about_action = Gio.SimpleAction.new(\"about\", None)\n"
-" about_action.connect(\"activate\", self.about_callback)\n"
-" self.add_action(about_action)\n"
-"\n"
-" self.add(grid)\n"
-"\n"
-" # callback for \"about\"\n"
-" def about_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"About\\\"\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # the actions related to the application\n"
-" new_action = Gio.SimpleAction.new(\"new\", None)\n"
-" new_action.connect(\"activate\", self.new_callback)\n"
-" self.add_action(new_action)\n"
-"\n"
-" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-" quit_action.connect(\"activate\", self.quit_callback)\n"
-" self.add_action(quit_action)\n"
-"\n"
-" # callback functions for the actions related to the application\n"
-" def new_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"New\\\"\")\n"
-"\n"
-" def quit_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Quit\\\"\")\n"
-" self.quit()\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/menubutton.py.page:42
-msgid "Useful methods for a MenuButton widget"
-msgstr "Métodos útiles para un widget «MenuButton»"
-
-#. (itstool) path: section/p
-#: C/menubutton.py.page:43
-msgid ""
-"In line 33 the signal <code>\"activate\"</code> from the action "
-"<code>about_action</code> is connected to the callback function "
-"<code>about_callback()</code> using <code><var>action</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 33 la señal <code>«activate»</code> de la acción "
-"<code>about_action</code> se conecta a la función de retorno de llamada "
-"<code>about_callback()</code> usando <code><var>action</var>.connect"
-"(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
-"explicación más detallada."
-
-#. (itstool) path: section/p
-#: C/menubutton.py.page:45
-msgid ""
-"The positioning of the menu is determined by the \"direction\" property of "
-"the menu button and the \"halign\" or \"valign\" properties of the menu. For "
-"example, when the direction is <code>Gtk.ArrowType.DOWN</code> (other "
-"option: <code>UP</code>) and the horizontal alignment is <code>Gtk.Align."
-"START</code> (other options: <code>CENTER</code> and <code>END</code>), the "
-"menu will be positioned below the button, with the starting edge (depending "
-"on the text direction) of the menu aligned with the starting edge of the "
-"button. If there is not enough space below the button, the menu is popped up "
-"above the button instead. If the alignment would move part of the menu "
-"offscreen, it is 'pushed in'."
-msgstr ""
-"La posición del menú está determinada por la propiedad «direction» del botón "
-"de menú y las propiedades «halign» o «valign» del menú. Por ejemplo, cuando "
-"«direction» es <code>Gtk.ArrowType.DOWN</code> (otra opción: <code>UP</code>) "
-"y la alineación horizontal es <code>Gtk.Align.START</code> (otras opciones: "
-"<code>CENTER</code> y <code>END</code>), el menú se posiciona bajo el botón, "
-"con su borde inicial (dependiendo de la dirección del texto) alineado con el "
-"borde inicial del botón. Si no hay suficiente espacio bajo el botón, el "
-"menú, en cambio, se abre sobre él. Si la alineación mueve parte del menú "
-"fuera de la pantalla, se «empuja hacia adentro»."
-
-#. (itstool) path: section/p
-#: C/menubutton.py.page:47
-msgid ""
-"In the case of vertical alignment, the possible ArrowType directions are "
-"<code>LEFT</code> and <code>RIGHT</code> and the vertical alignment is again "
-"<code>START</code>, <code>CENTER</code> or <code>END</code>."
-msgstr ""
-"En el caso de alineación vertical, las direcciones de «ArrowType» posibles "
-"son <code>LEFT</code> y <code>RIGHT</code>, y la alineación vertical es, "
-"nuevamente, <code>START</code>, <code>CENTER</code> o <code>END</code>."
-
-#. (itstool) path: section/p
-#: C/menubutton.py.page:49
-msgid ""
-"<code>set_align_widget(alignment)</code> and <code>set_direction(direction)</"
-"code> can be used to set these properties."
-msgstr ""
-"<code>set_align_widget(alineación)</code> y <code>set_direction(dirección)</"
-"code> pueden usarse para establecer estas propiedades."
-
-#. (itstool) path: item/p
-#: C/menubutton.py.page:56
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMenuButton.html"
-"\">MenuButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMenuButton.html"
-"\">MenuButton</link>"
-
-#. (itstool) path: info/title
-#: C/menubutton.vala.page:8
-msgctxt "text"
-msgid "MenuButton (Vala)"
-msgstr "MenuButton (Vala)"
-
-#. (itstool) path: page/code
-#: C/menubutton.vala.page:28
-#, no-wrap
-msgid ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"MenuButton Example\");\n"
-"\t\tthis.set_default_size (600, 400);\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\n"
-"\t\tvar menubutton = new Gtk.MenuButton();\n"
-"\t\tmenubutton.set_size_request (80, 35);\n"
-"\n"
-"\t\tvar menumodel = new Menu ();\n"
-"\t\tmenumodel.append (\"New\", \"app.new\");\n"
-"\t\tmenumodel.append (\"About\", \"win.about\");\n"
-"\n"
-"\t\t/* We create the last item as a MenuItem, so that\n"
-"\t\t * a submenu can be appended to this menu item.\n"
-"\t\t */\n"
-"\t\tvar submenu = new Menu ();\n"
-"\t\tmenumodel.append_submenu (\"Other\", submenu);\n"
-"\t\tsubmenu.append (\"Quit\", \"app.quit\");\n"
-"\t\tmenubutton.set_menu_model (menumodel);\n"
-"\n"
-"\t\tvar about_action = new SimpleAction (\"about\", null);\n"
-"\t\tabout_action.activate.connect (this.about_cb);\n"
-"\t\tthis.add_action (about_action);\n"
-"\n"
-"\t\tthis.add(grid);\n"
-"\t\tgrid.attach(menubutton, 0, 0, 1, 1);\n"
-"\t}\n"
-"\n"
-"\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n"
-"\t\tprint (\"You clicked \\\"About\\\"\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show_all ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the 'startup' signal of GLib.Application. */\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
-"\t\tnew_action.activate.connect (this.new_cb);\n"
-"\t\tthis.add_action (new_action);\n"
-"\n"
-"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
-"\t\tquit_action.activate.connect (this.quit);\n"
-"\t\tthis.add_action (quit_action);\n"
-"\t}\n"
-"\n"
-"\tvoid new_cb (SimpleAction simple, Variant? parameter) {\n"
-"\t\tprint (\"You clicked \\\"New\\\"\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"MenuButton Example\");\n"
-"\t\tthis.set_default_size (600, 400);\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\n"
-"\t\tvar menubutton = new Gtk.MenuButton();\n"
-"\t\tmenubutton.set_size_request (80, 35);\n"
-"\n"
-"\t\tvar menumodel = new Menu ();\n"
-"\t\tmenumodel.append (\"New\", \"app.new\");\n"
-"\t\tmenumodel.append (\"About\", \"win.about\");\n"
-"\n"
-"\t\t/* We create the last item as a MenuItem, so that\n"
-"\t\t * a submenu can be appended to this menu item.\n"
-"\t\t */\n"
-"\t\tvar submenu = new Menu ();\n"
-"\t\tmenumodel.append_submenu (\"Other\", submenu);\n"
-"\t\tsubmenu.append (\"Quit\", \"app.quit\");\n"
-"\t\tmenubutton.set_menu_model (menumodel);\n"
-"\n"
-"\t\tvar about_action = new SimpleAction (\"about\", null);\n"
-"\t\tabout_action.activate.connect (this.about_cb);\n"
-"\t\tthis.add_action (about_action);\n"
-"\n"
-"\t\tthis.add(grid);\n"
-"\t\tgrid.attach(menubutton, 0, 0, 1, 1);\n"
-"\t}\n"
-"\n"
-"\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n"
-"\t\tprint (\"You clicked \\\"About\\\"\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show_all ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the 'startup' signal of GLib.Application. */\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
-"\t\tnew_action.activate.connect (this.new_cb);\n"
-"\t\tthis.add_action (new_action);\n"
-"\n"
-"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
-"\t\tquit_action.activate.connect (this.quit);\n"
-"\t\tthis.add_action (quit_action);\n"
-"\t}\n"
-"\n"
-"\tvoid new_cb (SimpleAction simple, Variant? parameter) {\n"
-"\t\tprint (\"You clicked \\\"New\\\"\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/message-board.c.page:41
-msgctxt "_"
-msgid ""
-"external ref='media/message-board.ogv' md5='beb80c4538776dc2cdd26c95abea5027'"
-msgstr ""
-"external ref='media/message-board.ogv' md5='beb80c4538776dc2cdd26c95abea5027'"
-
-#. (itstool) path: info/title
-#: C/message-board.c.page:8
-msgctxt "text"
-msgid "Message board (C)"
-msgstr "Cuadro de mensajes (C)"
-
-#. (itstool) path: info/desc
-#: C/message-board.c.page:11
-msgid "A simple program using WebKitGTK+ and the DOM."
-msgstr "Un programa sencillo usando WebKitGTK+ y el DOM."
-
-#. (itstool) path: page/title
-#: C/message-board.c.page:26
-msgid "Message board"
-msgstr "Cuadro de mensajes"
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:31
-msgid "How to display a web page with WebKit."
-msgstr "Cómo mostrar una página web con WebKit"
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:32
-msgid ""
-"How to manipulate the contents of a web page using WebKit's DOM functions."
-msgstr ""
-"Como manipular el contenido de una página web usando las funciones del DOM "
-"del WebKit."
-
-#. (itstool) path: synopsis/p
-#: C/message-board.c.page:35
-msgid ""
-"This tutorial assumes you are familiar with the C programming language and "
-"have a basic understanding of GTK+, including how to create and place "
-"widgets and how to connect callback functions to signals. See <link xref="
-"\"image-viewer.c\"/> to learn the basics of GTK+."
-msgstr ""
-"En este tutorial se asume que está familiarizado con el lenguaje de "
-"programación C y que tiene un conocimiento básico de GTK+, incluyendo cómo "
-"crear y colocar widgets y cómo conectar funciones de retorno de retorno de "
-"la llamadas a señales. Consulte la <link xref=\"image-viewer.c\"/> para "
-"aprender las nociones básicas de GTK+."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:48
-msgid ""
-"The GNOME platform includes WebKitGTK+, built on top of the powerful WebKit "
-"HTML framework. WebKit is used throughout GNOME, not just to view web pages "
-"on the Internet, but also to create rich user interfaces that can be easily "
-"styled with CSS."
-msgstr ""
-"La plataforma GNOME incluye WebKitGTK+, construido sobre el potente marco de "
-"trabajo WebKit. WebKitGTK se usa en todo GNOME, no sólo para ver páginas web "
-"en Internet, sino también para crear interfaces de usuario enriquecidas a "
-"las que se pueden añadir estilos fácilmente con CSS."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:53
-msgid ""
-"In this tutorial, you will create a simple message board using WebKit. The "
-"message board will allow you to enter some text and have it added to a list "
-"of messages in HTML. Before you begin, you need to set up a project in "
-"Anjuta."
-msgstr ""
-"En este tutorial, se creará un cuadro de mensajes sencillo usando WebKit. El "
-"cuadro de mensajes le permitirá introducir algún texto y añadirlo a una "
-"lista de mensajes en HTML. Antes de empezar, deberá configurar un proyecto "
-"en Anjuta."
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:59
-msgid ""
-"In Anjuta, click <guiseq><gui>File</gui><gui>New</gui> <gui>Project</gui></"
-"guiseq> to open the new project assistant."
-msgstr ""
-"En Anjuta, pulse <guiseq><gui>Archivo</gui><gui>Nuevo</gui> <gui>Proyecto</"
-"gui></guiseq> para abrir el asistente para proyecto nuevo."
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:61
-msgid ""
-"Select <gui>GTK+ (simple)</gui> on the <gui>C</gui> tab, and click "
-"<gui>Continue</gui>."
-msgstr ""
-"Seleccione <gui>GTK+ (simple)</gui> en la pestaña <gui>C</gui> y pulse "
-"<gui>Continuar</gui>."
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:63
-msgid ""
-"Fill out your details on the <gui>Basic information</gui> page. Use "
-"<input>message-board</input> for the project name. Click <gui>Continue</gui>."
-msgstr ""
-"Rellene sus detalles en la página <gui>Información básica</gui>. Use "
-"<input>cuadro-mensajes</input> para el nombre del proyecto. Pulse "
-"<gui>Continuar</gui>."
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:66
-msgid ""
-"Disable the <gui>Use GtkBuilder for user interface</gui> option as this "
-"tutorial builds the user-interface manually."
-msgstr ""
-"Desactive la opción <gui>Usar GtkBuilder para la interfaz del usuario</gui>, "
-"ya que, en este tutorial, la interfaz de usuario se construye manualmente."
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:69
-msgid ""
-"You need to tell Anjuta you're using WebKitGTK+ on this project. On the "
-"<gui>Project options</gui> page, select <gui>Configure external packages</"
-"gui>. Click <gui>Continue</gui>. On the <gui>Configure external packages</"
-"gui> page, check <gui>webkitgtk-3.0</gui>."
-msgstr ""
-"Deberá indicar a Anjuta que va a usar WebKitGTK+ en este proyecto. En la "
-"página <gui>Opciones del proyecto</gui>, seleccione <gui>Configurar paquetes "
-"externos</gui>. Pulse <gui>Continuar</gui>. En la página <gui>Configurar "
-"paquetes externos</gui> seleccione <gui>webkitgtk-3.0</gui>."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:75
-msgid ""
-"After you finish the new project assistant, open the file <file>src/main.c</"
-"file> from either the <gui>Project</gui> or the <gui>File</gui> tab. Anjuta "
-"will have filled this in with some basic GTK+ code from its templates. Since "
-"you are creating a WebKit project, you first need to include the WebKit "
-"headers. After the line that includes <code>gtk/gtk.h</code>, add the "
-"following line:"
-msgstr ""
-"Cuando termine el asistente de creación de un nuevo proyecto, abra el "
-"archivo <file>src/main.c</file> desde la pestaña <gui>Proyecto</gui> o desde "
-"<gui>Archivo</gui>. Anjuta lo habrá rellenado con algo de código GTK+ básico "
-"de sus plantillas. Ya que está creando un proyecto WebKit, primero debe "
-"incluir las cabeceras de WebKit. Después de la línea que incluye <code>gtk/"
-"gtk.h</code>, añada la siguiente línea:"
-
-#. (itstool) path: section/code
-#: C/message-board.c.page:82
-#, no-wrap
-msgid "#include <webkit/webkit.h>"
-msgstr "#include <webkit/webkit.h>"
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:84
-msgid ""
-"Verify that everything works by building what you have so far. Click "
-"<guiseq><gui>Build</gui><gui>Build Project</gui></guiseq> or just press "
-"<keyseq><key>Shift</key><key>F7</key></keyseq>. The first time you build, "
-"you will be asked for some configure options. Just accept the defaults and "
-"click <gui>Execute</gui>."
-msgstr ""
-"Verifique que todo funciona construyendo lo que tiene hasta ahora. Pulse "
-"<guiseq><gui>Construir</gui><gui>Construir proyecto</gui></guiseq> o "
-"simplemente pulse <keyseq><key>Mayús</key><key>F7</key></keyseq>. La primera "
-"vez que construya, se le pedirán algunas opciones de configuración. "
-"Simplemente acepte los valores predeterminados y pulse <gui>Ejecutar</gui>."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:90
-msgid ""
-"You should now be able to run the program. Click <guiseq> <gui>Run</"
-"gui><gui>Execute</gui></guiseq> or just press <key>F3</key>. You should see "
-"an empty window appear."
-msgstr ""
-"Ahora debería poder ejecutar el programa. Pulse <guiseq><gui>Ejecutar</"
-"gui><gui>Ejecutar</gui></guiseq> o simplemente pulse <key>F3</key>. Debería "
-"ver aparecer una ventana vacía."
-
-#. (itstool) path: section/title
-#: C/message-board.c.page:96
-msgid "Lay out your window and web view"
-msgstr "La disposición de la ventana y la vista web"
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:98
-msgid ""
-"Now that you can show a window, it's time to start working with WebKit. For "
-"this tutorial, you'll create a text entry and a web view and pack them both "
-"into a window. Find the function <code>create_window</code> and replace it "
-"with the following:"
-msgstr ""
-"Ahora que puede mostrar una ventana, es el momento de empezar a trabajar con "
-"WebKit. Para este tutorial, se creará una entrada de texto y una vista web y "
-"ambas se empaquetarán en una ventana. Busque la función <code>create_window</"
-"code> y reemplácela con lo siguiente"
-
-#. (itstool) path: section/code
-#: C/message-board.c.page:103
-#, no-wrap
-msgid ""
-"\n"
-"static GtkWidget*\n"
-"create_window (void)\n"
-"{\n"
-" GtkWidget *window, *box, *scroll, *view, *entry;\n"
-"\n"
-" window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Message Board\");\n"
-" g_signal_connect (window, \"delete-event\", G_CALLBACK (gtk_main_quit), NULL);\n"
-"\n"
-" box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);\n"
-" gtk_container_set_border_width (GTK_CONTAINER (box), 6);\n"
-" gtk_container_add (GTK_CONTAINER (window), box);\n"
-"\n"
-" entry = gtk_entry_new ();\n"
-" gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 0);\n"
-"\n"
-" scroll = gtk_scrolled_window_new (NULL, NULL);\n"
-" g_object_set (scroll, \"shadow-type\", GTK_SHADOW_IN, NULL);\n"
-" gtk_box_pack_start (GTK_BOX (box), scroll, TRUE, TRUE, 0);\n"
-"\n"
-" view = webkit_web_view_new ();\n"
-" gtk_container_add (GTK_CONTAINER (scroll), view);\n"
-" webkit_web_view_load_string (WEBKIT_WEB_VIEW (view),\n"
-" \"<html><body></body></html>\",\n"
-" \"text/html\",\n"
-" \"UTF-8\",\n"
-" NULL);\n"
-"\n"
-" gtk_widget_show_all (GTK_WIDGET (box));\n"
-" return window;\n"
-"}\n"
-msgstr ""
-"\n"
-"static GtkWidget*\n"
-"create_window (void)\n"
-"{\n"
-" GtkWidget *window, *box, *scroll, *view, *entry;\n"
-"\n"
-" window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Message Board\");\n"
-" g_signal_connect (window, \"delete-event\", G_CALLBACK (gtk_main_quit), NULL);\n"
-"\n"
-" box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);\n"
-" gtk_container_set_border_width (GTK_CONTAINER (box), 6);\n"
-" gtk_container_add (GTK_CONTAINER (window), box);\n"
-"\n"
-" entry = gtk_entry_new ();\n"
-" gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 0);\n"
-"\n"
-" scroll = gtk_scrolled_window_new (NULL, NULL);\n"
-" g_object_set (scroll, \"shadow-type\", GTK_SHADOW_IN, NULL);\n"
-" gtk_box_pack_start (GTK_BOX (box), scroll, TRUE, TRUE, 0);\n"
-"\n"
-" view = webkit_web_view_new ();\n"
-" gtk_container_add (GTK_CONTAINER (scroll), view);\n"
-" webkit_web_view_load_string (WEBKIT_WEB_VIEW (view),\n"
-" \"<html><body></body></html>\",\n"
-" \"text/html\",\n"
-" \"UTF-8\",\n"
-" NULL);\n"
-"\n"
-" gtk_widget_show_all (GTK_WIDGET (box));\n"
-" return window;\n"
-"}\n"
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:138
-msgid ""
-"You first create a <code>GtkWindow</code> object and set its title and "
-"default size. You also connect the <code>gtk_main_quit</code> function to "
-"the <code>delete-event</code> signal. The <code>delete-event</code> signal "
-"is emitted when the window is closed. The <code>gtk_main_quit</code> "
-"function is part of GTK, and it quits the application."
-msgstr ""
-"Primero cree un objeto <code>GtkWindow</code> y establezca su título y su "
-"tamaño predeterminado. También puede conectar la función "
-"<code>gtk_main_quit</code> a la señal <code>delete-event</code>. La señal "
-"<code>delete-event</code> se emite cuando se cierra la ventana. La función "
-"<code>gtk_main_quit</code> es parte de GTK+, y sale de la aplicación."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:144
-msgid ""
-"You then create a vertical box and add it to the window. A window can only "
-"hold a single child widget, so you need to use a box to add multiple "
-"widgets. The second argument to <code>gtk_box_new</code> sets the amount of "
-"padding (in pixels) between each child, and the next line puts a six-pixel "
-"border around the entire thing."
-msgstr ""
-"Ahora cree una caja vertical y añádala a la ventana. Una ventana sólo puede "
-"contener un widget hijo, por lo que necesitará una caja para añadir varios "
-"widgets. El segundo argumento de <code>gtk_box_new</code> configura la "
-"cantidad de espacio (en píxeles) entre cada hijo, y la siguiente línea añade "
-"un borde de seis píxeles alrededor de la cosa completa."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:150
-msgid ""
-"You next create a <code>GtkEntry</code> object and pack it into the box. The "
-"third and fourth arguments to <code>gtk_box_pack_start</code> specify that "
-"the entry shouldn't take up any extra space the box has available. The "
-"fourth argument is the amount of padding you want around the entry. In this "
-"case, you set the padding to zero, because you're allowing the box to handle "
-"all the padding."
-msgstr ""
-"Después, cree un objeto <code>GtkEntry</code> y empaquételo en una caja. Los "
-"argumentos tercero y cuarto de <code>gtk_box_pack_start</code> especifican "
-"que la entrada no debería coger ningún espacio adicional que tenga la caja. "
-"El cuarto es la cantidad de relleno que quiere alrededor de la entrada. En "
-"este caso, se establece el relleno a cero, ya que se está permitiendo que la "
-"caja maneje todo el relleno."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:157
-msgid ""
-"Before you add a web view, you have to create a scrolled window to put it "
-"inside of. The scrolled window will place scrollbars on the right and bottom "
-"when necessary, and prevent your web view from filling your entire screen. "
-"This time, you pass <code>TRUE</code> and <code>TRUE</code> to "
-"<code>gtk_box_pack_start</code> to allow the scrolled window (and thus, the "
-"web view) to use any extra space available in the box."
-msgstr ""
-"Antes de añadir la vista web debe crear una ventana desplazada para ponerla "
-"dentro. La ventana desplazada contendrá barras de desplazamiento a la "
-"derecha y abajo cuando sea necesario, y evitará que la vista web abarque la "
-"pantalla entera. En este momento, se pasa <code>TRUE</code> y <code>TRUE</"
-"code> a <code>gtk_box_pack_start</code> para permitir que la ventana "
-"desplazada (y por lo tanto, la vista web) usen el espacio adicional "
-"disponible en la caja."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:164
-msgid ""
-"Finally, you create a <code>WebKitWebView</code> and add it to the scrolled "
-"window. Then load a very basic HTML page into the web view by calling "
-"<code>webkit_web_view_load_string</code> with the following arguments:"
-msgstr ""
-"Finalmente, cree una <code>WebKitWebView</code> y añádala a la ventana "
-"desplazada. Entonces cargue una página HTML muy simple en la vista web "
-"llamando a <code>webkit_web_view_load_string</code> con los siguientes "
-"argumentos:"
-
-#. (itstool) path: item/title
-#: C/message-board.c.page:170
-msgid "<code>WEBKIT_WEB_VIEW (view)</code>"
-msgstr "<code>WEBKIT_WEB_VIEW (view)</code>"
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:171
-msgid ""
-"The view itself. Because <code>view</code> is typed as a <code>GtkWidget*</"
-"code>, you have to use <code>WEBKIT_WEB_VIEW</code> to safely cast the "
-"object."
-msgstr ""
-"La vista en sí. Ya que <code>view</code> es de tipo <code>GtkWidget*</code>, "
-"debe usar <code>WEBKIT_WEB_VIEW</code> para convertir el tipo del objeto con "
-"seguridad."
-
-#. (itstool) path: item/title
-#: C/message-board.c.page:176
-msgid "<code>\"<html><body></body></html>\"</code>"
-msgstr "<code>\"<html><body></body></html>\"</code>"
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:177
-msgid "The simplest HTML file you could possibly write."
-msgstr "El archivo HTML más simple que pueda escribir."
-
-#. (itstool) path: item/title
-#: C/message-board.c.page:180
-msgid "<code>\"text/html\"</code>"
-msgstr "<code>\"text/html\"</code>"
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:181
-msgid ""
-"The MIME type of the content you provided. In this case, you're using plain "
-"HTML."
-msgstr ""
-"El tipo MIME del contenido que ha proporcionado. En este caso, está usando "
-"HTML plano."
-
-#. (itstool) path: item/title
-#: C/message-board.c.page:185
-msgid "<code>\"UTF-8\"</code>"
-msgstr "<code>\"UTF-8\"</code>"
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:186
-msgid ""
-"The character encoding of the content you provided. Although you only used "
-"ASCII characters, it's a good idea to specify UTF-8. UTF-8 is used as the "
-"default encoding throughout the GNOME platform."
-msgstr ""
-"La codificación de caracteres del contenido que ha proporcionado. Aunque "
-"sólo use caracteres ASCII, es una buena idea especificar UTF-8, ya que es la "
-"codificación que se usa de manera predeterminada en toda la plataforma GNOME."
-
-#. (itstool) path: item/title
-#: C/message-board.c.page:191
-msgid "<code>NULL</code>"
-msgstr "<code>NULL</code>"
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:192
-msgid ""
-"The base URI. You don't need it in this simple example, but you might want "
-"to provide a <sys>file:</sys> URI if you add images or other features where "
-"you want to use relative URI references."
-msgstr ""
-"El URI base. En este ejemplo no se necesita, pero puede querer proporcionar "
-"un URI <sys>file:</sys> si añade imágenes u otras características cuando "
-"quiera usar referencias a URI relativos."
-
-#. (itstool) path: note/p
-#: C/message-board.c.page:199
-msgid ""
-"Every time you add a widget, you have to call <code>gtk_widget_show</code> "
-"on it for it to be visible. If you call <code>gtk_widget_show_all</code> on "
-"a container widget like a <code>GtkBox</code>, GTK+ will automatically show "
-"all the widgets inside the container, to any depth. Sometimes you don't want "
-"to call <code>gtk_widget_show_all</code>, such as when you want to "
-"dynamically hide and show some widgets in response to events."
-msgstr ""
-"Cada vez que añade un widget, debe llamar a la función "
-"<code>gtk_widget_show</code> sobre él para hacerlo visible. Si llama a "
-"<code>gtk_widget_show</code> en un contenedor de widgets como <code>GtkBox</"
-"code>, GTK+ mostrará automáticamente todos los widgets del contenedor, en "
-"cualquier nivel. Algunas veces no se quiere llamar a la función "
-"<code>gtk_widget_show_all</code>, como cuando se quieren ocultar o mostrar "
-"dinámicamente algunos objetos en respuesta a determinados eventos."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:207
-msgid ""
-"Finally, you have to call <code>gtk_widget_show_all</code> on the box. "
-"Otherwise, none of the widgets you created will be visible. (The window is "
-"shown in the <code>main</code> function with <code>gtk_widget_show</code>.)"
-msgstr ""
-"Finalmente, debe llamar a la función <code>gtk_widget_show_all</code> sobre "
-"la caja. De otro modo, ninguno de los widgets que haya creado será visible. "
-"(La ventana se muestra en la función <code>main</code> con "
-"<code>gtk_widget_show</code>.)"
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:211
-msgid ""
-"Build and run the message board again. You should see a window with a text "
-"entry and a web view. It doesn't do anything yet because the text entry and "
-"the web view don't know anything about each other."
-msgstr ""
-"Construya y ejecute el cuadro de mensajes de nuevo. Debería ver una ventana "
-"con una entrada de texto y una vista web. Todavía no hace nada porque la "
-"entrada de texto y la vista web no saben nada la una acerca de la otra."
-
-#. (itstool) path: section/title
-#: C/message-board.c.page:217
-msgid "Hook up signals"
-msgstr "Conectar señales"
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:219
-msgid ""
-"Now you want to make the message board actually <em>do</em> something when "
-"you enter text into the text entry. To do this, connect a callback function "
-"to the <code>activate</code> signal of <code>entry</code>. GTK+ emits the "
-"<code>activate</code> signal whenever the user presses <key>Enter</key> in "
-"the entry. Add the following into <code>create_window</code>, anywhere after "
-"both <code>entry</code> and <code>view</code> have been defined:"
-msgstr ""
-"Ahora se quiere hacer que el cuadro <em>haga</em> algo cuando se introduce "
-"texto en la entrada de texto. Para hacer esto, conecte una función de "
-"retorno de la llamada a la señal <code>activate</code> de <code>entry</"
-"code>. GTK+ emite la señal <code>activate</code> cuando el usuario pulsa "
-"<key>Intro</key> en la entrada. Añada lo siguiente en <code>create_window</"
-"code>, en cualquier lugar después de que <code>entry</code> y <code>view</"
-"code> se hayan definido:"
-
-#. (itstool) path: section/code
-#: C/message-board.c.page:226
-#, no-wrap
-msgid ""
-"\n"
-"g_signal_connect (entry, \"activate\", G_CALLBACK (entry_activate_cb), view);\n"
-msgstr ""
-"\n"
-"g_signal_connect (entry, \"activate\", G_CALLBACK (entry_activate_cb), view);\n"
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:230
-msgid ""
-"You then have to actually define <code>entry_activate_cb</code>. Define it "
-"as follows, anywhere above <code>create_window</code>:"
-msgstr ""
-"Entonces se debe definir <code>entry_activate_cb</code>. Defínalo como "
-"quiera, en cualquier lugar por encima de <code>create_window</code>:"
-
-#. (itstool) path: section/code
-#: C/message-board.c.page:233
-#, no-wrap
-msgid ""
-"\n"
-"static void\n"
-"entry_activate_cb (GtkEntry *entry, WebKitWebView *view)\n"
-"{\n"
-" WebKitDOMDocument *document;\n"
-" WebKitDOMElement *body, *div;\n"
-"\n"
-" document = webkit_web_view_get_dom_document (view);\n"
-" body = webkit_dom_document_query_selector (document, \"body\", NULL);\n"
-" div = webkit_dom_document_create_element (document, \"div\", NULL);\n"
-" webkit_dom_node_set_text_content (WEBKIT_DOM_NODE (div),\n"
-" gtk_entry_get_text (entry),\n"
-" NULL);\n"
-" webkit_dom_node_append_child (WEBKIT_DOM_NODE (body),\n"
-" WEBKIT_DOM_NODE (div),\n"
-" NULL);\n"
-" gtk_entry_set_text (entry, \"\");\n"
-"}\n"
-msgstr ""
-"\n"
-"static void\n"
-"entry_activate_cb (GtkEntry *entry, WebKitWebView *view)\n"
-"{\n"
-" WebKitDOMDocument *document;\n"
-" WebKitDOMElement *body, *div;\n"
-"\n"
-" document = webkit_web_view_get_dom_document (view);\n"
-" body = webkit_dom_document_query_selector (document, \"body\", NULL);\n"
-" div = webkit_dom_document_create_element (document, \"div\", NULL);\n"
-" webkit_dom_node_set_text_content (WEBKIT_DOM_NODE (div),\n"
-" gtk_entry_get_text (entry),\n"
-" NULL);\n"
-" webkit_dom_node_append_child (WEBKIT_DOM_NODE (body),\n"
-" WEBKIT_DOM_NODE (div),\n"
-" NULL);\n"
-" gtk_entry_set_text (entry, \"\");\n"
-"}\n"
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:253
-msgid ""
-"The first thing you do is get a <code>WebKitDOMDocument</code> object that "
-"represents the HTML document displayed in <code>view</code>. The DOM classes "
-"and methods in WebKit allow you to inspect and manipulate the HTML document, "
-"and work very similarly to the DOM APIs you might already know from "
-"JavaScript."
-msgstr ""
-"Lo primero que hacer es obtener un objeto <code>WebKitDOMDocument</code> que "
-"representa el documento HTML mostrado en la <code>view</code>. Las clases "
-"DOM y los métodos de WebKit le permiten inspeccionar y manipular el "
-"documento HTML, y trabajar de manera similar a las API DOM que ya debería "
-"conocer de JavaScript."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:259
-msgid ""
-"Once you have the document, you want to get the <code>body</code> element so "
-"that you can add <code>div</code> elements to it. The "
-"<code>webkit_dom_document_query_selector</code> function lets you find an "
-"element in the document using CSS selectors. This keeps you from having to "
-"write tedious loops to traverse the document."
-msgstr ""
-"Una vez que tenga el documento, querrá obtener el elemento <code>body</code> "
-"para poder añadirle elementos <code>div</code>. La función "
-"<code>webkit_dom_document_query_selector</code> le permite encontrar un "
-"elemento en el documento usando selectores CSS. Esto le evita tener que "
-"escribir bucles tediosos para recorrer el documento."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:270
-msgid ""
-"Next, you create a new <code>div</code> element to hold the message. Every "
-"element you create has to be attached to a document, so the function to "
-"create an element takes the <code>WebKitDOMDocument</code> as its first "
-"arguments. You then set the text content of the element to the contents of "
-"the text entry. Because <code>gtk_entry_get_text</code> returns a "
-"<code>const gchar*</code>, you don't have to free the result."
-msgstr ""
-"Ahora, cree un elemento <code>div</code> que contenga el mensaje. Cada "
-"elemento que cree se debe adjuntar se debe adjuntar a un documento, por lo "
-"que la función para crear un elemento toma el <code>WebKitDOMDocument</code> "
-"como primer argumento. Debe entonces establecer el contenido del elemento "
-"con el contenido de la entrada de texto. Dado que <code>gtk_entry_get_text</"
-"code> devuelve un <code>const gchar*</code>, no tiene que liberar el "
-"resultado."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:283
-msgid ""
-"Finally, you append the new <code>div</code> element to the body and clear "
-"out the text entry so you can type something new. Build and run the program "
-"again and test it for yourself."
-msgstr ""
-"Finalmente, añada el nuevo elemento <code>div</code> al cuerpo y limpie la "
-"salida de texto para poder escribir algo nuevo. Construya y ejecute el "
-"programa otra vez y pruébelo por su cuenta."
-
-#. (itstool) path: section/title
-#: C/message-board.c.page:290
-msgid "Make it look better with CSS"
-msgstr "Mejorar el aspecto con CSS"
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:292
-msgid ""
-"At this point, your program is completely functional, but not very pretty. "
-"You can style the message display with CSS, just like you can with any other "
-"HTML page. There are many ways you could attach some CSS to the page: You "
-"could add it in the initial HTML document. You could inline it in the "
-"<code>style</code> attribute of the <code>div</code> elements. You could "
-"even programmatically construct it using the DOM APIs."
-msgstr ""
-"En este punto, su programa es completamente funcional, pero no es muy "
-"atractivo. Puede añadir estilos a la visualización de los mensajes con CSS, "
-"igual que puede hacer con una página web. Hay muchas maneras de incluir un "
-"CSS en la página: puede añadirlo al documento HTML inicial, añadirlo en "
-"línea usando el atributo <code>style</code> de los elementos <code>div</"
-"code> o puede incluso construirlo con programación usando las API DOM."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:299
-msgid ""
-"In this tutorial, you'll attach the CSS using the <code>user-stylesheet-uri</"
-"code> property of the <code>WebKitWebSetting</code> object attached to your "
-"web view. In a more complete application, you would want to save and load "
-"your HTML file. Keeping the style information outside the actual HTML means "
-"that you can change the styling completely within your application, without "
-"having to change users' files. You would normally just install a file along "
-"with your application, but just to keep everything in one file for this "
-"demo, we'll use a trick called a data URI. First, define the CSS as a static "
-"string near the top of your file."
-msgstr ""
-"En este tutorial se adjuntará el CSS usando la propiedad <code>user-"
-"stylesheet-uri</code> del objeto <code>WebKitWebSetting</code> empotrado en "
-"la vista web. En una aplicación más completa, se podría querer guardar y "
-"cargar el archivo HTML. Mantener la información de estilo fuera del HTML "
-"actual significa que se puede cambiar el estilo completo de la aplicación "
-"sin tener que cambiar los archivos del usuario. Normalmente se instala un "
-"archivo junto con la aplicación, pero simplemente para mantener todo en un "
-"archivo en esta demostración, se usará un truco llamado URI de datos. En "
-"primer lugar, se define el CSS como una cadena estática cerca del principio "
-"del archivo."
-
-#. (itstool) path: section/code
-#: C/message-board.c.page:308
-#, no-wrap
-msgid ""
-"\n"
-"static const guchar CSS[] =\n"
-"\"body { margin: 0; padding: 0; }\\n\"\n"
-"\"div { \"\n"
-"\" -webkit-border-radius: 2px;\"\n"
-"\" background: -webkit-gradient(linear, 0% 100%, 0% 0%,\"\n"
-"\" from(#f1f1f1), to(white));\"\n"
-"\" border: solid 1px #c6c6c6;\"\n"
-"\" -webkit-box-shadow: 0px 0px 2px #c6c6c6;\"\n"
-"\" margin: 12px; padding: 6px;\"\n"
-"\"}\";\n"
-msgstr ""
-"\n"
-"static const guchar CSS[] =\n"
-"\"body { margin: 0; padding: 0; }\\n\"\n"
-"\"div { \"\n"
-"\" -webkit-border-radius: 2px;\"\n"
-"\" background: -webkit-gradient(linear, 0% 100%, 0% 0%,\"\n"
-"\" from(#f1f1f1), to(white));\"\n"
-"\" border: solid 1px #c6c6c6;\"\n"
-"\" -webkit-box-shadow: 0px 0px 2px #c6c6c6;\"\n"
-"\" margin: 12px; padding: 6px;\"\n"
-"\"}\";\n"
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:321
-msgid ""
-"All you have in this example are <code>div</code> elements inside a "
-"<code>body</code> element. If you created more complicated HTML, you could "
-"use whatever CSS is necessary. In fact, if you're comfortable with CSS, you "
-"should trying changing this to something you like better."
-msgstr ""
-"Todo lo que tiene en este ejemplo son elementos <code>div</code> dentro de "
-"un elemento <code>body</code>. Si ha creado HTML más complejo, puede usar "
-"cualquier CSS que sea necesario. Si se siente cómodo usando CSS debería "
-"intentar cambiar esto por algo que le guste más."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:326
-msgid ""
-"To apply the CSS, you set the <code>user-stylesheet-uri</code> in the "
-"<code>create_window</code> function, anywhere after <code>view</code> has "
-"already been defined."
-msgstr ""
-"Para aplicar el CSS, configure la <code>user-stylesheet-uri</code> en la "
-"función <code>create_window</code>, en cualquier lugar después de que "
-"<code>view</code> se haya definido."
-
-#. (itstool) path: section/code
-#: C/message-board.c.page:332
-#, no-wrap
-msgid ""
-"\n"
-"tmp = g_base64_encode (CSS, strlen((gchar *) CSS));\n"
-"css = g_strconcat (\"data:text/css;charset=utf-8;base64,\",\n"
-" tmp, NULL);\n"
-"g_object_set (webkit_web_view_get_settings (WEBKIT_WEB_VIEW (view)),\n"
-" \"user-stylesheet-uri\", css, NULL);\n"
-"g_free (css);\n"
-"g_free (tmp);\n"
-msgstr ""
-"\n"
-"tmp = g_base64_encode (CSS, strlen((gchar *) CSS));\n"
-"css = g_strconcat (\"data:text/css;charset=utf-8;base64,\",\n"
-" tmp, NULL);\n"
-"g_object_set (webkit_web_view_get_settings (WEBKIT_WEB_VIEW (view)),\n"
-" \"user-stylesheet-uri\", css, NULL);\n"
-"g_free (css);\n"
-"g_free (tmp);\n"
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:342
-msgid ""
-"Also, make sure to add variable declarations for <code>tmp</code> and "
-"<code>css</code> to the top of <code>create_window</code>."
-msgstr ""
-"Asegúrese de añadir declaraciones de variables para <code>tmp</code> y "
-"<code>css</code> a la parte superior de <code>create_window</code>."
-
-#. (itstool) path: section/code
-#: C/message-board.c.page:345
-#, no-wrap
-msgid ""
-"\n"
-"gchar *tmp, *css;\n"
-msgstr ""
-"\n"
-"gchar *tmp, *css;\n"
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:349
-msgid ""
-"A data URI starts with <sys>data:</sys> and some information about the "
-"content type and how the data is encoded. The actual data follows after a "
-"comma, in this case encoded in Base64. Unlike other URI schemes like "
-"<sys>http:</sys>, <sys>ftp:</sys>, and <sys>file:</sys>, the <sys>data:</"
-"sys> URI scheme doesn't specify where to find a file to load. Rather, it "
-"gives the entire contents of the file."
-msgstr ""
-"Un URI de datos empieza por <sys>data:</sys> y cierta información sobre el "
-"tipo de contenido y cómo se codifican los datos. Los datos reales siguen "
-"después de una coma, en este caso, codificados en Base64. A diferencia de "
-"otros esquemas de URI como <sys>http:</sys>, <sys>ftp:</sys>, y <sys>file:</"
-"sys>, the <sys>data:</sys>, el esquema del URI no especifica dónde encontrar "
-"un archivo que cargar. En vez de eso, ofrece el contenido completo del "
-"archivo."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:356
-msgid ""
-"The code above first encodes your CSS definitions in Base64, then combines "
-"that with a fixed string to create a data URI. The <code>g_strconcat</code> "
-"function can take any number of string arguments and concatenate them all "
-"together, so you have to pass <code>NULL</code> as the final argument so it "
-"knows when to stop. And don't forget to free those temporary strings after "
-"you set the stylesheet property."
-msgstr ""
-"El código anterior primero codifica las definiciones CSS en Base64, y luego "
-"las combina con una cadena fija para crear una URI de datos. La función "
-"<code>g_strconcat</code> puede tomar cualquier número de argumentos de "
-"cadena y concatenarlos todos juntos, por lo que tiene que pasar <code>NULL</"
-"code> como argumento final para que sepa dónde parar. No olvide liberar esas "
-"cadenas temporales después de establecer la propiedad de la hoja de estilos."
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:363
-msgid ""
-"Build and run the program again. It should now work exactly the same as at "
-"the end of the last section, except the messages will be nicely styled with "
-"a border and a subtle background gradient."
-msgstr ""
-"Construya y ejecute el programa de nuevo. Debería funcionar exactamente "
-"igual que al final de la última sección, excepto que los mensajes tendrán "
-"estilos con un borde y un degradado de fondo sutil."
-
-#. (itstool) path: section/title
-#: C/message-board.c.page:369
-msgid "Learn more"
-msgstr "Aprender más"
-
-#. (itstool) path: section/p
-#: C/message-board.c.page:371
-msgid ""
-"This tutorial showed you how to create a basic application using GTK+ and "
-"WebKit, including showing a document and manipulating its contents. To "
-"create a real application, you probably want to do a little bit more. Try "
-"adding features on your own. Here are a few ideas:"
-msgstr ""
-"Este tutorial le ha mostrado cómo crear una aplicación sencilla usando GTK+ "
-"y WebKit, incluyendo cómo mostrar un documento y manipular su contenido. "
-"Para crear una aplicación real, probablemente quiera hacer algo más. Pruebe "
-"a añadir características usted mismo. Aquí hay algunas ideas:"
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:377
-msgid ""
-"If you're comfortable with CSS, try changing the style of the message "
-"display. CSS is easy to get started with, but increasingly more powerful. "
-"There is a wealth of CSS tutorials on the Internet, and just about "
-"everything you can do on the web, you can do in this application."
-msgstr ""
-"Si se siente cómo usando CSS, pruebe a cambiar el estilo de la visualización "
-"del mensaje. Es fácil iniciarse en CSS, pero cada vez es más potente. Hay "
-"una gran cantidad de tutoriales de CSS en Internet, y casi todo lo que se "
-"puede hacer en una página web, se puede hacer en esta aplicación."
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:383
-msgid ""
-"Right now, you lose all your messages whenever you close the message board. "
-"Try saving the HTML contents after each post, and loading the saved file (if "
-"it exists) on startup."
-msgstr ""
-"Ahora mismo, todos los mensajes se pierden al cerras el cuadro de mensajes. "
-"Pruebe a guardar el contenido HTML después de cada envío, y a cargar el "
-"archivo guardado (si existe) al inicio."
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:391
-msgid ""
-"If you keep your messages around for a long time, you'll start wondering "
-"when you posted them. Add a timestamp to each message when it's posted. "
-"You'll probably want to create some additional child <code>div</code> "
-"elements with different classes that you can style in the CSS."
-msgstr ""
-"Si guarda sus mensajes durante mucho tiempo, empezará a preguntarse dónde "
-"los escribió. Añada una marca de tiempo a cada mensaje cuando se envía. "
-"Probablemente quiera crear algún elemento <code>div</code> hijo adicional "
-"con diferentes clases que puede modelar en el CSS."
-
-#. (itstool) path: item/p
-#: C/message-board.c.page:398
-msgid ""
-"This program keeps messages around forever. Think about ways you could allow "
-"the user to delete messages. Perhaps you want messages to disappear "
-"automatically after they're too old, or after there are a certain number of "
-"messages before them. Or you could add a link in each message to delete it. "
-"You could even override the context menu when you right-click on a message. "
-"These features involve exploring WebKit's DOM API more."
-msgstr ""
-"Este programa guarda los mensajes para siempre. Piense alguna manera para "
-"que el usuario pueda eliminar mensajes. Tal vez quiera que los mensajes "
-"desaparezca automáticamente cuando son muy antiguos o después de que haya "
-"cierto número de mensajes por delante. O podría añadir un enlace en cada "
-"mensaje para eliminarlo. También puede omitir el menú contextual cuando "
-"pulsa con el botón derecho sobe un mensaje. Esta características implican "
-"explorar más la API del DOM de WebKit."
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/messagedialog.c.page:24 C/messagedialog.js.page:25
-#: C/messagedialog.py.page:23 C/messagedialog.vala.page:22
-msgctxt "_"
-msgid ""
-"external ref='media/messagedialog.png' md5='1956288274018e2386d9cba96a2101de'"
-msgstr ""
-"external ref='media/messagedialog.png' md5='1956288274018e2386d9cba96a2101de'"
-
-#. (itstool) path: info/title
-#: C/messagedialog.c.page:8
-msgctxt "text"
-msgid "MessageDialog (C)"
-msgstr "MessageDialog (C)"
-
-#. (itstool) path: info/desc
-#: C/messagedialog.c.page:19 C/messagedialog.py.page:19
-#: C/messagedialog.vala.page:18
-msgid "A message window"
-msgstr "Una ventana de mensaje"
-
-#. (itstool) path: page/title
-#: C/messagedialog.c.page:22 C/messagedialog.js.page:24
-#: C/messagedialog.py.page:22 C/messagedialog.vala.page:21
-msgid "MessageDialog"
-msgstr "MessageDialog"
-
-#. (itstool) path: page/p
-#: C/messagedialog.c.page:25 C/messagedialog.vala.page:23
-msgid "A modal message dialog which can cause the world to explode."
-msgstr "Un diálogo de mensaje modas que puede hacer que el mundo explote."
-
-#. (itstool) path: note/p
-#: C/messagedialog.c.page:26
-msgid ""
-"To test out the application once it has started running, you can click on "
-"the \"Message Dialog\" tab that appears in the top menubar of the screen."
-msgstr ""
-"Para probar la aplicación una vez que la ha ejecutado, puede pulsar la "
-"pestaña «Message Dialog», en la barra de menú superior de la pantalla."
-
-#. (itstool) path: page/code
-#: C/messagedialog.c.page:30
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function in which reacts to the \"response\" signal from the user in\n"
-" * the message dialog window.\n"
-" * This function is used to interact with the user in the terminal.\n"
-" */\n"
-"static void\n"
-"on_response (GtkDialog *dialog,\n"
-" gint response_id,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* If the button clicked gives response OK (response_id being -5) */\n"
-" if (response_id == GTK_RESPONSE_OK) \n"
-" g_print (\"*boom*\\n\");\n"
-"\n"
-" /* If the button clicked gives response CANCEL (response_id being -6) */\n"
-" else if (response_id == GTK_RESPONSE_CANCEL)\n"
-" g_print (\"good choice\\n\");\n"
-"\n"
-" /* If the message dialog is destroyed (for example by pressing escape) */\n"
-" else if (response_id == GTK_RESPONSE_DELETE_EVENT)\n"
-" g_print (\"dialog closed or cancelled\\n\");\n"
-"\n"
-" /* Destroy the dialog after one of the above actions have taken place */\n"
-" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
-"\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the response signal \"activate\" related to the SimpleAction\n"
-" * message_action.\n"
-" * This function is used to cause the message dialog window to popup.\n"
-" */\n"
-"static void\n"
-"message_cb (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* the parent variable in this case represents the window */\n"
-" GtkWidget *message_dialog;\n"
-" GtkWindow *parent = user_data;\n"
-" \n"
-" /* Create a new message dialog, and set the parameters as follows:\n"
-" * Dialog Flags - make the constructed dialog modal \n"
-" * (modal windows prevent interaction with other windows in the application)\n"
-" * Message Type - nonfatal warning message\n"
-" * Buttons Type - use the ok and cancel buttons\n"
-" * message_format - text that you want the user to see in the window \n"
-" */\n"
-" message_dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL, \n"
-" GTK_MESSAGE_WARNING, \n"
-" GTK_BUTTONS_OK_CANCEL, \n"
-" \"This action will cause the universe to stop existing.\");\n"
-"\n"
-" gtk_widget_show_all (message_dialog);\n"
-"\n"
-" g_signal_connect (GTK_DIALOG (message_dialog), \"response\", \n"
-" G_CALLBACK (on_response), NULL);\n"
-"\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *label;\n"
-"\n"
-" GSimpleAction *message_action;\n"
-"\n"
-" /* Create a window with a title and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"GMenu Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n"
-"\n"
-" /* Create a label and add it to the window */\n"
-" label = gtk_label_new (\"This application goes boom!\");\n"
-" gtk_container_add (GTK_CONTAINER (window), label);\n"
-"\n"
-" /* Create a new simple action, giving it a NULL parameter type. It will \n"
-" * always be NULL for actions invoked from a menu. (e.g clicking on an \"ok\" \n"
-" * or \"cancel\" button)\n"
-" */\n"
-" message_action = g_simple_action_new (\"message\", NULL); \n"
-"\n"
-" /* Connect the \"activate\" signal to the appropriate callback function */\n"
-" g_signal_connect (message_action, \"activate\", G_CALLBACK (message_cb), \n"
-" GTK_WINDOW (window));\n"
-"\n"
-" /* Adds the message_action to the overall action map. An Action map is an \n"
-" * interface that contains a number of named GAction instances \n"
-" * (such as message_action) \n"
-" */\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (message_action));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the response signal \"activate\" from the \"quit\" action \n"
-" * in the function directly below.\n"
-" */ \n"
-"static void\n"
-"quit_cb (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GApplication *application = user_data;\n"
-"\n"
-" g_application_quit (application);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the menu we are creating in this sample */\n"
-"static void\n"
-"startup (GApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GMenu *menu;\n"
-" GSimpleAction *quit_action;\n"
-"\n"
-" /* Initialize the GMenu, and add a menu item with label \"Message\" and action \n"
-" * \"win.message\". Also add another menu item with label \"Quit\" and action \n"
-" * \"app.quit\" \n"
-" */\n"
-" menu = g_menu_new ();\n"
-" g_menu_append (menu, \"Message\", \"win.message\");\n"
-" g_menu_append (menu, \"Quit\", \"app.quit\");\n"
-"\n"
-" /* Create a new simple action for the application. (In this case it is the \n"
-" * \"quit\" action.\n"
-" */\n"
-" quit_action = g_simple_action_new (\"quit\", NULL);\n"
-"\n"
-" /* Ensure that the menu we have just created is set for the overall application */\n"
-" gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (menu));\n"
-"\n"
-" g_signal_connect (quit_action, \n"
-" \"activate\", \n"
-" G_CALLBACK (quit_cb), \n"
-" app);\n"
-"\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
-"\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the application */\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function in which reacts to the \"response\" signal from the user in\n"
-" * the message dialog window.\n"
-" * This function is used to interact with the user in the terminal.\n"
-" */\n"
-"static void\n"
-"on_response (GtkDialog *dialog,\n"
-" gint response_id,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* If the button clicked gives response OK (response_id being -5) */\n"
-" if (response_id == GTK_RESPONSE_OK) \n"
-" g_print (\"*boom*\\n\");\n"
-"\n"
-" /* If the button clicked gives response CANCEL (response_id being -6) */\n"
-" else if (response_id == GTK_RESPONSE_CANCEL)\n"
-" g_print (\"good choice\\n\");\n"
-"\n"
-" /* If the message dialog is destroyed (for example by pressing escape) */\n"
-" else if (response_id == GTK_RESPONSE_DELETE_EVENT)\n"
-" g_print (\"dialog closed or cancelled\\n\");\n"
-"\n"
-" /* Destroy the dialog after one of the above actions have taken place */\n"
-" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
-"\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the response signal \"activate\" related to the SimpleAction\n"
-" * message_action.\n"
-" * This function is used to cause the message dialog window to popup.\n"
-" */\n"
-"static void\n"
-"message_cb (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* the parent variable in this case represents the window */\n"
-" GtkWidget *message_dialog;\n"
-" GtkWindow *parent = user_data;\n"
-" \n"
-" /* Create a new message dialog, and set the parameters as follows:\n"
-" * Dialog Flags - make the constructed dialog modal \n"
-" * (modal windows prevent interaction with other windows in the application)\n"
-" * Message Type - nonfatal warning message\n"
-" * Buttons Type - use the ok and cancel buttons\n"
-" * message_format - text that you want the user to see in the window \n"
-" */\n"
-" message_dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL, \n"
-" GTK_MESSAGE_WARNING, \n"
-" GTK_BUTTONS_OK_CANCEL, \n"
-" \"This action will cause the universe to stop existing.\");\n"
-"\n"
-" gtk_widget_show_all (message_dialog);\n"
-"\n"
-" g_signal_connect (GTK_DIALOG (message_dialog), \"response\", \n"
-" G_CALLBACK (on_response), NULL);\n"
-"\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *label;\n"
-"\n"
-" GSimpleAction *message_action;\n"
-"\n"
-" /* Create a window with a title and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"GMenu Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n"
-"\n"
-" /* Create a label and add it to the window */\n"
-" label = gtk_label_new (\"This application goes boom!\");\n"
-" gtk_container_add (GTK_CONTAINER (window), label);\n"
-"\n"
-" /* Create a new simple action, giving it a NULL parameter type. It will \n"
-" * always be NULL for actions invoked from a menu. (e.g clicking on an \"ok\" \n"
-" * or \"cancel\" button)\n"
-" */\n"
-" message_action = g_simple_action_new (\"message\", NULL); \n"
-"\n"
-" /* Connect the \"activate\" signal to the appropriate callback function */\n"
-" g_signal_connect (message_action, \"activate\", G_CALLBACK (message_cb), \n"
-" GTK_WINDOW (window));\n"
-"\n"
-" /* Adds the message_action to the overall action map. An Action map is an \n"
-" * interface that contains a number of named GAction instances \n"
-" * (such as message_action) \n"
-" */\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (message_action));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the response signal \"activate\" from the \"quit\" action \n"
-" * in the function directly below.\n"
-" */ \n"
-"static void\n"
-"quit_cb (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GApplication *application = user_data;\n"
-"\n"
-" g_application_quit (application);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the menu we are creating in this sample */\n"
-"static void\n"
-"startup (GApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GMenu *menu;\n"
-" GSimpleAction *quit_action;\n"
-"\n"
-" /* Initialize the GMenu, and add a menu item with label \"Message\" and action \n"
-" * \"win.message\". Also add another menu item with label \"Quit\" and action \n"
-" * \"app.quit\" \n"
-" */\n"
-" menu = g_menu_new ();\n"
-" g_menu_append (menu, \"Message\", \"win.message\");\n"
-" g_menu_append (menu, \"Quit\", \"app.quit\");\n"
-"\n"
-" /* Create a new simple action for the application. (In this case it is the \n"
-" * \"quit\" action.\n"
-" */\n"
-" quit_action = g_simple_action_new (\"quit\", NULL);\n"
-"\n"
-" /* Ensure that the menu we have just created is set for the overall application */\n"
-" gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (menu));\n"
-"\n"
-" g_signal_connect (quit_action, \n"
-" \"activate\", \n"
-" G_CALLBACK (quit_cb), \n"
-" app);\n"
-"\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
-"\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the application */\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/messagedialog.c.page:37
-msgid ""
-"<link href=\"http://developer.gnome.org/gio/stable/GApplication.html"
-"\">GApplication</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gio/stable/GApplication.html"
-"\">GApplication</link>"
-
-#. (itstool) path: item/p
-#: C/messagedialog.c.page:39
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkMessageDialog.html"
-"\">GtkMessageDialog</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkMessageDialog.html"
-"\">GtkMessageDialog</link>"
-
-#. (itstool) path: item/p
-#: C/messagedialog.c.page:40
-msgid ""
-"<link href=\"http://developer.gnome.org/gio/stable/GSimpleAction.html#g-"
-"simple-action-new\">GSimpleAction</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gio/stable/GSimpleAction.html#g-"
-"simple-action-new\">GSimpleAction</link>"
-
-#. (itstool) path: info/title
-#: C/messagedialog.js.page:8
-msgctxt "text"
-msgid "MessageDialog (JavaScript)"
-msgstr "MessageDialog (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/messagedialog.js.page:21
-msgid "A popup message attached to a window"
-msgstr "Una mensaje emergente acoplado a una ventana"
-
-#. (itstool) path: page/p
-#: C/messagedialog.js.page:26
-msgid ""
-"A MessageDialog is a modal message dialog, which means a popup that you have "
-"to respond to before you get back to what you were doing in the window that "
-"it's attached to. This one can cause the world to explode (or at least it "
-"says that it can). To make the popup appear when you run this sample, click "
-"on \"Message\" inside of its application menu -- that's the menu that "
-"appears when you click on an application's name in the upper-left screen "
-"corner, next to Activities."
-msgstr ""
-"Un «MessageDialog» es un diálogo de mensaje modal, es decir un diálogo "
-"emergente al que tiene que responder antes de volver a lo que estaba "
-"haciendo en la ventana a la que está vinculado. Este puede hacer que el "
-"mundo explote (o al menos eso dice). Para hacer que el diálogo aparezca "
-"cuando ejecute este ejemplo, pulse «Message» dentro de su menú de aplicación "
-"(el que aparece cuando pulsa en el nombre de la aplicación en la esquina "
-"superior izquierda, junto a «Actividades»)."
-
-#. (itstool) path: note/p
-#: C/messagedialog.js.page:27
-msgid ""
-"The difference between a MessageDialog and a <link xref=\"dialog.js"
-"\">Dialog</link> is that a Dialog can contain whatever widgets and content "
-"you want to put in it, whereas a MessageDialog is just a convenient way to "
-"make popups appear with a basic message and buttons."
-msgstr ""
-"La diferencia entre un «MessageDialog» y un <link xref=\"dialog.js\">Dialog</"
-"link> es que un «Dialog» puede contener cualquier widget y tener el contenido "
-"que quiera, mientras que un «MessageDialog» es sólo una manera cómoda de "
-"hacer que aparezca un diálogo emergente con un mensaje básico y botones."
-
-#. (itstool) path: section/code
-#: C/messagedialog.js.page:44
-#, no-wrap
-msgid ""
-"\n"
-"const MessageDialogExample = new Lang.Class ({\n"
-" Name: 'MessageDialog Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jsmessagedialog',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal initializes menus and builds the UI\n"
-" _onStartup: function () {\n"
-" this._initMenus();\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-"const MessageDialogExample = new Lang.Class ({\n"
-" Name: 'MessageDialog Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jsmessagedialog',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal initializes menus and builds the UI\n"
-" _onStartup: function () {\n"
-" this._initMenus();\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: note/p
-#: C/messagedialog.js.page:71 C/switch.js.page:76
-msgid ""
-"Before we call _buildUI to create the window and the widgets inside it, we "
-"need to call _initMenus, which tells GNOME to create the menu. We can put "
-"the actual code for _initMenus after the code for _buildUI, since it doesn't "
-"matter what order we put them in so long as _initMenus is called first in "
-"_onStartup."
-msgstr ""
-"Antes de llamar a «_buildUI» para crear la ventana y sus widgets, es "
-"necesario llamar a «_initMenus», que le dice a GNOME que cree el menú. Se "
-"puede poner el código de «_initMenus» después del código de «_buildUI», dado "
-"que no importa en qué orden se esté mientras que «_initMenus» se llame "
-"primero en «_onStartup»."
-
-#. (itstool) path: section/code
-#: C/messagedialog.js.page:72
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Gtk.MessageDialog Example\",\n"
-" default_height: 200,\n"
-" default_width: 400 });\n"
-msgstr ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Gtk.MessageDialog Example\",\n"
-" default_height: 200,\n"
-" default_width: 400 });\n"
-
-#. (itstool) path: section/code
-#: C/messagedialog.js.page:86
-#, no-wrap
-msgid ""
-"\n"
-" // Create a silly warning message and add it to the window\n"
-" this.warningLabel = new Gtk.Label ({\n"
-" label: \"This application goes boom! (Not really.)\"});\n"
-" this._window.add (this.warningLabel);\n"
-msgstr ""
-"\n"
-" // Create a silly warning message and add it to the window\n"
-" this.warningLabel = new Gtk.Label ({\n"
-" label: \"This application goes boom! (Not really.)\"});\n"
-" this._window.add (this.warningLabel);\n"
-
-#. (itstool) path: section/p
-#: C/messagedialog.js.page:92
-msgid ""
-"For this example, all that we have in the window the popup comes out of is a "
-"silly warning <link xref=\"label.js\">Label</link>."
-msgstr ""
-"Para este ejemplo, todo lo que hay en la ventana de la que viene el diálogo "
-"emergente es una <link xref=\"label.js\">Label</link> de advertencia tonta."
-
-#. (itstool) path: section/title
-#: C/messagedialog.js.page:96
-msgid "Creating the application's menu"
-msgstr "Crear el menú de la aplicación"
-
-#. (itstool) path: section/code
-#: C/messagedialog.js.page:97
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application menu, including the button that calls the dialog\n"
-" _initMenus: function() {\n"
-" let menu = new Gio.Menu();\n"
-" menu.append(\"Message\",'app.message');\n"
-" menu.append(\"Quit\",'app.quit');\n"
-" this.application.set_app_menu(menu);\n"
-"\n"
-" // This pops up a MessageDialog when \"Message\" is clicked in the menu\n"
-" let messageAction = new Gio.SimpleAction ({ name: 'message' });\n"
-" messageAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showMessageDialog();\n"
-" }));\n"
-" this.application.add_action(messageAction);\n"
-"\n"
-" // This closes the window when \"Quit\" is clicked in the menu\n"
-" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-" },\n"
-msgstr ""
-"\n"
-" // Build the application menu, including the button that calls the dialog\n"
-" _initMenus: function() {\n"
-" let menu = new Gio.Menu();\n"
-" menu.append(\"Message\",'app.message');\n"
-" menu.append(\"Quit\",'app.quit');\n"
-" this.application.set_app_menu(menu);\n"
-"\n"
-" // This pops up a MessageDialog when \"Message\" is clicked in the menu\n"
-" let messageAction = new Gio.SimpleAction ({ name: 'message' });\n"
-" messageAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showMessageDialog();\n"
-" }));\n"
-" this.application.add_action(messageAction);\n"
-"\n"
-" // This closes the window when \"Quit\" is clicked in the menu\n"
-" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/messagedialog.js.page:122
-msgid ""
-"Here, we build the <link xref=\"gmenu.js\">GMenu</link> where we'll be "
-"putting the \"Message\" button which triggers the popup MessageDialog. The "
-"GMenu is the menu that appears when you click the application's name in the "
-"upper-left corner of the screen, next to the Activities menu. Our menu only "
-"has two options in it: Message, and Quit."
-msgstr ""
-"Aquí, se construye el <link xref=\"gmenu.js\">GMenu</link> donde se pondrá "
-"el botón «Message» que acciona el «MessageDialog» emergente. El «GMenu» es el "
-"menú que aparece cuando pulsa el nombre de la aplicación en la esquina "
-"superior izquierda de la pantalla, junto al menú «Actividades». Este menú "
-"sólo tiene dos opciones: «Message» y «Quit»."
-
-#. (itstool) path: section/title
-#: C/messagedialog.js.page:126
-msgid "Creating the MessageDialog"
-msgstr "Crear el «MessageDialog»"
-
-#. (itstool) path: section/code
-#: C/messagedialog.js.page:127
-#, no-wrap
-msgid ""
-"\n"
-" _showMessageDialog: function () {\n"
-"\n"
-" // Create a modal MessageDialog whose parent is the window\n"
-" this._messageDialog = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" buttons: Gtk.ButtonsType.OK_CANCEL,\n"
-" message_type: Gtk.MessageType.WARNING,\n"
-" text: \"This action will cause the universe to stop existing.\" });\n"
-"\n"
-" this._messageDialog.connect ('response', Lang.bind(this, this._response_cb));\n"
-" this._messageDialog.show();\n"
-" },\n"
-msgstr ""
-"\n"
-" _showMessageDialog: function () {\n"
-"\n"
-" // Create a modal MessageDialog whose parent is the window\n"
-" this._messageDialog = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" buttons: Gtk.ButtonsType.OK_CANCEL,\n"
-" message_type: Gtk.MessageType.WARNING,\n"
-" text: \"This action will cause the universe to stop existing.\" });\n"
-"\n"
-" this._messageDialog.connect ('response', Lang.bind(this, this._response_cb));\n"
-" this._messageDialog.show();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/messagedialog.js.page:142
-msgid ""
-"To make our MessageDialog a popup attached to the main window, we set its "
-"modal property to true and set it to be \"transient_for\" _window. After "
-"that, we can set what kind of buttons it has and what kind of message it is "
-"(which determines what icon appears next to the message), and write out the "
-"text inside it, before connecting its \"response\" signal to the callback "
-"function which handles it."
-msgstr ""
-"Para hacer del «MessageDialog» un diálogo emergente vinculado a la ventana "
-"principal, se establece su propiedad «modal» a «true» y «transient_for» a "
-"«_window». Después, se puede configurar el tipo de botones que tiene y qué "
-"tipo de mensaje es (determinando el icono junto al mensaje), y escribir su "
-"texto, antes de conectar su señal «response» a la función de retorno de "
-"llamada que la maneja."
-
-#. (itstool) path: note/p
-#: C/messagedialog.js.page:143
-msgid "Here are some resources for making your own MessageDialogs:"
-msgstr "Aquí hay algunos recursos para hacer sus propios «MessageDialog»:"
-
-#. (itstool) path: item/p
-#: C/messagedialog.js.page:145
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkMessageDialog."
-"html#GtkButtonsType\">List of button types</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkMessageDialog."
-"html#GtkButtonsType\">Lista de tipos de botones</link>"
-
-#. (itstool) path: item/p
-#: C/messagedialog.js.page:146
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkMessageDialog."
-"html#GtkMessageType\">List of message types</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkMessageDialog."
-"html#GtkMessageType\">Lista de tipos de mensajes</link>"
-
-#. (itstool) path: section/code
-#: C/messagedialog.js.page:150
-#, no-wrap
-msgid ""
-"\n"
-" // Callback function (aka signal handler) for the response signal\n"
-" _response_cb: function (messagedialog, response_id) {\n"
-"\n"
-" // A simple switch that changes the main window's label\n"
-" switch (response_id) {\n"
-" case Gtk.ResponseType.OK:\n"
-" this.warningLabel.set_label (\"*BOOM*\\n\");\n"
-" break;\n"
-" case Gtk.ResponseType.CANCEL:\n"
-" this.warningLabel.set_label (\"Good choice!\\n\");\n"
-" break;\n"
-" case Gtk.ResponseType.DELETE_EVENT:\n"
-" this.warningLabel.set_label (\"Dialog closed or cancelled.\\n\");\n"
-" break;\n"
-" }\n"
-"\n"
-" this._messageDialog.destroy();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-msgstr ""
-"\n"
-" // Callback function (aka signal handler) for the response signal\n"
-" _response_cb: function (messagedialog, response_id) {\n"
-"\n"
-" // A simple switch that changes the main window's label\n"
-" switch (response_id) {\n"
-" case Gtk.ResponseType.OK:\n"
-" this.warningLabel.set_label (\"*BOOM*\\n\");\n"
-" break;\n"
-" case Gtk.ResponseType.CANCEL:\n"
-" this.warningLabel.set_label (\"Good choice!\\n\");\n"
-" break;\n"
-" case Gtk.ResponseType.DELETE_EVENT:\n"
-" this.warningLabel.set_label (\"Dialog closed or cancelled.\\n\");\n"
-" break;\n"
-" }\n"
-"\n"
-" this._messageDialog.destroy();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-
-#. (itstool) path: section/p
-#: C/messagedialog.js.page:173
-msgid ""
-"This function takes two parameters, the MessageDialog and its response_id, "
-"both of which are automatically supplied (you don't have to manually pass "
-"them to it for it to work). Here we use a simple switch to change the "
-"\"warning label\"'s text, depending on which option you select. The "
-"DELETE_EVENT occurs if you press Escape to cancel the MessageDialog, instead "
-"of clicking OK or Cancel. Whatever you select, the popup is destroyed "
-"afterwards."
-msgstr ""
-"Esta función toma dos parámetros, el «MessageDialog» y su «response_id», ambos "
-"proporcionados automáticamente (no tiene que pasarlos manualmente para que "
-"funcione). Aquí se usa un interruptor simple para cambiar el texto de la "
-"«etiqueta de advertencia», dependiendo de qué opción elija. «DELETE_EVENT» "
-"ocurre su presiona «Escape» para cancelar el «MessageDialog», en lugar de "
-"presionar «OK» o «Cancel». Elija lo que elija, el diálogo emergente de "
-"destruirá a continuación."
-
-#. (itstool) path: section/code
-#: C/messagedialog.js.page:175
-#, no-wrap
-msgid ""
-"\n"
-"// Run the application\n"
-"let app = new MessageDialogExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"// Run the application\n"
-"let app = new MessageDialogExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/p
-#: C/messagedialog.js.page:180
-msgid ""
-"Finally, we create a new instance of the finished MessageDialogExample "
-"class, and set the application running."
-msgstr ""
-"Finalmente, se crea una instancia nueva de la clase «MessageDialogExample» "
-"terminada, y se ejecuta la aplicación."
-
-#. (itstool) path: section/code
-#: C/messagedialog.js.page:185
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const MessageDialogExample = new Lang.Class ({\n"
-" Name: 'MessageDialog Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jsmessagedialog',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal initializes menus and builds the UI\n"
-" _onStartup: function () {\n"
-" this._initMenus();\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Gtk.MessageDialog Example\",\n"
-" default_height: 200,\n"
-" default_width: 400 });\n"
-"\n"
-" // Create a silly warning message and add it to the window\n"
-" this.warningLabel = new Gtk.Label ({\n"
-" label: \"This application goes boom! (Not really.)\"});\n"
-" this._window.add (this.warningLabel);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application menu, including the button that calls the dialog\n"
-" _initMenus: function() {\n"
-" let menu = new Gio.Menu();\n"
-" menu.append(\"Message\",'app.message');\n"
-" menu.append(\"Quit\",'app.quit');\n"
-" this.application.set_app_menu(menu);\n"
-"\n"
-" // This pops up a MessageDialog when \"Message\" is clicked in the menu\n"
-" let messageAction = new Gio.SimpleAction ({ name: 'message' });\n"
-" messageAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showMessageDialog();\n"
-" }));\n"
-" this.application.add_action(messageAction);\n"
-"\n"
-" // This closes the window when \"Quit\" is clicked in the menu\n"
-" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _showMessageDialog: function () {\n"
-"\n"
-" // Create a modal MessageDialog whose parent is the window\n"
-" this._messageDialog = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" buttons: Gtk.ButtonsType.OK_CANCEL,\n"
-" message_type: Gtk.MessageType.WARNING,\n"
-" text: \"This action will cause the universe to stop existing.\" });\n"
-"\n"
-" this._messageDialog.connect ('response', Lang.bind(this, this._response_cb));\n"
-" this._messageDialog.show();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Callback function (aka signal handler) for the response signal\n"
-" _response_cb: function (messagedialog, response_id) {\n"
-"\n"
-" // A simple switch that changes the main window's label\n"
-" switch (response_id) {\n"
-" case Gtk.ResponseType.OK:\n"
-" this.warningLabel.set_label (\"*BOOM*\\n\");\n"
-" break;\n"
-" case Gtk.ResponseType.CANCEL:\n"
-" this.warningLabel.set_label (\"Good choice!\\n\");\n"
-" break;\n"
-" case Gtk.ResponseType.DELETE_EVENT:\n"
-" this.warningLabel.set_label (\"Dialog closed or cancelled.\\n\");\n"
-" break;\n"
-" }\n"
-"\n"
-" this._messageDialog.destroy();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new MessageDialogExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const MessageDialogExample = new Lang.Class ({\n"
-" Name: 'MessageDialog Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jsmessagedialog',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal initializes menus and builds the UI\n"
-" _onStartup: function () {\n"
-" this._initMenus();\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Gtk.MessageDialog Example\",\n"
-" default_height: 200,\n"
-" default_width: 400 });\n"
-"\n"
-" // Create a silly warning message and add it to the window\n"
-" this.warningLabel = new Gtk.Label ({\n"
-" label: \"This application goes boom! (Not really.)\"});\n"
-" this._window.add (this.warningLabel);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application menu, including the button that calls the dialog\n"
-" _initMenus: function() {\n"
-" let menu = new Gio.Menu();\n"
-" menu.append(\"Message\",'app.message');\n"
-" menu.append(\"Quit\",'app.quit');\n"
-" this.application.set_app_menu(menu);\n"
-"\n"
-" // This pops up a MessageDialog when \"Message\" is clicked in the menu\n"
-" let messageAction = new Gio.SimpleAction ({ name: 'message' });\n"
-" messageAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showMessageDialog();\n"
-" }));\n"
-" this.application.add_action(messageAction);\n"
-"\n"
-" // This closes the window when \"Quit\" is clicked in the menu\n"
-" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _showMessageDialog: function () {\n"
-"\n"
-" // Create a modal MessageDialog whose parent is the window\n"
-" this._messageDialog = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" buttons: Gtk.ButtonsType.OK_CANCEL,\n"
-" message_type: Gtk.MessageType.WARNING,\n"
-" text: \"This action will cause the universe to stop existing.\" });\n"
-"\n"
-" this._messageDialog.connect ('response', Lang.bind(this, this._response_cb));\n"
-" this._messageDialog.show();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Callback function (aka signal handler) for the response signal\n"
-" _response_cb: function (messagedialog, response_id) {\n"
-"\n"
-" // A simple switch that changes the main window's label\n"
-" switch (response_id) {\n"
-" case Gtk.ResponseType.OK:\n"
-" this.warningLabel.set_label (\"*BOOM*\\n\");\n"
-" break;\n"
-" case Gtk.ResponseType.CANCEL:\n"
-" this.warningLabel.set_label (\"Good choice!\\n\");\n"
-" break;\n"
-" case Gtk.ResponseType.DELETE_EVENT:\n"
-" this.warningLabel.set_label (\"Dialog closed or cancelled.\\n\");\n"
-" break;\n"
-" }\n"
-"\n"
-" this._messageDialog.destroy();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new MessageDialogExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: info/title
-#: C/messagedialog.py.page:8
-msgctxt "text"
-msgid "MessageDialog (Python)"
-msgstr "MessageDialog (Python)"
-
-#. (itstool) path: page/p
-#: C/messagedialog.py.page:24
-msgid ""
-"A message dialog which prints messages on the terminal, depending on your "
-"choices."
-msgstr ""
-"Un diálogo de mensajes que imprime mensajes en la terminal, según su "
-"elección."
-
-#. (itstool) path: section/code
-#: C/messagedialog.py.page:31
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "from gi.repository import Gio\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " # constructor for a window (the parent window) with a label\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"GMenu Example\", application=app)\n"
-#| " self.set_default_size(400, 200)\n"
-#| " label = Gtk.Label()\n"
-#| " label.set_text(\"This application goes boom!\")\n"
-#| " self.add(label)\n"
-#| "\n"
-#| " # create the message_action (a Gio.SimpleAction) - for the window\n"
-#| " message_action = Gio.SimpleAction.new(\"message\", None)\n"
-#| " # connect the signal from the action to the function message_cb()\n"
-#| " message_action.connect(\"activate\", self.message_cb)\n"
-#| " # add the action to the application\n"
-#| " app.add_action(message_action)\n"
-#| "\n"
-#| " # callback function for the signal \"activate\" from the message_action\n"
-#| " # in the menu of the parent window\n"
-#| " def message_cb(self, action, parameter):\n"
-#| " # a Gtk.MessageDialog\n"
-#| " messagedialog = Gtk.MessageDialog(parent=self,\n"
-#| " flags=Gtk.DialogFlags.MODAL,\n"
-#| " type=Gtk.MessageType.WARNING,\n"
-#| " buttons=Gtk.ButtonsType.OK_CANCEL,\n"
-#| " message_format=\"This action will cause the universe to stop
existing.\")\n"
-#| " # connect the response (of the button clicked) to the function\n"
-#| " # dialog_response()\n"
-#| " messagedialog.connect(\"response\", self.dialog_response)\n"
-#| " # show the messagedialog\n"
-#| " messagedialog.show()\n"
-#| "\n"
-#| " def dialog_response(self, widget, response_id):\n"
-#| " # if the button clicked gives response OK (-5)\n"
-#| " if response_id == Gtk.ResponseType.OK:\n"
-#| " print \"*boom*\"\n"
-#| " # if the button clicked gives response CANCEL (-6)\n"
-#| " elif response_id == Gtk.ResponseType.CANCEL:\n"
-#| " print \"good choice\"\n"
-#| " # if the messagedialog is destroyed (by pressing ESC)\n"
-#| " elif response_id == Gtk.ResponseType.DELETE_EVENT:\n"
-#| " print \"dialog closed or cancelled\"\n"
-#| " # finally, destroy the messagedialog\n"
-#| " widget.destroy()\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def quit_cb(self, action, parameter):\n"
-#| " self.quit()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| " # create a menu (a Gio.Menu)\n"
-#| " menu = Gio.Menu()\n"
-#| " # append a menu item with label \"Message\" and action \"app.message\"\n"
-#| " menu.append(\"Message\", \"app.message\")\n"
-#| " # append a menu item with label \"Quit\" and action \"app.quit\"\n"
-#| " menu.append(\"Quit\", \"app.quit\")\n"
-#| " # set menu as the menu for the application\n"
-#| " self.set_app_menu(menu)\n"
-#| "\n"
-#| " # a new simpleaction - for the application\n"
-#| " quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-#| " quit_action.connect(\"activate\", self.quit_cb)\n"
-#| " self.add_action(quit_action)\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" # constructor for a window (the parent window) with a label\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"GMenu Example\", application=app)\n"
-" self.set_default_size(400, 200)\n"
-" label = Gtk.Label()\n"
-" label.set_text(\"This application goes boom!\")\n"
-" self.add(label)\n"
-"\n"
-" # create the message_action (a Gio.SimpleAction) - for the window\n"
-" message_action = Gio.SimpleAction.new(\"message\", None)\n"
-" # connect the signal from the action to the function message_cb()\n"
-" message_action.connect(\"activate\", self.message_cb)\n"
-" # add the action to the application\n"
-" app.add_action(message_action)\n"
-"\n"
-" # callback function for the signal \"activate\" from the message_action\n"
-" # in the menu of the parent window\n"
-" def message_cb(self, action, parameter):\n"
-" # a Gtk.MessageDialog\n"
-" messagedialog = Gtk.MessageDialog(parent=self,\n"
-" flags=Gtk.DialogFlags.MODAL,\n"
-" type=Gtk.MessageType.WARNING,\n"
-" buttons=Gtk.ButtonsType.OK_CANCEL,\n"
-" message_format=\"This action will cause the universe to stop
existing.\")\n"
-" # connect the response (of the button clicked) to the function\n"
-" # dialog_response()\n"
-" messagedialog.connect(\"response\", self.dialog_response)\n"
-" # show the messagedialog\n"
-" messagedialog.show()\n"
-"\n"
-" def dialog_response(self, widget, response_id):\n"
-" # if the button clicked gives response OK (-5)\n"
-" if response_id == Gtk.ResponseType.OK:\n"
-" print(\"*boom*\")\n"
-" # if the button clicked gives response CANCEL (-6)\n"
-" elif response_id == Gtk.ResponseType.CANCEL:\n"
-" print(\"good choice\")\n"
-" # if the messagedialog is destroyed (by pressing ESC)\n"
-" elif response_id == Gtk.ResponseType.DELETE_EVENT:\n"
-" print(\"dialog closed or cancelled\")\n"
-" # finally, destroy the messagedialog\n"
-" widget.destroy()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def quit_cb(self, action, parameter):\n"
-" self.quit()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # create a menu (a Gio.Menu)\n"
-" menu = Gio.Menu()\n"
-" # append a menu item with label \"Message\" and action \"app.message\"\n"
-" menu.append(\"Message\", \"app.message\")\n"
-" # append a menu item with label \"Quit\" and action \"app.quit\"\n"
-" menu.append(\"Quit\", \"app.quit\")\n"
-" # set menu as the menu for the application\n"
-" self.set_app_menu(menu)\n"
-"\n"
-" # a new simpleaction - for the application\n"
-" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-" quit_action.connect(\"activate\", self.quit_cb)\n"
-" self.add_action(quit_action)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" # constructor for a window (the parent window) with a label\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"GMenu Example\", application=app)\n"
-" self.set_default_size(400, 200)\n"
-" label = Gtk.Label()\n"
-" label.set_text(\"This application goes boom!\")\n"
-" self.add(label)\n"
-"\n"
-" # create the message_action (a Gio.SimpleAction) - for the window\n"
-" message_action = Gio.SimpleAction.new(\"message\", None)\n"
-" # connect the signal from the action to the function message_cb()\n"
-" message_action.connect(\"activate\", self.message_cb)\n"
-" # add the action to the application\n"
-" app.add_action(message_action)\n"
-"\n"
-" # callback function for the signal \"activate\" from the message_action\n"
-" # in the menu of the parent window\n"
-" def message_cb(self, action, parameter):\n"
-" # a Gtk.MessageDialog\n"
-" messagedialog = Gtk.MessageDialog(parent=self,\n"
-" flags=Gtk.DialogFlags.MODAL,\n"
-" type=Gtk.MessageType.WARNING,\n"
-" buttons=Gtk.ButtonsType.OK_CANCEL,\n"
-" message_format=\"This action will cause the universe to stop
existing.\")\n"
-" # connect the response (of the button clicked) to the function\n"
-" # dialog_response()\n"
-" messagedialog.connect(\"response\", self.dialog_response)\n"
-" # show the messagedialog\n"
-" messagedialog.show()\n"
-"\n"
-" def dialog_response(self, widget, response_id):\n"
-" # if the button clicked gives response OK (-5)\n"
-" if response_id == Gtk.ResponseType.OK:\n"
-" print(\"*boom*\")\n"
-" # if the button clicked gives response CANCEL (-6)\n"
-" elif response_id == Gtk.ResponseType.CANCEL:\n"
-" print(\"good choice\")\n"
-" # if the messagedialog is destroyed (by pressing ESC)\n"
-" elif response_id == Gtk.ResponseType.DELETE_EVENT:\n"
-" print(\"dialog closed or cancelled\")\n"
-" # finally, destroy the messagedialog\n"
-" widget.destroy()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def quit_cb(self, action, parameter):\n"
-" self.quit()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # create a menu (a Gio.Menu)\n"
-" menu = Gio.Menu()\n"
-" # append a menu item with label \"Message\" and action \"app.message\"\n"
-" menu.append(\"Message\", \"app.message\")\n"
-" # append a menu item with label \"Quit\" and action \"app.quit\"\n"
-" menu.append(\"Quit\", \"app.quit\")\n"
-" # set menu as the menu for the application\n"
-" self.set_app_menu(menu)\n"
-"\n"
-" # a new simpleaction - for the application\n"
-" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
-" quit_action.connect(\"activate\", self.quit_cb)\n"
-" self.add_action(quit_action)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/messagedialog.py.page:36
-msgid "Useful methods for a MessageDialog widget"
-msgstr "Métodos útiles para un widget «MessageDialog»"
-
-#. (itstool) path: section/p
-#: C/messagedialog.py.page:37
-msgid ""
-"In line 18 the signal <code>\"activate\"</code> is connected to the callback "
-"function <code>message_cb()</code> using <code><var>widget</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 18, la señal <code>«activate»</code> se conecta a la función de "
-"retorno de llamada <code>message_cb()</code> usando <code><var>widget</var>."
-"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
-"explicación más detallada."
-
-#. (itstool) path: item/p
-#: C/messagedialog.py.page:39
-msgid ""
-"In the constructor of MessageDialog we could set flags as <code>Gtk."
-"DialogFlags.DESTROY_WITH_PARENT</code> (to destroy the messagedialog window "
-"when its parent window is destroyed) or as <code>Gtk.DialogFlags.MODAL</"
-"code> (no interaction with other windows of the application)."
-msgstr ""
-"En el constructor de un «MessageDialog» se pueden configurar opciones como "
-"<code>Gtk.DialogFlags.DESTROY_WITH_PARENT</code> (para destruir la ventana "
-"de diálogo cuando se destruya su ventana madre) o <code>Gtk.DialogFlags."
-"MODAL</code> (sin interacción con otras ventanas de la aplicación)."
-
-#. (itstool) path: item/p
-#: C/messagedialog.py.page:40
-msgid ""
-"In the constructor of MessageDialog we could set type as any of <code>Gtk."
-"MessageType.INFO, Gtk.MessageType.WARNING, Gtk.MessageType.QUESTION, Gtk."
-"MessageType.ERROR, Gtk.MessageType.OTHER</code> depending on what type of "
-"message we want."
-msgstr ""
-"En el constructor del «MessageDialog» se puede elegir entre los tipos "
-"<code>Gtk.MessageType.INFO, Gtk.MessageType.WARNING, Gtk.MessageType."
-"QUESTION, Gtk.MessageType.ERROR, Gtk.MessageType.OTHER</code> dependiendo de "
-"qué tipo de mensaje quiera."
-
-#. (itstool) path: item/p
-#: C/messagedialog.py.page:41
-msgid ""
-"In the constructor of MessageDialog we could set buttons as any of <code>Gtk."
-"ButtonsType.NONE, Gtk.ButtonsType.OK, Gtk.ButtonsType.CLOSE, Gtk.ButtonsType."
-"CANCEL, Gtk.ButtonsType.YES_NO, Gtk.ButtonsType.OK_CANCEL</code>, or any "
-"button using <code>add_button()</code> as in Gtk.Dialog."
-msgstr ""
-"En el constructor del «MessageDialog» se puede elegir entre los botones "
-"<code>Gtk.ButtonsType.NONE, Gtk.ButtonsType.OK, Gtk.ButtonsType.CLOSE, Gtk."
-"ButtonsType.CANCEL, Gtk.ButtonsType.YES_NO, Gtk.ButtonsType.OK_CANCEL</"
-"code>, o cualquier botón usando <code>add_button()</code> como en un «Gtk."
-"Dialog»."
-
-#. (itstool) path: item/p
-#: C/messagedialog.py.page:42
-msgid ""
-"We could substitute the default image of the MessageDialog with another "
-"image using"
-msgstr ""
-"Se podría sustituir la imagen predeterminada del «MessageDialog» con otra "
-"usando"
-
-#. (itstool) path: item/code
-#: C/messagedialog.py.page:43
-#, no-wrap
-msgid ""
-"\n"
-"image = Gtk.Image()\n"
-"image.set_from_stock(Gtk.STOCK_CAPS_LOCK_WARNING, Gtk.IconSize.DIALOG)\n"
-"image.show()\n"
-"messagedialog.set_image(image)"
-msgstr ""
-"\n"
-"image = Gtk.Image()\n"
-"image.set_from_stock(Gtk.STOCK_CAPS_LOCK_WARNING, Gtk.IconSize.DIALOG)\n"
-"image.show()\n"
-"messagedialog.set_image(image)"
-
-#. (itstool) path: item/p
-#: C/messagedialog.py.page:48
-msgid ""
-"where <code>Gtk.STOCK_CAPS_LOCK_WARNING</code> is any image from <link href="
-"\"http://developer.gnome.org/gtk3/unstable/gtk3-Stock-Items.html\">Stock "
-"Items</link>. We could also set any image as in the Image widget, as "
-"<code>image.set_from_file(\"filename.png\")</code>."
-msgstr ""
-"donde <code>Gtk.STOCK_CAPS_LOCK_WARNING</code> es cualquier imagen de los "
-"<link href=\"http://developer.gnome.org/gtk3/unstable/gtk3-Stock-Items.html"
-"\">elementos del almacén</link>. También se podría establecer cualquier "
-"imagen como en el widget «Image», con <code>image.set_from_file(\"archivo.png"
-"\")</code>."
-
-#. (itstool) path: item/p
-#: C/messagedialog.py.page:49
-msgid ""
-"<code>format_secondary_text(\"some secondary message\")</code> sets a "
-"secondary message. The primary text becomes bold."
-msgstr ""
-"<code>format_secondary_text(\"algún mensaje secundario\")</code> establece "
-"un mensaje secundario. El texto primario aparece en negrita."
-
-#. (itstool) path: item/p
-#: C/messagedialog.py.page:59
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMessageDialog.html"
-"\">GtkMessageDialog</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMessageDialog.html"
-"\">GtkMessageDialog</link>"
-
-#. (itstool) path: item/p
-#: C/messagedialog.py.page:63
-msgid ""
-"<link href=\"http://developer.gnome.org/gio/unstable/GActionMap.html"
-"\">GActionMap</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gio/unstable/GActionMap.html"
-"\">GActionMap</link>"
-
-#. (itstool) path: info/title
-#: C/messagedialog.vala.page:8
-msgctxt "text"
-msgid "MessageDialog (Vala)"
-msgstr "MessageDialog (Vala)"
-
-#. (itstool) path: page/code
-#: C/messagedialog.vala.page:25
-#, no-wrap
-msgid ""
-"\n"
-"//A window in the application\n"
-"public class Window : Gtk.ApplicationWindow {\n"
-"\tpublic Window (Application app) {\n"
-"\t\tObject (application: app, title: \"Gtk.MessageDialog Example\");\n"
-"\n"
-"\t\tvar label = new Gtk.Label (\"This application goes boom!\");\n"
-"\t\tthis.add (label);\n"
-"\n"
-"\t\tvar message_action = new SimpleAction (\"message\", null);\n"
-"\t\tmessage_action.activate.connect (message);\n"
-"\t\tthis.add_action (message_action);\n"
-"\n"
-"\t\tthis.set_default_size (400, 200);\n"
-"\t\tthis.show_all ();\n"
-"\t}\n"
-"\n"
-"\tvoid dialog_response (Gtk.Dialog dialog, int response_id) {\n"
-"\t\tswitch (response_id) {\n"
-"\t\t\tcase Gtk.ResponseType.OK:\n"
-"\t\t\t\tprint (\"*boom*\\n\");\n"
-"\t\t\t\tbreak;\n"
-"\t\t\tcase Gtk.ResponseType.CANCEL:\n"
-"\t\t\t\tprint (\"good choice\\n\");\n"
-"\t\t\t\tbreak;\n"
-"\t\t\tcase Gtk.ResponseType.DELETE_EVENT:\n"
-"\t\t\t\tprint (\"dialog closed or cancelled\\n\");\n"
-"\t\t\t\tbreak;\n"
-"\t\t}\n"
-"\t\t\tdialog.destroy();\n"
-"\t}\n"
-"\n"
-"\tvoid message (SimpleAction simple, Variant? parameter) {\n"
-"\t\tvar messagedialog = new Gtk.MessageDialog (this,\n"
-" Gtk.DialogFlags.MODAL,\n"
-" Gtk.MessageType.WARNING,\n"
-" Gtk.ButtonsType.OK_CANCEL,\n"
-" \"This action will cause the universe to stop existing.\");\n"
-"\n"
-"\t\tmessagedialog.response.connect (dialog_response);\n"
-"\t\tmessagedialog.show ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"//This is the Application\n"
-"public class Application : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew Window (this);\n"
-"\t}\n"
-"\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\tvar menu = new Menu ();\n"
-"\t\tmenu.append (\"Message\", \"win.message\");\n"
-"\t\tmenu.append (\"Quit\", \"app.quit\");\n"
-"\t\tthis.app_menu = menu;\n"
-"\n"
-"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
-"\t\t//quit_action.activate.connect (this.quit);\n"
-"\t\tthis.add_action (quit_action);\n"
-"\t}\n"
-"\n"
-"\tpublic Application () {\n"
-"\t\tObject (application_id: \"org.example.application\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"//main function creates Application and runs it\n"
-"int main (string[] args) {\n"
-"\treturn new Application ().run (args);\n"
-"}\n"
-msgstr ""
-"\n"
-"//A window in the application\n"
-"public class Window : Gtk.ApplicationWindow {\n"
-"\tpublic Window (Application app) {\n"
-"\t\tObject (application: app, title: \"Gtk.MessageDialog Example\");\n"
-"\n"
-"\t\tvar label = new Gtk.Label (\"This application goes boom!\");\n"
-"\t\tthis.add (label);\n"
-"\n"
-"\t\tvar message_action = new SimpleAction (\"message\", null);\n"
-"\t\tmessage_action.activate.connect (message);\n"
-"\t\tthis.add_action (message_action);\n"
-"\n"
-"\t\tthis.set_default_size (400, 200);\n"
-"\t\tthis.show_all ();\n"
-"\t}\n"
-"\n"
-"\tvoid dialog_response (Gtk.Dialog dialog, int response_id) {\n"
-"\t\tswitch (response_id) {\n"
-"\t\t\tcase Gtk.ResponseType.OK:\n"
-"\t\t\t\tprint (\"*boom*\\n\");\n"
-"\t\t\t\tbreak;\n"
-"\t\t\tcase Gtk.ResponseType.CANCEL:\n"
-"\t\t\t\tprint (\"good choice\\n\");\n"
-"\t\t\t\tbreak;\n"
-"\t\t\tcase Gtk.ResponseType.DELETE_EVENT:\n"
-"\t\t\t\tprint (\"dialog closed or cancelled\\n\");\n"
-"\t\t\t\tbreak;\n"
-"\t\t}\n"
-"\t\t\tdialog.destroy();\n"
-"\t}\n"
-"\n"
-"\tvoid message (SimpleAction simple, Variant? parameter) {\n"
-"\t\tvar messagedialog = new Gtk.MessageDialog (this,\n"
-" Gtk.DialogFlags.MODAL,\n"
-" Gtk.MessageType.WARNING,\n"
-" Gtk.ButtonsType.OK_CANCEL,\n"
-" \"This action will cause the universe to stop existing.\");\n"
-"\n"
-"\t\tmessagedialog.response.connect (dialog_response);\n"
-"\t\tmessagedialog.show ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"//This is the Application\n"
-"public class Application : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew Window (this);\n"
-"\t}\n"
-"\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\tvar menu = new Menu ();\n"
-"\t\tmenu.append (\"Message\", \"win.message\");\n"
-"\t\tmenu.append (\"Quit\", \"app.quit\");\n"
-"\t\tthis.app_menu = menu;\n"
-"\n"
-"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
-"\t\t//quit_action.activate.connect (this.quit);\n"
-"\t\tthis.add_action (quit_action);\n"
-"\t}\n"
-"\n"
-"\tpublic Application () {\n"
-"\t\tObject (application_id: \"org.example.application\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"//main function creates Application and runs it\n"
-"int main (string[] args) {\n"
-"\treturn new Application ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/messagedialog.vala.page:31
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ResponseType.html\">Gtk."
-"ResponseType</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ResponseType.html\">Gtk."
-"ResponseType</link>"
-
-#. (itstool) path: item/p
-#: C/messagedialog.vala.page:32
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.MessageDialog.html\">Gtk."
-"MessageDialog</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.MessageDialog.html\">Gtk."
-"MessageDialog</link>"
-
-#. (itstool) path: item/p
-#: C/messagedialog.vala.page:33
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.DialogFlags.html\">Gtk."
-"DialogFlags</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.DialogFlags.html\">Gtk."
-"DialogFlags</link>"
-
-#. (itstool) path: item/p
-#: C/messagedialog.vala.page:34
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.MessageType.html\">Gtk."
-"MessageType</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.MessageType.html\">Gtk."
-"MessageType</link>"
-
-#. (itstool) path: item/p
-#: C/messagedialog.vala.page:35
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ButtonsType.html\">Gtk."
-"ButtonsType</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ButtonsType.html\">Gtk."
-"ButtonsType</link>"
-
-#. (itstool) path: info/title
-#: C/model-view-controller.py.page:9
-msgctxt "text"
-msgid "The Model/View/Controller design (Python)"
-msgstr "El diseño modelo/vista/controlador (Python)"
-
-#. (itstool) path: info/desc
-#. (itstool) path: page/title
-#: C/model-view-controller.py.page:14 C/model-view-controller.py.page:27
-msgid "The Model/View/Controller design"
-msgstr "El diseño modelo/vista/controlador"
-
-#. (itstool) path: section/title
-#: C/model-view-controller.py.page:32 C/properties.py.page:32
-#: C/signals-callbacks.py.page:32
-msgid "Overview"
-msgstr "Visión general"
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:34
-msgid ""
-"Both the <link xref=\"treeview_simple_liststore.py\">TreeView</link> and the "
-"<link xref=\"combobox.py\">ComboBox</link> widgets are built on the "
-"<em>Model/View/Controller</em> design. The <em>Model</em> (an implementation "
-"of <code>Gtk.TreeModel</code>, usually <code>Gtk.TreeStore</code> or "
-"<code>Gtk.ListStore</code>) stores the data; the <em>View</em> (e.g. "
-"<code>Gtk.TreeView</code>, <code>Gtk.ComboBox</code>, or <code>Gtk."
-"ComboBoxText</code>) gets change notifications and displays the content of "
-"the model. The <em>Controller</em>, finally, changes the state of the model "
-"(via some methods in the model's implementation - such as <code>append()</"
-"code> or <code>remove()</code>) and notifies the view of these changes (via "
-"signals like <code>\"changed\"</code>)."
-msgstr ""
-"Tanto los widgets <link xref=\"treeview_simple_liststore.py\">TreeView</"
-"link> como los <link xref=\"combobox.py\">ComboBox</link> se construyen "
-"sobre el diseño <em>modelo/vista/controlador</em>. El <em>modelo</em> (una "
-"implementación de <code>Gtk.TreeModel</code>, generalmente <code>Gtk."
-"TreeStore</code> o <code>Gtk.ListStore</code>) almacena los datos; la "
-"<em>vista</em> (por ejemplo, <code>Gtk.TreeView</code>, <code>Gtk.ComboBox</"
-"code>, o <code>Gtk.ComboBoxText</code>) recibe las notificaciones de cambio "
-"y muestra el contenido del modelo. El <em>controlador</em>, finalmente, "
-"cambia el estado del modelo (a través de algunos métodos en la "
-"implementación del modelo, como <code>append()</code> o <code>remove()</"
-"code>) y le notifica a la vista de estos cambios (a través de señales como "
-"<code>«changed»</code>)."
-
-#. (itstool) path: section/title
-#: C/model-view-controller.py.page:39
-msgid "The Model"
-msgstr "El modelo"
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:41
-msgid ""
-"The main difference between the two main implementations of <code>Gtk."
-"TreeModel</code> is that <code>Gtk.ListStore</code> contains simple rows of "
-"data without children, whereas <code>Gtk.TreeStore</code> also contains rows "
-"of data, but each row may have child rows (which in turn can have child "
-"rows, and so on)."
-msgstr ""
-"La principal diferencia entre las dos implementaciones primarias de "
-"<code>Gtk.TreeModel</code> es que <code>Gtk.ListStore</code> contiene filas "
-"simples de datos sin hijos, mientras que <code>Gtk.TreeStore</code> también "
-"contiene filas de datos, pero cada fila puede tener filas hijas (que a su "
-"vez pueden tener filas hijas, y así sucesivamente)."
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:43
-msgid ""
-"The data in the Model can be retrieved or modified using the tree iter and "
-"column index, or <code>Gtk.TreeIter</code>, or <code>Gtk.TreePath</code>."
-msgstr ""
-"Los datos en el modelo pueden obtenerse o modificarse usando el «iter» del "
-"árbol y el índice de columna, <code>Gtk.TreeIter</code>, o <code>Gtk."
-"TreePath</code>."
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:45
-msgid ""
-"As with Python's built-in list object you can use <code>len()</code> to get "
-"the number of rows and use slices to retrieve or set values. Otherwise, the "
-"method <code>append()</code> returns a <code>Gtk.TreeIter</code> instance, "
-"which points to the location of the newly inserted row. You can also "
-"retrieve a <code>Gtk.TreeIter</code> by calling <code>get_iter()</code>."
-msgstr ""
-"Con el objeto de lista empotrado de Python puede usar <code>len()</code> "
-"para obtener el número de filas y usar fragmentos para obtener o establecer "
-"valores. De lo contrario, el método <code>append()</code> devuelve una "
-"instancia de <code>Gtk.TreeIter</code>, que apunta al lugar de la fila "
-"insertada recientemente. También puede obtener un <code>Gtk.TreeIter</code> "
-"llamando a <code>get_iter()</code>."
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:47
-msgid ""
-"As <code>Gtk.ListStore</code> contains only one level, i.e. nodes do not "
-"have any child nodes, a path is essentially the index of the row you want to "
-"access. In the case of <code>Gtk.TreeStore</code>, a path is a list of "
-"indexes or a string. The string form is a list of numbers separated by a "
-"colon. Each number refers to the offset at that level. Thus, the path <code>"
-"\"0\"</code> refers to the root node and the path <code>\"2:4\"</code> "
-"refers to the fifth child of the third node."
-msgstr ""
-"Como <code>Gtk.ListStore</code> sólo contiene un nivel, es decir que los "
-"nodos no tienen nodos hijos, una ruta es esencialmente el índice de la fila "
-"a la que quiere acceder. En el caso de <code>Gtk.TreeStore</code>, una ruta "
-"es una lista de índices o una cadena. La forma de la cadena es una lista de "
-"números separados por «:». Cada número se refiere al desplazamiento en ese "
-"nivel. Entonces, la ruta <code>«0»</code> se refiere al nodo raíz y la ruta "
-"<code>«2:4»</code> al quinto hijo del tercer nodo."
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:49
-msgid "Useful methods for a <code>Gtk.TreeModel</code>:"
-msgstr "Métodos útiles para un <code>Gtk.TreeModel</code>:"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:51
-msgid ""
-"<code>get_iter(path)</code> returns a <code>Gtk.TreeIter</code> instance "
-"pointing to <code>path</code>. This is expected to be a colon-separated list "
-"of numbers, or a tuple. For example, the string <code>\"10:4:0\"</code> is "
-"equivalent to the tuple <code>(10, 4, 0)</code>, as both would create a path "
-"of depth 3 pointing to the 11th child of the root node, the 5th child of "
-"that 11th child, and the 1st child of that 5th child."
-msgstr ""
-"<code>get_iter(ruta)</code> devuelve una instancia de <code>Gtk.TreeIter</"
-"code> que apunta a <code>ruta</code>. Se espera que sea una lista de números "
-"separados por «:», o una tupla. Por ejemplo, la cadena <code>«10:4:0»</code> "
-"equivale a la tupla <code>(10, 4, 0)</code>, ya que las dos crearían una "
-"ruta de profundidad 3 apuntando al 11º hijo del nodo raíz, el 5º hijo de ese "
-"11º hijo, y el 1er hijo de ese 5º hijo."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:52
-msgid ""
-"<code>iter_next(treeiter)</code> returns a <code>Gtk.TreeIter</code> "
-"instance pointing the node following treeiter at the current level or "
-"<code>None</code> if there is no next iter."
-msgstr ""
-"<code>iter_next(treeiter)</code> devuelve una instancia de <code>Gtk."
-"TreeIter</code> apuntando siguiendo el «treeiter» en el nivel actual o "
-"<code>None</code> si no hay un «iter» siguiente."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:53
-msgid ""
-"<code>iter_has_child(treeiter)</code> returns <code>True</code> if "
-"<code>treeiter</code> has children, <code>False</code> otherwise."
-msgstr ""
-"<code>iter_has_child(treeiter)</code> devuelve <code>True</code> si "
-"<code>treeiter</code> tiene hijos, <code>False</code> de lo contrario."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:54
-msgid ""
-"<code>iter_children(treeiter)</code> returns a <code>Gtk.TreeIter</code> "
-"instance pointing to the first child of <code>treeiter</code> or <code>None</"
-"code> if <code>treeiter</code> has no children."
-msgstr ""
-"<code>iter_children(treeiter)</code> devuelve una instancia de <code>Gtk."
-"TreeIter</code> apuntando al primer hijo de <code>treeiter</code> o "
-"<code>None</code> si <code>treeiter</code> no tiene hijos."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:55
-msgid ""
-"<code>get_iter_first()</code> returns a <code>Gtk.TreeIter</code> instance "
-"pointing to the first iterator in the tree (the one at the path <code>\"0\"</"
-"code>) or <code>None</code> if the tree is empty."
-msgstr ""
-"<code>get_iter_first()</code> devuelve una instancia de <code>Gtk.TreeIter</"
-"code> apuntando al primer iterador en el árbol (el que está en la ruta "
-"<code>«0»</code>) o <code>None</code> si el árbol está vacío."
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:58
-msgid "Useful methods for a <code>Gtk.ListStore</code>:"
-msgstr "Métodos útiles para un <code>Gtk.ListStore</code>:"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:60
-msgid ""
-"<code>append(row)</code> appends a new row to this list store, where "
-"<code>row</code> can be a list of values for each column; <code>row</code> "
-"can also be omitted or <code>None</code>, and in that case an empty row will "
-"be appended. The method returns a <code>Gtk.TreeIter</code> pointing to the "
-"appended row."
-msgstr ""
-"<code>append(fila)</code> añade una fila nueva a este «ListStore», donde "
-"<code>fila</code> puede ser una lista de valores para cada columna; "
-"<code>row</code> también puede omitirse o ser <code>None</code>, y en ese "
-"caso se añade una fila vacía. El método devuelve un <code>Gtk.TreeIter</"
-"code> apuntando a la fila añadida."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:61 C/model-view-controller.py.page:67
-msgid ""
-"<code>remove(iter)</code> removes <code>iter</code> from the <code>Gtk."
-"ListStore</code>, and returns <code>True</code> if the iter is valid, and "
-"<code>False</code> if the iter is not. After being removed, <code>iter</"
-"code> is set to be the next valid row."
-msgstr ""
-"<code>remove(iter)</code> elimina <code>iter</code> del <code>Gtk.ListStore</"
-"code>, y devuelve <code>True</code> si el iter es válido, y <code>False</"
-"code> si no lo es. Después de eliminarse, <code>iter</code> se establece a "
-"la siguiente fila válida."
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:64
-msgid "Useful methods for a <code>Gtk.TreeStore</code>:"
-msgstr "Métodos útiles para un <code>Gtk.TreeStore</code>:"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:66
-msgid ""
-"<code>append(parent, row)</code> appends a new row to this tree store; "
-"<code>parent</code> must be a valid Gtk.TreeIter. If parent is not "
-"<code>None</code>, then it will append the new row after the last child of "
-"parent, otherwise it will append a row to the top level; <code>row</code> "
-"can be a list of values for each column, or it can be omitted or <code>None</"
-"code>; in this latter case an empty row will be appended. The method returns "
-"a <code>Gtk.TreeIter</code> pointing to the appended row."
-msgstr ""
-"<code>append(padre, fila)</code> añade una fila nueva a este «TreeStore»; "
-"<code>padre</code> debe ser un «Gtk.TreeIter» válido. Si «padre» no es "
-"<code>None</code>, entonces añadirá la fila nueva después del último hijo de "
-"«padre», de lo contrario añadirá una fila al nivel superior; <code>fila</"
-"code> puede ser una lista de valores para cada columna; o puede omitirse o "
-"ser <code>None</code>; en este último caso se añadirá una fila vacía. El "
-"método devuelve un <code>Gtk.TreeIter</code> apuntando a la fila añadida."
-
-#. (itstool) path: section/title
-#: C/model-view-controller.py.page:73
-msgid "The View: the TreeView case"
-msgstr "La vista: el caso de «TreeView»"
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:75
-msgid ""
-"A Treeview shows the structure of children and parent items as a tree. See "
-"for instance <link xref=\"treeview_treestore.py\">this example</link>."
-msgstr ""
-"Una vista de árbol muestra la estructura de elementos padres e hijos como un "
-"árbol. Consulte <link xref=\"treeview_treestore.py\">este ejemplo</link>."
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:77
-msgid ""
-"The <code>Gtk.TreeViewColumn</code> is used to organize the vertical columns."
-msgstr ""
-"La <code>Gtk.TreeViewColumn</code> se usa para organizar las columnas "
-"verticales."
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:79
-msgid "Useful methods for a <code>Gtk.TreeView</code>:"
-msgstr "Métodos útiles para un <code>Gtk.TreeView</code>:"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:81
-msgid ""
-"<code>set_model(model)</code> sets the model for this tree view. If this "
-"tree view already has a model set, it will remove it before setting the new "
-"model. If model is <code>None</code>, then it will unset the old model."
-msgstr ""
-"<code>set_model(modelo)</code> establece el modelo para esta vista de árbol. "
-"Si ya tiene un modelo, lo eliminará antes de establecer el nuevo. Si el "
-"modelo es <code>None</code>, entonces quitará el modelo viejo. "
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:82
-msgid ""
-"<code>get_model()</code> returns the model this tree view is based on, "
-"<code>None</code> if the model is unset."
-msgstr ""
-"<code>get_model()</code> devuelve el modelo en el que está basada esta vista "
-"de árbol, <code>None</code> si no tiene modelo."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:83
-msgid ""
-"<code>append_column(column)</code> appends <code>column</code> to the list "
-"of columns."
-msgstr ""
-"<code>append_column(columna)</code> añade la <code>columna</code> a la lista "
-"de columnas."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:84
-msgid ""
-"<code>get_selection()</code> gets the <code>Gtk.TreeSelection</code> "
-"associated with this tree view."
-msgstr ""
-"<code>get_selection()</code> obtiene la <code>Gtk.TreeSelection</code> "
-"asociada a esta vista de árbol."
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:87
-msgid "Useful methods for a <code>Gtk.TreeViewColumn</code>:"
-msgstr "Métodos útiles para un <code>Gtk.TreeViewColumn</code>:"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:89
-msgid ""
-"<code>add_attribute(renderer, attribute, value)</code> adds an attribute "
-"mapping to this column. <code>attribute</code> is the parameter on "
-"<code>renderer</code> to be set from the <code>value</code>"
-msgstr ""
-"<code>add_attribute(renderizador, atributo, valor)</code> añade un mapeo de "
-"atributo a esta columna. <code>atributo</code> es el parámetro en "
-"<code>renderizador</code> al que se le asigna el <code>valor</code>."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:90
-msgid ""
-"<code>pack_start(renderer, expand)</code> packs <code>renderer</code> into "
-"the beginning of this column. If <code>expand</code> is <code>False</code>, "
-"then <code>renderer</code> is allocated no more space than it needs. Any "
-"unused space is divided evenly between cells for which expand is <code>True</"
-"code>."
-msgstr ""
-"<code>pack_start(renderizador, expandir)</code> empaqueta el "
-"<code>renderizador</code> en el principio de esta columna. Si "
-"<code>expandir</code> es <code>False</code>, entonces no se le asigna a "
-"<code>renderizador</code> más espacio del que necesita. Cualquier espacio "
-"sin utilizar se divide equitativamente entre las celdas en las que «expandir» "
-"es <code>True</code>."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:91
-msgid ""
-"<code>pack_end(renderer, expand)</code> adds <code>renderer</code> to end of "
-"this column. If <code>expand</code> is <code>False</code>, then "
-"<code>renderer</code> is allocated no more space than it needs. Any unused "
-"space is divided evenly between cells for which <code>expand</code> is "
-"<code>True</code>."
-msgstr ""
-"<code>pack_end(renderizador, expandir)</code> añade el <code>renderizador</"
-"code> al final de esta columna. Si <code>expandir</code> es <code>False</"
-"code>, entonces no se le asigna a <code>renderizador</code> más espacio del "
-"que necesita. Cualquier espacio sin utilizar se divide equitativamente entre "
-"celdas en las que <code>expandir</code> es <code>True</code>."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:92
-msgid ""
-"<code>set_sort_column_id(sort_column_id)</code> sets the column of the model "
-"by which this column (of the view) should be sorted. This also makes the "
-"column header clickable."
-msgstr ""
-"<code>set_sort_column_id(id_columna_ordenada)</code> establece la columna "
-"del modelo por la que debe ordenarse la vista. Esto también hace que se "
-"pueda pulsar la cabecera de la columna."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:93
-msgid ""
-"<code>set_sort_indicator(setting)</code> sets whether a little arrow is "
-"displayed in the column header; <code>setting</code> can either be "
-"<code>True</code> (indicator is shown) or <code>False</code>."
-msgstr ""
-"<code>set_sort_indicator(opción)</code> establece si se muestra una pequeña "
-"flecha en la cabecera de la columna; <code>opción</code> puede ser "
-"<code>True</code> (se muestra el indicador) o <code>False</code>."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:94
-msgid ""
-"<code>set_sort_order(order)</code> changes the order by which the column is "
-"sorted; <code>order</code> can either be <code>Gtk.SortType.ASCENDING</code> "
-"or <code>Gtk.SortType.DESCENDING</code>."
-msgstr ""
-"<code>set_sort_order(orden)</code> cambia el orden por el que se ordena la "
-"columna; <code>orden</code> puede ser <code>Gtk.SortType.ASCENDING</code> o "
-"<code>Gtk.SortType.DESCENDING</code>."
-
-#. (itstool) path: section/title
-#: C/model-view-controller.py.page:100
-msgid "The View: the ComboBox case"
-msgstr "La vista: el caso de la «ComboBox»"
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:102
-msgid ""
-"A <code>Gtk.ComboBox</code> allows for the selection of an item from a "
-"dropdown menu, see for instance <link xref=\"combobox.py\">this example</"
-"link>. For a list of textual choices, one can also use the simpler <code>Gtk."
-"ComboBoxText</code>. Both <code>Gtk.ComboBox</code> and <code>Gtk."
-"ComboBoxText</code> can contain an entry."
-msgstr ""
-"Una <code>Gtk.ComboBox</code> permite la selección de un elemento desde un "
-"menú desplegable, consulte <link xref=\"combobox.py\">este ejemplo</link>. "
-"Para una lista de opciones textuales, también se puede usar <code>Gtk."
-"ComboBoxText</code>, que es más simple. Tanto <code>Gtk.ComboBox</code> como "
-"<code>Gtk.ComboBoxText</code> pueden contener una entrada."
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:104
-msgid "Useful methods for a <code>Gtk.ComboBox</code>:"
-msgstr "Métodos útiles para un <code>Gtk.ComboBox</code>:"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:106
-msgid ""
-"The static method <code>new_with_entry()</code> creates a new empty "
-"<code>Gtk.ComboBox</code> with an entry; the static method "
-"<code>new_with_model(model)</code> creates a new one with the model "
-"initialized to <code>model</code>; and the static method "
-"<code>new_with_model_and_entry(model)</code> is a combination of the two."
-msgstr ""
-"El método estático <code>new_with_entry()</code> crea una <code>Gtk."
-"ComboBox</code> nueva vacía con una entrada; el método estático "
-"<code>new_with_model(modelo)</code> crea una con el modelo inicializado a "
-"<code>modelo</code> nueva; y el método estático "
-"<code>new_with_model_and_entry(modelo)</code> es una combinación de los dos."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:107
-msgid ""
-"<code>get_active_iter()</code> returns a <code>Gtk.TreeIter</code> pointing "
-"to the current active item. If no active item exists, <code>None</code> is "
-"returned."
-msgstr ""
-"<code>get_active_iter()</code> devuelve un <code>Gtk.TreeIter</code> que "
-"apunta al elemento activo actual. Si no existe, devuelve <code>None</code>."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:108
-msgid ""
-"<code>set_model(model)</code> sets the model used by this combo box to be "
-"<code>model</code>, and it will unset a previously set model (if there is "
-"any). If <code>model</code> is <code>None</code>, then it will unset the "
-"model. Note that this function does not clear the cell renderers."
-msgstr ""
-"<code>set_model(modelo)</code> establece el modelo que esta caja combinada "
-"usa a <code>modelo</code>, y quita un modelo anterior (si existiera). Si "
-"<code>modelo</code> es <code>None</code>, entonces lo quitará. Tenga en "
-"cuenta que esta función no limpia los renderizadores de celda."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:109
-msgid ""
-"<code>set_entry_text_column(text_column)</code> sets the model column which "
-"this combo box should use to get strings from to be <code>text_column</"
-"code>. The column <code>text_column</code> in the model of this combo box "
-"must be of type <code>str</code> (this is only relevant if this combo box "
-"has been created with the “has-entry” property set to True)."
-msgstr ""
-"<code>set_entry_text_column(columna_texto)</code> establece la columna del "
-"modelo de la que esta caja combinada obtendrá las cadenas a "
-"<code>columna_texto</code>. La columna <code>columna_texto</code> en el "
-"modelo de esta caja combinada debe ser del tipo <code>str</code> (esto sólo "
-"es relevante si esta caja combinada se creó con la propiedad «has-entry» "
-"establecida a «True»)."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:110
-msgid ""
-"<code>set_wrap_width(width)</code> sets the wrap width of this combo box to "
-"be <code>width</code>. The wrap width is basically the preferred number of "
-"columns when you want the popup to be layed out in a grid."
-msgstr ""
-"<code>set_wrap_width(anchura)</code> establece la anchura del ajuste de "
-"línea de esta caja combinada a <code>anchura</code>. La anchura de ajuste de "
-"línea es básicamente el número preferido de columnas en el que quiere que el "
-"diálogo emergente se distribuya en una rejilla."
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:113
-msgid "Useful methods for a <code>Gtk.ComboBoxText</code>:"
-msgstr "Métodos útiles para un <code>Gtk.ComboBoxText</code>:"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:115
-msgid ""
-"The static method <code>new_with_entry()</code> creates a new empty "
-"<code>Gtk.ComboBoxText</code> with an entry."
-msgstr ""
-"El método estático <code>new_with_entry()</code> crea una <code>Gtk."
-"ComboBoxText</code> nueva vacía con una entrada."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:116
-msgid ""
-"<code>append_text(text)</code> appends <code>text</code> to the list of "
-"strings stored in this combo box."
-msgstr ""
-"<code>append_text(texto)</code> añade <code>texto</code> a la lista de "
-"cadenas almacenadas en esta caja combinada."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:117
-msgid ""
-"<code>get_active_text()</code> returns the currently active string in this "
-"combo box, or <code>None</code> if none is selected. If this combo box "
-"contains an entry, this function will return its contents (which will not "
-"necessarily be an item from the list)."
-msgstr ""
-"<code>get_active_text()</code> devuelve la cadena actualmente activa en esta "
-"caja combinada, o <code>None</code> si no hay ninguna seleccionada. Si esta "
-"caja combinada contiene una entrada, esta función devolverá su contenido "
-"(que no será necesariamente un elemento de la lista)."
-
-#. (itstool) path: section/title
-#: C/model-view-controller.py.page:123
-msgid "The View: the Cellrenderers"
-msgstr "La vista: los «CellRenderer»"
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:125
-msgid ""
-"The View makes use of <code>Gtk.CellRenderer</code>s of various types to "
-"draw the data."
-msgstr ""
-"La vista hace uso de <code>Gtk.CellRenderer</code> de varios tipos para "
-"dibujar los datos."
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:127
-msgid "Implementations of <code>Gtk.CellRenderer</code> and useful methods:"
-msgstr "Implementaciones de <code>Gtk.CellRenderer</code> y métodos útiles:"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:129
-msgid "<code>Gtk.CellRendererText</code> - renders text in a cell"
-msgstr "<code>Gtk.CellRendererText</code>: muestra texto en una celda"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:130
-msgid ""
-"<code>Gtk.CellRendererToggle</code> - renders a toggle or radio button in a "
-"cell. Useful methods:"
-msgstr ""
-"<code>Gtk.CellRendererToggle</code>: muestra un interruptor o botón de radio "
-"en una celda. Métodos útiles:"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:132
-msgid ""
-"<code>set_active(setting)</code> - activates or deactivates a cell renderer"
-msgstr ""
-"<code>set_active(opción)</code>: activa o desactiva un renderizador de celda"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:133
-msgid "<code>get_active()</code> - returns whether the cell renderer is active"
-msgstr ""
-"<code>get_active()</code>: devuelve si el renderizador de celda está activado"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:134
-msgid ""
-"<code>set_radio(radio)</code> - if radio is <code>True</code>, the cell "
-"renderer renders a radio toggle (i.e. a toggle in a group of mutually-"
-"exclusive toggles); if <code>False</code>, it renders a check toggle (a "
-"standalone boolean option)"
-msgstr ""
-"<code>set_radio(radio)</code>: si «radio» es <code>True</code>, el "
-"renderizador de celda muestra un interruptor de radio (es decir, un "
-"interruptor en un grupo mutuamente exclusivo); si es <code>False</code>, "
-"muestra una casilla de verificación (una opción booleana independiente)"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:135
-msgid ""
-"<code>get_radio()</code> - returns whether we are rendering radio toggles "
-"rather than checkboxes."
-msgstr ""
-"<code>get_radio()</code>: devuelve si se están mostrando botones de radio en "
-"lugar de casillas de verificación."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:138
-msgid "<code>Gtk.CellRendererPixbuf</code> - renders an image in a cell"
-msgstr "<code>Gtk.CellRendererPixbuf</code>: muestra una imagen en una celda"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:139
-msgid ""
-"<code>Gtk.CellRendererCombo</code> - renders text in a cell; but while "
-"<code>Gtk.CellRendererText</code> offers a simple entry to edit the text, "
-"<code>Gtk.CellRendererCombo</code> offers a <code>Gtk.ComboBox</code> widget "
-"to edit the text. It can be used with and without an associated Gtk.Entry "
-"widget, depending on the value of the “has-entry” property."
-msgstr ""
-"<code>Gtk.CellRendererCombo</code>: muestra texto en una celda; pero "
-"mientras que <code>Gtk.CellRendererText</code> ofrece una entrada simple "
-"para editar el texto, <code>Gtk.CellRendererCombo</code> ofrece un widget "
-"<code>Gtk.ComboBox</code> para editarlo. Puede usarse con o sin un widget "
-"«Gtk.Entry» asociado, dependiendo del valor de la propiedad «has-entry»."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:140
-msgid ""
-"<code>Gtk.CellRendererProgress</code> - renders a numeric value as a "
-"progress bar in a cell; it can display a text on top of the progress bar"
-msgstr ""
-"<code>Gtk.CellRendererProgress</code>: muestra un valor numérico en forma de "
-"barra de progreso en una celda; puede mostrar un texto sobre ella"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:141
-msgid ""
-"<code>Gtk.CellRendererSpinner</code> - renders a spinning animation in a cell"
-msgstr ""
-"<code>Gtk.CellRendererSpinner</code>: muestra una animación giratoria en una "
-"celda"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:142
-msgid "<code>Gtk.CellRendererSpin</code> - renders a spin button in a cell"
-msgstr ""
-"<code>Gtk.CellRendererSpin</code>: muestra un botón incremental en una celda"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:143
-msgid ""
-"<code>Gtk.CellRendererAccel</code> - renders a keyboard accelerator in a cell"
-msgstr ""
-"<code>Gtk.CellRendererAccel</code>: muestra un acelerador de teclado en una "
-"celda"
-
-#. (itstool) path: section/title
-#: C/model-view-controller.py.page:149
-msgid "The Controller: the Selection"
-msgstr "El controlador: la selección"
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:151
-msgid ""
-"Most applications will need to not only deal with displaying data, but also "
-"receiving input events from users. To do this, simply get a reference to a "
-"selection object and connect to the <code>\"changed\"</code> signal."
-msgstr ""
-"La mayoría de las aplicaciones no solo necesitarán mostrar datos, sino "
-"también recibir eventos de entrada de los usuarios. Para hacer esto, "
-"simplemente obtenga una referencia a un objeto de selección y conéctela a la "
-"señal <code>«changed»</code>."
-
-#. (itstool) path: section/code
-#: C/model-view-controller.py.page:153
-#, no-wrap
-msgid ""
-"\n"
-"select = tree.get_selection()\n"
-"select.connect(\"changed\", on_tree_selection_changed)\n"
-msgstr ""
-"\n"
-"select = tree.get_selection()\n"
-"select.connect(\"changed\", on_tree_selection_changed)\n"
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:158
-msgid "Then to retrieve data for the row selected:"
-msgstr "Después, para obtener datos de la fila seleccionada:"
-
-#. (itstool) path: section/code
-#: C/model-view-controller.py.page:160
-#, no-wrap
-msgid ""
-"\n"
-"def on_tree_selection_changed(selection):\n"
-" model, treeiter = selection.get_selected()\n"
-" if treeiter != None:\n"
-" print \"You selected\", model[treeiter][0]\n"
-msgstr ""
-"\n"
-"def on_tree_selection_changed(selection):\n"
-" model, treeiter = selection.get_selected()\n"
-" if treeiter != None:\n"
-" print \"You selected\", model[treeiter][0]\n"
-
-#. (itstool) path: section/p
-#: C/model-view-controller.py.page:167
-msgid "Useful methods for a <code>Gtk.TreeSelection</code>:"
-msgstr "Métodos útiles para un <code>Gtk.TreeSelection</code>:"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:170
-msgid ""
-"<code>set_mode(type)</code> sets the type of selection, where type is one of"
-msgstr ""
-"<code>set_mode(tipo)</code> establece el tipo de la selección, donde «tipo» "
-"puede ser"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:172
-msgid "<code>Gtk.SelectionMode.NONE</code> - no selection is possible"
-msgstr "<code>Gtk.SelectionMode.NONE</code>: la selección no es posible"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:173
-msgid ""
-"<code>Gtk.SelectionMode.SINGLE</code> - zero or one element may be selected"
-msgstr ""
-"<code>Gtk.SelectionMode.SINGLE</code>: se puede seleccionar uno o ningún "
-"elemento"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:174
-msgid ""
-"<code>Gtk.SelectionMode.BROWSE</code> - exactly one element is selected. In "
-"some circumstances, such as initially or during a search operation, it’s "
-"possible for no element to be selected. What is really enforced is that the "
-"user can’t deselect a currently selected element except by selecting another "
-"element."
-msgstr ""
-"<code>Gtk.SelectionMode.BROWSE</code>: se selecciona exactamente un "
-"elemento. En algunas circunstancias, como inicialmente o durante una "
-"operación de búsqueda, es posible que ningún elemento esté seleccionado. Lo "
-"que realmente se prohíbe es que el usuario deseleccione un elemento "
-"actualmente seleccionado excepto si selecciona otro."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:175
-msgid ""
-"<code>Gtk.SelectionMode.MULTIPLE</code> -any number of elements may be "
-"selected. Clicks toggle the state of an item. The Ctrl key may be used to "
-"enlarge the selection, and Shift key to select between the focus and the "
-"child pointed to. Some widgets may also allow Click-drag to select a range "
-"of elements."
-msgstr ""
-"<code>Gtk.SelectionMode.MULTIPLE</code>: se puede seleccionar cualquier "
-"número de elementos. Las pulsaciones cambien el estado de un elemento. Se "
-"puede usar la tecla «Ctrl» para agrandar la selección, y «Mayús» para "
-"seleccionar entre el foco y el hijo al que apunta. Algunos widgets también "
-"pueden permitir arrastrar y soltar para seleccionar un rango de elementos."
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:178
-msgid ""
-"<code>get_selected()</code> returns a tuple <code>(model, treeiter)</code>, "
-"where <code>model</code> is the current model and <code>treeiter</code> a "
-"<code>Gtk.TreeIter</code> pointing to the currently selected row, or None if "
-"no rows are selected. The method does not work if the selection mode is set "
-"to <code>Gtk.SelectionMode.MULTIPLE</code>; in that case, use "
-"<code>get_selected_rows()</code> instead, which Returns a list of <code>Gtk."
-"TreePath</code> instances of all selected rows."
-msgstr ""
-"<code>get_selected()</code> devuelve una tupla <code>(modelo, treeiter)</"
-"code>, donde <code>modelo</code> es el modelo actual y <code>treeiter</code> "
-"un <code>Gtk.TreeIter</code> que apunta a la fila actualmente seleccionada, "
-"o «None» si no la hay. El método no funciona si el modo de selección es "
-"<code>Gtk.SelectionMode.MULTIPLE</code>; en ese caso, use "
-"<code>get_selected_rows()</code> en su lugar, que devuelve una lista de "
-"instancias <code>Gtk.TreePath</code> de todas las filas seleccionadas."
-
-#. (itstool) path: section/title
-#: C/model-view-controller.py.page:184 C/properties.py.page:57
-#: C/signals-callbacks.py.page:46 C/strings.py.page:112
-msgid "References"
-msgstr "Referencias"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:187
-#: C/treeview_advanced_liststore.py.page:45
-#: C/treeview_cellrenderertoggle.py.page:45
-#: C/treeview_simple_liststore.py.page:46 C/treeview_treestore.py.page:45
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeModel.html"
-"\">GtkTreeModel</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeModel.html"
-"\">GtkTreeModel</link>"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:188
-#: C/treeview_advanced_liststore.py.page:44
-#: C/treeview_cellrenderertoggle.py.page:44
-#: C/treeview_simple_liststore.py.page:45 C/treeview_treestore.py.page:44
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeView.html"
-"\">GtkTreeView</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeView.html"
-"\">GtkTreeView</link>"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:189
-#: C/treeview_advanced_liststore.py.page:48
-#: C/treeview_cellrenderertoggle.py.page:49
-#: C/treeview_simple_liststore.py.page:49 C/treeview_treestore.py.page:48
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeViewColumn.html"
-"\">GtkTreeViewColumn</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeViewColumn.html"
-"\">GtkTreeViewColumn</link>"
-
-#. (itstool) path: item/p
-#: C/model-view-controller.py.page:191
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRenderer.html"
-"\">GtkCellRenderer</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRenderer.html"
-"\">GtkCellRenderer</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/paned.c.page:22 C/paned.js.page:22 C/paned.py.page:23
-#: C/paned.vala.page:22
-msgctxt "_"
-msgid "external ref='media/paned.png' md5='8c7e1df065395c9aafcd65036a293d8a'"
-msgstr "external ref='media/paned.png' md5='8c7e1df065395c9aafcd65036a293d8a'"
-
-#. (itstool) path: info/title
-#: C/paned.c.page:8
-msgctxt "text"
-msgid "Paned (C)"
-msgstr "Paned (C)"
-
-#. (itstool) path: info/desc
-#: C/paned.c.page:18 C/paned.js.page:18 C/paned.py.page:19
-#: C/paned.vala.page:18
-msgid "A widget with two adjustable panes"
-msgstr "Un widget con dos paneles ajustables"
-
-#. (itstool) path: page/title
-#: C/paned.c.page:21 C/paned.js.page:21 C/paned.py.page:22
-#: C/paned.vala.page:21
-msgid "Paned"
-msgstr "Paned"
-
-#. (itstool) path: page/p
-#: C/paned.c.page:23 C/paned.js.page:23 C/paned.py.page:24
-#: C/paned.vala.page:23
-msgid "Two images in two adjustable panes, horizontally aligned."
-msgstr "Dos imágenes en dos paneles ajustables, alineados horizontalmente."
-
-#. (itstool) path: section/code
-#: C/paned.c.page:29
-#, no-wrap
-msgid ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *paned;\n"
-" GtkWidget *window;\n"
-" GtkWidget *image1;\n"
-" GtkWidget *image2;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Paned Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 450, 350);\n"
-"\n"
-" paned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);\n"
-" image1 = gtk_image_new_from_file (\"gnome-image.png\");\n"
-" image2 = gtk_image_new_from_file (\"tux.png\");\n"
-"\n"
-" gtk_paned_add1 (GTK_PANED (paned), image1);\n"
-" gtk_paned_add2 (GTK_PANED (paned), image2);\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), paned);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *paned;\n"
-" GtkWidget *window;\n"
-" GtkWidget *image1;\n"
-" GtkWidget *image2;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Paned Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 450, 350);\n"
-"\n"
-" paned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);\n"
-" image1 = gtk_image_new_from_file (\"gnome-image.png\");\n"
-" image2 = gtk_image_new_from_file (\"tux.png\");\n"
-"\n"
-" gtk_paned_add1 (GTK_PANED (paned), image1);\n"
-" gtk_paned_add2 (GTK_PANED (paned), image2);\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), paned);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/paned.c.page:36 C/paned.py.page:42
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkPaned.html"
-"\">GtkPaned</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkPaned.html"
-"\">GtkPaned</link>"
-
-#. (itstool) path: item/p
-#: C/paned.c.page:37 C/paned.js.page:37 C/paned.py.page:43
-#: C/paned.vala.page:37
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Standard-"
-"Enumerations.html#GtkOrientation\">Standard Enumerations</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Standard-"
-"Enumerations.html#GtkOrientation\">Enumeraciones estándar</link>"
-
-#. (itstool) path: info/title
-#: C/paned.js.page:8
-msgctxt "text"
-msgid "Paned (JavaScript)"
-msgstr "Paned (JavaScript)"
-
-#. (itstool) path: section/code
-#: C/paned.js.page:29
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const PanedExample = new Lang.Class ({\n"
-" Name: 'Paned Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application({ application_id: 'org.example.panedexample' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this.window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-" // Create the application window\n"
-" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Paned Window Example\",\n"
-" default_width: 450,\n"
-" default_height: 350,\n"
-" border_width: 10 });\n"
-"\n"
-" // a new widget with two adjustable panes,\n"
-" // one on the left and one on the right\n"
-" this.paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL);\n"
-"\n"
-" // two images\n"
-" this.image1 = new Gtk.Image();\n"
-" this.image1.set_from_file(\"gnome-image.png\");\n"
-" this.image2 = new Gtk.Image();\n"
-" this.image2.set_from_file(\"tux.png\");\n"
-"\n"
-" // add the first image to the left pane\n"
-" this.paned.add1(this.image1);\n"
-" // add the second image to the right pane\n"
-" this.paned.add2(this.image2)\n"
-"\n"
-" // add the panes to the window\n"
-" this.window.add(this.paned)\n"
-" this.window.show_all();\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new PanedExample();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const PanedExample = new Lang.Class ({\n"
-" Name: 'Paned Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application({ application_id: 'org.example.panedexample' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this.window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-" // Create the application window\n"
-" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Paned Window Example\",\n"
-" default_width: 450,\n"
-" default_height: 350,\n"
-" border_width: 10 });\n"
-"\n"
-" // a new widget with two adjustable panes,\n"
-" // one on the left and one on the right\n"
-" this.paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL);\n"
-"\n"
-" // two images\n"
-" this.image1 = new Gtk.Image();\n"
-" this.image1.set_from_file(\"gnome-image.png\");\n"
-" this.image2 = new Gtk.Image();\n"
-" this.image2.set_from_file(\"tux.png\");\n"
-"\n"
-" // add the first image to the left pane\n"
-" this.paned.add1(this.image1);\n"
-" // add the second image to the right pane\n"
-" this.paned.add2(this.image2)\n"
-"\n"
-" // add the panes to the window\n"
-" this.window.add(this.paned)\n"
-" this.window.show_all();\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new PanedExample();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/paned.js.page:36
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Paned.html"
-"\">GtkPaned</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Paned.html"
-"\">GtkPaned</link>"
-
-#. (itstool) path: item/p
-#: C/paned.js.page:38 C/scrolledwindow.js.page:38
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html"
-"\">GtkImage</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html"
-"\">GtkImage</link>"
-
-#. (itstool) path: info/title
-#: C/paned.py.page:8
-msgctxt "text"
-msgid "Paned (Python)"
-msgstr "Paned (Python)"
-
-#. (itstool) path: section/code
-#: C/paned.py.page:30
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Paned Example\", application=app)\n"
-" self.set_default_size(450, 350)\n"
-"\n"
-" # a new widget with two adjustable panes,\n"
-" # one on the left and one on the right\n"
-" paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL)\n"
-"\n"
-" # two images\n"
-" image1 = Gtk.Image()\n"
-" image1.set_from_file(\"gnome-image.png\")\n"
-" image2 = Gtk.Image()\n"
-" image2.set_from_file(\"tux.png\")\n"
-"\n"
-" # add the first image to the left pane\n"
-" paned.add1(image1)\n"
-" # add the second image to the right pane\n"
-" paned.add2(image2)\n"
-"\n"
-" # add the panes to the window\n"
-" self.add(paned)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Paned Example\", application=app)\n"
-" self.set_default_size(450, 350)\n"
-"\n"
-" # a new widget with two adjustable panes,\n"
-" # one on the left and one on the right\n"
-" paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL)\n"
-"\n"
-" # two images\n"
-" image1 = Gtk.Image()\n"
-" image1.set_from_file(\"gnome-image.png\")\n"
-" image2 = Gtk.Image()\n"
-" image2.set_from_file(\"tux.png\")\n"
-"\n"
-" # add the first image to the left pane\n"
-" paned.add1(image1)\n"
-" # add the second image to the right pane\n"
-" paned.add2(image2)\n"
-"\n"
-" # add the panes to the window\n"
-" self.add(paned)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/paned.py.page:34
-msgid "Useful methods for a Paned widget"
-msgstr "Métodos útiles para un widget «Paned»"
-
-#. (itstool) path: section/p
-#: C/paned.py.page:35
-msgid ""
-"To have two vertically aligned panes, use <code>Gtk.Orientation.VERTICAL</"
-"code> instead of <code>Gtk.Orientation.HORIZONTAL</code>. The method "
-"<code>add1(widget1)</code> will add the <code>widget1</code> to the top "
-"pane, and <code>add2(widget2)</code> will add the <code>widget2</code> to "
-"the bottom pane."
-msgstr ""
-"Para tener dos paneles alineados verticalmente, use <code>Gtk.Orientation."
-"VERTICAL</code> en lugar de <code>Gtk.Orientation.HORIZONTAL</code>. El "
-"método <code>add1(widget1)</code> añadirá el <code>widget1</code> al panel "
-"superior, y <code>add2(widget2)</code> añadirá el <code>widget2</code> al "
-"panel inferior."
-
-#. (itstool) path: info/title
-#: C/paned.vala.page:8
-msgctxt "text"
-msgid "Paned (Vala)"
-msgstr "Paned (Vala)"
-
-#. (itstool) path: section/code
-#: C/paned.vala.page:29
-#, no-wrap
-msgid ""
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.title = \"Paned Example\";\n"
-"\t\twindow.set_default_size (450,350);\n"
-"\n"
-"\t\t// a new widget with two adjustable panes,\n"
-"\t\t// one on the left and one on the right\n"
-"\t\tvar paned = new Gtk.Paned (Gtk.Orientation.HORIZONTAL);\n"
-"\n"
-"\t\t/* two images */\n"
-"\t\tvar image1 = new Gtk.Image ();\n"
-"\t\timage1.set_from_file (\"gnome-image.png\");\n"
-"\t\tvar image2 = new Gtk.Image ();\n"
-"\t\timage2.set_from_file (\"tux.png\");\n"
-"\n"
-"\t\t/* add the first image to the left pane */\n"
-"\t\tpaned.add1 (image1);\n"
-"\n"
-"\t\t/* add the second image to the right pane */\n"
-"\t\tpaned.add2 (image2);\n"
-"\n"
-"\t\t/* add the panes to the window */\n"
-"\t\twindow.add (paned);\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.title = \"Paned Example\";\n"
-"\t\twindow.set_default_size (450,350);\n"
-"\n"
-"\t\t// a new widget with two adjustable panes,\n"
-"\t\t// one on the left and one on the right\n"
-"\t\tvar paned = new Gtk.Paned (Gtk.Orientation.HORIZONTAL);\n"
-"\n"
-"\t\t/* two images */\n"
-"\t\tvar image1 = new Gtk.Image ();\n"
-"\t\timage1.set_from_file (\"gnome-image.png\");\n"
-"\t\tvar image2 = new Gtk.Image ();\n"
-"\t\timage2.set_from_file (\"tux.png\");\n"
-"\n"
-"\t\t/* add the first image to the left pane */\n"
-"\t\tpaned.add1 (image1);\n"
-"\n"
-"\t\t/* add the second image to the right pane */\n"
-"\t\tpaned.add2 (image2);\n"
-"\n"
-"\t\t/* add the panes to the window */\n"
-"\t\twindow.add (paned);\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/paned.vala.page:36
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Paned.html\">GtkPaned</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Paned.html\">GtkPaned</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/photo-wall.c.page:84
-msgctxt "_"
-msgid ""
-"external ref='media/photo-wall.png' md5='f19590d97e8ec029cda3c44b769c11cd'"
-msgstr ""
-"external ref='media/photo-wall.png' md5='f19590d97e8ec029cda3c44b769c11cd'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/photo-wall.c.page:87
-msgctxt "_"
-msgid ""
-"external ref='media/photo-wall-focused.png' "
-"md5='9f1ceecf3a28c1e468597b093a10cbae'"
-msgstr ""
-"external ref='media/photo-wall-focused.png' "
-"md5='9f1ceecf3a28c1e468597b093a10cbae'"
-
-#. (itstool) path: info/title
-#: C/photo-wall.c.page:7
-msgctxt "text"
-msgid "Photo wall (C)"
-msgstr "Mural de fotos (C)"
-
-#. (itstool) path: info/desc
-#: C/photo-wall.c.page:10
-msgid "A Clutter image viewer"
-msgstr "Un visor de imágenes Clutter"
-
-#. (itstool) path: credit/name
-#: C/photo-wall.c.page:14
-msgid "Chris Kühl"
-msgstr "Chris Kühl"
-
-#. (itstool) path: page/title
-#: C/photo-wall.c.page:28
-msgid "Photo wall"
-msgstr "Mural de fotos"
-
-#. (itstool) path: synopsis/p
-#: C/photo-wall.c.page:31
-msgid ""
-"For this example we will build a simple image viewer using Clutter. You will "
-"learn:"
-msgstr ""
-"Para este ejemplo se construirá un sencillo visor de imágenes usando "
-"Clutter. Aprenderá:"
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:33
-msgid "How to size and position <code>ClutterActor</code>s"
-msgstr "Cómo dimensionar y posicionar varios <code>ClutterActor</code>"
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:34
-msgid "How to place an image in a <code>ClutterActor</code>"
-msgstr "Cómo situar una imagen en un <code>ClutterActor</code>"
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:35
-msgid "How to do simple transitions using Clutter's animation framework"
-msgstr ""
-"Cómo hacer transiciones sencillas usando el entorno de trabajo de "
-"animaciones de Clutter"
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:36
-msgid "How to make <code>ClutterActor</code>s respond to mouse events"
-msgstr ""
-"Cómo hacer que un <code>ClutterActor</code> responda a los eventos del ratón"
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:37
-msgid "How to get file names from a directory"
-msgstr "Cómo obtener nombres de archivos de una carpeta"
-
-#. (itstool) path: section/title
-#: C/photo-wall.c.page:42 C/record-collection.js.page:40
-msgid "Introduction"
-msgstr "Introducción"
-
-#. (itstool) path: section/p
-#: C/photo-wall.c.page:43
-msgid ""
-"Clutter is a library for creating dynamic user interfaces using OpenGL for "
-"hardware acceleration. This example demonstrates a small, but central, part "
-"of the Clutter library to create a simple but attractive image viewing "
-"program."
-msgstr ""
-"Clutter es una biblioteca para crear interfaces de usuarios dinámicas usando "
-"OpenGL para la aceleración gráfica. Este ejemplo demuestra una pequeña, pero "
-"importante parte de la biblioteca Clutter para crear un sencillo pero "
-"atractivo programa para ver imágenes."
-
-#. (itstool) path: section/p
-#: C/photo-wall.c.page:46
-msgid ""
-"To help us reach our goal we will be utilising a few other common pieces of "
-"GLib as well. Most importantly, we'll use one <code>GPtrArray</code>, a "
-"dynamic array of pointers, to hold the file path names. We will also use "
-"<code>GDir</code>, a utility for working with directories, to access our "
-"image directory and gather file paths."
-msgstr ""
-"Para ayudarle a conseguir su objetivo, también se utilizarán algunos "
-"fragmentos comunes de GLib. Más importante es que se usará un "
-"<code>GPtrArray</code>, una matriz dinámica de punteros, para mantener los "
-"nombres de ruta de archivos. También se usará <code>GDir</code>, una "
-"utilidad para trabajar dentro de carpetas, para acceder a la carpeta de "
-"imágenes y obtener las rutas de archivo."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:59
-msgid ""
-"Choose <gui>GTK+ (simple)</gui> from the <gui>C</gui> tab, click "
-"<gui>Continue</gui>, and fill out your details on the next few pages. Use "
-"<file>photo-wall</file> as project name and directory."
-msgstr ""
-"Seleccione <gui>GTK+ (simple)</gui> en la pestaña <gui>C</gui>, pulse "
-"<gui>Continuar</gui>, y rellene los detalles en las siguientes páginas. Use "
-"<file>mural-de-fotos</file> como nombre del proyecto y de la carpeta."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:62
-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 using the interface builder."
-msgstr ""
-"Asegúrese de que <gui>Usar GtkBuilder para la interfaz del usuario</gui> "
-"está desactivado, ya que, en este tutorial, la IU se creará manualmente. "
-"Revise el tutorial del <link xref=\"guitar-tuner.c\">afinador de guitarra</"
-"link> usando el constructor de interfaces."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:67
-msgid ""
-"Enable <gui>Configure external packages</gui>. On the next page, select "
-"<em>clutter-1.0</em> from the list to include the Clutter library in your "
-"project."
-msgstr ""
-"Active <gui>Configurar paquetes externos</gui>. En la página siguiente, "
-"seleccione <em>clutter-1.0</em> de la lista para incluir la biblioteca "
-"Clutter en su proyecto."
-
-#. (itstool) path: section/title
-#: C/photo-wall.c.page:80
-msgid "A look at Photo Wall"
-msgstr "Un vistazo al mural de fotos"
-
-#. (itstool) path: section/p
-#: C/photo-wall.c.page:81
-msgid "Our image viewer presents the user with a wall of images."
-msgstr "El visor de imágenes muestra al usuario un mural de imágenes."
-
-#. (itstool) path: section/p
-#: C/photo-wall.c.page:85
-msgid ""
-"When an image is clicked, it is animated to fill the viewing area. When the "
-"image having focus is clicked it is returned to its original position using "
-"an animation with the same duration of 500 milliseconds."
-msgstr ""
-"Cuando se pulsa una imagen, esta se anima para que rellene el área de "
-"visualización. Cuando se pulsa la imagen que tiene el foco, vuelve a su "
-"tamaño original usando una animación que dura 500 milisegundos."
-
-#. (itstool) path: section/title
-#: C/photo-wall.c.page:91
-msgid "Initial setup"
-msgstr "Configuración inicial"
-
-#. (itstool) path: section/p
-#: C/photo-wall.c.page:92
-msgid ""
-"The following code segment contains many of the defines and variables we "
-"will be using in the following sections. Use this as a reference for later "
-"sections. Copy this code to the beginning of <file>src/main.c</file>:"
-msgstr ""
-"El siguiente fragmento de código contiene muchas definiciones y variables "
-"que se usarán en las siguientes secciones. Úselo como referencia para las "
-"próximas secciones. Copie este código al principio de <file>src/main.c</"
-"file>:"
-
-#. (itstool) path: section/code
-#: C/photo-wall.c.page:95
-#, no-wrap
-msgid ""
-"\n"
-"#include <gdk-pixbuf/gdk-pixbuf.h>\n"
-"#include <clutter/clutter.h>\n"
-"\n"
-"#define STAGE_WIDTH 800\n"
-"#define STAGE_HEIGHT 600\n"
-"\n"
-"#define THUMBNAIL_SIZE 200\n"
-"#define ROW_COUNT (STAGE_HEIGHT / THUMBNAIL_SIZE)\n"
-"#define COL_COUNT (STAGE_WIDTH / THUMBNAIL_SIZE)\n"
-"#define THUMBNAIL_COUNT (ROW_COUNT * COL_COUNT)\n"
-"\n"
-"#define ANIMATION_DURATION_MS 500\n"
-"\n"
-"#define IMAGE_DIR_PATH \"./berlin_images/\"\n"
-"\n"
-"static GPtrArray *img_paths;\n"
-"\n"
-"static ClutterPoint unfocused_pos;\n"
-"\n"
-msgstr ""
-"\n"
-"#include <gdk-pixbuf/gdk-pixbuf.h>\n"
-"#include <clutter/clutter.h>\n"
-"\n"
-"#define STAGE_WIDTH 800\n"
-"#define STAGE_HEIGHT 600\n"
-"\n"
-"#define THUMBNAIL_SIZE 200\n"
-"#define ROW_COUNT (STAGE_HEIGHT / THUMBNAIL_SIZE)\n"
-"#define COL_COUNT (STAGE_WIDTH / THUMBNAIL_SIZE)\n"
-"#define THUMBNAIL_COUNT (ROW_COUNT * COL_COUNT)\n"
-"\n"
-"#define ANIMATION_DURATION_MS 500\n"
-"\n"
-"#define IMAGE_DIR_PATH \"./berlin_images/\"\n"
-"\n"
-"static GPtrArray *img_paths;\n"
-"\n"
-"static ClutterPoint unfocused_pos;\n"
-"\n"
-
-#. (itstool) path: section/title
-#: C/photo-wall.c.page:119
-msgid "Jumping into the code"
-msgstr "Saltar dentro del código"
-
-#. (itstool) path: section/p
-#: C/photo-wall.c.page:120
-msgid ""
-"We will start by taking a look at the <code>main()</code> function as a "
-"whole. Then we'll discuss the other code sections in detail. Change the "
-"<file>src/main.c</file> to contain this <code>main()</code> function. You "
-"can delete the <code>create_window()</code> function as we don't need it in "
-"this example."
-msgstr ""
-"Se empezará echando un vistazo a la función <code>main()</code> completa. "
-"Luego se verá el resto de secciones del código en detalle. Cambie el archivo "
-"<file>src/main.c</file> para que contenga la función <code>main()</code>. "
-"Puede eliminar la función <code>create_window()</code>, ya que no se usa en "
-"este ejemplo."
-
-#. (itstool) path: section/code
-#: C/photo-wall.c.page:123
-#, no-wrap
-msgid ""
-"\n"
-"int\n"
-"main(int argc, char *argv[])\n"
-"{\n"
-" ClutterColor stage_color = { 16, 16, 16, 255 };\n"
-" ClutterActor *stage = NULL;\n"
-"\n"
-" if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)\n"
-" return 1;\n"
-"\n"
-" stage = clutter_stage_new();\n"
-" clutter_actor_set_size(stage, STAGE_WIDTH, STAGE_HEIGHT);\n"
-" clutter_actor_set_background_color(stage, &stage_color);\n"
-" clutter_stage_set_title(CLUTTER_STAGE (stage), \"Photo Wall\");\n"
-" g_signal_connect(stage, \"destroy\", G_CALLBACK(clutter_main_quit), NULL);\n"
-"\n"
-" load_image_path_names();\n"
-"\n"
-" guint row = 0;\n"
-" guint col = 0;\n"
-" for(row=0; row < ROW_COUNT; ++row)\n"
-" {\n"
-" for(col=0; col < COL_COUNT; ++col)\n"
-" {\n"
-" const char *img_path = g_ptr_array_index(img_paths, (row * COL_COUNT) + col);\n"
-" GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(img_path, STAGE_HEIGHT, STAGE_HEIGHT,
NULL);\n"
-" ClutterContent *image = clutter_image_new ();\n"
-" ClutterActor *actor = clutter_actor_new ();\n"
-"\n"
-" if (pixbuf != NULL)\n"
-" {\n"
-" clutter_image_set_data(CLUTTER_IMAGE(image),\n"
-" gdk_pixbuf_get_pixels(pixbuf),\n"
-" gdk_pixbuf_get_has_alpha(pixbuf)\n"
-" ? COGL_PIXEL_FORMAT_RGBA_8888\n"
-" : COGL_PIXEL_FORMAT_RGB_888,\n"
-" gdk_pixbuf_get_width(pixbuf),\n"
-" gdk_pixbuf_get_height(pixbuf),\n"
-" gdk_pixbuf_get_rowstride(pixbuf),\n"
-" NULL);\n"
-" }\n"
-"\n"
-" clutter_actor_set_content(actor, image);\n"
-" g_object_unref(image);\n"
-" g_object_unref(pixbuf);\n"
-"\n"
-" initialize_actor(actor, row, col);\n"
-" clutter_actor_add_child(stage, actor);\n"
-" }\n"
-" }\n"
-"\n"
-" /* Show the stage. */\n"
-" clutter_actor_show(stage);\n"
-"\n"
-" /* Start the clutter main loop. */\n"
-" clutter_main();\n"
-"\n"
-" g_ptr_array_unref(img_paths);\n"
-"\n"
-" return 0;\n"
-"}"
-msgstr ""
-"\n"
-"int\n"
-"main(int argc, char *argv[])\n"
-"{\n"
-" ClutterColor stage_color = { 16, 16, 16, 255 };\n"
-" ClutterActor *stage = NULL;\n"
-"\n"
-" if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)\n"
-" return 1;\n"
-"\n"
-" stage = clutter_stage_new();\n"
-" clutter_actor_set_size(stage, STAGE_WIDTH, STAGE_HEIGHT);\n"
-" clutter_actor_set_background_color(stage, &stage_color);\n"
-" clutter_stage_set_title(CLUTTER_STAGE (stage), \"Photo Wall\");\n"
-" g_signal_connect(stage, \"destroy\", G_CALLBACK(clutter_main_quit), NULL);\n"
-"\n"
-" load_image_path_names();\n"
-"\n"
-" guint row = 0;\n"
-" guint col = 0;\n"
-" for(row=0; row < ROW_COUNT; ++row)\n"
-" {\n"
-" for(col=0; col < COL_COUNT; ++col)\n"
-" {\n"
-" const char *img_path = g_ptr_array_index(img_paths, (row * COL_COUNT) + col);\n"
-" GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(img_path, STAGE_HEIGHT, STAGE_HEIGHT,
NULL);\n"
-" ClutterContent *image = clutter_image_new ();\n"
-" ClutterActor *actor = clutter_actor_new ();\n"
-"\n"
-" if (pixbuf != NULL)\n"
-" {\n"
-" clutter_image_set_data(CLUTTER_IMAGE(image),\n"
-" gdk_pixbuf_get_pixels(pixbuf),\n"
-" gdk_pixbuf_get_has_alpha(pixbuf)\n"
-" ? COGL_PIXEL_FORMAT_RGBA_8888\n"
-" : COGL_PIXEL_FORMAT_RGB_888,\n"
-" gdk_pixbuf_get_width(pixbuf),\n"
-" gdk_pixbuf_get_height(pixbuf),\n"
-" gdk_pixbuf_get_rowstride(pixbuf),\n"
-" NULL);\n"
-" }\n"
-"\n"
-" clutter_actor_set_content(actor, image);\n"
-" g_object_unref(image);\n"
-" g_object_unref(pixbuf);\n"
-"\n"
-" initialize_actor(actor, row, col);\n"
-" clutter_actor_add_child(stage, actor);\n"
-" }\n"
-" }\n"
-"\n"
-" /* Show the stage. */\n"
-" clutter_actor_show(stage);\n"
-"\n"
-" /* Start the clutter main loop. */\n"
-" clutter_main();\n"
-"\n"
-" g_ptr_array_unref(img_paths);\n"
-"\n"
-" return 0;\n"
-"}"
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:185
-msgid ""
-"Line 4: <code>ClutterColor</code> is defined by setting the red, green, blue "
-"and transparency (alpha) values. The values range from 0-255. For "
-"transparency a value of 255 is opaque."
-msgstr ""
-"Línea 4: <code>ClutterColor</code> se define configurando los valores de "
-"rojo, verde, azul y de transparencia (alfa). Los valores van de 0 a 255. "
-"Para la transparencia, el valor 255 es opaco."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:186
-msgid ""
-"Line 7: You must initialize Clutter. If you forget to do this, you will get "
-"very strange errors. Be warned."
-msgstr ""
-"Línea 7: debe inicializar Clutter. Si olvida hacerlo, obtendrá mensajes muy "
-"extraños. Queda advertido."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:187
-msgid ""
-"Lines 10‒14: Here we create a new <code>ClutterStage</code> . We then set "
-"the size using the defines from the previous section and the address of the "
-"<code>ClutterColor</code> we just defined."
-msgstr ""
-"Líneas 10-14: aquí es donde se crea un <code>ClutterStage</code> nuevo. "
-"Entonces se establece el tamaño usando el definido en la sección anterior y "
-"la dirección del <code>ClutterColor</code> que ya está definida."
-
-#. (itstool) path: note/p
-#: C/photo-wall.c.page:188
-msgid ""
-"A <code>ClutterStage</code> is the top-level <code>ClutterActor</code> onto "
-"which other <code>ClutterActor</code>s are placed."
-msgstr ""
-"Un <code>ClutterStage</code> es el nivel superior de un <code>ClutterActor</"
-"code> en el que se ubican otros <code>ClutterActor</code>."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:190
-msgid ""
-"Line 16: Here we call our function for getting the image file paths. We'll "
-"look at this in a bit."
-msgstr ""
-"Línea 16: aquí se llama a la función para obtener las rutas de las imágenes. "
-"Esto se verá en breve."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:191
-msgid ""
-"Lines 18‒49: This is where we set up the <code>ClutterActor</code>s, load "
-"the images and place them into their spot in the image wall. We will look at "
-"this in detail in the next section."
-msgstr ""
-"Líneas 18-49: aquí es donde se configuran los <code>ClutterActor</code>, se "
-"cargan las imágenes y se colocan en su sitio en el mural de imágenes. Esto "
-"se verá con más detalle en la siguiente sección."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:192
-msgid ""
-"Line 52: Show the stage and <em>all its children</em>, meaning our images."
-msgstr ""
-"Línea 52: mostrar el escenario y <em>todos sus hijos</em>, es decir, las "
-"imágenes."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:193
-msgid "Line 55: Start the Clutter main loop."
-msgstr "Línea 55: iniciar el bucle principal de Clutter."
-
-#. (itstool) path: section/title
-#: C/photo-wall.c.page:198
-msgid "Setting up our image actors"
-msgstr "Configurar los actores de imagen"
-
-#. (itstool) path: note/p
-#: C/photo-wall.c.page:199
-msgid ""
-"In Clutter, an actor is the most basic visual element. Basically, everything "
-"you see is an actor."
-msgstr ""
-"En Clutter, un actor es el elemento visual más simple. Básicamente, todo lo "
-"que ve es un actor."
-
-#. (itstool) path: section/p
-#: C/photo-wall.c.page:200
-msgid ""
-"In this section, we are going to take a closer look at the loop used for "
-"setting up the <code>ClutterActor</code>s that will display our images."
-msgstr ""
-"En esta sección, se va a mirar más detenidamente el bucle usado para "
-"configurar los <code>ClutterActor</code> que mostrarán las imágenes."
-
-#. (itstool) path: section/code
-#: C/photo-wall.c.page:203
-#, no-wrap
-msgid ""
-"\n"
-"guint row = 0;\n"
-"guint col = 0;\n"
-"for(row=0; row < ROW_COUNT; ++row)\n"
-"{\n"
-" for(col=0; col < COL_COUNT; ++col)\n"
-" {\n"
-" const char *img_path = g_ptr_array_index(img_paths, (row * COL_COUNT) + col);\n"
-" GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(img_path, STAGE_HEIGHT, STAGE_HEIGHT, NULL);\n"
-" ClutterContent *image = clutter_image_new ();\n"
-" ClutterActor *actor = clutter_actor_new ();\n"
-"\n"
-" if (pixbuf != NULL)\n"
-" {\n"
-" clutter_image_set_data(CLUTTER_IMAGE(image),\n"
-" gdk_pixbuf_get_pixels(pixbuf),\n"
-" gdk_pixbuf_get_has_alpha(pixbuf)\n"
-" ? COGL_PIXEL_FORMAT_RGBA_8888\n"
-" : COGL_PIXEL_FORMAT_RGB_888,\n"
-" gdk_pixbuf_get_width(pixbuf),\n"
-" gdk_pixbuf_get_height(pixbuf),\n"
-" gdk_pixbuf_get_rowstride(pixbuf),\n"
-" NULL);\n"
-" }\n"
-"\n"
-" clutter_actor_set_content(actor, image);\n"
-" g_object_unref(image);\n"
-" g_object_unref(pixbuf);\n"
-"\n"
-" initialize_actor(actor, row, col);\n"
-" clutter_actor_add_child(stage, actor);\n"
-" }\n"
-"}\n"
-"\n"
-msgstr ""
-"\n"
-"guint row = 0;\n"
-"guint col = 0;\n"
-"for(row=0; row < ROW_COUNT; ++row)\n"
-"{\n"
-" for(col=0; col < COL_COUNT; ++col)\n"
-" {\n"
-" const char *img_path = g_ptr_array_index(img_paths, (row * COL_COUNT) + col);\n"
-" GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(img_path, STAGE_HEIGHT, STAGE_HEIGHT, NULL);\n"
-" ClutterContent *image = clutter_image_new ();\n"
-" ClutterActor *actor = clutter_actor_new ();\n"
-"\n"
-" if (pixbuf != NULL)\n"
-" {\n"
-" clutter_image_set_data(CLUTTER_IMAGE(image),\n"
-" gdk_pixbuf_get_pixels(pixbuf),\n"
-" gdk_pixbuf_get_has_alpha(pixbuf)\n"
-" ? COGL_PIXEL_FORMAT_RGBA_8888\n"
-" : COGL_PIXEL_FORMAT_RGB_888,\n"
-" gdk_pixbuf_get_width(pixbuf),\n"
-" gdk_pixbuf_get_height(pixbuf),\n"
-" gdk_pixbuf_get_rowstride(pixbuf),\n"
-" NULL);\n"
-" }\n"
-"\n"
-" clutter_actor_set_content(actor, image);\n"
-" g_object_unref(image);\n"
-" g_object_unref(pixbuf);\n"
-"\n"
-" initialize_actor(actor, row, col);\n"
-" clutter_actor_add_child(stage, actor);\n"
-" }\n"
-"}\n"
-"\n"
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:239
-msgid ""
-"Line 7: Here we want to get the path at the <var>n</var>th location in the "
-"<code>GPtrArray</code> that is holding our image path names. The <var>n</"
-"var>th position is calculated based on <code>row</code> and <code>col</code>."
-msgstr ""
-"Línea 7: aquí se quiere obtener la ruta a la ubicación número <var>n</var> "
-"en el <code>GPtrArray</code> que contiene los nombres de las rutas de las "
-"imágenes. La posición número <var>n</var> se calcula basándose en <code>row</"
-"code> y <code>col</code>."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:241
-msgid ""
-"Line 8‒23: This is where we actually create the <code>ClutterActor</code> "
-"and place the image into the actor. The first argument is the path which we "
-"access through our <code>GSList</code> node. The second argument is for "
-"error reporting but we are ignoring that to keep things short."
-msgstr ""
-"Líneas 8-23: aquí es donde se crea el <code>ClutterActor</code> en sí y se "
-"ubica la imagen en el actor. El primer argumento es la ruta a la que se "
-"accede con el nodo de la <code>GSList</code>. El segundo argumento es para "
-"informar de un error, pero se ignora para simplificar."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:243
-msgid ""
-"Line 47: This adds the <code>ClutterActor</code> to the stage, which is a "
-"container. It also assumes ownership of the <code>ClutterActor</code> which "
-"is something you'll want to look into as you get deeper into GNOME "
-"development. See the <link href=\"http://library.gnome.org/devel/gobject/"
-"stable/gobject-memory.html\"><code>GObject</code> documentation</link> for "
-"the gory details."
-msgstr ""
-"Línea 47: esta añade el <code>ClutterActor</code> al escenario, que es un "
-"contenedor. Asume propiedad del <code>ClutterActor</code>, que es algo que "
-"querrá cuando profundice en el desarrollo de GNOME. Para obtener más "
-"detalles, consulte la <link href=\"http://library.gnome.org/devel/gobject/"
-"stable/gobject-memory.html\">documentación de <code>GObject</code></link>."
-
-#. (itstool) path: section/title
-#: C/photo-wall.c.page:249
-msgid "Loading the images"
-msgstr "Cargar las imágenes"
-
-#. (itstool) path: section/p
-#: C/photo-wall.c.page:250
-msgid ""
-"Let's take a short break from Clutter to see how we can get the file names "
-"from our image directory."
-msgstr ""
-"Tómese un pequeño descanso de Clutter para ver cómo se pueden obtener los "
-"nombres de archivos desde la carpeta de imágenes."
-
-#. (itstool) path: section/code
-#: C/photo-wall.c.page:251
-#, no-wrap
-msgid ""
-"\n"
-"static void\n"
-"load_image_path_names()\n"
-"{\n"
-" /* Ensure we can access the directory. */\n"
-" GError *error = NULL;\n"
-" GDir *dir = g_dir_open(IMAGE_DIR_PATH, 0, &error);\n"
-" if(error)\n"
-" {\n"
-" g_warning(\"g_dir_open() failed with error: %s\\n\", error->message);\n"
-" g_clear_error(&error);\n"
-" return;\n"
-" }\n"
-"\n"
-" img_paths = g_ptr_array_new_with_free_func (g_free);\n"
-"\n"
-" const gchar *filename = g_dir_read_name(dir);\n"
-" while(filename)\n"
-" {\n"
-" if(g_str_has_suffix(filename, \".jpg\") || g_str_has_suffix(filename, \".png\"))\n"
-" {\n"
-" gchar *path = g_build_filename(IMAGE_DIR_PATH, filename, NULL);\n"
-" g_ptr_array_add (img_paths, path);\n"
-" }\n"
-" filename = g_dir_read_name(dir);\n"
-" }\n"
-"}"
-msgstr ""
-"\n"
-"static void\n"
-"load_image_path_names()\n"
-"{\n"
-" /* Ensure we can access the directory. */\n"
-" GError *error = NULL;\n"
-" GDir *dir = g_dir_open(IMAGE_DIR_PATH, 0, &error);\n"
-" if(error)\n"
-" {\n"
-" g_warning(\"g_dir_open() failed with error: %s\\n\", error->message);\n"
-" g_clear_error(&error);\n"
-" return;\n"
-" }\n"
-"\n"
-" img_paths = g_ptr_array_new_with_free_func (g_free);\n"
-"\n"
-" const gchar *filename = g_dir_read_name(dir);\n"
-" while(filename)\n"
-" {\n"
-" if(g_str_has_suffix(filename, \".jpg\") || g_str_has_suffix(filename, \".png\"))\n"
-" {\n"
-" gchar *path = g_build_filename(IMAGE_DIR_PATH, filename, NULL);\n"
-" g_ptr_array_add (img_paths, path);\n"
-" }\n"
-" filename = g_dir_read_name(dir);\n"
-" }\n"
-"}"
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:279
-msgid ""
-"Lines 5 and 12: This opens our directory or, if an error occurred, returns "
-"after printing an error message."
-msgstr ""
-"Líneas 5 y 12: esto abre la carpeta o, si ocurre un error, termina después "
-"de mostrar un mensaje de error."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:280
-msgid ""
-"Lines 16‒25: The first line gets another file name from the <code>GDir</"
-"code> we opened earlier. If there was an image file (which we check by "
-"looking at its extension, \".png\" or \".jpg\") in the directory we proceed "
-"to prepend the image directory path to the filename and prepend that to the "
-"list we set up earlier. Lastly we attempt to get the next path name and "
-"reenter the loop if another file was found."
-msgstr ""
-"Líneas 16-25: la primera línea obtiene otro nombre de archivo del "
-"<code>GDir</code> abierto anteriormente. Si hay un archivo de imagen (se "
-"comprueba mirando si la extensión es «.png» o «.jpg») en la carpeta, se "
-"procede a anteponer la ruta de la carpeta de la imagen al nombre del archivo "
-"y se antepone en la lista creada anteriormente. Por último, se intenta "
-"obtener el nombre de la siguiente ruta y se vuelve a entrar en el bucle si "
-"se encuentra otro archivo."
-
-#. (itstool) path: section/title
-#: C/photo-wall.c.page:285
-msgid "Set up the actors"
-msgstr "Configurar los actores"
-
-#. (itstool) path: section/p
-#: C/photo-wall.c.page:286
-msgid ""
-"We now take a look at the sizing and positioning of <code>ClutterActor</"
-"code>s and also readying the <code>ClutterActor</code> for user interaction."
-msgstr ""
-"Eche un vistazo al tamaño y al posicionamiento de los <code>ClutterActor</"
-"code> y a cómo se deja listo el <code>ClutterActor</code> para la "
-"interacción del usuario."
-
-#. (itstool) path: section/code
-#: C/photo-wall.c.page:289
-#, no-wrap
-msgid ""
-"\n"
-"/* This function handles setting up and placing the rectangles. */\n"
-"static void\n"
-"initialize_actor(ClutterActor *actor, guint row, guint col)\n"
-"{\n"
-" clutter_actor_set_size(actor, THUMBNAIL_SIZE, THUMBNAIL_SIZE);\n"
-" clutter_actor_set_position(actor, col * THUMBNAIL_SIZE, row * THUMBNAIL_SIZE);\n"
-" clutter_actor_set_reactive(actor, TRUE);\n"
-"\n"
-" g_signal_connect(actor,\n"
-" \"button-press-event\",\n"
-" G_CALLBACK(actor_clicked_cb),\n"
-" NULL);\n"
-"}"
-msgstr ""
-"\n"
-"/* This function handles setting up and placing the rectangles. */\n"
-"static void\n"
-"initialize_actor(ClutterActor *actor, guint row, guint col)\n"
-"{\n"
-" clutter_actor_set_size(actor, THUMBNAIL_SIZE, THUMBNAIL_SIZE);\n"
-" clutter_actor_set_position(actor, col * THUMBNAIL_SIZE, row * THUMBNAIL_SIZE);\n"
-" clutter_actor_set_reactive(actor, TRUE);\n"
-"\n"
-" g_signal_connect(actor,\n"
-" \"button-press-event\",\n"
-" G_CALLBACK(actor_clicked_cb),\n"
-" NULL);\n"
-"}"
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:305
-msgid ""
-"Line 7: Setting an actor reactive means that it reacts to events, such as "
-"<code>button-press-event</code> in our case. For Photo Wall, all "
-"<code>ClutterActor</code>s in the wall should initially be reactive."
-msgstr ""
-"Línea 7: configurar un actor como «reactivo» significa que reacciona a los "
-"eventos tales como <code>button-press-event</code> en nuestro caso. Para el "
-"mural de fotos, todos los <code>ClutterActor</code> del mural deben ser "
-"inicialmente reactivos."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:308
-msgid ""
-"Line 9‒12: Now we connect the <code>button-press-event</code> to the "
-"<code>actor_clicked_cb</code> callback which we will look at next."
-msgstr ""
-"Líneas 9‒12: ahora se conecta el evento <code>button-press-event</code> al "
-"retorno de la llamada <code>actor_clicked_cb</code> que veremos más adelante."
-
-#. (itstool) path: section/p
-#: C/photo-wall.c.page:311
-msgid "At this point we've got a wall of images that are ready to be viewed."
-msgstr "En este punto tiene un mural de fotos que está listo para verse."
-
-#. (itstool) path: section/title
-#: C/photo-wall.c.page:315
-msgid "Reacting to the clicks"
-msgstr "Reaccionar a las pulsaciones"
-
-#. (itstool) path: section/code
-#: C/photo-wall.c.page:319
-#, no-wrap
-msgid ""
-"\n"
-"static gboolean\n"
-"actor_clicked_cb(ClutterActor *actor,\n"
-" ClutterEvent *event,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* Flag to keep track of our state. */\n"
-" static gboolean is_focused = FALSE;\n"
-" ClutterActorIter iter;\n"
-" ClutterActor *child;\n"
-"\n"
-" /* Reset the focus state on all the images */\n"
-" clutter_actor_iter_init (&iter, clutter_actor_get_parent(actor));\n"
-" while (clutter_actor_iter_next(&iter, &child))\n"
-" clutter_actor_set_reactive(child, is_focused);\n"
-"\n"
-" clutter_actor_save_easing_state(actor);\n"
-" clutter_actor_set_easing_duration(actor, ANIMATION_DURATION_MS);\n"
-"\n"
-" if(is_focused)\n"
-" {\n"
-" /* Restore the old location and size. */\n"
-" clutter_actor_set_position(actor, unfocused_pos.x, unfocused_pos.y);\n"
-" clutter_actor_set_size(actor, THUMBNAIL_SIZE, THUMBNAIL_SIZE);\n"
-" }\n"
-" else\n"
-" {\n"
-" /* Save the current location before animating. */\n"
-" clutter_actor_get_position(actor, &unfocused_pos.x, &unfocused_pos.y);\n"
-" /* Only the currently focused image should receive events. */\n"
-" clutter_actor_set_reactive(actor, TRUE);\n"
-"\n"
-" /* Put the focused image on top. */\n"
-" clutter_actor_set_child_above_sibling(clutter_actor_get_parent(actor), actor, NULL);\n"
-"\n"
-" clutter_actor_set_position(actor, (STAGE_WIDTH - STAGE_HEIGHT) / 2.0, 0);\n"
-" clutter_actor_set_size(actor, STAGE_HEIGHT, STAGE_HEIGHT);\n"
-" }\n"
-"\n"
-" clutter_actor_restore_easing_state(actor);\n"
-"\n"
-" /* Toggle our flag. */\n"
-" is_focused = !is_focused;\n"
-"\n"
-" return TRUE;\n"
-"}"
-msgstr ""
-"\n"
-"static gboolean\n"
-"actor_clicked_cb(ClutterActor *actor,\n"
-" ClutterEvent *event,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* Flag to keep track of our state. */\n"
-" static gboolean is_focused = FALSE;\n"
-" ClutterActorIter iter;\n"
-" ClutterActor *child;\n"
-"\n"
-" /* Reset the focus state on all the images */\n"
-" clutter_actor_iter_init (&iter, clutter_actor_get_parent(actor));\n"
-" while (clutter_actor_iter_next(&iter, &child))\n"
-" clutter_actor_set_reactive(child, is_focused);\n"
-"\n"
-" clutter_actor_save_easing_state(actor);\n"
-" clutter_actor_set_easing_duration(actor, ANIMATION_DURATION_MS);\n"
-"\n"
-" if(is_focused)\n"
-" {\n"
-" /* Restore the old location and size. */\n"
-" clutter_actor_set_position(actor, unfocused_pos.x, unfocused_pos.y);\n"
-" clutter_actor_set_size(actor, THUMBNAIL_SIZE, THUMBNAIL_SIZE);\n"
-" }\n"
-" else\n"
-" {\n"
-" /* Save the current location before animating. */\n"
-" clutter_actor_get_position(actor, &unfocused_pos.x, &unfocused_pos.y);\n"
-" /* Only the currently focused image should receive events. */\n"
-" clutter_actor_set_reactive(actor, TRUE);\n"
-"\n"
-" /* Put the focused image on top. */\n"
-" clutter_actor_set_child_above_sibling(clutter_actor_get_parent(actor), actor, NULL);\n"
-"\n"
-" clutter_actor_set_position(actor, (STAGE_WIDTH - STAGE_HEIGHT) / 2.0, 0);\n"
-" clutter_actor_set_size(actor, STAGE_HEIGHT, STAGE_HEIGHT);\n"
-" }\n"
-"\n"
-" clutter_actor_restore_easing_state(actor);\n"
-"\n"
-" /* Toggle our flag. */\n"
-" is_focused = !is_focused;\n"
-"\n"
-" return TRUE;\n"
-"}"
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:366
-msgid ""
-"Lines 1‒4: We have to make sure our callback function matches the signature "
-"required for the <code>button_clicked_event</code> signal. For our example, "
-"we will only use the first argument, the <code>ClutterActor</code> that is "
-"actually clicked."
-msgstr ""
-"Líneas 1‒4: hay que asegurarse de que la función de retorno de llamada "
-"coincide con la firma requerida para la señal <code>button_clicked_event</"
-"code>. En este ejemplo, sólo se usará el primer argumento, el "
-"<code>ClutterActor</code> pulsado actualmente."
-
-#. (itstool) path: note/p
-#: C/photo-wall.c.page:368
-msgid ""
-"A few words on the arguments we are not using in this example. The "
-"<code>ClutterEvent</code> is different depending on what event is being "
-"handled. For example, a key event produces a <code>ClutterKeyEvent</code> "
-"from which you can get the key being pressed among other information. For "
-"mouse click events you get a <code>ClutterButtonEvent</code> from which you "
-"can get the <code>x</code> and <code>y</code> values. See the Clutter "
-"documentation for other <code>ClutterEvent</code> types."
-msgstr ""
-"Unas pocas palabras sobre los argumentos que no se están usando en este "
-"ejemplo. El <code>ClutterEvent</code> es diferente dependiendo de qué evento "
-"se está manejando. Por ejemplo, un evento de clave produce un "
-"<code>ClutterKeyEvent</code> desde el que puede obtener la clave pulsada, "
-"entre otra información. Para eventos de pulsaciones del ratón, obtiene un "
-"<code>ClutterButtonEvent</code> con el que pueden obtener los valores "
-"<code>x</code> e <code>y</code>. Consulte la documentación de Clutter para "
-"obtener información sobre otros tipos de <code>ClutterEvent</code>."
-
-#. (itstool) path: note/p
-#: C/photo-wall.c.page:369
-msgid ""
-"The <code>user_data</code> is what one uses to pass data into the function. "
-"A pointer to any data type can be passed in. If you need multiple data to be "
-"passed into the callback, you can place the data into a struct and pass its "
-"address in."
-msgstr ""
-"El <code>user_data</code> es lo que se usa para pasar datos a la función. Se "
-"puede pasar un puntero a cualquier tipo de datos. Si necesita pasar varios "
-"datos al retorno de la llamada, puede colocarlos en una estructura y pasar "
-"un puntero a su dirección."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:373
-msgid ""
-"Line 7: We set up a static flag to track which state we are in: wall mode or "
-"focus mode. We start out in wall mode so no image has focus. Thus, we set "
-"the flag to <code>FALSE</code> initially."
-msgstr ""
-"Línea 7: se establece un indicador estático para seguir el estado en el que "
-"se está: modo mural o modo de foco. Se inicia en modo mural, por lo que "
-"ninguna imagen tiene el foco. Por ello, el indicador se establece "
-"inicialmente a <code>FALSE</code>."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:374
-msgid ""
-"Line 12‒14: These set the image actors to receive events if they are focused."
-msgstr ""
-"Líneas 12-14: configuran los actores de imágenes para recibir eventos si "
-"obtienen el foco."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:375
-msgid ""
-"Line 16‒17: Here we set the animation duration and save the current state."
-msgstr ""
-"Línea 16-17: aquí se establece la duración de la animación y se guarda el "
-"estado actual."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:376
-msgid ""
-"Lines 21‒23: Reaching this code means that one image currently has focus and "
-"we want to return to wall mode. Setting a position on a <code>ClutterActor</"
-"code> begins an animation with the duration that we set in line 17."
-msgstr ""
-"Líneas 21-23: llegar a este código significa que actualmente solo una imagen "
-"tiene el foco, y se quiere volver al modo mural. Establecer una posición en "
-"un <code>ClutterActor</code> comienza una animación con la duración "
-"configurada en la línea 17."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:378
-msgid ""
-"Line 24: Reaching this line of code means we are currently in the wall state "
-"and are about to give a <code>ClutterActor</code> focus. Here we save the "
-"starting position so that we can return to it later."
-msgstr ""
-"Línea 24: llegar a esta línea de código significa que actualmente se está en "
-"el modo mural y se va a dar el foco a un <code>ClutterActor</code>. Aquí se "
-"guarda la posición inicial, por lo que se puede volver a ella más adelante."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:379
-msgid ""
-"Line 25: Setting the <code>ClutterActor</code>'s <code>reactive</code> "
-"property to <code>TRUE</code> makes this <code>ClutterActor</code> react to "
-"events. In this focused state the only <code>ClutterActor</code> that we "
-"want to receive events will be the <code>ClutterActor</code> being viewed. "
-"Clicking on the <code>ClutterActor</code> will return it to its starting "
-"position."
-msgstr ""
-"Línea 25: establecer la propiedad <code>reactive</code> del "
-"<code>ClutterActor</code> a <code>TRUE</code> hace que este "
-"<code>ClutterActor</code> reaccione a los eventos. En el estado «con foco», "
-"el único <code>ClutterActor</code> que se quiere que reciba eventos es el "
-"<code>ClutterActor</code> que se está viendo. Al pulsar sobre el "
-"<code>ClutterActor</code> volverá a su posición inicial."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:380
-msgid ""
-"Lines 27‒36: This is where we save the current position of the image, set it "
-"to receive events and then make it appear above the other images and start "
-"animating it to fill the stage."
-msgstr ""
-"Líneas 27-36: aquí es donde se guarda la posición actual de la imagen, se "
-"configura para recibir eventos y se hace que aparezca sobre las otras, "
-"comenzando la animación para que llene el escenario."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:381
-msgid ""
-"Line 39: Here we restore the easing state to what was set before we changed "
-"it in line 16."
-msgstr ""
-"Línea 39: aquí se restaura el estado a lo que era antes de que se cambiara "
-"en la línea 16."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:382
-msgid ""
-"Line 42: Here we toggle the <code>is_focused</code> flag to the current "
-"state."
-msgstr ""
-"Línea 42: aquí se alterna la opción <code>is_focused</code> al estado actual."
-
-#. (itstool) path: item/p
-#: C/photo-wall.c.page:383
-msgid ""
-"As mentioned previously, the <code>ClutterActor</code>s with higher "
-"<code>depth</code> values receive events but can allow <code>ClutterActor</"
-"code>s below them to also receive events. Returning <code>TRUE</code> will "
-"stop events from being passed down, while <code>FALSE</code> will pass "
-"events down."
-msgstr ""
-"Como se ha mencionado anteriormente, los <code>ClutterActor</code> con "
-"valores de <code>depth</code> más altos recibirán eventos, pero pueden "
-"permitir que los <code>ClutterActor</code> que están por denajo de ellos "
-"también reciban eventos. Al devolver <code>TRUE</code> se dejarán de enviar "
-"eventos havia abajo, mientras que <code>FALSE</code> hará que los eventos "
-"pasen hacia abajo."
-
-#. (itstool) path: note/p
-#: C/photo-wall.c.page:385
-msgid ""
-"Remember, however, that to receive events the <code>ClutterActor</code>s "
-"must be set <code>reactive</code>."
-msgstr ""
-"Recuerde, sin embargo, que para que los <code>ClutterActor</code> reciban "
-"eventos deben establecerse como <code>reactive</code>."
-
-#. (itstool) path: section/p
-#: C/photo-wall.c.page:393
-msgid ""
-"All of the code should now be ready to go. All you need now is some pictures "
-"to load. By default, the pictures are loaded from a <file>berlin_images</"
-"file> directory. If you want, you can change the <code>#define "
-"IMAGE_DIR_PATH</code> line near the top to refer to your photo directory, or "
-"create a <file>berlin_images</file> directory by clicking "
-"<guiseq><gui>Project</gui><gui>New Directory...</gui></guiseq> and creating "
-"a <file>berlin_images</file> directory as a subdirectory of the <file>photo-"
-"wall</file> directory. Make sure to put at least twelve images in the "
-"directory!"
-msgstr ""
-"Todo el código debería estar listo para ejecutarse. Todo lo que necesita son "
-"algunas imágenes para cargar. De manera predeterminada, las imágenes se "
-"cargan desde la carpeta <file>berlin_images</file>. Si quiere, puede cambiar "
-"la línea <code>#define IMAGE_DIR_PATH</code> del principio para que haga "
-"referencia a su carpeta de fotos, o crear una carpeta <file>berlin_images</"
-"file> pulsando en <guiseq><gui>Proyecto</gui><gui>Carpeta nueva...</gui></"
-"guiseq> y creando una carpeta <file>berlin_images</file> como subcarpeta de "
-"la carpeta <file>mural-fotos</file>. Asegúrese de poner al menos doce "
-"imágenes en la carpeta."
-
-#. (itstool) path: section/p
-#: C/photo-wall.c.page:395
-msgid ""
-"When you have done that, click <guiseq><gui>Build</gui><gui>Build Project</"
-"gui></guiseq> to build everything again, then <guiseq><gui>Run</"
-"gui><gui>Execute</gui></guiseq> to start the application."
-msgstr ""
-"Cuando lo haya hecho, pulse <guiseq><gui>Construir</gui><gui>Construir "
-"proyecto</gui></guiseq> para construir todo otra vez, y entonces pulse "
-"<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq> para iniciar la "
-"aplicación."
-
-#. (itstool) path: section/p
-#: C/photo-wall.c.page:396
-msgid ""
-"If you haven't already done so, choose the <file>Debug/src/photo-wall</file> "
-"application in the dialog that appears. Finally, hit <gui>Run</gui> and "
-"enjoy!"
-msgstr ""
-"Si todavía no lo ha hecho, elija la aplicación <file>Debug/src/photo-wall</"
-"file> en el diálogo que aparece. Finalmente, pulse <gui>Ejecutar</gui> y "
-"disfrute."
-
-#. (itstool) path: section/p
-#: C/photo-wall.c.page:401
-msgid ""
-"If you run into problems with the tutorial, compare your code with this "
-"<link href=\"photo-wall/photo-wall.c\">reference code</link>."
-msgstr ""
-"Si tiene problemas con este tutorial, compare su código con este <link href="
-"\"photo-wall/photo-wall.c\">código de referencia</link>."
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/progressbar.c.page:24 C/progressbar.vala.page:22
-msgctxt "_"
-msgid ""
-"external ref='media/progressbar_fill.ogv' "
-"md5='287763d1d3f4a328212ea2243910f5e4'"
-msgstr ""
-"external ref='media/progressbar_fill.ogv' "
-"md5='287763d1d3f4a328212ea2243910f5e4'"
-
-#. (itstool) path: info/title
-#: C/progressbar.c.page:8
-msgctxt "text"
-msgid "ProgressBar (C)"
-msgstr "ProgressBar (C)"
-
-#. (itstool) path: info/desc
-#: C/progressbar.c.page:19 C/progressbar.vala.page:18
-msgid "A widget which indicates progress visually"
-msgstr "Un widget que indica el progreso de manera visual"
-
-#. (itstool) path: page/title
-#: C/progressbar.c.page:22 C/progressbar.js.page:20 C/progressbar.py.page:22
-#: C/progressbar.vala.page:21
-msgid "ProgressBar"
-msgstr "ProgressBar"
-
-#. (itstool) path: page/p
-#: C/progressbar.c.page:25 C/progressbar.vala.page:23
-msgid ""
-"This ProgressBar \"fills in\" by a fraction of the bar until it is full."
-msgstr "Esta barra de progreso «se llena» una fracción hasta que está llena."
-
-#. (itstool) path: page/code
-#: C/progressbar.c.page:27
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"static gboolean\n"
-"fill (gpointer user_data)\n"
-"{\n"
-" GtkWidget *progress_bar = user_data;\n"
-"\n"
-" /*Get the current progress*/\n"
-" gdouble fraction;\n"
-" fraction = gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (progress_bar));\n"
-"\n"
-" /*Increase the bar by 10% each time this function is called*/\n"
-" fraction += 0.1;\n"
-"\n"
-" /*Fill in the bar with the new fraction*/\n"
-" gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), fraction);\n"
-"\n"
-" /*Ensures that the fraction stays below 1.0*/\n"
-" if (fraction < 1.0) \n"
-" return TRUE;\n"
-" \n"
-" return FALSE;\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *progress_bar;\n"
-"\n"
-" gdouble fraction = 0.0;\n"
-"\n"
-" /*Create a window with a title, and a default size*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"ProgressBar Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 220, 20);\n"
-" \n"
-" /*Create a progressbar and add it to the window*/\n"
-" progress_bar = gtk_progress_bar_new ();\n"
-" gtk_container_add (GTK_CONTAINER (window), progress_bar);\n"
-"\n"
-" /*Fill in the given fraction of the bar. Has to be between 0.0-1.0 inclusive*/\n"
-" gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), fraction);\n"
-"\n"
-" /*Use the created fill function every 500 milliseconds*/\n"
-" g_timeout_add (500, fill, GTK_PROGRESS_BAR (progress_bar));\n"
-" \n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-" \n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-" \n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" \n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"static gboolean\n"
-"fill (gpointer user_data)\n"
-"{\n"
-" GtkWidget *progress_bar = user_data;\n"
-"\n"
-" /*Get the current progress*/\n"
-" gdouble fraction;\n"
-" fraction = gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (progress_bar));\n"
-"\n"
-" /*Increase the bar by 10% each time this function is called*/\n"
-" fraction += 0.1;\n"
-"\n"
-" /*Fill in the bar with the new fraction*/\n"
-" gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), fraction);\n"
-"\n"
-" /*Ensures that the fraction stays below 1.0*/\n"
-" if (fraction < 1.0) \n"
-" return TRUE;\n"
-" \n"
-" return FALSE;\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *progress_bar;\n"
-"\n"
-" gdouble fraction = 0.0;\n"
-"\n"
-" /*Create a window with a title, and a default size*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"ProgressBar Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 220, 20);\n"
-" \n"
-" /*Create a progressbar and add it to the window*/\n"
-" progress_bar = gtk_progress_bar_new ();\n"
-" gtk_container_add (GTK_CONTAINER (window), progress_bar);\n"
-"\n"
-" /*Fill in the given fraction of the bar. Has to be between 0.0-1.0 inclusive*/\n"
-" gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), fraction);\n"
-"\n"
-" /*Use the created fill function every 500 milliseconds*/\n"
-" g_timeout_add (500, fill, GTK_PROGRESS_BAR (progress_bar));\n"
-" \n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-" \n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-" \n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" \n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/progressbar.c.page:36
-msgid ""
-"<link href=\"http://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop."
-"html#g-timeout-add\">G_Timeout</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop."
-"html#g-timeout-add\">G_Timeout</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/progressbar.js.page:21 C/progressbar.py.page:23
-msgctxt "_"
-msgid ""
-"external ref='media/progressbar.ogv' md5='36deab3dd4b5be968828fa2ef416d612'"
-msgstr ""
-"external ref='media/progressbar.ogv' md5='36deab3dd4b5be968828fa2ef416d612'"
-
-#. (itstool) path: info/title
-#: C/progressbar.js.page:7
-msgctxt "text"
-msgid "ProgressBar (JavaScript)"
-msgstr "ProgressBar (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/progressbar.js.page:17
-msgid "A bar which animates to indicate progress"
-msgstr "Una barra que indica el progreso de manera visual"
-
-#. (itstool) path: div/p
-#: C/progressbar.js.page:25 C/progressbar.py.page:27
-msgid "Pressing any key stops and starts this ProgressBar."
-msgstr "Pulsar cualquier tecla detiene e inicia esta ProgressBar."
-
-#. (itstool) path: page/p
-#: C/progressbar.js.page:32 C/progressbar.py.page:34
-msgid "This ProgressBar is stopped and started by pressing any key."
-msgstr "La ProgressBar se detiene y se inicia pulsando una tecla."
-
-#. (itstool) path: page/code
-#: C/progressbar.js.page:34
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ProgressBarExample = new Lang.Class({\n"
-" Name: 'ProgressBar Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsprogressbar',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 20,\n"
-" default_width: 220,\n"
-" title: \"ProgressBar Example\"});\n"
-"\n"
-" // Create the progress bar\n"
-" this.progressBar = new Gtk.ProgressBar ();\n"
-" this._window.add(this.progressBar);\n"
-"\n"
-" // Start the function that pulses the bar every 100 milliseconds\n"
-" this.sourceID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, Lang.bind(this, this._barPulse));\n"
-"\n"
-" // Connect a keypress event to the function that toggles the bar to start or stop pulsing\n"
-" this._window.connect(\"key-press-event\", Lang.bind(this, this._onKeyPress));\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Pulse the progressbar (unless it has been disabled by a keypress)\n"
-" _barPulse: function() {\n"
-" this.progressBar.pulse();\n"
-" return true;\n"
-" },\n"
-"\n"
-" // Start or stop the progressbar when a key is pressed\n"
-" _onKeyPress: function() {\n"
-" if (this.sourceID == 0)\n"
-" this.sourceID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, Lang.bind(this,
this._barPulse));\n"
-" else {\n"
-" GLib.source_remove(this.sourceID);\n"
-" this.sourceID = 0;\n"
-" }\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ProgressBarExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ProgressBarExample = new Lang.Class({\n"
-" Name: 'ProgressBar Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsprogressbar',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 20,\n"
-" default_width: 220,\n"
-" title: \"ProgressBar Example\"});\n"
-"\n"
-" // Create the progress bar\n"
-" this.progressBar = new Gtk.ProgressBar ();\n"
-" this._window.add(this.progressBar);\n"
-"\n"
-" // Start the function that pulses the bar every 100 milliseconds\n"
-" this.sourceID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, Lang.bind(this, this._barPulse));\n"
-"\n"
-" // Connect a keypress event to the function that toggles the bar to start or stop pulsing\n"
-" this._window.connect(\"key-press-event\", Lang.bind(this, this._onKeyPress));\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Pulse the progressbar (unless it has been disabled by a keypress)\n"
-" _barPulse: function() {\n"
-" this.progressBar.pulse();\n"
-" return true;\n"
-" },\n"
-"\n"
-" // Start or stop the progressbar when a key is pressed\n"
-" _onKeyPress: function() {\n"
-" if (this.sourceID == 0)\n"
-" this.sourceID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, Lang.bind(this,
this._barPulse));\n"
-" else {\n"
-" GLib.source_remove(this.sourceID);\n"
-" this.sourceID = 0;\n"
-" }\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ProgressBarExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/progressbar.js.page:39
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/GLib.html\">GLib</"
-"link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/GLib.html\">GLib</"
-"link>"
-
-#. (itstool) path: info/title
-#: C/progressbar.py.page:8
-msgctxt "text"
-msgid "ProgressBar (Python)"
-msgstr "ProgressBar (Python)"
-
-#. (itstool) path: info/desc
-#: C/progressbar.py.page:19
-msgid "A widget which indicates progress visually."
-msgstr "Un widget que indica el progreso de manera visual."
-
-#. (itstool) path: section/code
-#: C/progressbar.py.page:41
-#, no-wrap
-msgid ""
-"from gi.repository import GLib\n"
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"ProgressBar Example\", application=app)\n"
-" self.set_default_size(220, 20)\n"
-"\n"
-" # a progressbar\n"
-" self.progress_bar = Gtk.ProgressBar()\n"
-" # add the progressbar to the window\n"
-" self.add(self.progress_bar)\n"
-"\n"
-" # the method self.pulse is called each 100 milliseconds\n"
-" # and self.source_id is set to be the ID of the event source\n"
-" # (i.e. the bar changes position every 100 milliseconds)\n"
-" self.source_id = GLib.timeout_add(100, self.pulse)\n"
-"\n"
-" # event handler\n"
-" # any signal from the keyboard controls if the progressbar stops/starts\n"
-" def do_key_press_event(self, event):\n"
-" # if the progressbar has been stopped (therefore source_id == 0 - see\n"
-" # \"else\" below), turn it back on\n"
-" if (self.source_id == 0):\n"
-" self.source_id = GLib.timeout_add(100, self.pulse)\n"
-" # if the bar is moving, remove the source with the ID of source_id\n"
-" # from the main context (stop the bar) and set the source_id to 0\n"
-" else:\n"
-" GLib.source_remove(self.source_id)\n"
-" self.source_id = 0\n"
-" # stop the signal emission\n"
-" return True\n"
-"\n"
-" # source function\n"
-" # the progressbar is in \"activity mode\" when this method is called\n"
-" def pulse(self):\n"
-" self.progress_bar.pulse()\n"
-" # call the function again\n"
-" return True\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import GLib\n"
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"ProgressBar Example\", application=app)\n"
-" self.set_default_size(220, 20)\n"
-"\n"
-" # a progressbar\n"
-" self.progress_bar = Gtk.ProgressBar()\n"
-" # add the progressbar to the window\n"
-" self.add(self.progress_bar)\n"
-"\n"
-" # the method self.pulse is called each 100 milliseconds\n"
-" # and self.source_id is set to be the ID of the event source\n"
-" # (i.e. the bar changes position every 100 milliseconds)\n"
-" self.source_id = GLib.timeout_add(100, self.pulse)\n"
-"\n"
-" # event handler\n"
-" # any signal from the keyboard controls if the progressbar stops/starts\n"
-" def do_key_press_event(self, event):\n"
-" # if the progressbar has been stopped (therefore source_id == 0 - see\n"
-" # \"else\" below), turn it back on\n"
-" if (self.source_id == 0):\n"
-" self.source_id = GLib.timeout_add(100, self.pulse)\n"
-" # if the bar is moving, remove the source with the ID of source_id\n"
-" # from the main context (stop the bar) and set the source_id to 0\n"
-" else:\n"
-" GLib.source_remove(self.source_id)\n"
-" self.source_id = 0\n"
-" # stop the signal emission\n"
-" return True\n"
-"\n"
-" # source function\n"
-" # the progressbar is in \"activity mode\" when this method is called\n"
-" def pulse(self):\n"
-" self.progress_bar.pulse()\n"
-" # call the function again\n"
-" return True\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/progressbar.py.page:46
-msgid "Useful methods for a ProgressBar widget"
-msgstr "Métodos útiles para un widget «ProgressBar»"
-
-#. (itstool) path: item/p
-#: C/progressbar.py.page:48
-msgid ""
-"Instead of <code>pulse()</code>, that makes the bar go back and forth, if we "
-"want the ProgressBar to \"fill in\" a fraction (a <code>float</code> between "
-"<code>0.0</code> and <code>1.0</code> included) of the bar that has been "
-"completed, use <code>set_fraction(fraction)</code>."
-msgstr ""
-"En lugar de <code>pulse()</code>, que hace que la barra avance y retroceda, "
-"si se quiere que la barra de progreso «llene» una fracción (un <code>float</"
-"code> entre <code>0.0</code> y <code>1.0</code> inclusive) de la barra que "
-"se ha completado, use <code>set_fraction(fracción)</code>."
-
-#. (itstool) path: item/p
-#: C/progressbar.py.page:49
-msgid ""
-"To set a text and show it (superimposed over the bar) use <code>set_text"
-"(<var>\"text\"</var>)</code> and <code>set_show_text(True)</code>. If a text "
-"is not set and <code>set_show_text(True)</code> the text will be the "
-"percentage of the work that has been completed."
-msgstr ""
-"Para establecer un texto y mostrarlo (superpuesto a la barra) use "
-"<code>set_text(<var>\"texto\"</var>)</code> y <code>set_show_text(True)</"
-"code>. Si no se establece un texto y <code>set_show_text(True)</code>, el "
-"texto será el porcentaje del trabajo que se ha completado."
-
-#. (itstool) path: item/p
-#: C/progressbar.py.page:57
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkProgressBar.html"
-"\">GtkProgressBar</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkProgressBar.html"
-"\">GtkProgressBar</link>"
-
-#. (itstool) path: item/p
-#: C/progressbar.py.page:58
-msgid ""
-"<link href=\"http://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop."
-"html\">GLib - The Main Event Loop</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop."
-"html\">GLib: el bucle de eventos principal</link>"
-
-#. (itstool) path: item/p
-#: C/progressbar.py.page:59
-msgid ""
-"<link href=\"http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling"
-"\">Gdk - Key Values</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling"
-"\">Gdk: valores de teclas</link>"
-
-#. (itstool) path: info/title
-#: C/progressbar.vala.page:8
-msgctxt "text"
-msgid "ProgressBar (Vala)"
-msgstr "ProgressBar (Vala)"
-
-#. (itstool) path: page/code
-#: C/progressbar.vala.page:25
-#, no-wrap
-msgid ""
-"public class MyApplication : Gtk.Application {\n"
-"\n"
-"\tGtk.ProgressBar progress_bar;\n"
-"\n"
-"\tprotected override void activate () {\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.set_title (\"ProgressBar Example\");\n"
-"\t\twindow.set_default_size (220, 20);\n"
-"\n"
-"\t\tprogress_bar = new Gtk.ProgressBar ();\n"
-"\t\twindow.add (progress_bar);\n"
-"\t\twindow.show_all ();\n"
-"\n"
-"\t\tdouble fraction = 0.0;\n"
-"\t\tprogress_bar.set_fraction (fraction);\n"
-"\t\tGLib.Timeout.add (500, fill);\n"
-"\t}\n"
-"\n"
-"\tbool fill () {\n"
-"\t\tdouble fraction = progress_bar.get_fraction (); //get current progress\n"
-"\t\tfraction += 0.1; //increase by 10% each time this function is called\n"
-"\n"
-"\t\tprogress_bar.set_fraction (fraction);\n"
-"\n"
-"\t\t/* This function is only called by GLib.Timeout.add while it returns true; */\n"
-"\t\tif (fraction < 1.0)\n"
-"\t\t\treturn true;\n"
-"\t\treturn false;\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\tvar progress_bar_application = new MyApplication ();\n"
-"\tint status = progress_bar_application.run (args);\n"
-"\treturn status;\n"
-"}\n"
-msgstr ""
-"public class MyApplication : Gtk.Application {\n"
-"\n"
-"\tGtk.ProgressBar progress_bar;\n"
-"\n"
-"\tprotected override void activate () {\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.set_title (\"ProgressBar Example\");\n"
-"\t\twindow.set_default_size (220, 20);\n"
-"\n"
-"\t\tprogress_bar = new Gtk.ProgressBar ();\n"
-"\t\twindow.add (progress_bar);\n"
-"\t\twindow.show_all ();\n"
-"\n"
-"\t\tdouble fraction = 0.0;\n"
-"\t\tprogress_bar.set_fraction (fraction);\n"
-"\t\tGLib.Timeout.add (500, fill);\n"
-"\t}\n"
-"\n"
-"\tbool fill () {\n"
-"\t\tdouble fraction = progress_bar.get_fraction (); //get current progress\n"
-"\t\tfraction += 0.1; //increase by 10% each time this function is called\n"
-"\n"
-"\t\tprogress_bar.set_fraction (fraction);\n"
-"\n"
-"\t\t/* This function is only called by GLib.Timeout.add while it returns true; */\n"
-"\t\tif (fraction < 1.0)\n"
-"\t\t\treturn true;\n"
-"\t\treturn false;\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\tvar progress_bar_application = new MyApplication ();\n"
-"\tint status = progress_bar_application.run (args);\n"
-"\treturn status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/progressbar.vala.page:30
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ProgressBar.html\">Gtk."
-"ProgressBar</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ProgressBar.html\">Gtk."
-"ProgressBar</link>"
-
-#. (itstool) path: item/p
-#: C/progressbar.vala.page:31
-msgid ""
-"<link href=\"http://www.valadoc.org/glib-2.0/GLib.Timeout.html\">GLib."
-"Timeout</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/glib-2.0/GLib.Timeout.html\">GLib."
-"Timeout</link>"
-
-#. (itstool) path: info/title
-#: C/properties.py.page:9
-msgctxt "text"
-msgid "Properties (Python)"
-msgstr "Properties (Python)"
-
-#. (itstool) path: info/desc
-#: C/properties.py.page:14
-msgid "An explanation of properties, getters and setters."
-msgstr "Una explicación de propiedades, funciones de obtención y asignación."
-
-#. (itstool) path: page/title
-#: C/properties.py.page:27
-msgid "Properties"
-msgstr "Propiedades"
-
-#. (itstool) path: section/p
-#: C/properties.py.page:34
-msgid ""
-"<em>Properties</em> describe the configuration and state of widgets. Each "
-"widget has its own particular set of properties. For example, a widget such "
-"as a button has the property <code>label</code> which contains the text of "
-"the widget. You can specify the name and value of any number of properties "
-"as keyword arguments when creating an instance of a widget. For example, to "
-"create a label with the text “Hello World”, an angle of 25 degrees, and "
-"aligned to the right, you can use:"
-msgstr ""
-"Las <em>propiedades</em> describen la configuración y el estado de los "
-"widgets, y cada widget tiene su conjunto particular de propiedades. Por "
-"ejemplo, un widget como un botón o una etiqueta tiene la propiedad "
-"<code>label</code> que contiene el texto del widget. Puede especificar el "
-"nombre y el valor de cualquier número de propiedades como argumentos de "
-"palabras clave cuando cree una instancia de un widget: por ejemplo, para "
-"crear una etiqueta alineada a la derecha con el texto «Hello World» y un "
-"ángulo de 25 grados, puede usar:"
-
-#. (itstool) path: section/code
-#: C/properties.py.page:41
-#, no-wrap
-msgid ""
-"\n"
-"label = Gtk.Label(label=\"Hello World\", angle=25, halign=Gtk.Align.END)"
-msgstr ""
-"\n"
-"label = Gtk.Label(label=\"Hello World\", angle=25, halign=Gtk.Align.END)"
-
-#. (itstool) path: section/p
-#: C/properties.py.page:44
-msgid ""
-"Alternatively, you can define these properties separately by using the "
-"method associated with it."
-msgstr ""
-"Alternativamente, puede definir estas propiedades por separado usando el "
-"método asociado a ellas."
-
-#. (itstool) path: section/code
-#: C/properties.py.page:45
-#, no-wrap
-msgid ""
-"\n"
-"label = Gtk.Label()\n"
-"label.set_label(\"Hello World\")\n"
-"label.set_angle(25)\n"
-"label.set_halign(Gtk.Align.END)"
-msgstr ""
-"\n"
-"label = Gtk.Label()\n"
-"label.set_label(\"Hello World\")\n"
-"label.set_angle(25)\n"
-"label.set_halign(Gtk.Align.END)"
-
-#. (itstool) path: section/p
-#: C/properties.py.page:51
-msgid ""
-"Once you have created such a label, you can get the text of the label with "
-"<code>label.get_label()</code>, and analogously for the other properties."
-msgstr ""
-"Una vez que haya creado esta etiqueta, puede obtener su texto con "
-"<code>label.get_label()</code>, y análogamente para las otras propiedades."
-
-#. (itstool) path: section/p
-#: C/properties.py.page:53
-msgid ""
-"Instead of using getters and setters you can also get and set the properties "
-"with <code>get_property(<var>\"prop-name\"</var>)</code> and "
-"<code>set_property(<var>\"prop-name\"</var>, <var>value</var>)</code>, "
-"respectively."
-msgstr ""
-"En lugar de usar funciones de obtención y asignación, también puede obtener "
-"y establecer las propiedades con <code>get_property(<var>\"nombre-propiedad"
-"\"</var>)</code> y <code>set_property(\"<var>nombre-propiedad</var>\")</"
-"code>, respectivamente."
-
-#. (itstool) path: section/p
-#: C/properties.py.page:59
-msgid ""
-"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/basics."
-"html\">Basics - Properties</link> in Python GTK+ 3 Tutorial"
-msgstr ""
-"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/basics."
-"html\">Conceptos básicos sobre propiedades</link> en el tutorial de GTK+3 "
-"con Python"
-
-#. (itstool) path: info/title
-#: C/py.page:7
-msgctxt "link"
-msgid "Python"
-msgstr "Python"
-
-#. (itstool) path: page/title
-#: C/py.page:21
-msgid "Tutorials, code samples and platform demos in Python"
-msgstr ""
-"Tutoriales, ejemplos de código y demostraciones de la plataforma en Python"
-
-#. (itstool) path: section/title
-#. (itstool) path: page/title
-#: C/py.page:26 C/tutorial.py.page:31
-msgid "Tutorial for beginners"
-msgstr "Tutoriales para principiantes"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/radiobutton.c.page:25 C/radiobutton.py.page:24 C/radiobutton.vala.page:25
-msgctxt "_"
-msgid ""
-"external ref='media/radiobutton.png' md5='d115460280d8e41493dd98054b5822a5'"
-msgstr ""
-"external ref='media/radiobutton.png' md5='d115460280d8e41493dd98054b5822a5'"
-
-#. (itstool) path: info/title
-#: C/radiobutton.c.page:8
-msgctxt "text"
-msgid "RadioButton (C)"
-msgstr "RadioButton (C)"
-
-#. (itstool) path: info/desc
-#: C/radiobutton.c.page:20
-msgid "A choice from multiple checkbuttons"
-msgstr "Una elección desde varios «CheckButton»."
-
-#. (itstool) path: page/title
-#: C/radiobutton.c.page:23 C/radiobutton.js.page:21 C/radiobutton.py.page:23
-#: C/radiobutton.vala.page:24
-msgid "RadioButton"
-msgstr "RadioButton"
-
-#. (itstool) path: page/p
-#: C/radiobutton.c.page:26
-msgid "These radiobuttons report their activity in the terminal."
-msgstr "Estos RadioButton informan de su actividad en la terminal."
-
-#. (itstool) path: page/code
-#: C/radiobutton.c.page:28
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/*Signal handler for the \"toggled\" signal of the RadioButton*/\n"
-"static void\n"
-"button_toggled_cb (GtkWidget *button,\n"
-" gpointer user_data)\n"
-"{\n"
-" char *b_state;\n"
-" const char *button_label;\n"
-"\n"
-" if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))\n"
-" b_state = \"on\";\n"
-" else {\n"
-" b_state = \"off\";\n"
-" g_print (\"\\n\");\n"
-" }\n"
-"\n"
-" button_label = gtk_button_get_label (GTK_BUTTON (button));\n"
-"\n"
-" g_print (\"%s was turned %s\\n\", button_label, b_state);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *grid;\n"
-" GtkWidget *window;\n"
-"\n"
-" GtkWidget *button1;\n"
-" GtkWidget *button2;\n"
-" GtkWidget *button3;\n"
-"\n"
-" /*Create a window with a set title and default size.\n"
-" Also, set a border width for the amount of space to leave\n"
-" inside the window*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"RadioButton Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 250, 100);\n"
-" gtk_container_set_border_width (GTK_CONTAINER(window), 20);\n"
-"\n"
-"\n"
-" /*Create an initial radio button*/\n"
-" button1 = gtk_radio_button_new_with_label (NULL, \"Button 1\");\n"
-"\n"
-" /*Create a second radio button, and add it to the same group as Button 1*/\n"
-" button2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button1), \n"
-" \"Button 2\");\n"
-"\n"
-" /*Create a third button, and add it to the same group as Button 1*/\n"
-" button3 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button1), \n"
-" \"Button 3\");\n"
-"\n"
-"\n"
-" /*Create a grid, attach the buttons, and position them accordingly*/\n"
-" grid = gtk_grid_new ();\n"
-" gtk_grid_attach (GTK_GRID (grid), button1, 0, 0, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), button2, 0, 1, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), button3, 0, 2, 1, 1);\n"
-"\n"
-" /*Be sure to set the initial state of each button*/\n"
-" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button2), TRUE);\n"
-" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button1), FALSE);\n"
-" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button3), FALSE);\n"
-"\n"
-" /*Connect the signal handlers (aka Callback functions) to the buttons*/\n"
-" g_signal_connect (GTK_TOGGLE_BUTTON (button1), \"toggled\", \n"
-" G_CALLBACK (button_toggled_cb), window);\n"
-" g_signal_connect (GTK_TOGGLE_BUTTON (button2), \"toggled\", \n"
-" G_CALLBACK (button_toggled_cb), window);\n"
-" g_signal_connect (GTK_TOGGLE_BUTTON (button3), \"toggled\", \n"
-" G_CALLBACK (button_toggled_cb), window);\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/*Signal handler for the \"toggled\" signal of the RadioButton*/\n"
-"static void\n"
-"button_toggled_cb (GtkWidget *button,\n"
-" gpointer user_data)\n"
-"{\n"
-" char *b_state;\n"
-" const char *button_label;\n"
-"\n"
-" if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))\n"
-" b_state = \"on\";\n"
-" else {\n"
-" b_state = \"off\";\n"
-" g_print (\"\\n\");\n"
-" }\n"
-"\n"
-" button_label = gtk_button_get_label (GTK_BUTTON (button));\n"
-"\n"
-" g_print (\"%s was turned %s\\n\", button_label, b_state);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *grid;\n"
-" GtkWidget *window;\n"
-"\n"
-" GtkWidget *button1;\n"
-" GtkWidget *button2;\n"
-" GtkWidget *button3;\n"
-"\n"
-" /*Create a window with a set title and default size.\n"
-" Also, set a border width for the amount of space to leave\n"
-" inside the window*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"RadioButton Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 250, 100);\n"
-" gtk_container_set_border_width (GTK_CONTAINER(window), 20);\n"
-"\n"
-"\n"
-" /*Create an initial radio button*/\n"
-" button1 = gtk_radio_button_new_with_label (NULL, \"Button 1\");\n"
-"\n"
-" /*Create a second radio button, and add it to the same group as Button 1*/\n"
-" button2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button1), \n"
-" \"Button 2\");\n"
-"\n"
-" /*Create a third button, and add it to the same group as Button 1*/\n"
-" button3 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button1), \n"
-" \"Button 3\");\n"
-"\n"
-"\n"
-" /*Create a grid, attach the buttons, and position them accordingly*/\n"
-" grid = gtk_grid_new ();\n"
-" gtk_grid_attach (GTK_GRID (grid), button1, 0, 0, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), button2, 0, 1, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), button3, 0, 2, 1, 1);\n"
-"\n"
-" /*Be sure to set the initial state of each button*/\n"
-" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button2), TRUE);\n"
-" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button1), FALSE);\n"
-" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button3), FALSE);\n"
-"\n"
-" /*Connect the signal handlers (aka Callback functions) to the buttons*/\n"
-" g_signal_connect (GTK_TOGGLE_BUTTON (button1), \"toggled\", \n"
-" G_CALLBACK (button_toggled_cb), window);\n"
-" g_signal_connect (GTK_TOGGLE_BUTTON (button2), \"toggled\", \n"
-" G_CALLBACK (button_toggled_cb), window);\n"
-" g_signal_connect (GTK_TOGGLE_BUTTON (button3), \"toggled\", \n"
-" G_CALLBACK (button_toggled_cb), window);\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/radiobutton.c.page:38 C/switch.c.page:36
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkSwitch.html"
-"\">GtkSwitch</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkSwitch.html"
-"\">GtkSwitch</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/radiobutton.js.page:22
-msgctxt "_"
-msgid ""
-"external ref='media/radiobuttontravel.png' "
-"md5='0c5f01ee160bb42716ccf5dccbd080c0'"
-msgstr ""
-"external ref='media/radiobuttontravel.png' "
-"md5='0c5f01ee160bb42716ccf5dccbd080c0'"
-
-#. (itstool) path: info/title
-#: C/radiobutton.js.page:8
-msgctxt "text"
-msgid "RadioButton (JavaScript)"
-msgstr "RadioButton (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/radiobutton.js.page:18
-msgid "Only one can be selected at a time"
-msgstr "Sólo se puede seleccionar uno a la vez"
-
-#. (itstool) path: page/p
-#: C/radiobutton.js.page:23
-msgid ""
-"RadioButtons are named after old-style car radios, which had buttons for "
-"switching between channel presets. Because the radio could only be tuned to "
-"one station at a time, only one button could be pressed in at a time; if you "
-"pressed a new one, the one that was already pressed in would pop back out. "
-"That's how these buttons work, too."
-msgstr ""
-"Los botones de radio se llaman así por las radios de los coches viejos, que "
-"tenían botones para alternar entre canales programados. Dado que la radio "
-"sólo podía sintonizar una estación a la vez, sólo se podía apretar un botón "
-"por vez; si presionaba uno nuevo, el que ya estaba presionado saltaba. Así "
-"es como estos botones funcionan."
-
-#. (itstool) path: page/p
-#: C/radiobutton.js.page:24
-msgid ""
-"Each RadioButton needs a text label and a group. Only one button in a group "
-"can be selected at a time. You don't name each group; you just set new "
-"RadioButtons to be part of the same group as an existing one. If you create "
-"a new one outside of a group, it automatically creates a new group for it to "
-"be part of."
-msgstr ""
-"Cada botón de radio necesita una etiqueta de texto y un grupo. Sólo se puede "
-"seleccionar un botón de cada grupo por vez. No necesita nombrar cada grupo; "
-"sólo configure varios botones de radio para que sean parte del mismo grupo "
-"que otro existente. Si crea uno nuevo fuera de un grupo, automáticamente "
-"crea un grupo nuevo para que forme parte."
-
-#. (itstool) path: section/code
-#: C/radiobutton.js.page:41
-#, no-wrap
-msgid ""
-"\n"
-"const RadioButtonExample = new Lang.Class({\n"
-" Name: 'RadioButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsradiobutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-"const RadioButtonExample = new Lang.Class({\n"
-" Name: 'RadioButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsradiobutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/radiobutton.js.page:67 C/togglebutton.js.page:67
-msgid ""
-"All the code for this sample goes in the RadioButtonExample class. The above "
-"code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> for our widgets and window to "
-"go in."
-msgstr ""
-"Todo el código de este ejemplo va en la clase RadioButtonExample. El código "
-"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> para que vayan los widgets y "
-"la ventana."
-
-#. (itstool) path: section/code
-#: C/radiobutton.js.page:68
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Travel Planning\"});\n"
-msgstr ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Travel Planning\"});\n"
-
-#. (itstool) path: section/title
-#: C/radiobutton.js.page:83
-msgid "Creating the radiobuttons"
-msgstr "Crear los botones de radio"
-
-#. (itstool) path: section/code
-#: C/radiobutton.js.page:84
-#, no-wrap
-msgid ""
-"\n"
-" // Create a label for the first group of buttons\n"
-" this._placeLabel = new Gtk.Label ({label: \"Where would you like to travel to?\"});\n"
-msgstr ""
-"\n"
-" // Create a label for the first group of buttons\n"
-" this._placeLabel = new Gtk.Label ({label: \"Where would you like to travel to?\"});\n"
-
-#. (itstool) path: section/p
-#: C/radiobutton.js.page:89
-msgid ""
-"We use a <link xref=\"label.js\">Gtk.Label</link> to set each group of "
-"RadioButtons apart. Nothing will stop you from putting RadioButtons from all "
-"different groups wherever you want, so if you want people to know which ones "
-"go together you need to organize things accordingly."
-msgstr ""
-"Se usa una <link xref=\"label.js\">Gtk.Label</link> para diferenciar cada "
-"grupo de botones de radio. Nada le impedirá poner botones de radio de grupos "
-"diferentes donde quiera, así que si quiere que la gente sepa cuáles van "
-"juntos, necesita ordenar las cosas adecuadamente."
-
-#. (itstool) path: section/code
-#: C/radiobutton.js.page:91
-#, no-wrap
-msgid ""
-"\n"
-" // Create three radio buttons three different ways\n"
-" this._place1 = new Gtk.RadioButton ({label: \"The Beach\"});\n"
-"\n"
-" this._place2 = Gtk.RadioButton.new_from_widget (this._place1);\n"
-" this._place2.set_label (\"The Moon\");\n"
-"\n"
-" this._place3 = Gtk.RadioButton.new_with_label_from_widget (this._place1, \"Antarctica\");\n"
-" // this._place3.set_active (true);\n"
-msgstr ""
-"\n"
-" // Create three radio buttons three different ways\n"
-" this._place1 = new Gtk.RadioButton ({label: \"The Beach\"});\n"
-"\n"
-" this._place2 = Gtk.RadioButton.new_from_widget (this._place1);\n"
-" this._place2.set_label (\"The Moon\");\n"
-"\n"
-" this._place3 = Gtk.RadioButton.new_with_label_from_widget (this._place1, \"Antarctica\");\n"
-" // this._place3.set_active (true);\n"
-
-#. (itstool) path: section/p
-#: C/radiobutton.js.page:102
-msgid ""
-"Here are three different ways to create RadioButtons. The first is the usual "
-"way, where we create a new Gtk.RadioButton and assign its properties at the "
-"same time. The second and third use functions which automatically handle "
-"some of the properties; new_from_widget takes a single argument, the "
-"RadioButton that you want to put this new one in the same group as. "
-"Meanwhile, new_with_label_from_widget takes that and the RadioButton's label "
-"at the same time."
-msgstr ""
-"Aquí hay tres maneras diferentes de crear botones de radio. La primera es la "
-"manera común, donde se crea un «Gtk.RadioButton» nuevo y se le asignan sus "
-"propiedades al mismo tiempo. La segunda y la tercera usan funciones que "
-"manejan algunas de sus propiedades automáticamente; «new_from_widget» toma un "
-"solo argumento, un botón de radio del mismo grupo en el que quiere poner el "
-"nuevo. «new_with_label_from_widget», además, toma eso y la etiqueta del botón "
-"de radio al mismo tiempo."
-
-#. (itstool) path: section/p
-#: C/radiobutton.js.page:103
-msgid ""
-"The first RadioButton in a group is the one that's selected by default. Try "
-"uncommenting the last line in this sample code to see how you can set a "
-"different one to be the default selection."
-msgstr ""
-"El primer botón de radio en un grupo es el que está seleccionado de manera "
-"predeterminada. Pruebe a descomentar la última línea en este código de "
-"ejemplo para ver cómo puede configurar uno diferente para que sea la "
-"selección predeterminada."
-
-#. (itstool) path: section/code
-#: C/radiobutton.js.page:105
-#, no-wrap
-msgid ""
-"\n"
-" // Create a label for the second group of buttons\n"
-" this._thingLabel = new Gtk.Label ({label: \"And what would you like to bring?\" });\n"
-"\n"
-" // Create three more radio buttons\n"
-" this._thing1 = new Gtk.RadioButton ({label: \"Penguins\" });\n"
-" this._thing2 = new Gtk.RadioButton ({label: \"Sunscreen\", group: this._thing1 });\n"
-" this._thing3 = new Gtk.RadioButton ({label: \"A spacesuit\", group: this._thing1 });\n"
-msgstr ""
-"\n"
-" // Create a label for the second group of buttons\n"
-" this._thingLabel = new Gtk.Label ({label: \"And what would you like to bring?\" });\n"
-"\n"
-" // Create three more radio buttons\n"
-" this._thing1 = new Gtk.RadioButton ({label: \"Penguins\" });\n"
-" this._thing2 = new Gtk.RadioButton ({label: \"Sunscreen\", group: this._thing1 });\n"
-" this._thing3 = new Gtk.RadioButton ({label: \"A spacesuit\", group: this._thing1 });\n"
-
-#. (itstool) path: section/p
-#: C/radiobutton.js.page:114
-msgid ""
-"Here we create the label for the second group of buttons, and then create "
-"them all the same way."
-msgstr ""
-"Aquí se crea la etiqueta para el segundo grupo de botones, y después se "
-"crean todos de la misma manera."
-
-#. (itstool) path: section/title
-#: C/radiobutton.js.page:118 C/textview.js.page:132
-msgid "Creating the rest of the user interface"
-msgstr "Crear el resto de la interfaz de usuario"
-
-#. (itstool) path: section/code
-#: C/radiobutton.js.page:120
-#, no-wrap
-msgid ""
-"\n"
-" // Create a stock OK button\n"
-" this._okButton = new Gtk.Button ({\n"
-" label: 'gtk-ok',\n"
-" use_stock: 'true',\n"
-" halign: Gtk.Align.END });\n"
-"\n"
-" // Connect the button to the function which handles clicking it\n"
-" this._okButton.connect ('clicked', Lang.bind (this, this._okClicked));\n"
-msgstr ""
-"\n"
-" // Create a stock OK button\n"
-" this._okButton = new Gtk.Button ({\n"
-" label: 'gtk-ok',\n"
-" use_stock: 'true',\n"
-" halign: Gtk.Align.END });\n"
-"\n"
-" // Connect the button to the function which handles clicking it\n"
-" this._okButton.connect ('clicked', Lang.bind (this, this._okClicked));\n"
-
-#. (itstool) path: section/p
-#: C/radiobutton.js.page:130
-msgid ""
-"This code creates a <link xref=\"button.js\">Gtk.Button</link> and binds it "
-"to a function which will show people a silly message when they click OK, "
-"depending on which RadioButtons were selected."
-msgstr ""
-"Este código crea un <link xref=\"button.js\">Gtk.Button</link> y lo enlaza a "
-"una función que mostrará un mensaje tonto cuando pulse «OK», dependiendo de "
-"qué botones de radio se seleccionaron."
-
-#. (itstool) path: section/p
-#: C/radiobutton.js.page:131
-msgid ""
-"To make sure the button's \"OK\" label shows up properly in every language "
-"that GNOME is translated into, remember to use one of Gtk's <link href="
-"\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html\">stock button "
-"types</link>."
-msgstr ""
-"Para asegurarse de que la etiqueta «OK» del botón se muestra correctamente en "
-"cada idioma al que se traduce GNOME, recuerde usar uno de los <link href="
-"\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html\">tipos de "
-"botón del almacén</link> de GTK+."
-
-#. (itstool) path: section/code
-#: C/radiobutton.js.page:133
-#, no-wrap
-msgid ""
-"\n"
-" // Create a grid to put the \"place\" items in\n"
-" this._places = new Gtk.Grid ();\n"
-"\n"
-" // Attach the \"place\" items to the grid\n"
-" this._places.attach (this._placeLabel, 0, 0, 1, 1);\n"
-" this._places.attach (this._place1, 0, 1, 1, 1);\n"
-" this._places.attach (this._place2, 0, 2, 1, 1);\n"
-" this._places.attach (this._place3, 0, 3, 1, 1);\n"
-"\n"
-" // Create a grid to put the \"thing\" items in\n"
-" this._things = new Gtk.Grid ({ margin_top: 50 });\n"
-"\n"
-" // Attach the \"thing\" items to the grid\n"
-" this._things.attach (this._thingLabel, 0, 0, 1, 1);\n"
-" this._things.attach (this._thing1, 0, 1, 1, 1);\n"
-" this._things.attach (this._thing2, 0, 2, 1, 1);\n"
-" this._things.attach (this._thing3, 0, 3, 1, 1);\n"
-"\n"
-" // Create a grid to put everything in\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_left: 40,\n"
-" margin_right: 50 });\n"
-"\n"
-" // Attach everything to the grid\n"
-" this._grid.attach (this._places, 0, 0, 1, 1);\n"
-" this._grid.attach (this._things, 0, 1, 1, 1);\n"
-" this._grid.attach (this._okButton, 0, 2, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-msgstr ""
-"\n"
-" // Create a grid to put the \"place\" items in\n"
-" this._places = new Gtk.Grid ();\n"
-"\n"
-" // Attach the \"place\" items to the grid\n"
-" this._places.attach (this._placeLabel, 0, 0, 1, 1);\n"
-" this._places.attach (this._place1, 0, 1, 1, 1);\n"
-" this._places.attach (this._place2, 0, 2, 1, 1);\n"
-" this._places.attach (this._place3, 0, 3, 1, 1);\n"
-"\n"
-" // Create a grid to put the \"thing\" items in\n"
-" this._things = new Gtk.Grid ({ margin_top: 50 });\n"
-"\n"
-" // Attach the \"thing\" items to the grid\n"
-" this._things.attach (this._thingLabel, 0, 0, 1, 1);\n"
-" this._things.attach (this._thing1, 0, 1, 1, 1);\n"
-" this._things.attach (this._thing2, 0, 2, 1, 1);\n"
-" this._things.attach (this._thing3, 0, 3, 1, 1);\n"
-"\n"
-" // Create a grid to put everything in\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_left: 40,\n"
-" margin_right: 50 });\n"
-"\n"
-" // Attach everything to the grid\n"
-" this._grid.attach (this._places, 0, 0, 1, 1);\n"
-" this._grid.attach (this._things, 0, 1, 1, 1);\n"
-" this._grid.attach (this._okButton, 0, 2, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-
-#. (itstool) path: section/p
-#: C/radiobutton.js.page:167
-msgid ""
-"We use a separate <link xref=\"grid.js\">Gtk.Grid</link> to organize each "
-"group of radio buttons. This way we can change the layout with less fuss "
-"later on. The second Grid has a margin on top, to visually separate the two "
-"sets of choices."
-msgstr ""
-"Se usa una <link xref=\"grid.js\">Gtk.Grid</link> separada para organizar "
-"cada grupo de botones de radio. De esta manera se puede cambiar la "
-"distribución sin liarse más adelante. La segunda rejilla tiene un margen en "
-"la parte superior, para separar visualmente los dos conjuntos de opciones."
-
-#. (itstool) path: section/p
-#: C/radiobutton.js.page:168
-msgid ""
-"After we've organized them, we put them into a third, master Grid, along "
-"with the OK button. Then we attach that to the window."
-msgstr ""
-"Después de haberlos organizado, se ponen en una tercera rejilla maestra, "
-"junto con el botón «OK». Luego se adjuntan a la ventana."
-
-#. (itstool) path: section/p
-#: C/radiobutton.js.page:176
-msgid ""
-"Finally, we tell the window and everything inside it to become visible when "
-"the application is run."
-msgstr ""
-"Finalmente, se le dice a la ventana y a todo dentro que se vuelva visible "
-"cuando se ejecute la aplicación."
-
-#. (itstool) path: section/code
-#: C/radiobutton.js.page:182
-#, no-wrap
-msgid ""
-"\n"
-" _okClicked: function () {\n"
-"\n"
-" // Create a popup that shows a silly message\n"
-" this._travel = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" message_type: Gtk.MessageType.OTHER,\n"
-" buttons: Gtk.ButtonsType.OK,\n"
-" text: this._messageText() });\n"
-"\n"
-" // Show the popup\n"
-" this._travel.show();\n"
-"\n"
-" // Bind the OK button to the function that closes the popup\n"
-" this._travel.connect (\"response\", Lang.bind (this, this._clearTravelPopUp));\n"
-"\n"
-" },\n"
-msgstr ""
-"\n"
-" _okClicked: function () {\n"
-"\n"
-" // Create a popup that shows a silly message\n"
-" this._travel = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" message_type: Gtk.MessageType.OTHER,\n"
-" buttons: Gtk.ButtonsType.OK,\n"
-" text: this._messageText() });\n"
-"\n"
-" // Show the popup\n"
-" this._travel.show();\n"
-"\n"
-" // Bind the OK button to the function that closes the popup\n"
-" this._travel.connect (\"response\", Lang.bind (this, this._clearTravelPopUp));\n"
-"\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/radiobutton.js.page:201
-msgid ""
-"When you click OK, a <link xref=\"messagedialog.js\">Gtk.MessageDialog</"
-"link> appears. This function creates and displays the popup window, then "
-"binds its OK button to a function that closes it. What text appears in the "
-"popup depends on the _messageText() function, which returns a different "
-"value depending on which set of options you chose."
-msgstr ""
-"Cuando pulsa «OK», aparece un <link xref=\"messagedialog.js\">Gtk."
-"MessageDialog</link>. Esta función crea y muestra la ventana emergente, "
-"después enlaza su botón «OK» a una función que la cierra. Qué texto aparece "
-"en el mensaje emergente depende de la función «_messageText()», que devuelve "
-"un valor diferente dependiendo de qué conjunto de opciones elija."
-
-#. (itstool) path: section/code
-#: C/radiobutton.js.page:203
-#, no-wrap
-msgid ""
-"\n"
-" _messageText: function() {\n"
-"\n"
-" // Create a silly message for the popup depending on what you selected\n"
-" var stringMessage = \"\";\n"
-"\n"
-" if (this._place1.get_active()) {\n"
-"\n"
-" if (this._thing1.get_active())\n"
-" stringMessage = \"Penguins love the beach, too!\";\n"
-"\n"
-" else if (this._thing2.get_active())\n"
-" stringMessage = \"Make sure to put on that sunscreen!\";\n"
-"\n"
-" else stringMessage = \"Are you going to the beach in space?\";\n"
-"\n"
-" }\n"
-"\n"
-" else if (this._place2.get_active()) {\n"
-"\n"
-" if (this._thing1.get_active())\n"
-" stringMessage = \"The penguins will take over the moon!\";\n"
-"\n"
-" else if (this._thing2.get_active())\n"
-" stringMessage = \"A lack of sunscreen will be the least of your problems!\";\n"
-"\n"
-" else stringMessage = \"You'll probably want a spaceship, too!\";\n"
-" }\n"
-"\n"
-" else if (this._place3.get_active()) {\n"
-"\n"
-" if (this._thing1.get_active())\n"
-" stringMessage = \"The penguins will be happy to be back home!\";\n"
-"\n"
-" else if (this._thing2.get_active())\n"
-" stringMessage = \"Antarctic sunbathing may be hazardous to your health!\";\n"
-"\n"
-" else stringMessage = \"Try bringing a parka instead!\";\n"
-" }\n"
-"\n"
-" return stringMessage;\n"
-"\n"
-" },\n"
-msgstr ""
-"\n"
-" _messageText: function() {\n"
-"\n"
-" // Create a silly message for the popup depending on what you selected\n"
-" var stringMessage = \"\";\n"
-"\n"
-" if (this._place1.get_active()) {\n"
-"\n"
-" if (this._thing1.get_active())\n"
-" stringMessage = \"Penguins love the beach, too!\";\n"
-"\n"
-" else if (this._thing2.get_active())\n"
-" stringMessage = \"Make sure to put on that sunscreen!\";\n"
-"\n"
-" else stringMessage = \"Are you going to the beach in space?\";\n"
-"\n"
-" }\n"
-"\n"
-" else if (this._place2.get_active()) {\n"
-"\n"
-" if (this._thing1.get_active())\n"
-" stringMessage = \"The penguins will take over the moon!\";\n"
-"\n"
-" else if (this._thing2.get_active())\n"
-" stringMessage = \"A lack of sunscreen will be the least of your problems!\";\n"
-"\n"
-" else stringMessage = \"You'll probably want a spaceship, too!\";\n"
-" }\n"
-"\n"
-" else if (this._place3.get_active()) {\n"
-"\n"
-" if (this._thing1.get_active())\n"
-" stringMessage = \"The penguins will be happy to be back home!\";\n"
-"\n"
-" else if (this._thing2.get_active())\n"
-" stringMessage = \"Antarctic sunbathing may be hazardous to your health!\";\n"
-"\n"
-" else stringMessage = \"Try bringing a parka instead!\";\n"
-" }\n"
-"\n"
-" return stringMessage;\n"
-"\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/radiobutton.js.page:247
-msgid ""
-"The get_active() method is how we can tell which RadioButton's pressed in. "
-"This function returns a different silly message depending on which set of "
-"buttons was pressed. Its return value is used as the MessageDialog's text "
-"property."
-msgstr ""
-"El método «get_active()» indica qué botón de radio está presionado. Esta "
-"función devuelve un mensaje tonto diferente dependiendo de qué conjunto de "
-"botones se presionó. Su valor de retorno se usa como propiedad «text» del "
-"«MessageDialog»."
-
-#. (itstool) path: section/code
-#: C/radiobutton.js.page:249
-#, no-wrap
-msgid ""
-"\n"
-" _clearTravelPopUp: function () {\n"
-"\n"
-" this._travel.destroy();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-msgstr ""
-"\n"
-" _clearTravelPopUp: function () {\n"
-"\n"
-" this._travel.destroy();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-
-#. (itstool) path: section/p
-#: C/radiobutton.js.page:258
-msgid ""
-"This function is called when the MessageDialog's OK button is pressed. It "
-"simply makes the popup go away."
-msgstr ""
-"Esta función se llama cuando se presiona el botón «OK» del «MessageDialog». "
-"Simplemente hace desaparecer el diálogo emergente."
-
-#. (itstool) path: section/code
-#: C/radiobutton.js.page:260
-#, no-wrap
-msgid ""
-"\n"
-"// Run the application\n"
-"let app = new RadioButtonExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"// Run the application\n"
-"let app = new RadioButtonExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/p
-#: C/radiobutton.js.page:265 C/togglebutton.js.page:144
-msgid ""
-"Finally, we create a new instance of the finished RadioButtonExample class, "
-"and set the application running."
-msgstr ""
-"Finalmente, se crea una instancia nueva de la clase RadioButtonExample "
-"terminada, y se ejecuta la aplicación."
-
-#. (itstool) path: section/code
-#: C/radiobutton.js.page:270
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const RadioButtonExample = new Lang.Class({\n"
-" Name: 'RadioButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsradiobutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Travel Planning\"});\n"
-"\n"
-" // Create a label for the first group of buttons\n"
-" this._placeLabel = new Gtk.Label ({label: \"Where would you like to travel to?\"});\n"
-"\n"
-" // Create three radio buttons three different ways\n"
-" this._place1 = new Gtk.RadioButton ({label: \"The Beach\"});\n"
-"\n"
-" this._place2 = Gtk.RadioButton.new_from_widget (this._place1);\n"
-" this._place2.set_label (\"The Moon\");\n"
-"\n"
-" this._place3 = Gtk.RadioButton.new_with_label_from_widget (this._place1, \"Antarctica\");\n"
-" // this._place3.set_active (true);\n"
-"\n"
-" // Create a label for the second group of buttons\n"
-" this._thingLabel = new Gtk.Label ({label: \"And what would you like to bring?\" });\n"
-"\n"
-" // Create three more radio buttons\n"
-" this._thing1 = new Gtk.RadioButton ({label: \"Penguins\" });\n"
-" this._thing2 = new Gtk.RadioButton ({label: \"Sunscreen\", group: this._thing1 });\n"
-" this._thing3 = new Gtk.RadioButton ({label: \"A spacesuit\", group: this._thing1 });\n"
-"\n"
-" // Create a stock OK button\n"
-" this._okButton = new Gtk.Button ({\n"
-" label: 'gtk-ok',\n"
-" use_stock: 'true',\n"
-" halign: Gtk.Align.END });\n"
-"\n"
-" // Connect the button to the function which handles clicking it\n"
-" this._okButton.connect ('clicked', Lang.bind (this, this._okClicked));\n"
-"\n"
-" // Create a grid to put the \"place\" items in\n"
-" this._places = new Gtk.Grid ();\n"
-"\n"
-" // Attach the \"place\" items to the grid\n"
-" this._places.attach (this._placeLabel, 0, 0, 1, 1);\n"
-" this._places.attach (this._place1, 0, 1, 1, 1);\n"
-" this._places.attach (this._place2, 0, 2, 1, 1);\n"
-" this._places.attach (this._place3, 0, 3, 1, 1);\n"
-"\n"
-" // Create a grid to put the \"thing\" items in\n"
-" this._things = new Gtk.Grid ({ margin_top: 50 });\n"
-"\n"
-" // Attach the \"thing\" items to the grid\n"
-" this._things.attach (this._thingLabel, 0, 0, 1, 1);\n"
-" this._things.attach (this._thing1, 0, 1, 1, 1);\n"
-" this._things.attach (this._thing2, 0, 2, 1, 1);\n"
-" this._things.attach (this._thing3, 0, 3, 1, 1);\n"
-"\n"
-" // Create a grid to put everything in\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_left: 40,\n"
-" margin_right: 50 });\n"
-"\n"
-" // Attach everything to the grid\n"
-" this._grid.attach (this._places, 0, 0, 1, 1);\n"
-" this._grid.attach (this._things, 0, 1, 1, 1);\n"
-" this._grid.attach (this._okButton, 0, 2, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _okClicked: function () {\n"
-"\n"
-" // Create a popup that shows a silly message\n"
-" this._travel = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" message_type: Gtk.MessageType.OTHER,\n"
-" buttons: Gtk.ButtonsType.OK,\n"
-" text: this._messageText() });\n"
-"\n"
-" // Show the popup\n"
-" this._travel.show();\n"
-"\n"
-" // Bind the OK button to the function that closes the popup\n"
-" this._travel.connect (\"response\", Lang.bind (this, this._clearTravelPopUp));\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _messageText: function() {\n"
-"\n"
-" // Create a silly message for the popup depending on what you selected\n"
-" var stringMessage = \"\";\n"
-"\n"
-" if (this._place1.get_active()) {\n"
-"\n"
-" if (this._thing1.get_active())\n"
-" stringMessage = \"Penguins love the beach, too!\";\n"
-"\n"
-" else if (this._thing2.get_active())\n"
-" stringMessage = \"Make sure to put on that sunscreen!\";\n"
-"\n"
-" else stringMessage = \"Are you going to the beach in space?\";\n"
-"\n"
-" }\n"
-"\n"
-" else if (this._place2.get_active()) {\n"
-"\n"
-" if (this._thing1.get_active())\n"
-" stringMessage = \"The penguins will take over the moon!\";\n"
-"\n"
-" else if (this._thing2.get_active())\n"
-" stringMessage = \"A lack of sunscreen will be the least of your problems!\";\n"
-"\n"
-" else stringMessage = \"You'll probably want a spaceship, too!\";\n"
-" }\n"
-"\n"
-" else if (this._place3.get_active()) {\n"
-"\n"
-" if (this._thing1.get_active())\n"
-" stringMessage = \"The penguins will be happy to be back home!\";\n"
-"\n"
-" else if (this._thing2.get_active())\n"
-" stringMessage = \"Antarctic sunbathing may be hazardous to your health!\";\n"
-"\n"
-" else stringMessage = \"Try bringing a parka instead!\";\n"
-" }\n"
-"\n"
-" return stringMessage;\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-"\n"
-" _clearTravelPopUp: function () {\n"
-"\n"
-" this._travel.destroy();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new RadioButtonExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const RadioButtonExample = new Lang.Class({\n"
-" Name: 'RadioButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsradiobutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Travel Planning\"});\n"
-"\n"
-" // Create a label for the first group of buttons\n"
-" this._placeLabel = new Gtk.Label ({label: \"Where would you like to travel to?\"});\n"
-"\n"
-" // Create three radio buttons three different ways\n"
-" this._place1 = new Gtk.RadioButton ({label: \"The Beach\"});\n"
-"\n"
-" this._place2 = Gtk.RadioButton.new_from_widget (this._place1);\n"
-" this._place2.set_label (\"The Moon\");\n"
-"\n"
-" this._place3 = Gtk.RadioButton.new_with_label_from_widget (this._place1, \"Antarctica\");\n"
-" // this._place3.set_active (true);\n"
-"\n"
-" // Create a label for the second group of buttons\n"
-" this._thingLabel = new Gtk.Label ({label: \"And what would you like to bring?\" });\n"
-"\n"
-" // Create three more radio buttons\n"
-" this._thing1 = new Gtk.RadioButton ({label: \"Penguins\" });\n"
-" this._thing2 = new Gtk.RadioButton ({label: \"Sunscreen\", group: this._thing1 });\n"
-" this._thing3 = new Gtk.RadioButton ({label: \"A spacesuit\", group: this._thing1 });\n"
-"\n"
-" // Create a stock OK button\n"
-" this._okButton = new Gtk.Button ({\n"
-" label: 'gtk-ok',\n"
-" use_stock: 'true',\n"
-" halign: Gtk.Align.END });\n"
-"\n"
-" // Connect the button to the function which handles clicking it\n"
-" this._okButton.connect ('clicked', Lang.bind (this, this._okClicked));\n"
-"\n"
-" // Create a grid to put the \"place\" items in\n"
-" this._places = new Gtk.Grid ();\n"
-"\n"
-" // Attach the \"place\" items to the grid\n"
-" this._places.attach (this._placeLabel, 0, 0, 1, 1);\n"
-" this._places.attach (this._place1, 0, 1, 1, 1);\n"
-" this._places.attach (this._place2, 0, 2, 1, 1);\n"
-" this._places.attach (this._place3, 0, 3, 1, 1);\n"
-"\n"
-" // Create a grid to put the \"thing\" items in\n"
-" this._things = new Gtk.Grid ({ margin_top: 50 });\n"
-"\n"
-" // Attach the \"thing\" items to the grid\n"
-" this._things.attach (this._thingLabel, 0, 0, 1, 1);\n"
-" this._things.attach (this._thing1, 0, 1, 1, 1);\n"
-" this._things.attach (this._thing2, 0, 2, 1, 1);\n"
-" this._things.attach (this._thing3, 0, 3, 1, 1);\n"
-"\n"
-" // Create a grid to put everything in\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_left: 40,\n"
-" margin_right: 50 });\n"
-"\n"
-" // Attach everything to the grid\n"
-" this._grid.attach (this._places, 0, 0, 1, 1);\n"
-" this._grid.attach (this._things, 0, 1, 1, 1);\n"
-" this._grid.attach (this._okButton, 0, 2, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _okClicked: function () {\n"
-"\n"
-" // Create a popup that shows a silly message\n"
-" this._travel = new Gtk.MessageDialog ({\n"
-" transient_for: this._window,\n"
-" modal: true,\n"
-" message_type: Gtk.MessageType.OTHER,\n"
-" buttons: Gtk.ButtonsType.OK,\n"
-" text: this._messageText() });\n"
-"\n"
-" // Show the popup\n"
-" this._travel.show();\n"
-"\n"
-" // Bind the OK button to the function that closes the popup\n"
-" this._travel.connect (\"response\", Lang.bind (this, this._clearTravelPopUp));\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _messageText: function() {\n"
-"\n"
-" // Create a silly message for the popup depending on what you selected\n"
-" var stringMessage = \"\";\n"
-"\n"
-" if (this._place1.get_active()) {\n"
-"\n"
-" if (this._thing1.get_active())\n"
-" stringMessage = \"Penguins love the beach, too!\";\n"
-"\n"
-" else if (this._thing2.get_active())\n"
-" stringMessage = \"Make sure to put on that sunscreen!\";\n"
-"\n"
-" else stringMessage = \"Are you going to the beach in space?\";\n"
-"\n"
-" }\n"
-"\n"
-" else if (this._place2.get_active()) {\n"
-"\n"
-" if (this._thing1.get_active())\n"
-" stringMessage = \"The penguins will take over the moon!\";\n"
-"\n"
-" else if (this._thing2.get_active())\n"
-" stringMessage = \"A lack of sunscreen will be the least of your problems!\";\n"
-"\n"
-" else stringMessage = \"You'll probably want a spaceship, too!\";\n"
-" }\n"
-"\n"
-" else if (this._place3.get_active()) {\n"
-"\n"
-" if (this._thing1.get_active())\n"
-" stringMessage = \"The penguins will be happy to be back home!\";\n"
-"\n"
-" else if (this._thing2.get_active())\n"
-" stringMessage = \"Antarctic sunbathing may be hazardous to your health!\";\n"
-"\n"
-" else stringMessage = \"Try bringing a parka instead!\";\n"
-" }\n"
-"\n"
-" return stringMessage;\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-"\n"
-" _clearTravelPopUp: function () {\n"
-"\n"
-" this._travel.destroy();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new RadioButtonExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/radiobutton.js.page:278 C/statusbar.js.page:225 C/textview.js.page:252
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html"
-"\">Gtk.Button</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html"
-"\">Gtk.Button</link>"
-
-#. (itstool) path: item/p
-#: C/radiobutton.js.page:279 C/scale.js.page:213 C/spinbutton.js.page:204
-#: C/switch.js.page:270 C/textview.js.page:253 C/togglebutton.js.page:157
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html"
-"\">Gtk.Grid</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html"
-"\">Gtk.Grid</link>"
-
-#. (itstool) path: item/p
-#: C/radiobutton.js.page:280 C/scale.js.page:214 C/spinbutton.js.page:205
-#: C/switch.js.page:272 C/textview.js.page:254
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Label.html"
-"\">Gtk.Label</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Label.html"
-"\">Gtk.Label</link>"
-
-#. (itstool) path: item/p
-#: C/radiobutton.js.page:281 C/textview.js.page:255
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.RadioButton."
-"html\">Gtk.RadioButton</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.RadioButton."
-"html\">Gtk.RadioButton</link>"
-
-#. (itstool) path: info/title
-#: C/radiobutton.py.page:8
-msgctxt "text"
-msgid "RadioButton (Python)"
-msgstr "RadioButton (Python)"
-
-#. (itstool) path: info/desc
-#: C/radiobutton.py.page:20
-msgid "Mutually exclusive buttons."
-msgstr "Botones mutuamente excluyentes."
-
-#. (itstool) path: page/p
-#: C/radiobutton.py.page:25
-msgid ""
-"Three RadioButtons. You can see in the terminal if they are turned off or on."
-msgstr "Tres «RadioButton». Puede ver en la terminal si están activados o no."
-
-#. (itstool) path: section/code
-#: C/radiobutton.py.page:31
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"RadioButton Example\", application=app)\n"
-#| " self.set_default_size(250, 100)\n"
-#| " self.set_border_width(20)\n"
-#| "\n"
-#| " # a new radiobutton with a label\n"
-#| " button1 = Gtk.RadioButton(label=\"Button 1\")\n"
-#| " # connect the signal \"toggled\" emitted by the radiobutton\n"
-#| " # with the callback function toggled_cb\n"
-#| " button1.connect(\"toggled\", self.toggled_cb)\n"
-#| "\n"
-#| " # another radiobutton, in the same group as button1\n"
-#| " button2 = Gtk.RadioButton.new_from_widget(button1)\n"
-#| " # with label \"Button 2\"\n"
-#| " button2.set_label(\"Button 2\")\n"
-#| " # connect the signal \"toggled\" emitted by the radiobutton\n"
-#| " # with the callback function toggled_cb\n"
-#| " button2.connect(\"toggled\", self.toggled_cb)\n"
-#| " # set button2 not active by default\n"
-#| " button2.set_active(False)\n"
-#| "\n"
-#| " # another radiobutton, in the same group as button1,\n"
-#| " # with label \"Button 3\"\n"
-#| " button3 = Gtk.RadioButton.new_with_label_from_widget(\n"
-#| " button1, \"Button 3\")\n"
-#| " # connect the signal \"toggled\" emitted by the radiobutton\n"
-#| " # with the callback function toggled_cb\n"
-#| " button3.connect(\"toggled\", self.toggled_cb)\n"
-#| " # set button3 not active by default\n"
-#| " button3.set_active(False)\n"
-#| "\n"
-#| " # a grid to place the buttons\n"
-#| " grid = Gtk.Grid.new()\n"
-#| " grid.attach(button1, 0, 0, 1, 1)\n"
-#| " grid.attach(button2, 0, 1, 1, 1)\n"
-#| " grid.attach(button3, 0, 2, 1, 1)\n"
-#| " # add the grid to the window\n"
-#| " self.add(grid)\n"
-#| "\n"
-#| " # callback function\n"
-#| " def toggled_cb(self, button):\n"
-#| " # a string to describe the state of the button\n"
-#| " state = \"unknown\"\n"
-#| " # whenever the button is turned on, state is on\n"
-#| " if button.get_active():\n"
-#| " state = \"on\"\n"
-#| " # else state is off\n"
-#| " else:\n"
-#| " state = \"off\"\n"
-#| " # whenever the function is called (a button is turned on or off)\n"
-#| " # print on the terminal which button was turned on/off\n"
-#| " print button.get_label() + \" was turned \" + state\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"RadioButton Example\", application=app)\n"
-" self.set_default_size(250, 100)\n"
-" self.set_border_width(20)\n"
-"\n"
-" # a new radiobutton with a label\n"
-" button1 = Gtk.RadioButton(label=\"Button 1\")\n"
-" # connect the signal \"toggled\" emitted by the radiobutton\n"
-" # with the callback function toggled_cb\n"
-" button1.connect(\"toggled\", self.toggled_cb)\n"
-"\n"
-" # another radiobutton, in the same group as button1\n"
-" button2 = Gtk.RadioButton.new_from_widget(button1)\n"
-" # with label \"Button 2\"\n"
-" button2.set_label(\"Button 2\")\n"
-" # connect the signal \"toggled\" emitted by the radiobutton\n"
-" # with the callback function toggled_cb\n"
-" button2.connect(\"toggled\", self.toggled_cb)\n"
-" # set button2 not active by default\n"
-" button2.set_active(False)\n"
-"\n"
-" # another radiobutton, in the same group as button1,\n"
-" # with label \"Button 3\"\n"
-" button3 = Gtk.RadioButton.new_with_label_from_widget(\n"
-" button1, \"Button 3\")\n"
-" # connect the signal \"toggled\" emitted by the radiobutton\n"
-" # with the callback function toggled_cb\n"
-" button3.connect(\"toggled\", self.toggled_cb)\n"
-" # set button3 not active by default\n"
-" button3.set_active(False)\n"
-"\n"
-" # a grid to place the buttons\n"
-" grid = Gtk.Grid.new()\n"
-" grid.attach(button1, 0, 0, 1, 1)\n"
-" grid.attach(button2, 0, 1, 1, 1)\n"
-" grid.attach(button3, 0, 2, 1, 1)\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" # callback function\n"
-" def toggled_cb(self, button):\n"
-" # a string to describe the state of the button\n"
-" state = \"unknown\"\n"
-" # whenever the button is turned on, state is on\n"
-" if button.get_active():\n"
-" state = \"on\"\n"
-" # else state is off\n"
-" else:\n"
-" state = \"off\"\n"
-" # whenever the function is called (a button is turned on or off)\n"
-" # print on the terminal which button was turned on/off\n"
-" print(button.get_label() + \" was turned \" + state)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"RadioButton Example\", application=app)\n"
-" self.set_default_size(250, 100)\n"
-" self.set_border_width(20)\n"
-"\n"
-" # a new radiobutton with a label\n"
-" button1 = Gtk.RadioButton(label=\"Button 1\")\n"
-" # connect the signal \"toggled\" emitted by the radiobutton\n"
-" # with the callback function toggled_cb\n"
-" button1.connect(\"toggled\", self.toggled_cb)\n"
-"\n"
-" # another radiobutton, in the same group as button1\n"
-" button2 = Gtk.RadioButton.new_from_widget(button1)\n"
-" # with label \"Button 2\"\n"
-" button2.set_label(\"Button 2\")\n"
-" # connect the signal \"toggled\" emitted by the radiobutton\n"
-" # with the callback function toggled_cb\n"
-" button2.connect(\"toggled\", self.toggled_cb)\n"
-" # set button2 not active by default\n"
-" button2.set_active(False)\n"
-"\n"
-" # another radiobutton, in the same group as button1,\n"
-" # with label \"Button 3\"\n"
-" button3 = Gtk.RadioButton.new_with_label_from_widget(\n"
-" button1, \"Button 3\")\n"
-" # connect the signal \"toggled\" emitted by the radiobutton\n"
-" # with the callback function toggled_cb\n"
-" button3.connect(\"toggled\", self.toggled_cb)\n"
-" # set button3 not active by default\n"
-" button3.set_active(False)\n"
-"\n"
-" # a grid to place the buttons\n"
-" grid = Gtk.Grid.new()\n"
-" grid.attach(button1, 0, 0, 1, 1)\n"
-" grid.attach(button2, 0, 1, 1, 1)\n"
-" grid.attach(button3, 0, 2, 1, 1)\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" # callback function\n"
-" def toggled_cb(self, button):\n"
-" # a string to describe the state of the button\n"
-" state = \"unknown\"\n"
-" # whenever the button is turned on, state is on\n"
-" if button.get_active():\n"
-" state = \"on\"\n"
-" # else state is off\n"
-" else:\n"
-" state = \"off\"\n"
-" # whenever the function is called (a button is turned on or off)\n"
-" # print on the terminal which button was turned on/off\n"
-" print(button.get_label() + \" was turned \" + state)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/radiobutton.py.page:35
-msgid "Useful methods for a RadioButton widget"
-msgstr "Métodos útiles para un widget «RadioButton»"
-
-#. (itstool) path: section/p
-#: C/radiobutton.py.page:36
-msgid ""
-"In line 16 the signal <code>\"toggled\"</code> is connected to the callback "
-"function <code>toggled_cb()</code> using <code><var>widget</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 16, la señal <code>«toggled»</code> se conecta a la función de "
-"retorno de llamada <code>toggled_cb()</code> usando <code><var>widget</var>."
-"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
-"detallada."
-
-#. (itstool) path: section/p
-#: C/radiobutton.py.page:38
-msgid ""
-"As seen in <link xref=\"properties.py\"/>, instead of <code>button1 = Gtk."
-"RadioButton(label=\"Button 1\")</code> we could create the button and label "
-"it with"
-msgstr ""
-"Como se vio en la <link xref=\"properties.py\"/>, en lugar de <code>button1 "
-"= Gtk.RadioButton(label=\"Button 1\")</code> se podría crear el botón y su "
-"etiqueta con"
-
-#. (itstool) path: section/code
-#: C/radiobutton.py.page:39
-#, no-wrap
-msgid ""
-"\n"
-"button1 = Gtk.RadioButton()\n"
-"button1.set_label(\"Button 1\")."
-msgstr ""
-"\n"
-"button1 = Gtk.RadioButton()\n"
-"button1.set_label(\"Button 1\")."
-
-#. (itstool) path: section/p
-#: C/radiobutton.py.page:42
-msgid ""
-"Yet another way to create a new RadioButton with a label is <code>button1 = "
-"Gtk.RadioButton.new_with_label(None, \"Button 1\")</code> (the first "
-"argument is the group of the radiobuttons, which we can get with "
-"<code>get_group()</code>, the second argument is the label)."
-msgstr ""
-"Otra manera de crear un «RadioButton» nuevo con una etiqueta es <code>button1 "
-"= Gtk.RadioButton.new_with_label(None, \"Button 1\")</code> (El primer "
-"argumento es el grupo de botones de radio, que puede obtener con "
-"<code>get_group()</code>, el segundo argumento es la etiqueta)."
-
-#. (itstool) path: item/p
-#: C/radiobutton.py.page:51
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkRadioButton.html"
-"\">GtkRadioButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkRadioButton.html"
-"\">GtkRadioButton</link>"
-
-#. (itstool) path: info/title
-#: C/radiobutton.vala.page:8
-msgctxt "text"
-msgid "RadioButton (Vala)"
-msgstr "RadioButton (Vala)"
-
-#. (itstool) path: info/desc
-#: C/radiobutton.vala.page:21
-msgid "A choice from multiple CheckButtons."
-msgstr "Una elección desde varios CheckButton."
-
-#. (itstool) path: page/p
-#: C/radiobutton.vala.page:26
-msgid "These RadioButtons report their activity in the terminal."
-msgstr "Estos RadioButton informan de su actividad en la terminal."
-
-#. (itstool) path: page/code
-#: C/radiobutton.vala.page:28
-#, no-wrap
-msgid ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"RadioButton Example\");\n"
-"\n"
-"\t\tthis.border_width = 20;\n"
-"\t\tthis.set_default_size (250, 100);\n"
-"\n"
-"\t\t/* We demonstrate 3 different RadioButton creation methods */\n"
-"\n"
-"\t\t//Create a Radio Button\n"
-"\t\tvar button1 = new Gtk.RadioButton (null);\n"
-"\t\tbutton1.set_label (\"Button 1\");\n"
-"\n"
-"\t\t//Create a RadioButton with a label, and add it to the same group as button1.\n"
-"\t\tvar button2 = new Gtk.RadioButton.with_label (button1.get_group(),\"Button 2\");\n"
-"\n"
-"\t\t//Create a RadioButton with a label, adding it to button1's group.\n"
-"\t\tvar button3 = new Gtk.RadioButton.with_label_from_widget (button1, \"Button 3\");\n"
-"\n"
-"\t\t//Attach the buttons to a grid.\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tgrid.attach (button1, 0, 0, 1, 1);\n"
-"\t\tgrid.attach (button2, 0, 1, 1, 1);\n"
-"\t\tgrid.attach (button3, 0, 2, 1, 1);\n"
-"\n"
-"\t\t//Add the button to the window.\n"
-"\t\tthis.add (grid);\n"
-"\n"
-"\t\t//Connect the signal handlers (aka. callback functions) to the buttons.\n"
-"\t\tbutton1.toggled.connect (button_toggled_cb);\n"
-"\t\tbutton2.toggled.connect (button_toggled_cb);\n"
-"\t\tbutton3.toggled.connect (button_toggled_cb);\n"
-"\t}\n"
-"\n"
-"\tvoid button_toggled_cb (Gtk.ToggleButton button)\n"
-"\t{\n"
-"\t\tvar state = \"unknown\";\n"
-"\n"
-"\t\tif (button.get_active ())\n"
-"\t\t\tstate = \"on\";\n"
-"\t\telse {\n"
-"\t\t\tstate = \"off\";\n"
-"\t\t\tprint (\"\\n\");\n"
-"\t\t}\n"
-"\t\tprint (button.get_label() + \" was turned \" + state + \"\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t//Show all of the things.\n"
-"\t\tnew MyWindow (this).show_all ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"RadioButton Example\");\n"
-"\n"
-"\t\tthis.border_width = 20;\n"
-"\t\tthis.set_default_size (250, 100);\n"
-"\n"
-"\t\t/* We demonstrate 3 different RadioButton creation methods */\n"
-"\n"
-"\t\t//Create a Radio Button\n"
-"\t\tvar button1 = new Gtk.RadioButton (null);\n"
-"\t\tbutton1.set_label (\"Button 1\");\n"
-"\n"
-"\t\t//Create a RadioButton with a label, and add it to the same group as button1.\n"
-"\t\tvar button2 = new Gtk.RadioButton.with_label (button1.get_group(),\"Button 2\");\n"
-"\n"
-"\t\t//Create a RadioButton with a label, adding it to button1's group.\n"
-"\t\tvar button3 = new Gtk.RadioButton.with_label_from_widget (button1, \"Button 3\");\n"
-"\n"
-"\t\t//Attach the buttons to a grid.\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tgrid.attach (button1, 0, 0, 1, 1);\n"
-"\t\tgrid.attach (button2, 0, 1, 1, 1);\n"
-"\t\tgrid.attach (button3, 0, 2, 1, 1);\n"
-"\n"
-"\t\t//Add the button to the window.\n"
-"\t\tthis.add (grid);\n"
-"\n"
-"\t\t//Connect the signal handlers (aka. callback functions) to the buttons.\n"
-"\t\tbutton1.toggled.connect (button_toggled_cb);\n"
-"\t\tbutton2.toggled.connect (button_toggled_cb);\n"
-"\t\tbutton3.toggled.connect (button_toggled_cb);\n"
-"\t}\n"
-"\n"
-"\tvoid button_toggled_cb (Gtk.ToggleButton button)\n"
-"\t{\n"
-"\t\tvar state = \"unknown\";\n"
-"\n"
-"\t\tif (button.get_active ())\n"
-"\t\t\tstate = \"on\";\n"
-"\t\telse {\n"
-"\t\t\tstate = \"off\";\n"
-"\t\t\tprint (\"\\n\");\n"
-"\t\t}\n"
-"\t\tprint (button.get_label() + \" was turned \" + state + \"\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t//Show all of the things.\n"
-"\t\tnew MyWindow (this).show_all ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.MyApplication\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/radiobutton.vala.page:33
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.RadioButton.html\">Gtk."
-"RadioButton</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.RadioButton.html\">Gtk."
-"RadioButton</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/record-collection.js.page:70
-msgctxt "_"
-msgid ""
-"external ref='media/record-collection.png' "
-"md5='2d645997687ed5aacd36aafafc16e072'"
-msgstr ""
-"external ref='media/record-collection.png' "
-"md5='2d645997687ed5aacd36aafafc16e072'"
-
-#. (itstool) path: info/title
-#: C/record-collection.js.page:8
-msgctxt "text"
-msgid "Record collection (JavaScript)"
-msgstr "Colección de música (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/record-collection.js.page:11
-msgid "Create a small database application for ordering your music collection"
-msgstr ""
-"Cree una pequeña aplicación con una base de datos para ordenar su colección "
-"de música"
-
-#. (itstool) path: page/title
-#: C/record-collection.js.page:29
-msgid "Record collection"
-msgstr "Colección de música"
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:34
-msgid "How to connect to a database using libgda"
-msgstr "Cómo conectar con una base de datos usando libgda"
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:35
-msgid "How to insert and browse records in a database table"
-msgstr "Cómo insertar y examinar registros en una tabla de una base de datos"
-
-#. (itstool) path: section/p
-#: C/record-collection.js.page:41
-msgid ""
-"This demo uses the Javascript language. We are going to demonstrate how to "
-"connect and use a database from a GTK program, by using the GDA (GNOME Data "
-"Access) library. Thus you also need this library installed."
-msgstr ""
-"Esta demostración usa el lenguaje Javascript. Se va a demostrar cómo "
-"conectar y usar una base de datos desde un programa GTK, usando la "
-"bilbioteca GDA («GNOME Data Access», Acceso a datos de GNOME). Por lo tanto, "
-"es necesario tener instalada también esta biblioteca."
-
-#. (itstool) path: section/p
-#: C/record-collection.js.page:44
-msgid ""
-"GNOME Data Access (GDA) is library whose purpose is to provide universal "
-"access to different kinds and types of data sources. This goes from "
-"traditional relational database systems, to any imaginable kind of data "
-"source such as a mail server, a LDAP directory, etc. For more information, "
-"and for a full API and documentation, visit the <link href=\"http://library."
-"gnome.org/devel/libgda/stable/\">GDA website</link>."
-msgstr ""
-"Acceso a Datos de GNOME (GDA) es una biblioteca cuyo propósito es "
-"proporcionar acceso universal a diferentes tipos de fuentes de datos. Esto "
-"abarca desde los tradicionales sistemas de bases da datos relacionales hasta "
-"cualquier fuente de datos imaginable como un servidor de correo-e, un "
-"directorio LDAP, etc. Para obtener más información y una documentación "
-"completa de la API, visite la <link href=\"http://library.gnome.org/devel/"
-"libgda/stable/\">página web de GDA</link>."
-
-#. (itstool) path: section/p
-#: C/record-collection.js.page:47
-msgid ""
-"Although a big part of the code is related to user interface (GUI), we are "
-"going to focus our tutorial on the database parts (we might mention other "
-"parts we think are relevant though). To know more about Javascript programs "
-"in GNOME, see the <link xref=\"image-viewer.js\">Image Viewer program</link> "
-"tutorial."
-msgstr ""
-"Aunque una gran parte del código se refiere a la interfaz de usuario (IU), "
-"el tutorial se enfocará a las partes de las bases de datos (aunque se puede "
-"hacer mención a otras partes que se consideren relevantes). Para aprender "
-"más sobre los programas en Javascript en GNOME, consulte el tutorial del "
-"programa<link xref=\"image-viewer.js\">Visor de Imágenes</link>"
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:60
-msgid ""
-"Choose <gui>Generic Javascript</gui> from the <gui>JS</gui> tab, click "
-"<gui>Forward</gui>, and fill-out your details on the next few pages. Use "
-"<file>record-collection</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>coleccion-de-albumes</file> como nombre de proyecto y de carpeta."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:63
-msgid ""
-"Click <gui>Finished</gui> and the project will be created for you. Open "
-"<file>src/main.js</file> from the <gui>Project</gui> or <gui>File</gui> "
-"tabs. It contains very basic example code."
-msgstr ""
-"Pulse <gui>Finalizar</gui> y se creará el proyecto. Abra <file>src/main.js</"
-"file> desde la pestaña <gui>Proyecto</gui> o <gui>Archivo</gui>. Contiene un "
-"ejemplo de código muy básico."
-
-#. (itstool) path: section/title
-#: C/record-collection.js.page:69
-msgid "Program Structure"
-msgstr "Estructura del programa"
-
-#. (itstool) path: section/p
-#: C/record-collection.js.page:71
-msgid ""
-"This demo is a simple GTK application (with a single window) capable of "
-"inserting records into a database table as well as browsing all records of "
-"the table. The table has two fields: <code>id</code>, an integer, and "
-"<code>name</code>, a varchar. The first section (on the top) of the "
-"application allows you to insert a record into the table. The last section "
-"(bottom) allows you to see all the records of that table. Its content is "
-"refreshed every time a new record is inserted and on the application startup."
-msgstr ""
-"Esta demostración es una aplicación GTK sencilla (con una única ventana) "
-"capaz de insertar registros en la tabla de una base de datos, así como de "
-"examinar todos los registros de la tabla. La tabla tiene dos campos: "
-"<code>id</code>, un entero, y <code>name</code>, un «varchar». La primera "
-"sección (en la parte superior) de la aplicación le permite insertar un "
-"registro en la tabla. La última sección (en la parte inferior) le permite "
-"ver todos los registros de la tabla. El contenido se actualiza cada vez que "
-"se insertar un registro y al inicio de la aplicación."
-
-#. (itstool) path: section/title
-#: C/record-collection.js.page:76
-msgid "Starting the fun"
-msgstr "Empezar la diversión"
-
-#. (itstool) path: section/p
-#: C/record-collection.js.page:77
-msgid "Let's start by examining the skeleton of the program:"
-msgstr "Empezar examinando el esqueleto del programa:"
-
-#. (itstool) path: section/code
-#: C/record-collection.js.page:78
-#, no-wrap
-msgid ""
-"\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Gda = imports.gi.Gda;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"function Demo () {\n"
-" this._init ();\n"
-"}\n"
-"\n"
-"Demo.prototype = {\n"
-"\n"
-" _init: function () {\n"
-" this.setupWindow ();\n"
-" this.setupDatabase ();\n"
-" this.selectData ();\n"
-" }\n"
-"}\n"
-"\n"
-"Gtk.init (null, null);\n"
-"\n"
-"var demo = new Demo ();\n"
-"\n"
-"Gtk.main ();"
-msgstr ""
-"\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Gda = imports.gi.Gda;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"function Demo () {\n"
-" this._init ();\n"
-"}\n"
-"\n"
-"Demo.prototype = {\n"
-"\n"
-" _init: function () {\n"
-" this.setupWindow ();\n"
-" this.setupDatabase ();\n"
-" this.selectData ();\n"
-" }\n"
-"}\n"
-"\n"
-"Gtk.init (null, null);\n"
-"\n"
-"var demo = new Demo ();\n"
-"\n"
-"Gtk.main ();"
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:103
-msgid ""
-"Lines 1‒4: Initial imports. Pay special attention to line 3, which tells "
-"Javascript to import the GDA library, our focus in this tutorial."
-msgstr ""
-"Líneas 1‒4: importaciones iniciales. Preste especial atención a la línea 3, "
-"que indica a Javascript que importe la biblioteca GDA, nuestro objetivo en "
-"este tutorial."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:104
-msgid ""
-"Lines 6‒17: Define our <code>Demo</code> class. Pay special attention to "
-"lines 13‒15, where we call 3 methods which will do the whole job. They will "
-"be detailed below."
-msgstr ""
-"Líneas 6‒17: definir la clase <code>Demo</code>. Preste especial atención a "
-"las líneas 13‒15, donde se llama a 3 métodos que harán todo el trabajo. Se "
-"detallarán más adelante."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:105
-msgid "Lines 19‒23: Start the application."
-msgstr "Líneas 19‒23: iniciar la aplicación."
-
-#. (itstool) path: section/title
-#: C/record-collection.js.page:110
-msgid "Designing the application"
-msgstr "Diseñar la aplicación"
-
-#. (itstool) path: section/p
-#: C/record-collection.js.page:111
-msgid ""
-"Let's take a look at the <code>setupWindow</code> method. It is responsible "
-"for creating the User Interface (UI). As UI is not our focus, we will "
-"explain only the relevant parts."
-msgstr ""
-"Eche un vistazo al método <code>setupWindow</code>. Es el responsable de "
-"crear la interfaz de usuario (IU). Ya que la IU no es el objetivo, sólo se "
-"explicarán las partes relevantes."
-
-#. (itstool) path: section/code
-#: C/record-collection.js.page:112
-#, no-wrap
-msgid ""
-"\n"
-" setupWindow: function () {\n"
-" this.window = new Gtk.Window ({title: \"Data Access Demo\", height_request: 350});\n"
-" this.window.connect (\"delete-event\", function () {\n"
-" Gtk.main_quit();\n"
-" return true;\n"
-" });\n"
-"\n"
-" // main box\n"
-" var main_box = new Gtk.Box ({orientation: Gtk.Orientation.VERTICAL, spacing: 5});\n"
-" this.window.add (main_box);\n"
-"\n"
-" // first label\n"
-" var info1 = new Gtk.Label ({label: \"<b>Insert a record</b>\", xalign: 0, use_markup:
true});\n"
-" main_box.pack_start (info1, false, false, 5);\n"
-"\n"
-" // \"insert a record\" horizontal box\n"
-" var insert_box = new Gtk.Box ({orientation: Gtk.Orientation.HORIZONTAL, spacing: 5});\n"
-" main_box.pack_start (insert_box, false, false, 5);\n"
-"\n"
-" // ID field\n"
-" insert_box.pack_start (new Gtk.Label ({label: \"ID:\"}), false, false, 5);\n"
-" this.id_entry = new Gtk.Entry ();\n"
-" insert_box.pack_start (this.id_entry, false, false, 5);\n"
-"\n"
-" // Name field\n"
-" insert_box.pack_start (new Gtk.Label ({label: \"Name:\"}), false, false, 5);\n"
-" this.name_entry = new Gtk.Entry ({activates_default: true});\n"
-" insert_box.pack_start (this.name_entry, true, true, 5);\n"
-"\n"
-" // Insert button\n"
-" var insert_button = new Gtk.Button ({label: \"Insert\", can_default: true});\n"
-" insert_button.connect (\"clicked\", Lang.bind (this, this._insertClicked));\n"
-" insert_box.pack_start (insert_button, false, false, 5);\n"
-" insert_button.grab_default ();\n"
-"\n"
-" // Browse textview\n"
-" var info2 = new Gtk.Label ({label: \"<b>Browse the table</b>\", xalign: 0, use_markup:
true});\n"
-" main_box.pack_start (info2, false, false, 5);\n"
-" this.text = new Gtk.TextView ({editable: false});\n"
-" var sw = new Gtk.ScrolledWindow ({shadow_type:Gtk.ShadowType.IN});\n"
-" sw.add (this.text);\n"
-" main_box.pack_start (sw, true, true, 5);\n"
-"\n"
-" this.count_label = new Gtk.Label ({label: \"\", xalign: 0, use_markup: true});\n"
-" main_box.pack_start (this.count_label, false, false, 0);\n"
-"\n"
-" this.window.show_all ();\n"
-" },"
-msgstr ""
-"\n"
-" setupWindow: function () {\n"
-" this.window = new Gtk.Window ({title: \"Data Access Demo\", height_request: 350});\n"
-" this.window.connect (\"delete-event\", function () {\n"
-" Gtk.main_quit();\n"
-" return true;\n"
-" });\n"
-"\n"
-" // main box\n"
-" var main_box = new Gtk.Box ({orientation: Gtk.Orientation.VERTICAL, spacing: 5});\n"
-" this.window.add (main_box);\n"
-"\n"
-" // first label\n"
-" var info1 = new Gtk.Label ({label: \"<b>Insert a record</b>\", xalign: 0, use_markup:
true});\n"
-" main_box.pack_start (info1, false, false, 5);\n"
-"\n"
-" // \"insert a record\" horizontal box\n"
-" var insert_box = new Gtk.Box ({orientation: Gtk.Orientation.HORIZONTAL, spacing: 5});\n"
-" main_box.pack_start (insert_box, false, false, 5);\n"
-"\n"
-" // ID field\n"
-" insert_box.pack_start (new Gtk.Label ({label: \"ID:\"}), false, false, 5);\n"
-" this.id_entry = new Gtk.Entry ();\n"
-" insert_box.pack_start (this.id_entry, false, false, 5);\n"
-"\n"
-" // Name field\n"
-" insert_box.pack_start (new Gtk.Label ({label: \"Name:\"}), false, false, 5);\n"
-" this.name_entry = new Gtk.Entry ({activates_default: true});\n"
-" insert_box.pack_start (this.name_entry, true, true, 5);\n"
-"\n"
-" // Insert button\n"
-" var insert_button = new Gtk.Button ({label: \"Insert\", can_default: true});\n"
-" insert_button.connect (\"clicked\", Lang.bind (this, this._insertClicked));\n"
-" insert_box.pack_start (insert_button, false, false, 5);\n"
-" insert_button.grab_default ();\n"
-"\n"
-" // Browse textview\n"
-" var info2 = new Gtk.Label ({label: \"<b>Browse the table</b>\", xalign: 0, use_markup:
true});\n"
-" main_box.pack_start (info2, false, false, 5);\n"
-" this.text = new Gtk.TextView ({editable: false});\n"
-" var sw = new Gtk.ScrolledWindow ({shadow_type:Gtk.ShadowType.IN});\n"
-" sw.add (this.text);\n"
-" main_box.pack_start (sw, true, true, 5);\n"
-"\n"
-" this.count_label = new Gtk.Label ({label: \"\", xalign: 0, use_markup: true});\n"
-" main_box.pack_start (this.count_label, false, false, 0);\n"
-"\n"
-" this.window.show_all ();\n"
-" },"
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:162
-msgid ""
-"Lines 22 and 27: Create the 2 entries (for the two fields) in which users "
-"will type something to get inserted in the database."
-msgstr ""
-"Líneas 22 y 27: crear las dos entradas (para los dos campos) en las que el "
-"usuario escribirá algo para insertarlo en la base de datos."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:163
-msgid ""
-"Lines 31‒34: Create the Insert button. We connect its <code>clicked</code> "
-"signal to the <code>_insertClicked</code> private method of the class. This "
-"method is detailed below."
-msgstr ""
-"Líneas 31‒34: crear el botón «Insertar». Se conecta su señal <code>clicked</"
-"code> con el método privado <code>_insertClicked</code> de la clase. Este "
-"método se detalla a continuación."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:164
-msgid ""
-"Line 39: Create the widget (<code>TextView</code>) where we will show the "
-"contents of the table."
-msgstr ""
-"Línea 39: crear el widget (<code>TextView</code>) donde se mostrarán los "
-"contenidos de la tabla."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:165
-msgid ""
-"Line 44: Create the label where we will show the number of records in the "
-"table. Initially it's empty, it will be updated later."
-msgstr ""
-"Línea 44: crear la etiqueta donde se mostrará el número de registros de la "
-"tabla. Inicialmente está vacía, se actualizará más tarde."
-
-#. (itstool) path: section/title
-#: C/record-collection.js.page:170
-msgid "Connecting to and initializing the database"
-msgstr "Conectar e inicializar la base de datos"
-
-#. (itstool) path: section/p
-#: C/record-collection.js.page:171
-msgid ""
-"The code which makes the connection to the database is in the "
-"<code>setupDatabase</code> method below:"
-msgstr ""
-"El código que hace la conexión con la base de datos está en método "
-"<code>setupDatabase</code> siguiente:"
-
-#. (itstool) path: section/code
-#: C/record-collection.js.page:174
-#, no-wrap
-msgid ""
-"\n"
-" setupDatabase: function () {\n"
-" this.connection = new Gda.Connection ({provider: Gda.Config.get_provider(\"SQLite\"),\n"
-" cnc_string:\"DB_DIR=\" + GLib.get_home_dir () +
\";DB_NAME=gnome_demo\"});\n"
-" this.connection.open ();\n"
-"\n"
-" try {\n"
-" var dm = Gda.execute_select_command (this.connection, \"select * from demo\");\n"
-" } catch (e) {\n"
-" Gda.execute_non_select_command (this.connection, \"create table demo (id integer, name
varchar(100))\");\n"
-" }\n"
-" },"
-msgstr ""
-"\n"
-" setupDatabase: function () {\n"
-" this.connection = new Gda.Connection ({provider: Gda.Config.get_provider(\"SQLite\"),\n"
-" cnc_string:\"DB_DIR=\" + GLib.get_home_dir () +
\";DB_NAME=gnome_demo\"});\n"
-" this.connection.open ();\n"
-"\n"
-" try {\n"
-" var dm = Gda.execute_select_command (this.connection, \"select * from demo\");\n"
-" } catch (e) {\n"
-" Gda.execute_non_select_command (this.connection, \"create table demo (id integer, name
varchar(100))\");\n"
-" }\n"
-" },"
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:188
-msgid ""
-"Lines 2‒3: Create the GDA's <code>Connection</code> object. We must supply "
-"to its constructor some properties:"
-msgstr ""
-"Líneas 2‒3: crear el objeto de GDA <code>Connection</code>. Se deben "
-"proporcionar a su constructor algunas propiedades:"
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:191
-msgid ""
-"<code>provider</code>: One of GDA's supported providers. GDA supports "
-"SQLite, MySQL, PostgreSQL, Oracle and many others. For demo purposes we will "
-"use a SQLite database, as it comes installed by default in most "
-"distributions and it is simple to use (it just uses a file as a database)."
-msgstr ""
-"<code>provider</code>: uno de los proveedores de GDA soportados. GDA soporta "
-"SQLite, MySQL, PostgreSQL, Oracle y muchos otros. Para la demostración se "
-"usará una base de datos SQLite, ya que viene instalada de manera "
-"predeterminada en la mayoría de las distribuciones y es fácil de usar (sólo "
-"usa un archivo como base de datos)."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:194
-msgid ""
-"<code>cnc_string</code>: The connection string. It may change from provider "
-"to provider. The syntax for SQLite is: <code>DB_DIR=<var>PATH</var>;"
-"DB_NAME=<var>FILENAME</var></code>. In this demo we are accessing a database "
-"called gnome_demo in the user home dir (note the call to GLib's "
-"<code>get_home_dir</code> function)."
-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)."
-
-#. (itstool) path: note/p
-#: C/record-collection.js.page:198
-msgid ""
-"If the provider is not supported by GDA, or if the connection string is "
-"missing some element, line 2 will raise an exception. So, in real life we "
-"should handle it with JavaScript's statement <code>try</code>...<code>catch</"
-"code>."
-msgstr ""
-"Si GDA no soporta el proveedor, o si falta algún elemento en la cadena de "
-"conexión, la línea 2 elevará una excepción. Por esto, en la vida real hay "
-"que manejarlo con la sentencia <code>try</code>...<code>catch</code> de "
-"JavaScript."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:202
-msgid ""
-"Line 4: Open the connection. In the SQLite provider, if the database does "
-"not exist, it will be created in this step."
-msgstr ""
-"Línea 4: abrir la conexión. En el proveedor de SQLite, si la base de datos "
-"no existe, se creará en este paso."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:204
-msgid ""
-"Lines 6‒10: Try to do a simple select to check if the table exists (line 7). "
-"If it does not exist (because the database was just created), this command "
-"will raise an exception, which is handled by the <code>try</code>..."
-"<code>catch</code> block. If it is the case, we run the create table "
-"statement (line 9)."
-msgstr ""
-"Líneas 6‒10: intentar hacer una selección simple para comprobar si la tabla "
-"existe. Si no existe (porque la base de datos se acaba de crear), este "
-"comando elevará una excepción, que se maneja en el bloque <code>try</code>..."
-"<code>catch</code> block. Si este es el caso, se ejecuta la sentencia para "
-"crear tabla (línea 9)."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:205
-msgid ""
-"In order to run the SQL commands above we are using global GDA functions, "
-"<code>execute_select_command</code> and <code>execute_non_select_command</"
-"code>. They are simple to use, and just require two arguments: The "
-"<code>Connection</code> object and the SQL command to be parsed."
-msgstr ""
-"Para ejecutar los comandos SQL anteriores se usan las funcionas globales de "
-"GDA <code>execute_select_command</code> y <code>execute_non_select_command</"
-"code>. Son fáciles de usar, y sólo requieren dos argumentos: el objeto "
-"<code>Connection</code> y el comando SQL que analizar."
-
-#. (itstool) path: section/p
-#: C/record-collection.js.page:209
-msgid "At this point we have the database set up, and are ready to use it."
-msgstr ""
-"En este punto, ya está configurada la base de datos y lista para usarse."
-
-#. (itstool) path: section/title
-#: C/record-collection.js.page:213
-msgid "Selecting"
-msgstr "Seleccionar"
-
-#. (itstool) path: section/p
-#: C/record-collection.js.page:214
-msgid ""
-"After connecting to the database, our demo's constructor calls the "
-"<code>selectData</code> method. It is responsible for getting all the "
-"records in the table and showing them on the <code>TextView</code> widget. "
-"Let's take a look at it:"
-msgstr ""
-"Después de conectar a la base de datos, el constructor de la demostración "
-"llama al método <code>selectData</code>. Es el responsable de obtener todos "
-"los registros de la tabla y de mostrarlos en el widget <code>TextView</"
-"code>. Échele un vistazo:"
-
-#. (itstool) path: section/code
-#: C/record-collection.js.page:217
-#, no-wrap
-msgid ""
-"\n"
-" selectData: function () {\n"
-" var dm = Gda.execute_select_command (this.connection, \"select * from demo order by 1, 2\");\n"
-" var iter = dm.create_iter ();\n"
-"\n"
-" var text = \"\";\n"
-"\n"
-" while (iter.move_next ()) {\n"
-" var id_field = Gda.value_stringify (iter.get_value_at (0));\n"
-" var name_field = Gda.value_stringify (iter.get_value_at (1));\n"
-"\n"
-" text += id_field + \"\\t=>\\t\" + name_field + '\\n';\n"
-" }\n"
-"\n"
-" this.text.buffer.text = text;\n"
-" this.count_label.label = \"<i>\" + dm.get_n_rows () + \" record(s)</i>\";\n"
-" },"
-msgstr ""
-"\n"
-" selectData: function () {\n"
-" var dm = Gda.execute_select_command (this.connection, \"select * from demo order by 1, 2\");\n"
-" var iter = dm.create_iter ();\n"
-"\n"
-" var text = \"\";\n"
-"\n"
-" while (iter.move_next ()) {\n"
-" var id_field = Gda.value_stringify (iter.get_value_at (0));\n"
-" var name_field = Gda.value_stringify (iter.get_value_at (1));\n"
-"\n"
-" text += id_field + \"\\t=>\\t\" + name_field + '\\n';\n"
-" }\n"
-"\n"
-" this.text.buffer.text = text;\n"
-" this.count_label.label = \"<i>\" + dm.get_n_rows () + \" record(s)</i>\";\n"
-" },"
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:235
-msgid ""
-"Line 2: The <code>SELECT</code> command. We are using the global GDA's "
-"function <code>execute_select_command</code> for that. It returns a "
-"<code>DataModel</code> object, which is later used to retrieve the rows."
-msgstr ""
-"Línea 2: el comando <code>SELECT</code>. Se usan funciones la función global "
-"de GDA <code>execute_select_command</code>. Devuelve un objeto "
-"<code>DataModel</code>, que se usa más tarde para obtener las filas."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:236
-msgid ""
-"Line 3: Create an <code>Iter</code> object, which is used to iterate over "
-"the <code>DataModel</code>'s records."
-msgstr ""
-"Línea 3: crear un objeto <code>Iter</code>, que se usa para iterar sobre los "
-"registros de <code>DataModel</code>."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:237
-msgid ""
-"Line 7: Loop through all the records, fetching them with the help of the "
-"<code>Iter</code> object. At this point, the <code>iter</code> variable "
-"contains the actual, retrieved data. Its <code>move_next</code> method "
-"returns <code>false</code> when it reaches the last record."
-msgstr ""
-"Línea 7: recorrer todos los registros, recuperándolos con la ayuda del "
-"objeto <code>Iter</code>. En este punto, la variable <code>iter</code> "
-"contiene los datos obtenidos actualmente. Su método <code>move_next</code> "
-"devuelve <code>false</code> cuando se alcanza el último registro."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:239
-msgid "Lines 8‒9: We do two things in each line:"
-msgstr "Líneas 8‒9: se hacen dos cosas en cada línea:"
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:241
-msgid ""
-"Use <code>Iter</code>'s method <code>get_value_at</code>, which requires "
-"only one argument: the column number to retrieve, starting at 0. As our "
-"<code>SELECT</code> command returns only two columns, we are retrieving "
-"columns 0 and 1."
-msgstr ""
-"Use el método <code>get_value_at</code> de <code>Iter</code>, que sólo "
-"necesita un argumento: el número de columna que recuperar, empezando por 0. "
-"Ya que el comando <code>SELECT</code> sólo devuelve dos columnas, se están "
-"recuperando las columnas 0 y 1."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:242
-msgid ""
-"The method <code>get_value_at</code> returns the field in GLib's "
-"<code>GValue</code> format. A simple way to convert this format to a string "
-"is by using GDA's global function <code>value_stringify</code>. That's what "
-"we are doing here, and we store the results in the variables <code>id_field</"
-"code> and <code>name_field</code>."
-msgstr ""
-"El método <code>get_value_at</code> devuelve el campo en el formato "
-"<code>GValue</code> de GLib. Una manera sencilla de convertir este valor en "
-"una cadena es usar la función global de GDA <code>value_stringify</code>. Es "
-"lo que se está haciendo aquí, y el resultado se almacena en las variables "
-"<code>id_field</code> y <code>name_field</code>."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:245
-msgid ""
-"Line 11: Concatenate the two fields to make one text line, separated by "
-"<code>\"=>\"</code>, and store it in the <code>text</code> variable."
-msgstr ""
-"Línea 11: concatenar los dos registros para formar una línea de texto, "
-"separados por <code>\"=>\"</code>, y almacenarla en la variable "
-"<code>text</code>."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:246
-msgid ""
-"Line 14: After the loop is finished, we have all the records formatted in "
-"the <code>text</code> variable. In this line we just set the contents of the "
-"<code>TextView</code> with that variable."
-msgstr ""
-"Línea 14: cuando termine el bucle, se tendrán todos los registros "
-"formateados en la variable <code>text</code>. En esta línea, simplemente se "
-"establece el contenido del <code>TextView</code> con esta variable."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:247
-msgid ""
-"Line 15: Display the number of records in the table, making use of the "
-"<code>DataModel</code>'s <code>get_n_rows</code> method."
-msgstr ""
-"Línea 15: mostrar el número de registros en la tabla, usando el método "
-"<code>get_n_rows</code> de <code>DataModel</code> <code>get_n_rows</code>."
-
-#. (itstool) path: section/title
-#: C/record-collection.js.page:252
-msgid "Inserting"
-msgstr "Insertar"
-
-#. (itstool) path: section/p
-#: C/record-collection.js.page:253
-msgid ""
-"OK, we know how to connect to a database and how to select rows from a "
-"table. Now it's time to do an <code>INSERT</code> on the table. Do you "
-"remember above, in the method <code>setupWindow</code> we connected the "
-"<gui>Insert</gui> button's <code>clicked</code> signal to the method "
-"<code>_insertClicked</code>? Let's see the implementation of this method."
-msgstr ""
-"Bien, ahora ya sabe cómo conectarse a la base de datos y cómo seleccionar "
-"filas de una tabla. Ahora es el momento de hacer un <code>INSERT</code> en "
-"la tabla. ¿Recuerda cuando antes, en el método <code>setupWindow</code>, se "
-"conectó la señal <code>clicked</code> del botón <gui>Insertar</gui> al "
-"método <code>_insertClicked</code>?. Vea la implementación de este método."
-
-#. (itstool) path: section/code
-#: C/record-collection.js.page:256
-#, no-wrap
-msgid ""
-"\n"
-" _insertClicked: function () {\n"
-" if (!this._validateFields ())\n"
-" return;\n"
-"\n"
-" // Gda.execute_non_select_command (this.connection,\n"
-" // \"insert into demo values ('\" + this.id_entry.text + \"', '\" + this.name_entry.text + \"')\");\n"
-"\n"
-" var b = new Gda.SqlBuilder ({stmt_type:Gda.SqlStatementType.INSERT});\n"
-" b.set_table (\"demo\");\n"
-" b.add_field_value_as_gvalue (\"id\", this.id_entry.text);\n"
-" b.add_field_value_as_gvalue (\"name\", this.name_entry.text);\n"
-" var stmt = b.get_statement ();\n"
-" this.connection.statement_execute_non_select (stmt, null);\n"
-"\n"
-" this._clearFields ();\n"
-" this.selectData ();\n"
-" },"
-msgstr ""
-"\n"
-" _insertClicked: function () {\n"
-" if (!this._validateFields ())\n"
-" return;\n"
-"\n"
-" // Gda.execute_non_select_command (this.connection,\n"
-" // \"insert into demo values ('\" + this.id_entry.text + \"', '\" + this.name_entry.text + \"')\");\n"
-"\n"
-" var b = new Gda.SqlBuilder ({stmt_type:Gda.SqlStatementType.INSERT});\n"
-" b.set_table (\"demo\");\n"
-" b.add_field_value_as_gvalue (\"id\", this.id_entry.text);\n"
-" b.add_field_value_as_gvalue (\"name\", this.name_entry.text);\n"
-" var stmt = b.get_statement ();\n"
-" this.connection.statement_execute_non_select (stmt, null);\n"
-"\n"
-" this._clearFields ();\n"
-" this.selectData ();\n"
-" },"
-
-#. (itstool) path: section/p
-#: C/record-collection.js.page:274
-msgid ""
-"We have learned how to use GDA's convenience functions "
-"<code>execute_select_command</code> and <code>execute_non_select_command</"
-"code> to quickly execute SQL commands on the database. GDA allows one to "
-"build a SQL statement indirectly, by using its <code>SqlBuilder</code> "
-"object. What are the benefits of this? GDA will generate the SQL statement "
-"dynamically, and it will be valid for the connection provider used (it will "
-"use the same SQL dialect the provider uses). Let's study the code:"
-msgstr ""
-"Se ha aprendido a usar las funciones de conveniencia de GDA "
-"<code>execute_select_command</code> y <code>execute_non_select_command</"
-"code> para ejecutar comandos SQL rápidamente en la base de datos. GDA le "
-"permite construir una sentencia SQL de manera indirecta, usando su objeto "
-"<code>SqlBuilder</code>. ¿Cuáles son los beneficios de esto? GDA generará la "
-"sentencia SQL dinámicamente, y será válida para el proveedor de la conexión "
-"usado (usará el mismo dialecto de SQL que usa el proveedor). Estudie el "
-"código:"
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:278
-msgid ""
-"Lines 2‒3: Check if the user filled all the fields. The code for the private "
-"method <code>_validateFields</code> is really simple and you can read it in "
-"the full demo source code."
-msgstr ""
-"Líneas 2‒3: comprobar si el usuario ha rellenado todos los campos. El código "
-"del método privado <code>_validateFields</code> es realmente simple y puede "
-"leerlo en el código fuente completo de la demostración."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:279
-msgid ""
-"Line 5: The faster way of doing the <code>INSERT</code>. It's commented out "
-"as we want to show how to use the <code>SqlBuilder</code> object to build a "
-"SQL statement portable across databases."
-msgstr ""
-"Línea 5: la manera más rápida de hacer el <code>INSERT</code>. Se ha "
-"comentado que se quiere mostrar cómo usar el objeto <code>SqlBuilder</code> "
-"para construir una sentencia SQL portable entre bases de datos."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:280
-msgid ""
-"Line 7: Create the <code>SqlBuilder</code> object. We must pass the type of "
-"statement we are going to build. It can be <code>SELECT</code>, "
-"<code>UPDATE</code>, <code>INSERT</code> or <code>DELETE</code>."
-msgstr ""
-"Línea 7: crear el objeto <code>SqlBuilder</code>. Se debe pasar el tipo de "
-"sentencia que se va a construir. Puede ser <code>SELECT</code>, "
-"<code>UPDATE</code>, <code>INSERT</code> o <code>DELETE</code>."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:281
-msgid ""
-"Line 8: Set the name of the table on which the built statement will operate "
-"(it will generate <code>INSERT INTO demo</code>)"
-msgstr ""
-"Línea 8: establecer el nombre de la base de datos en la que operará la "
-"sentencia construida (generará <code>INSERT INTO demo</code>)"
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:282
-msgid ""
-"Lines 9‒10: Set the fields and its values that will be part of the "
-"statement. The first argument is the field name (as in the table). The "
-"second one is the value for that field."
-msgstr ""
-"Líneas 9‒10: establecer los campos que formarán parte de la sentencia y sus "
-"valores. El primer argumento es el nombre del campo (como aparece en la "
-"tabla). El segundo es el valor de este campo."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:283
-msgid ""
-"Line 11: Get the dynamically generated <code>Statement</code> object, which "
-"represents a SQL statement."
-msgstr ""
-"Línea 11: obtener el objeto <code>Statement</code> generado dinámicamente, "
-"que representa una sentencia SQL."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:284
-msgid "Line 12: Finally, execute the SQL statement (<code>INSERT</code>)."
-msgstr "Línea 12: finalmente, ejecutar la sentencia SQL (<code>INSERT</code>)."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:285
-msgid ""
-"Line 14: Clear the id and name fields on the screen. The code for the "
-"private method <code>_clearFields</code> is really simple and you can read "
-"it in the full demo source code."
-msgstr ""
-"Línea 14: limpiar los campos «id» y «name» en la pantalla. El código del "
-"método privado <code>_clearFields</code> es muy sencillo, y puede leerlo en "
-"el código fuente de la demostración completa."
-
-#. (itstool) path: item/p
-#: C/record-collection.js.page:286
-msgid ""
-"Line 15: Refresh the view on the screen by doing another <code>SELECT</code>."
-msgstr ""
-"Línea 15: actualizar la vista en la pantalla haciendo otro <code>SELECT</"
-"code>."
-
-#. (itstool) path: note/p
-#: C/record-collection.js.page:288
-msgid ""
-"You can also make use of parameters while building the statement. By using "
-"the <code>SqlBuilder</code> objects and parameters you are less subject to "
-"attacks like SQL injection. Check the <link href=\"http://library.gnome.org/"
-"devel/libgda/stable/\">GDA documentation</link> for more information about "
-"parameters."
-msgstr ""
-"También puede usar parámetros mientras construye la sentencia. Usando "
-"objetos y parámetros <code>SqlBuilder</code> será menos susceptible a "
-"ataques de inyección de SQL. Para obtener información adicional sobre los "
-"parámetros, consulte la <link href=\"http://library.gnome.org/devel/libgda/"
-"stable/\">documentación de GDA</link>."
-
-#. (itstool) path: section/p
-#: C/record-collection.js.page:293
-msgid ""
-"All of the code you need should now be in place, so try running the code. "
-"You now have a database for your record collection!"
-msgstr ""
-"Todo el código que necesita debe estar en su lugar, así que trate de "
-"ejecutar el código. Ahora tiene una base de datos para su colección de "
-"registros."
-
-#. (itstool) path: section/p
-#: C/record-collection.js.page:298
-msgid ""
-"If you run into problems with the tutorial, compare your code with this "
-"<link href=\"record-collection/record-collection.js\">reference code</link>."
-msgstr ""
-"Si tiene problemas con este tutorial, compare su código con este <link href="
-"\"record-collection/record-collection.js\">código de referencia</link>."
-
-#. (itstool) path: page/title
-#: C/response-type.page:17
-msgid "enum ResponseType"
-msgstr "enum ResponseType"
-
-#. (itstool) path: item/title
-#: C/response-type.page:21
-msgid "ResponseType.NONE = -1"
-msgstr "ResponseType.NONE = -1"
-
-#. (itstool) path: item/p
-#: C/response-type.page:22
-msgid ""
-"Returned if an action widget has no response id, or if the dialog gets "
-"programmatically hidden or destroyed"
-msgstr ""
-"Valor devuelto si un widget de acción no tiene ID de respuesta, o si el "
-"diálogo se oculta o se destruye mediante código"
-
-#. (itstool) path: item/title
-#: C/response-type.page:25
-msgid "ResponseType.REJECT = -2"
-msgstr "ResponseType.REJECT = -2"
-
-#. (itstool) path: item/p
-#: C/response-type.page:26 C/response-type.page:30
-msgid "Generic response id, not used by GTK+ dialogs"
-msgstr "ID de respuesta genérica, no usado en diálogos de GTK+"
-
-#. (itstool) path: item/title
-#: C/response-type.page:29
-msgid "ResponseType.ACCEPT = -3"
-msgstr "ResponseType.ACCEPT = -3"
-
-#. (itstool) path: item/title
-#: C/response-type.page:33
-msgid "ResponseType.DELETE_EVENT = -4"
-msgstr "ResponseType.DELETE_EVENT = -4"
-
-#. (itstool) path: item/p
-#: C/response-type.page:34
-msgid "Returned if the dialog is deleted"
-msgstr "Valor devuelto si se elimina el diálogo"
-
-#. (itstool) path: item/title
-#: C/response-type.page:37
-msgid "ResponseType.OK = -5"
-msgstr "ResponseType.OK = -5"
-
-#. (itstool) path: item/p
-#: C/response-type.page:38
-msgid "Returned by OK buttons in GTK+ dialogs"
-msgstr "Valor devuelto por los botones «Aceptar» en diálogos de GTK+"
-
-#. (itstool) path: item/title
-#: C/response-type.page:41
-msgid "ResponseType.CANCEL = -6"
-msgstr "ResponseType.CANCEL = -6"
-
-#. (itstool) path: item/p
-#: C/response-type.page:42
-msgid "Returned by Cancel buttons in GTK+ dialogs"
-msgstr "Valor devuelto por los botones «Cancelar» en diálogos de GTK+"
-
-#. (itstool) path: item/title
-#: C/response-type.page:45
-msgid "ResponseType.CLOSE = -7"
-msgstr "ResponseType.CLOSE = -7"
-
-#. (itstool) path: item/p
-#: C/response-type.page:46
-msgid "Returned by Close buttons in GTK+ dialogs"
-msgstr "Valor devuelto por los botones «Cerrar» en diálogos de GTK+"
-
-#. (itstool) path: item/title
-#: C/response-type.page:49
-msgid "ResponseType.YES = -8"
-msgstr "ResponseType.YES = -8"
-
-#. (itstool) path: item/p
-#: C/response-type.page:50
-msgid "Returned by Yes buttons in GTK+ dialogs"
-msgstr "Valor devuelto por los botones «Sí» en diálogos de GTK+"
-
-#. (itstool) path: item/title
-#: C/response-type.page:53
-msgid "ResponseType.NO = -9"
-msgstr "ResponseType.NO = -9"
-
-#. (itstool) path: item/p
-#: C/response-type.page:54
-msgid "Returned by No buttons in GTK+ dialogs"
-msgstr "Valor devuelto por los botones «No» en diálogos de GTK+"
-
-#. (itstool) path: item/title
-#: C/response-type.page:57
-msgid "ResponseType.APPLY = -10"
-msgstr "ResponseType.APPLY = -10"
-
-#. (itstool) path: item/p
-#: C/response-type.page:58
-msgid "Returned by Apply buttons in GTK+ dialogs"
-msgstr "Valor devuelto por los botones «Aplicar» en diálogos de GTK+"
-
-#. (itstool) path: item/title
-#: C/response-type.page:61
-msgid "ResponseType.HELP = -11"
-msgstr "ResponseType.HELP = -11"
-
-#. (itstool) path: item/p
-#: C/response-type.page:62
-msgid "Returned by Help buttons in GTK+ dialogs"
-msgstr "Valor devuelto por los botones «Ayuda» en diálogos de GTK+"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/scale.c.page:25
-msgctxt "_"
-msgid "external ref='media/scale2.png' md5='ae2ba0a6675f3d9cdcd961cdf32f1a5c'"
-msgstr "external ref='media/scale2.png' md5='ae2ba0a6675f3d9cdcd961cdf32f1a5c'"
-
-#. (itstool) path: info/title
-#: C/scale.c.page:8
-msgctxt "text"
-msgid "Scale (C)"
-msgstr "Escala (C)"
-
-#. (itstool) path: info/desc
-#: C/scale.c.page:20 C/scale.py.page:20 C/scale.vala.page:20
-msgid "A slider widget for selecting a value from a range"
-msgstr "Un widget deslizador para seleccionar un valor de un rango"
-
-#. (itstool) path: page/title
-#: C/scale.c.page:23 C/scale.js.page:21 C/scale.py.page:23
-#: C/scale.vala.page:23
-msgid "Scale"
-msgstr "Escala"
-
-#. (itstool) path: page/p
-#: C/scale.c.page:26 C/scale.py.page:25 C/scale.vala.page:25
-msgid "Slide the scales!"
-msgstr "Desplace las escalas."
-
-#. (itstool) path: page/code
-#: C/scale.c.page:28
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/* This is the callback function. \n"
-" * It is a handler function which reacts to the signal. \n"
-" * In this case, it will notify the user the value of their scale as a label.\n"
-" */\n"
-"static void\n"
-"hscale_moved (GtkRange *range,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *label = user_data;\n"
-"\n"
-" /* Get the value of the range, and convert it into a string which will be\n"
-" * used as a new label for the horizontal scale.\n"
-" * %.0f - stands for a double that will have 0 decimal places.\n"
-" */\n"
-" gdouble pos = gtk_range_get_value (range);\n"
-" /* Note: Using g_strdup_printf returns a string that must be freed. \n"
-" * (In which is done below)\n"
-" */\n"
-" gchar *str = g_strdup_printf (\"Horizontal scale is %.0f\", pos);\n"
-" gtk_label_set_text (GTK_LABEL (label), str);\n"
-"\n"
-" g_free(str);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* This is the second callback function. It is a handler function which \n"
-" * reacts to the signal. It does the same thing as the function above, except with\n"
-" * the vertical scale.\n"
-" */\n"
-"vscale_moved (GtkRange *range,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *label = user_data;\n"
-" \n"
-" gdouble pos = gtk_range_get_value (range);\n"
-" /* %.1f - stands for a double that will have 1 decimal place */\n"
-" gchar *str = g_strdup_printf (\"Vertical scale is %.1f\", pos);\n"
-" gtk_label_set_text (GTK_LABEL (label), str);\n"
-"\n"
-" \n"
-" g_free (str);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* Declare variables */\n"
-" GtkWidget *window;\n"
-" GtkWidget *h_scale;\n"
-" GtkWidget *v_scale;\n"
-" GtkWidget *hlabel;\n"
-" GtkWidget *vlabel;\n"
-" GtkWidget *grid;\n"
-"\n"
-" /* The Adjustment object represents a value \n"
-" * which has an associated lower and upper bound.\n"
-" */\n"
-" GtkAdjustment *hadjustment;\n"
-" GtkAdjustment *vadjustment;\n"
-"\n"
-" /* Create a window with a title and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Scale Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);\n"
-" gtk_container_set_border_width (GTK_CONTAINER (window), 5);\n"
-"\n"
-" /* Two labels to be shown in the window */\n"
-" hlabel = gtk_label_new (\"Move the scale handle...\");\n"
-" vlabel = gtk_label_new (\"Move the scale handle...\");\n"
-"\n"
-" \n"
-" /* gtk_adjustment_new takes six parameters, three of which \n"
-" * may be difficult to understand:\n"
-" * step increment- move the handle with the arrow keys on your keyboard to see.\n"
-" * page increment - move the handle by clicking away from it \n"
-" * on the scale to see.\n"
-" * page size - not used here.\n"
-" */\n"
-" hadjustment = gtk_adjustment_new (0, 0, 100, 5, 10, 0);\n"
-" vadjustment = gtk_adjustment_new (50, 0, 100, 5, 10, 0); \n"
-"\n"
-" /* Create the Horizontal scale, making sure the \n"
-" * digits used have no decimals.\n"
-" */\n"
-" h_scale = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, hadjustment);\n"
-" gtk_scale_set_digits (GTK_SCALE (h_scale), 0); \n"
-"\n"
-" /* Allow it to expand horizontally (if there's space), and \n"
-" * set the vertical alignment\n"
-" */\n"
-" gtk_widget_set_hexpand (h_scale, TRUE);\n"
-" gtk_widget_set_valign (h_scale, GTK_ALIGN_START);\n"
-" \n"
-" /* Connecting the \"value-changed\" signal for the horizontal scale \n"
-" * to the appropriate callback function. \n"
-" * take note that GtkRange is part of GtkScale's Object Hierarchy.\n"
-" */\n"
-" g_signal_connect (h_scale, \n"
-" \"value-changed\", \n"
-" G_CALLBACK (hscale_moved), \n"
-" hlabel);\n"
-"\n"
-"\n"
-"\n"
-" /* Create the Vertical scale. This time, we will see what happens \n"
-" * when the digits arent initially set.\n"
-" */\n"
-" v_scale = gtk_scale_new (GTK_ORIENTATION_VERTICAL, vadjustment);\n"
-" gtk_widget_set_vexpand (v_scale, TRUE);\n"
-"\n"
-" /* Connecting the \"value-changed\" signal for the vertical scale to \n"
-" * the appropriate callback function.\n"
-" */\n"
-" g_signal_connect (v_scale, \n"
-" \"value-changed\", \n"
-" G_CALLBACK (vscale_moved), \n"
-" vlabel);\n"
-"\n"
-" /* Create a grid and arrange everything accordingly */\n"
-" grid = gtk_grid_new ();\n"
-" gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n"
-" gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n"
-" gtk_grid_attach (GTK_GRID (grid), h_scale, 0, 0, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), v_scale, 1, 0, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), hlabel, 0, 1, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), vlabel, 1, 1, 1, 1);\n"
-" \n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), grid);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/* This is the callback function. \n"
-" * It is a handler function which reacts to the signal. \n"
-" * In this case, it will notify the user the value of their scale as a label.\n"
-" */\n"
-"static void\n"
-"hscale_moved (GtkRange *range,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *label = user_data;\n"
-"\n"
-" /* Get the value of the range, and convert it into a string which will be\n"
-" * used as a new label for the horizontal scale.\n"
-" * %.0f - stands for a double that will have 0 decimal places.\n"
-" */\n"
-" gdouble pos = gtk_range_get_value (range);\n"
-" /* Note: Using g_strdup_printf returns a string that must be freed. \n"
-" * (In which is done below)\n"
-" */\n"
-" gchar *str = g_strdup_printf (\"Horizontal scale is %.0f\", pos);\n"
-" gtk_label_set_text (GTK_LABEL (label), str);\n"
-"\n"
-" g_free(str);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* This is the second callback function. It is a handler function which \n"
-" * reacts to the signal. It does the same thing as the function above, except with\n"
-" * the vertical scale.\n"
-" */\n"
-"vscale_moved (GtkRange *range,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *label = user_data;\n"
-" \n"
-" gdouble pos = gtk_range_get_value (range);\n"
-" /* %.1f - stands for a double that will have 1 decimal place */\n"
-" gchar *str = g_strdup_printf (\"Vertical scale is %.1f\", pos);\n"
-" gtk_label_set_text (GTK_LABEL (label), str);\n"
-"\n"
-" \n"
-" g_free (str);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* Declare variables */\n"
-" GtkWidget *window;\n"
-" GtkWidget *h_scale;\n"
-" GtkWidget *v_scale;\n"
-" GtkWidget *hlabel;\n"
-" GtkWidget *vlabel;\n"
-" GtkWidget *grid;\n"
-"\n"
-" /* The Adjustment object represents a value \n"
-" * which has an associated lower and upper bound.\n"
-" */\n"
-" GtkAdjustment *hadjustment;\n"
-" GtkAdjustment *vadjustment;\n"
-"\n"
-" /* Create a window with a title and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Scale Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);\n"
-" gtk_container_set_border_width (GTK_CONTAINER (window), 5);\n"
-"\n"
-" /* Two labels to be shown in the window */\n"
-" hlabel = gtk_label_new (\"Move the scale handle...\");\n"
-" vlabel = gtk_label_new (\"Move the scale handle...\");\n"
-"\n"
-" \n"
-" /* gtk_adjustment_new takes six parameters, three of which \n"
-" * may be difficult to understand:\n"
-" * step increment- move the handle with the arrow keys on your keyboard to see.\n"
-" * page increment - move the handle by clicking away from it \n"
-" * on the scale to see.\n"
-" * page size - not used here.\n"
-" */\n"
-" hadjustment = gtk_adjustment_new (0, 0, 100, 5, 10, 0);\n"
-" vadjustment = gtk_adjustment_new (50, 0, 100, 5, 10, 0); \n"
-"\n"
-" /* Create the Horizontal scale, making sure the \n"
-" * digits used have no decimals.\n"
-" */\n"
-" h_scale = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, hadjustment);\n"
-" gtk_scale_set_digits (GTK_SCALE (h_scale), 0); \n"
-"\n"
-" /* Allow it to expand horizontally (if there's space), and \n"
-" * set the vertical alignment\n"
-" */\n"
-" gtk_widget_set_hexpand (h_scale, TRUE);\n"
-" gtk_widget_set_valign (h_scale, GTK_ALIGN_START);\n"
-" \n"
-" /* Connecting the \"value-changed\" signal for the horizontal scale \n"
-" * to the appropriate callback function. \n"
-" * take note that GtkRange is part of GtkScale's Object Hierarchy.\n"
-" */\n"
-" g_signal_connect (h_scale, \n"
-" \"value-changed\", \n"
-" G_CALLBACK (hscale_moved), \n"
-" hlabel);\n"
-"\n"
-"\n"
-"\n"
-" /* Create the Vertical scale. This time, we will see what happens \n"
-" * when the digits arent initially set.\n"
-" */\n"
-" v_scale = gtk_scale_new (GTK_ORIENTATION_VERTICAL, vadjustment);\n"
-" gtk_widget_set_vexpand (v_scale, TRUE);\n"
-"\n"
-" /* Connecting the \"value-changed\" signal for the vertical scale to \n"
-" * the appropriate callback function.\n"
-" */\n"
-" g_signal_connect (v_scale, \n"
-" \"value-changed\", \n"
-" G_CALLBACK (vscale_moved), \n"
-" vlabel);\n"
-"\n"
-" /* Create a grid and arrange everything accordingly */\n"
-" grid = gtk_grid_new ();\n"
-" gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n"
-" gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n"
-" gtk_grid_attach (GTK_GRID (grid), h_scale, 0, 0, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), v_scale, 1, 0, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), hlabel, 0, 1, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), vlabel, 1, 1, 1, 1);\n"
-" \n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), grid);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/scale.c.page:36
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkScale.html"
-"\">GtkScale</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkScale.html"
-"\">GtkScale</link>"
-
-#. (itstool) path: item/p
-#: C/scale.c.page:37
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkRange.html"
-"\">GtkRange</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkRange.html"
-"\">GtkRange</link>"
-
-#. (itstool) path: item/p
-#: C/scale.c.page:38 C/spinbutton.c.page:39
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkAdjustment.html"
-"\">GtkAdjustment</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkAdjustment.html"
-"\">GtkAdjustment</link>"
-
-#. (itstool) path: item/p
-#: C/scale.c.page:39
-msgid ""
-"<link href=\"http://developer.gnome.org/glib/stable/glib-String-Utility-"
-"Functions.html#g-strdup-printf\">String Utility Functions</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/glib/stable/glib-String-Utility-"
-"Functions.html#g-strdup-printf\">Funciones útiles de cadenas</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/scale.js.page:22
-msgctxt "_"
-msgid ""
-"external ref='media/scalepenguins.png' md5='2dbe6a833fec86fde71a5ddb421e2cd5'"
-msgstr ""
-"external ref='media/scalepenguins.png' md5='2dbe6a833fec86fde71a5ddb421e2cd5'"
-
-#. (itstool) path: info/title
-#: C/scale.js.page:8
-msgctxt "text"
-msgid "Scale (JavaScript)"
-msgstr "Escala (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/scale.js.page:18
-msgid "A slider which corresponds to a numerical value"
-msgstr "Un deslizador que corresponde a un valor numérico"
-
-#. (itstool) path: page/p
-#: C/scale.js.page:23
-msgid ""
-"A Scale is a horizontal or vertical slider, that represents a value inside a "
-"numerical range. When you create a new Scale, you set what its default "
-"position is, what the numbers at the top and bottom of the range are, and "
-"things like how much it moves up or down when you click on the Scale to "
-"either side of the knob. To keep from having to type all that in every time "
-"you create a new Scale, you can create an object called an Adjustment which "
-"keeps track of all that, then tell each new Scale to use that Adjustment."
-msgstr ""
-"Una escala es un deslizador horizontal o vertical, que representa un valor "
-"dentro de un rango numérico. Cuando crea una escala nueva, establece cuál es "
-"su posición predeterminada, cuáles son los números en la parte inferior y "
-"superior del rango, y cosas como cuánto sube o baja cuando pulsa en la "
-"escala o en cada lado de la perilla. Para no tener que introducir todo eso "
-"cada vez que cree una escala nueva, puede crear un objeto llamado ajuste que "
-"registra todo eso, y decirle a cada escala nueva que use ese ajuste."
-
-#. (itstool) path: page/p
-#: C/scale.js.page:24
-msgid ""
-"This scale is a simple widget that lets you adjust the size of an iceberg "
-"that penguins live on. The number of penguins on the iceberg is the product "
-"of the values of the two sliders. Try playing with them and seeing what "
-"happens."
-msgstr ""
-"Esta escala es un widget simple que le permite ajustar el tamaño de un "
-"iceberg en el que viven pingüinos. El número de pingüinos en el iceberg es "
-"el producto de los valores de ambos deslizadores. Juegue con ellos y vea qué "
-"sucede."
-
-#. (itstool) path: section/code
-#: C/scale.js.page:41
-#, no-wrap
-msgid ""
-"\n"
-"const ScaleExample = new Lang.Class({\n"
-" Name: 'Scale Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsscale'\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-"const ScaleExample = new Lang.Class({\n"
-" Name: 'Scale Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsscale'\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/scale.js.page:66
-msgid ""
-"All the code for this sample goes in the ScaleExample class. The above code "
-"creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk."
-"Application.html\">Gtk.Application</link> for our widgets and window to go "
-"in."
-msgstr ""
-"Todo el código de este ejemplo va en la clase «ScaleExample». El código "
-"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> para que vayan los widgets y "
-"la ventana."
-
-#. (itstool) path: section/code
-#: C/scale.js.page:67
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Birds on a Floe\"});\n"
-msgstr ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Birds on a Floe\"});\n"
-
-#. (itstool) path: section/title
-#: C/scale.js.page:82
-msgid "Creating the scales"
-msgstr "Crear las escalas"
-
-#. (itstool) path: section/code
-#: C/scale.js.page:83
-#, no-wrap
-msgid ""
-"\n"
-" // Create the horizontal scale\n"
-" this._hScale = Gtk.Scale.new_with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n"
-" this._hScale.set_valign (Gtk.Align.START);\n"
-" this._hScale.set_value (50);\n"
-" this._hScale.set_digits (0);\n"
-" // this._hScale.set_draw_value (false);\n"
-msgstr ""
-"\n"
-" // Create the horizontal scale\n"
-" this._hScale = Gtk.Scale.new_with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n"
-" this._hScale.set_valign (Gtk.Align.START);\n"
-" this._hScale.set_value (50);\n"
-" this._hScale.set_digits (0);\n"
-" // this._hScale.set_draw_value (false);\n"
-
-#. (itstool) path: section/p
-#: C/scale.js.page:92
-msgid ""
-"The new_with_range method is one way to create a new Scale widget. The "
-"parameters it takes are a <link href=\"http://www.roojs.org/seed/gir-1.2-gtk-"
-"3.0/gjs/Gtk.Orientation.html\">Gtk.Orientation</link>, the minimum value, "
-"the maximum value, and the increment for a single step. After that we use "
-"the Scale's methods to set its starting value, and how many decimal places "
-"it runs to. We also set its vertical alignment in this case, to control "
-"where it appears in the window."
-msgstr ""
-"El método nuevo «new_with_range» es una manera de crear un widget de escala. "
-"Los parámetros que toma son una <link href=\"http://www.roojs.org/seed/gir-"
-"1.2-gtk-3.0/gjs/Gtk.Orientation.html\">Gtk.Orientation</link>, el valor "
-"mínimo, el valor máximo, y el incremento para un solo paso. Después de eso "
-"se usan los métodos de la escala para establecer su valor de inicio, y "
-"cuántos lugares decimales abarca. También se establece su alineación "
-"vertical en este caso, para controlar dónde aparece en la ventana."
-
-#. (itstool) path: section/p
-#: C/scale.js.page:93
-msgid ""
-"We can use the set_draw_value method to tell it whether or not to show the "
-"number next to the sliding scale. It's commented out in this example."
-msgstr ""
-"Se puede usar el método «set_draw_value» para decirle si muestra o no el "
-"número junto a la escala deslizante. En este ejemplo está comentado."
-
-#. (itstool) path: section/code
-#: C/scale.js.page:95
-#, no-wrap
-msgid ""
-"\n"
-" // Create a master adjustment to use for the vertical (or any other) scale\n"
-" this._adjustment = new Gtk.Adjustment ({\n"
-" value: 95,\n"
-" lower: 0,\n"
-" upper: 100,\n"
-" step_increment: 5,\n"
-" page_increment: 10 });\n"
-msgstr ""
-"\n"
-" // Create a master adjustment to use for the vertical (or any other) scale\n"
-" this._adjustment = new Gtk.Adjustment ({\n"
-" value: 95,\n"
-" lower: 0,\n"
-" upper: 100,\n"
-" step_increment: 5,\n"
-" page_increment: 10 });\n"
-
-#. (itstool) path: section/p
-#: C/scale.js.page:105
-msgid ""
-"An Adjustment is an object we can use to simplify things when creating a new "
-"Scale. The Adjustment's \"value\" property is what the Scale's default value "
-"is, while \"upper\" and \"lower\" make the high and low ends of the "
-"numerical range. Meanwhile, the increment values show how much the slider "
-"moves when you do things like click on it."
-msgstr ""
-"Un ajuste es un objeto que se puede usar para simplificar las cosas cuando "
-"se crea una escala nueva. La propiedad «value» del ajuste es el valor "
-"predeterminado de la escala, mientras que «upper» y «lower» son los límites "
-"superior e inferior del rango numérico. Además, las valores de incremento "
-"muestran cuánto se mueve el deslizador cuando hace cosas como pulsarlo."
-
-#. (itstool) path: section/code
-#: C/scale.js.page:107
-#, no-wrap
-msgid ""
-"\n"
-" // Create a vertical scale using the adjustment we just made\n"
-" this._vScale = new Gtk.Scale ({\n"
-" orientation: Gtk.Orientation.VERTICAL,\n"
-" adjustment: this._adjustment,\n"
-" digits: 0,\n"
-" // draw_value: false,\n"
-" margin_left: 10 });\n"
-msgstr ""
-"\n"
-" // Create a vertical scale using the adjustment we just made\n"
-" this._vScale = new Gtk.Scale ({\n"
-" orientation: Gtk.Orientation.VERTICAL,\n"
-" adjustment: this._adjustment,\n"
-" digits: 0,\n"
-" // draw_value: false,\n"
-" margin_left: 10 });\n"
-
-#. (itstool) path: section/p
-#: C/scale.js.page:117
-msgid ""
-"Here we create a new Scale object using _adjustment as its \"adjustment\" "
-"property. This is a great shortcut. We still have to tell it to round off "
-"the decimal place, though. Note that the draw_value property is commented "
-"out; this is how you tell it not to show the number next to the Scale when "
-"you're creating one this way."
-msgstr ""
-"Aquí se crea un objeto de escala nuevo usando «_adjustment» como su propiedad "
-"«ajuste». Este es un buen atajo. Sin embargo, todavía hay que decirle que "
-"redondee el lugar decimal. Tenga en cuenta que la propiedad «draw_value» está "
-"comentada; así es como se le dice que no muestre el número junto a la escala "
-"cuando está creando una de esta manera."
-
-#. (itstool) path: section/code
-#: C/scale.js.page:119
-#, no-wrap
-msgid ""
-"\n"
-" // Create the label that shows the product of the two values\n"
-" this._product = (this._hScale.get_value() * this._vScale.get_value());\n"
-" this._label = new Gtk.Label ({\n"
-" label: (String(this._product) + \" penguins on the iceberg.\"),\n"
-" height_request: 200,\n"
-" width_request: 200,\n"
-" wrap: true});\n"
-"\n"
-" // Connect the two scales to functions which recalculate the label\n"
-" this._hScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
-" this._vScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
-msgstr ""
-"\n"
-" // Create the label that shows the product of the two values\n"
-" this._product = (this._hScale.get_value() * this._vScale.get_value());\n"
-" this._label = new Gtk.Label ({\n"
-" label: (String(this._product) + \" penguins on the iceberg.\"),\n"
-" height_request: 200,\n"
-" width_request: 200,\n"
-" wrap: true});\n"
-"\n"
-" // Connect the two scales to functions which recalculate the label\n"
-" this._hScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
-" this._vScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
-
-#. (itstool) path: section/p
-#: C/scale.js.page:133
-msgid ""
-"We can use the get_value method to find out the numerical value a Scale is "
-"set at. We can then do whatever we want with it, including multiply the two "
-"Scales' values together and have a <link xref=\"label.js\">Label</link> show "
-"us the product. We set the label's text to wrap around, because we're having "
-"it display a silly message too."
-msgstr ""
-"Se puede usar el método «get_value» para obtener el valor numérico en el que "
-"se estableció una escala. Después se puede hacer lo que se quiera con él, "
-"incluyendo multiplicar los dos valores de las escalas y hacer que una <link "
-"xref=\"label.js\">etiqueta</link> muestre el producto. Se configura el texto "
-"de la etiqueta para que ajuste su línea, porque también se hace que muestre "
-"un mensaje tonto."
-
-#. (itstool) path: section/p
-#: C/scale.js.page:134
-msgid ""
-"After we create the Label, we connect the two Scales' \"value-changed\" "
-"signals to _recalc, a function that will recalculate the number of penguins "
-"on the iceberg and come up with a new message."
-msgstr ""
-"Después de crear la etiqueta, se conectan las señales «value-changed» de las "
-"dos escalas a «_recalc», una función que recalculará el número de pingüinos "
-"en el iceberg y elaborará un mensaje nuevo."
-
-#. (itstool) path: section/code
-#: C/scale.js.page:136
-#, no-wrap
-msgid ""
-"\n"
-" // Create a grid to arrange things in\n"
-" this._UIGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_top: 20,\n"
-" margin_left: 20});\n"
-"\n"
-" // Attach everything to the grid\n"
-" this._UIGrid.attach (this._label, 0, 0, 1, 1);\n"
-" this._UIGrid.attach (this._hScale, 0, 1, 1, 1);\n"
-" this._UIGrid.attach (this._vScale, 1, 0, 1, 1);\n"
-msgstr ""
-"\n"
-" // Create a grid to arrange things in\n"
-" this._UIGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_top: 20,\n"
-" margin_left: 20});\n"
-"\n"
-" // Attach everything to the grid\n"
-" this._UIGrid.attach (this._label, 0, 0, 1, 1);\n"
-" this._UIGrid.attach (this._hScale, 0, 1, 1, 1);\n"
-" this._UIGrid.attach (this._vScale, 1, 0, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/scale.js.page:149
-msgid ""
-"Here we create a <link xref=\"grid.js\">Grid</link> to put everything in, "
-"then attach all our widgets to it. Note that here and on some of the widgets "
-"themselves we're using margins to keep things neatly spaced."
-msgstr ""
-"Aquí se crea una <link xref=\"grid.js\">rejilla</link> para poner todo "
-"dentro, después se le adjuntan todos los widgets. Tenga en cuenta que aquí y "
-"en algunos de los widgets se usan márgenes para mantener las cosas "
-"prolijamente espaciadas."
-
-#. (itstool) path: section/code
-#: C/scale.js.page:150
-#, no-wrap
-msgid ""
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._UIGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-msgstr ""
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._UIGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/scale.js.page:158
-msgid ""
-"Finally, we add the Grid to the window, then tell the window to show itself "
-"and all the widgets inside of it."
-msgstr ""
-"Finalmente, se le añade la rejilla a la ventana, y después se le dice a la "
-"ventana que se muestre con todos sus widgets dentro."
-
-#. (itstool) path: section/title
-#: C/scale.js.page:162
-msgid "Function which handles the scales' values changing"
-msgstr "Función que maneja el cambio de los valores de las escalas"
-
-#. (itstool) path: section/code
-#: C/scale.js.page:164
-#, no-wrap
-msgid ""
-"\n"
-" _recalc: function() {\n"
-"\n"
-" // Figure out what the product of the two scales' values is\n"
-" var product = (this._hScale.get_value() * this._vScale.get_value());\n"
-"\n"
-" // Create a blank comment line in case there isn't a silly comment to make\n"
-" var comment = \"\";\n"
-"\n"
-" // Make a silly comment based on the number of penguins\n"
-" if (product > 9000) {\n"
-" comment = \"It's over 9000!\";\n"
-" }\n"
-" else if (product < 1000 && product > 0) {\n"
-" comment = \"They're getting lonely.\";\n"
-" }\n"
-" else if (product == 0) {\n"
-" comment = \"They're all gone ...\";\n"
-" }\n"
-" else comment = \"\";\n"
-"\n"
-" // Set ._label's new text\n"
-" this._label.set_label (String (product) + \" penguins on the iceberg. \" + comment);\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-msgstr ""
-"\n"
-" _recalc: function() {\n"
-"\n"
-" // Figure out what the product of the two scales' values is\n"
-" var product = (this._hScale.get_value() * this._vScale.get_value());\n"
-"\n"
-" // Create a blank comment line in case there isn't a silly comment to make\n"
-" var comment = \"\";\n"
-"\n"
-" // Make a silly comment based on the number of penguins\n"
-" if (product > 9000) {\n"
-" comment = \"It's over 9000!\";\n"
-" }\n"
-" else if (product < 1000 && product > 0) {\n"
-" comment = \"They're getting lonely.\";\n"
-" }\n"
-" else if (product == 0) {\n"
-" comment = \"They're all gone ...\";\n"
-" }\n"
-" else comment = \"\";\n"
-"\n"
-" // Set ._label's new text\n"
-" this._label.set_label (String (product) + \" penguins on the iceberg. \" + comment);\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-
-#. (itstool) path: section/p
-#: C/scale.js.page:192
-msgid ""
-"Remember, we can get a Scale's value using its get_value method. Here we "
-"simply recalculate what the product of the two values is after one of the "
-"Scales is moved, add in a silly message depending on how many penguins are "
-"left, and change the wording on _label to show the new number and message."
-msgstr ""
-"Recuerde, se puede obtener el valor de una escala usando su método "
-"«get_value». Aquí simplemente se recalcula cuál es el producto de los dos "
-"valores después de que se mueva una de las escalas, se añade un mensaje "
-"tonto dependiendo de cuántos pingüinos quedan, y se cambian las palabras en "
-"«_label» para mostrar el número y mensaje nuevos."
-
-#. (itstool) path: section/code
-#: C/scale.js.page:194
-#, no-wrap
-msgid ""
-"\n"
-"// Run the application\n"
-"let app = new ScaleExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"// Run the application\n"
-"let app = new ScaleExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/p
-#: C/scale.js.page:199
-msgid ""
-"Finally, we create a new instance of the finished ScaleExample class, and "
-"set the application running."
-msgstr ""
-"Finalmente, se crea una instancia nueva de la clase «ScaleExample» terminada, "
-"y se ejecuta la aplicación."
-
-#. (itstool) path: section/code
-#: C/scale.js.page:204
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ScaleExample = new Lang.Class({\n"
-" Name: 'Scale Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsscale'\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Birds on a Floe\"});\n"
-"\n"
-" // Create the horizontal scale\n"
-" this._hScale = Gtk.Scale.new_with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n"
-" this._hScale.set_valign (Gtk.Align.START);\n"
-" this._hScale.set_value (50);\n"
-" this._hScale.set_digits (0);\n"
-" // this._hScale.set_draw_value (false);\n"
-"\n"
-" // Create a master adjustment to use for the vertical (or any other) scale\n"
-" this._adjustment = new Gtk.Adjustment ({\n"
-" value: 95,\n"
-" lower: 0,\n"
-" upper: 100,\n"
-" step_increment: 5,\n"
-" page_increment: 10 });\n"
-"\n"
-" // Create a vertical scale using the adjustment we just made\n"
-" this._vScale = new Gtk.Scale ({\n"
-" orientation: Gtk.Orientation.VERTICAL,\n"
-" adjustment: this._adjustment,\n"
-" digits: 0,\n"
-" // draw_value: false,\n"
-" margin_left: 10 });\n"
-"\n"
-" // Create the label that shows the product of the two values\n"
-" this._product = (this._hScale.get_value() * this._vScale.get_value());\n"
-" this._label = new Gtk.Label ({\n"
-" label: (String(this._product) + \" penguins on the iceberg.\"),\n"
-" height_request: 200,\n"
-" width_request: 200,\n"
-" wrap: true});\n"
-"\n"
-" // Connect the two scales to functions which recalculate the label\n"
-" this._hScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
-" this._vScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
-"\n"
-" // Create a grid to arrange things in\n"
-" this._UIGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_top: 20,\n"
-" margin_left: 20});\n"
-"\n"
-" // Attach everything to the grid\n"
-" this._UIGrid.attach (this._label, 0, 0, 1, 1);\n"
-" this._UIGrid.attach (this._hScale, 0, 1, 1, 1);\n"
-" this._UIGrid.attach (this._vScale, 1, 0, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._UIGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _recalc: function() {\n"
-"\n"
-" // Figure out what the product of the two scales' values is\n"
-" var product = (this._hScale.get_value() * this._vScale.get_value());\n"
-"\n"
-" // Create a blank comment line in case there isn't a silly comment to make\n"
-" var comment = \"\";\n"
-"\n"
-" // Make a silly comment based on the number of penguins\n"
-" if (product > 9000) {\n"
-" comment = \"It's over 9000!\";\n"
-" }\n"
-" else if (product < 1000 && product > 0) {\n"
-" comment = \"They're getting lonely.\";\n"
-" }\n"
-" else if (product == 0) {\n"
-" comment = \"They're all gone ...\";\n"
-" }\n"
-" else comment = \"\";\n"
-"\n"
-" // Set ._label's new text\n"
-" this._label.set_label (String (product) + \" penguins on the iceberg. \" + comment);\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ScaleExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ScaleExample = new Lang.Class({\n"
-" Name: 'Scale Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsscale'\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Birds on a Floe\"});\n"
-"\n"
-" // Create the horizontal scale\n"
-" this._hScale = Gtk.Scale.new_with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n"
-" this._hScale.set_valign (Gtk.Align.START);\n"
-" this._hScale.set_value (50);\n"
-" this._hScale.set_digits (0);\n"
-" // this._hScale.set_draw_value (false);\n"
-"\n"
-" // Create a master adjustment to use for the vertical (or any other) scale\n"
-" this._adjustment = new Gtk.Adjustment ({\n"
-" value: 95,\n"
-" lower: 0,\n"
-" upper: 100,\n"
-" step_increment: 5,\n"
-" page_increment: 10 });\n"
-"\n"
-" // Create a vertical scale using the adjustment we just made\n"
-" this._vScale = new Gtk.Scale ({\n"
-" orientation: Gtk.Orientation.VERTICAL,\n"
-" adjustment: this._adjustment,\n"
-" digits: 0,\n"
-" // draw_value: false,\n"
-" margin_left: 10 });\n"
-"\n"
-" // Create the label that shows the product of the two values\n"
-" this._product = (this._hScale.get_value() * this._vScale.get_value());\n"
-" this._label = new Gtk.Label ({\n"
-" label: (String(this._product) + \" penguins on the iceberg.\"),\n"
-" height_request: 200,\n"
-" width_request: 200,\n"
-" wrap: true});\n"
-"\n"
-" // Connect the two scales to functions which recalculate the label\n"
-" this._hScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
-" this._vScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
-"\n"
-" // Create a grid to arrange things in\n"
-" this._UIGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_top: 20,\n"
-" margin_left: 20});\n"
-"\n"
-" // Attach everything to the grid\n"
-" this._UIGrid.attach (this._label, 0, 0, 1, 1);\n"
-" this._UIGrid.attach (this._hScale, 0, 1, 1, 1);\n"
-" this._UIGrid.attach (this._vScale, 1, 0, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._UIGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _recalc: function() {\n"
-"\n"
-" // Figure out what the product of the two scales' values is\n"
-" var product = (this._hScale.get_value() * this._vScale.get_value());\n"
-"\n"
-" // Create a blank comment line in case there isn't a silly comment to make\n"
-" var comment = \"\";\n"
-"\n"
-" // Make a silly comment based on the number of penguins\n"
-" if (product > 9000) {\n"
-" comment = \"It's over 9000!\";\n"
-" }\n"
-" else if (product < 1000 && product > 0) {\n"
-" comment = \"They're getting lonely.\";\n"
-" }\n"
-" else if (product == 0) {\n"
-" comment = \"They're all gone ...\";\n"
-" }\n"
-" else comment = \"\";\n"
-"\n"
-" // Set ._label's new text\n"
-" this._label.set_label (String (product) + \" penguins on the iceberg. \" + comment);\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ScaleExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/scale.js.page:210 C/spinbutton.js.page:201
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Adjustment."
-"html\">Gtk.Adjustment</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Adjustment."
-"html\">Gtk.Adjustment</link>"
-
-#. (itstool) path: item/p
-#: C/scale.js.page:215
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Scale.html"
-"\">Gtk.Scale</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Scale.html"
-"\">Gtk.Scale</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/scale.py.page:24 C/scale.vala.page:24
-msgctxt "_"
-msgid "external ref='media/scale.png' md5='462c52a53b773cb9e8c62c646bf88452'"
-msgstr "external ref='media/scale.png' md5='462c52a53b773cb9e8c62c646bf88452'"
-
-#. (itstool) path: info/title
-#: C/scale.py.page:8
-msgctxt "text"
-msgid "Scale (Python)"
-msgstr "Escala (Python)"
-
-#. (itstool) path: section/code
-#: C/scale.py.page:31
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Scale Example\", application=app)\n"
-" self.set_default_size(400, 300)\n"
-" self.set_border_width(5)\n"
-"\n"
-" # two adjustments (initial value, min value, max value,\n"
-" # step increment - press cursor keys to see!,\n"
-" # page increment - click around the handle to see!,\n"
-" # page size - not used here)\n"
-" ad1 = Gtk.Adjustment(0, 0, 100, 5, 10, 0)\n"
-" ad2 = Gtk.Adjustment(50, 0, 100, 5, 10, 0)\n"
-"\n"
-" # an horizontal scale\n"
-" self.h_scale = Gtk.Scale(\n"
-" orientation=Gtk.Orientation.HORIZONTAL, adjustment=ad1)\n"
-" # of integers (no digits)\n"
-" self.h_scale.set_digits(0)\n"
-" # that can expand horizontally if there is space in the grid (see\n"
-" # below)\n"
-" self.h_scale.set_hexpand(True)\n"
-" # that is aligned at the top of the space allowed in the grid (see\n"
-" # below)\n"
-" self.h_scale.set_valign(Gtk.Align.START)\n"
-"\n"
-" # we connect the signal \"value-changed\" emitted by the scale with the callback\n"
-" # function scale_moved\n"
-" self.h_scale.connect(\"value-changed\", self.scale_moved)\n"
-"\n"
-" # a vertical scale\n"
-" self.v_scale = Gtk.Scale(\n"
-" orientation=Gtk.Orientation.VERTICAL, adjustment=ad2)\n"
-" # that can expand vertically if there is space in the grid (see below)\n"
-" self.v_scale.set_vexpand(True)\n"
-"\n"
-" # we connect the signal \"value-changed\" emitted by the scale with the callback\n"
-" # function scale_moved\n"
-" self.v_scale.connect(\"value-changed\", self.scale_moved)\n"
-"\n"
-" # a label\n"
-" self.label = Gtk.Label()\n"
-" self.label.set_text(\"Move the scale handles...\")\n"
-"\n"
-" # a grid to attach the widgets\n"
-" grid = Gtk.Grid()\n"
-" grid.set_column_spacing(10)\n"
-" grid.set_column_homogeneous(True)\n"
-" grid.attach(self.h_scale, 0, 0, 1, 1)\n"
-" grid.attach_next_to(\n"
-" self.v_scale, self.h_scale, Gtk.PositionType.RIGHT, 1, 1)\n"
-" grid.attach(self.label, 0, 1, 2, 1)\n"
-"\n"
-" self.add(grid)\n"
-"\n"
-" # any signal from the scales is signaled to the label the text of which is\n"
-" # changed\n"
-" def scale_moved(self, event):\n"
-" self.label.set_text(\"Horizontal scale is \" + str(int(self.h_scale.get_value())) +\n"
-" \"; vertical scale is \" + str(self.v_scale.get_value()) + \".\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Scale Example\", application=app)\n"
-" self.set_default_size(400, 300)\n"
-" self.set_border_width(5)\n"
-"\n"
-" # two adjustments (initial value, min value, max value,\n"
-" # step increment - press cursor keys to see!,\n"
-" # page increment - click around the handle to see!,\n"
-" # page size - not used here)\n"
-" ad1 = Gtk.Adjustment(0, 0, 100, 5, 10, 0)\n"
-" ad2 = Gtk.Adjustment(50, 0, 100, 5, 10, 0)\n"
-"\n"
-" # an horizontal scale\n"
-" self.h_scale = Gtk.Scale(\n"
-" orientation=Gtk.Orientation.HORIZONTAL, adjustment=ad1)\n"
-" # of integers (no digits)\n"
-" self.h_scale.set_digits(0)\n"
-" # that can expand horizontally if there is space in the grid (see\n"
-" # below)\n"
-" self.h_scale.set_hexpand(True)\n"
-" # that is aligned at the top of the space allowed in the grid (see\n"
-" # below)\n"
-" self.h_scale.set_valign(Gtk.Align.START)\n"
-"\n"
-" # we connect the signal \"value-changed\" emitted by the scale with the callback\n"
-" # function scale_moved\n"
-" self.h_scale.connect(\"value-changed\", self.scale_moved)\n"
-"\n"
-" # a vertical scale\n"
-" self.v_scale = Gtk.Scale(\n"
-" orientation=Gtk.Orientation.VERTICAL, adjustment=ad2)\n"
-" # that can expand vertically if there is space in the grid (see below)\n"
-" self.v_scale.set_vexpand(True)\n"
-"\n"
-" # we connect the signal \"value-changed\" emitted by the scale with the callback\n"
-" # function scale_moved\n"
-" self.v_scale.connect(\"value-changed\", self.scale_moved)\n"
-"\n"
-" # a label\n"
-" self.label = Gtk.Label()\n"
-" self.label.set_text(\"Move the scale handles...\")\n"
-"\n"
-" # a grid to attach the widgets\n"
-" grid = Gtk.Grid()\n"
-" grid.set_column_spacing(10)\n"
-" grid.set_column_homogeneous(True)\n"
-" grid.attach(self.h_scale, 0, 0, 1, 1)\n"
-" grid.attach_next_to(\n"
-" self.v_scale, self.h_scale, Gtk.PositionType.RIGHT, 1, 1)\n"
-" grid.attach(self.label, 0, 1, 2, 1)\n"
-"\n"
-" self.add(grid)\n"
-"\n"
-" # any signal from the scales is signaled to the label the text of which is\n"
-" # changed\n"
-" def scale_moved(self, event):\n"
-" self.label.set_text(\"Horizontal scale is \" + str(int(self.h_scale.get_value())) +\n"
-" \"; vertical scale is \" + str(self.v_scale.get_value()) + \".\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/scale.py.page:35
-msgid "Useful methods for a Scale widget"
-msgstr "Métodos útiles para un widget «Escala»"
-
-#. (itstool) path: section/p
-#: C/scale.py.page:36
-msgid ""
-"A Gtk.Adjustment is needed to construct the Gtk.Scale. This is the "
-"representation of a value with a lower and upper bound, together with step "
-"and page increments, and a page size, and it is constructed as <code>Gtk."
-"Adjustment(value, lower, upper, step_increment, page_increment, page_size)</"
-"code> where the fields are of type <code>float</code>; <code>step_increment</"
-"code> is the increment/decrement that is obtained by using the cursor keys, "
-"<code>page_increment</code> the one that is obtained clicking on the scale "
-"itself. Note that <code>page_size</code> is not used in this case, it should "
-"be set to <code>0</code>."
-msgstr ""
-"Se necesita un «Gtk.Adjustment» para construir la «Gtk.Scale». Este es la "
-"representación de un valor con un límite superior e inferior, junto con "
-"pasos y páginas de incrementos, y un tamaño de página, y se construye como "
-"<code>Gtk.Adjustment(valor, mínimo, ,máximo, paso, página, tamaño_de_página)"
-"</code> donde los campos son del tipo <code>float</code>; <code>paso</code> "
-"es el incremento/decremento que se obtiene usando las teclas de dirección, "
-"<code>página</code> es el que se obtiene pulsando en la escala en sí. Tenga "
-"en cuenta que <code>tamaño_de_página</code> no se usa en este caso, y debe "
-"establecerse a <code>0</code>."
-
-#. (itstool) path: section/p
-#: C/scale.py.page:37
-msgid ""
-"In line 28 the signal <code>\"value-changed\"</code> is connected to the "
-"callback function <code>scale_moved()</code> using <code><var>widget</var>."
-"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
-"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 28, la señal <code>«value-changed»</code> se conecta a la función "
-"de retorno de llamada <code>scale_moved()</code> usando <code><var>widget</"
-"var>.connect(<var>señal</var>, <var>función de retorno de llamada</var>)</"
-"code>. Consulte la <link xref=\"signals-callbacks.py\"/> para una "
-"explicación más detallada."
-
-#. (itstool) path: item/p
-#: C/scale.py.page:39
-msgid ""
-"<code>get_value()</code> retrieves the current value of the scale; "
-"<code>set_value(value)</code> sets it (if the <code>value</code>, of type "
-"<code>float</code>, is outside the minimum or maximum range, it will be "
-"clamped to fit inside them). These are methods of the class Gtk.Range."
-msgstr ""
-"<code>get_value()</code> obtiene el valor actual de la escala; "
-"<code>set_value(valor)</code> lo establece (si el <code>valor</code>, del "
-"tipo <code>float</code>, está fuera del rango mínimo o máximo, se ajustará "
-"para que entre). Estos son métodos de la clase «Gtk.Range»."
-
-#. (itstool) path: item/p
-#: C/scale.py.page:40
-msgid ""
-"Use <code>set_draw_value(False)</code> to avoid displaying the current value "
-"as a string next to the slider."
-msgstr ""
-"Use <code>set_draw_value(False)</code> para evitar mostrar el valor actual "
-"como una cadena junto al deslizador."
-
-#. (itstool) path: item/p
-#: C/scale.py.page:41
-msgid ""
-"To highlight the part of the scale between the origin and the current value:"
-msgstr "Para resaltar la parte de la escala entre el origen y el valor actual:"
-
-#. (itstool) path: item/code
-#: C/scale.py.page:42
-#, no-wrap
-msgid ""
-"\n"
-"self.h_scale.set_restrict_to_fill_level(False)\n"
-"self.h_scale.set_fill_level(self.h_scale.get_value())\n"
-"self.h_scale.set_show_fill_level(True)"
-msgstr ""
-"\n"
-"self.h_scale.set_restrict_to_fill_level(False)\n"
-"self.h_scale.set_fill_level(self.h_scale.get_value())\n"
-"self.h_scale.set_show_fill_level(True)"
-
-#. (itstool) path: item/p
-#: C/scale.py.page:46
-msgid ""
-"in the callback function of the \"value-changed\" signal, so to have the new "
-"filling every time the value is changed. These are methods of the class Gtk."
-"Range."
-msgstr ""
-"en la función de retorno de llamada de la señal «value-changed», para tener "
-"el relleno nuevo cada vez que cambie el valor. Estos son métodos de la clase "
-"«Gtk.Range»."
-
-#. (itstool) path: item/p
-#: C/scale.py.page:48
-msgid ""
-"<code>add_mark(value, position, markup)</code> adds a mark at the "
-"<code>value</code> (<code>float</code> or <code>int</code> if that is the "
-"precision of the scale), in <code>position</code> (<code>Gtk.PositionType."
-"LEFT, Gtk.PositionType.RIGHT, Gtk.PositionType.TOP, Gtk.PositionType.BOTTOM</"
-"code>) with text <code>Null</code> or <code>markup</code> in the Pango "
-"Markup Language. To clear marks, <code>clear_marks()</code>."
-msgstr ""
-"<code>add_mark(valor, posición, marca)</code> añade una marca en el "
-"<code>valor</code> (<code>float</code> o <code>int</code> si esa es la "
-"precisión de la escala), en <code>posición</code> (<code>Gtk.PositionType."
-"LEFT, Gtk.PositionType.RIGHT, Gtk.PositionType.TOP, Gtk.PositionType.BOTTOM</"
-"code>) con texto <code>Null</code> o <code>marca</code> en el lenguaje de "
-"marcado de Pango. Para limpiar las marcas, <code>clear_marks()</code>."
-
-#. (itstool) path: item/p
-#: C/scale.py.page:49
-msgid ""
-"<code>set_digits(digits)</code> sets the precision of the scale at "
-"<code>digits</code> digits."
-msgstr ""
-"<code>set_digits(dígitos)</code> establece la precisión de la escala en "
-"<code>dígitos</code> dígitos."
-
-#. (itstool) path: item/p
-#: C/scale.py.page:57
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkScale.html"
-"\">GtkScale</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkScale.html"
-"\">GtkScale</link>"
-
-#. (itstool) path: item/p
-#: C/scale.py.page:58 C/spinbutton.py.page:50
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkAdjustment.html"
-"\">GtkAdjustment</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkAdjustment.html"
-"\">GtkAdjustment</link>"
-
-#. (itstool) path: item/p
-#: C/scale.py.page:59 C/scrolledwindow.js.page:37 C/scrolledwindow.py.page:46
-#: C/textview.py.page:100
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/gtk3-Standard-"
-"Enumerations.html\">Standard Enumerations</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/gtk3-Standard-"
-"Enumerations.html\">Enumeraciones estándar</link>"
-
-#. (itstool) path: info/title
-#: C/scale.vala.page:8
-msgctxt "text"
-msgid "Scale (Vala)"
-msgstr "Escala (Vala)"
-
-#. (itstool) path: page/code
-#: C/scale.vala.page:27
-#, no-wrap
-msgid ""
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tGtk.Scale h_scale;\n"
-"\tGtk.Scale v_scale;\n"
-"\tGtk.Label label;\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.title = \"Scale Example\";\n"
-"\t\twindow.set_default_size (400, 300);\n"
-"\t\twindow.set_border_width (5);\n"
-"\n"
-"\t\th_scale = new Gtk.Scale.with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n"
-"\t\th_scale.set_digits (0); //number of decimal places displayed\n"
-"\t\th_scale.set_valign (Gtk.Align.START); //horizontal alignment\n"
-"\n"
-"\t\tvar adjustment = new Gtk.Adjustment (42.0, 0.0, 100.0, 5.0, 10.0, 0.0);\n"
-"\t\tv_scale = new Gtk.Scale (Gtk.Orientation.VERTICAL, adjustment);\n"
-"\t\tv_scale.set_vexpand(true);\n"
-"\n"
-"\t\tlabel = new Gtk.Label (\"Move the scale handles...\");\n"
-"\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tgrid.set_column_spacing (10); //amount of space between columns\n"
-"\t\tgrid.set_column_homogeneous (true); //all columns same width\n"
-"\t\tgrid.attach (h_scale, 0, 0, 1, 1);\n"
-"\t\tgrid.attach_next_to (v_scale, h_scale, Gtk.PositionType.RIGHT, 1, 1);\n"
-"\t\tgrid.attach (label, 0, 1, 2, 1);\n"
-"\n"
-"\t\th_scale.value_changed.connect (scale_moved);\n"
-"\t\tv_scale.value_changed.connect (scale_moved);\n"
-"\n"
-"\t\twindow.add (grid);\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"\n"
-"\t/* Callback function for \"value-changed\" signal.\n"
-"\t * The parameter refers to the scale which emitted the signal.\n"
-"\t * Since we are accessing the values of not one, but two scales,\n"
-"\t * we made the ranges instance variables, and ignore the\n"
-"\t * parameter.\n"
-"\t */\n"
-"\tvoid scale_moved (Gtk.Range range) {\n"
-"\t\tlabel.set_text (\"Horizontal scale is %.1f; vertical scale is %.1f.\".printf (h_scale.get_value (),
v_scale.get_value ()));\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tGtk.Scale h_scale;\n"
-"\tGtk.Scale v_scale;\n"
-"\tGtk.Label label;\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.title = \"Scale Example\";\n"
-"\t\twindow.set_default_size (400, 300);\n"
-"\t\twindow.set_border_width (5);\n"
-"\n"
-"\t\th_scale = new Gtk.Scale.with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n"
-"\t\th_scale.set_digits (0); //number of decimal places displayed\n"
-"\t\th_scale.set_valign (Gtk.Align.START); //horizontal alignment\n"
-"\n"
-"\t\tvar adjustment = new Gtk.Adjustment (42.0, 0.0, 100.0, 5.0, 10.0, 0.0);\n"
-"\t\tv_scale = new Gtk.Scale (Gtk.Orientation.VERTICAL, adjustment);\n"
-"\t\tv_scale.set_vexpand(true);\n"
-"\n"
-"\t\tlabel = new Gtk.Label (\"Move the scale handles...\");\n"
-"\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tgrid.set_column_spacing (10); //amount of space between columns\n"
-"\t\tgrid.set_column_homogeneous (true); //all columns same width\n"
-"\t\tgrid.attach (h_scale, 0, 0, 1, 1);\n"
-"\t\tgrid.attach_next_to (v_scale, h_scale, Gtk.PositionType.RIGHT, 1, 1);\n"
-"\t\tgrid.attach (label, 0, 1, 2, 1);\n"
-"\n"
-"\t\th_scale.value_changed.connect (scale_moved);\n"
-"\t\tv_scale.value_changed.connect (scale_moved);\n"
-"\n"
-"\t\twindow.add (grid);\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"\n"
-"\t/* Callback function for \"value-changed\" signal.\n"
-"\t * The parameter refers to the scale which emitted the signal.\n"
-"\t * Since we are accessing the values of not one, but two scales,\n"
-"\t * we made the ranges instance variables, and ignore the\n"
-"\t * parameter.\n"
-"\t */\n"
-"\tvoid scale_moved (Gtk.Range range) {\n"
-"\t\tlabel.set_text (\"Horizontal scale is %.1f; vertical scale is %.1f.\".printf (h_scale.get_value (),
v_scale.get_value ()));\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/scale.vala.page:32
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Scale.html\">Gtk.Scale</"
-"link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Scale.html\">Gtk.Scale</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/scale.vala.page:33
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Adjustment.html\">Gtk."
-"Adjustment</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Adjustment.html\">Gtk."
-"Adjustment</link>"
-
-#. (itstool) path: item/p
-#: C/scale.vala.page:34
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.PositionType.html\">Gtk."
-"PositionType</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.PositionType.html\">Gtk."
-"PositionType</link>"
-
-#. (itstool) path: item/p
-#: C/scale.vala.page:35
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Orientation.html\">Gtk."
-"Orientation</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Orientation.html\">Gtk."
-"Orientation</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/scrolledwindow.c.page:25 C/scrolledwindow.js.page:22
-#: C/scrolledwindow.py.page:23 C/scrolledwindow.vala.page:23
-msgctxt "_"
-msgid ""
-"external ref='media/scrolledwindow.png' "
-"md5='697bb3205d5c4fb0b4ea8db435843157'"
-msgstr ""
-"external ref='media/scrolledwindow.png' "
-"md5='697bb3205d5c4fb0b4ea8db435843157'"
-
-#. (itstool) path: info/title
-#: C/scrolledwindow.c.page:8
-msgctxt "text"
-msgid "ScrolledWindow (C)"
-msgstr "ScrolledWindow (C)"
-
-#. (itstool) path: info/desc
-#: C/scrolledwindow.c.page:20 C/scrolledwindow.js.page:18
-#: C/scrolledwindow.py.page:19 C/scrolledwindow.vala.page:19
-msgid "Adds scrollbars to its child widget"
-msgstr "Añade barras de desplazamiento a su widget hijo"
-
-#. (itstool) path: page/title
-#: C/scrolledwindow.c.page:23 C/scrolledwindow.js.page:21
-#: C/scrolledwindow.py.page:22 C/scrolledwindow.vala.page:22
-msgid "ScrolledWindow"
-msgstr "ScrolledWindow"
-
-#. (itstool) path: page/p
-#: C/scrolledwindow.c.page:26 C/scrolledwindow.js.page:23
-#: C/scrolledwindow.py.page:24 C/scrolledwindow.vala.page:24
-msgid "An image in a scrolled window."
-msgstr "Una imagen en una ventana con barras de desplazamiento."
-
-#. (itstool) path: page/code
-#: C/scrolledwindow.c.page:28
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* Declare variables */\n"
-" GtkWidget *window;\n"
-" GtkWidget *scrolled_window;\n"
-" GtkWidget *image;\n"
-"\n"
-" /* Create a window with a title, and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"ScrolledWindow Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 220, 200);\n"
-"\n"
-" /* Create the scrolled window. Usually NULL is passed for both parameters so\n"
-" * that it creates the horizontal/vertical adjustments automatically. Setting\n"
-" * the scrollbar policy to automatic allows the scrollbars to only show up\n"
-" * when needed.\n"
-" */\n"
-" scrolled_window = gtk_scrolled_window_new (NULL, NULL);\n"
-" /* Set the border width */\n"
-" gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 10);\n"
-" /* Extract our desired image from a file that we have */\n"
-" image = gtk_image_new_from_file (\"gnome-image.png\");\n"
-" /* And add it to the scrolled window */\n"
-" gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), image);\n"
-" /* Set the policy of the horizontal and vertical scrollbars to automatic.\n"
-" * What this means is that the scrollbars are only present if needed.\n"
-" */\n"
-" gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),\n"
-" GTK_POLICY_AUTOMATIC,\n"
-" GTK_POLICY_AUTOMATIC);\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), scrolled_window);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* Declare variables */\n"
-" GtkWidget *window;\n"
-" GtkWidget *scrolled_window;\n"
-" GtkWidget *image;\n"
-"\n"
-" /* Create a window with a title, and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"ScrolledWindow Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 220, 200);\n"
-"\n"
-" /* Create the scrolled window. Usually NULL is passed for both parameters so\n"
-" * that it creates the horizontal/vertical adjustments automatically. Setting\n"
-" * the scrollbar policy to automatic allows the scrollbars to only show up\n"
-" * when needed.\n"
-" */\n"
-" scrolled_window = gtk_scrolled_window_new (NULL, NULL);\n"
-" /* Set the border width */\n"
-" gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 10);\n"
-" /* Extract our desired image from a file that we have */\n"
-" image = gtk_image_new_from_file (\"gnome-image.png\");\n"
-" /* And add it to the scrolled window */\n"
-" gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), image);\n"
-" /* Set the policy of the horizontal and vertical scrollbars to automatic.\n"
-" * What this means is that the scrollbars are only present if needed.\n"
-" */\n"
-" gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),\n"
-" GTK_POLICY_AUTOMATIC,\n"
-" GTK_POLICY_AUTOMATIC);\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), scrolled_window);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/scrolledwindow.c.page:37
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk/stable/gtk3-Standard-"
-"Enumerations.html#GtkPolicyType\">GtkPolicyType</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk/stable/gtk3-Standard-"
-"Enumerations.html#GtkPolicyType\">GtkPolicyType</link>"
-
-#. (itstool) path: info/title
-#: C/scrolledwindow.js.page:8
-msgctxt "text"
-msgid "ScrolledWindow (JavaScript)"
-msgstr "ScrolledWindow (JavaScript)"
-
-#. (itstool) path: section/code
-#: C/scrolledwindow.js.page:29
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const GObject = imports.gi.GObject;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ScrolledWindowExample = new Lang.Class ({\n"
-" Name: 'ScrolledWindow Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application({ application_id: 'org.example.jscrolledwindow' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this.window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-" // Create the application window\n"
-" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"ScrolledWindow Example\",\n"
-" default_width: 200,\n"
-" default_height: 200,\n"
-" border_width: 10 });\n"
-" // the scrolledwindow\n"
-" this.scrolledWindow = new Gtk.ScrolledWindow();\n"
-" this.scrolledWindow.set_border_width(10);\n"
-" // there is always the scrollbar (otherwise: AUTOMATIC - only if needed - or NEVER)\n"
-" this.scrolledWindow.set_policy(Gtk.PolicyType.ALWAYS, Gtk.PolicyType.ALWAYS);\n"
-" // an image - slightly larger than the window\n"
-" this.image = new Gtk.Image();\n"
-" this.image.set_from_file(\"gnome-image.png\");\n"
-"\n"
-" // add the image to the scrolledwindow\n"
-" this.scrolledWindow.add_with_viewport(this.image);\n"
-"\n"
-" // add the scrolledwindow to the window\n"
-" this.window.add(this.scrolledWindow);\n"
-" this.window.show_all();\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ScrolledWindowExample();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const GObject = imports.gi.GObject;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ScrolledWindowExample = new Lang.Class ({\n"
-" Name: 'ScrolledWindow Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application({ application_id: 'org.example.jscrolledwindow' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this.window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-" // Create the application window\n"
-" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"ScrolledWindow Example\",\n"
-" default_width: 200,\n"
-" default_height: 200,\n"
-" border_width: 10 });\n"
-" // the scrolledwindow\n"
-" this.scrolledWindow = new Gtk.ScrolledWindow();\n"
-" this.scrolledWindow.set_border_width(10);\n"
-" // there is always the scrollbar (otherwise: AUTOMATIC - only if needed - or NEVER)\n"
-" this.scrolledWindow.set_policy(Gtk.PolicyType.ALWAYS, Gtk.PolicyType.ALWAYS);\n"
-" // an image - slightly larger than the window\n"
-" this.image = new Gtk.Image();\n"
-" this.image.set_from_file(\"gnome-image.png\");\n"
-"\n"
-" // add the image to the scrolledwindow\n"
-" this.scrolledWindow.add_with_viewport(this.image);\n"
-"\n"
-" // add the scrolledwindow to the window\n"
-" this.window.add(this.scrolledWindow);\n"
-" this.window.show_all();\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ScrolledWindowExample();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/scrolledwindow.js.page:36
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk."
-"ScrolledWindow.html\">GtkScrolledWindow</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk."
-"ScrolledWindow.html\">GtkScrolledWindow</link>"
-
-#. (itstool) path: info/title
-#: C/scrolledwindow.py.page:8
-msgctxt "text"
-msgid "ScrolledWindow (Python)"
-msgstr "ScrolledWindow (Python)"
-
-#. (itstool) path: section/code
-#: C/scrolledwindow.py.page:30
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(\n"
-" self, title=\"ScrolledWindow Example\", application=app)\n"
-" self.set_default_size(200, 200)\n"
-"\n"
-" # the scrolledwindow\n"
-" scrolled_window = Gtk.ScrolledWindow()\n"
-" scrolled_window.set_border_width(10)\n"
-" # there is always the scrollbar (otherwise: AUTOMATIC - only if needed\n"
-" # - or NEVER)\n"
-" scrolled_window.set_policy(\n"
-" Gtk.PolicyType.ALWAYS, Gtk.PolicyType.ALWAYS)\n"
-"\n"
-" # an image - slightly larger than the window...\n"
-" image = Gtk.Image()\n"
-" image.set_from_file(\"gnome-image.png\")\n"
-"\n"
-" # add the image to the scrolledwindow\n"
-" scrolled_window.add_with_viewport(image)\n"
-"\n"
-" # add the scrolledwindow to the window\n"
-" self.add(scrolled_window)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(\n"
-" self, title=\"ScrolledWindow Example\", application=app)\n"
-" self.set_default_size(200, 200)\n"
-"\n"
-" # the scrolledwindow\n"
-" scrolled_window = Gtk.ScrolledWindow()\n"
-" scrolled_window.set_border_width(10)\n"
-" # there is always the scrollbar (otherwise: AUTOMATIC - only if needed\n"
-" # - or NEVER)\n"
-" scrolled_window.set_policy(\n"
-" Gtk.PolicyType.ALWAYS, Gtk.PolicyType.ALWAYS)\n"
-"\n"
-" # an image - slightly larger than the window...\n"
-" image = Gtk.Image()\n"
-" image.set_from_file(\"gnome-image.png\")\n"
-"\n"
-" # add the image to the scrolledwindow\n"
-" scrolled_window.add_with_viewport(image)\n"
-"\n"
-" # add the scrolledwindow to the window\n"
-" self.add(scrolled_window)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/scrolledwindow.py.page:33
-msgid "Useful methods for a ScrolledWindow widget"
-msgstr "Métodos útiles para un widget «ScrolledWindow»"
-
-#. (itstool) path: item/p
-#: C/scrolledwindow.py.page:35
-msgid ""
-"<code>set_policy(hscrollbar_policy, vscrollbar_policy)</code> where each of "
-"the arguments is one of <code>Gtk.Policy.AUTOMATIC, Gtk.Policy.ALWAYS, Gtk."
-"Policy.NEVER</code> regulates whether the horizontal and vertical scrollbars "
-"should appear: with <code>AUTOMATIC</code> they appear only if needed, "
-"<code>ALWAYS</code> and <code>NEVER</code> are self-explanatory."
-msgstr ""
-"<code>set_policy(norma_barra_despl_h, norma_barra_despl_v)</code> donde cada "
-"uno de los argumentos puede ser <code>Gtk.Policy.AUTOMATIC, Gtk.Policy."
-"ALWAYS, Gtk.Policy.NEVER</code>. Regulan si deben las aparecer barras de "
-"desplazamiento horizontal y vertical: con <code>AUTOMATIC</code> sólo "
-"aparecen si se necesitan, con <code>ALWAYS</code> aparecen siempre, y con "
-"<code>NEVER</code> no aparecen nunca."
-
-#. (itstool) path: item/p
-#: C/scrolledwindow.py.page:36
-msgid ""
-"<code>add_with_viewport(widget)</code> is used to add the Gtk.Widget "
-"<code>widget</code> without native scrolling capabilities inside the window."
-msgstr ""
-"<code>add_with_viewport(widget)</code> se usa para añadir el <code>widget</"
-"code> «Gtk.Widget» sin capacidad de desplazamiento nativo dentro de la "
-"ventana."
-
-#. (itstool) path: item/p
-#: C/scrolledwindow.py.page:37
-msgid ""
-"<code>set_placement(window_placement)</code> sets the placement of the "
-"contents with respect to the scrollbars for the scrolled window. The options "
-"for the argument are <code>Gtk.CornerType.TOP_LEFT</code> (default: the "
-"scrollbars are on the bottom and on the right of the window), <code>Gtk."
-"CornerType.TOP_RIGHT, Gtk.CornerType.BOTTOM_LEFT, Gtk.CornerType."
-"BOTTOM_RIGHT</code>."
-msgstr ""
-"<code>set_placement(lugar_de_ventana)</code> establece la ubicación del "
-"contenido con respecto a las barras de desplazamiento de la ventana. Las "
-"opciones para el argumento son <code>Gtk.CornerType.TOP_LEFT</code> "
-"(predeterminada: las barras de desplazamiento están en la parte inferior y "
-"derecha de la ventana), <code>Gtk.CornerType.TOP_RIGHT, Gtk.CornerType."
-"BOTTOM_LEFT, Gtk.CornerType.BOTTOM_RIGHT</code>."
-
-#. (itstool) path: item/p
-#: C/scrolledwindow.py.page:38
-msgid ""
-"<code>set_hadjustment(adjustment)</code> and <code>set_vadjustment"
-"(adjustment)</code> set the Gtk.Adjustment <code>adjustment</code>. This is "
-"the representation of a value with a lower and upper bound, together with "
-"step and page increments, and a page size, and it is constructed as "
-"<code>Gtk.Adjustment(value, lower, upper, step_increment, page_increment, "
-"page_size)</code> where the fields are of type <code>float</code>. (Note "
-"that <code>step_increment</code> is not used in this case, it can be set to "
-"<code>0</code>.)"
-msgstr ""
-"<code>set_hadjustment(ajuste)</code> y <code>set_vadjustment(ajuste)</code> "
-"establecen el <code>ajuste</code> «Gtk.Adjustment». Este es la representación "
-"de un valor con un límite superior e inferior, junto con pasos y páginas de "
-"incrementos, y un tamaño de página, y se construye como <code>Gtk.Adjustment"
-"(valor, mínimo, ,máximo, paso, página, tamaño_de_página)</code> donde los "
-"campos son del tipo <code>float</code>. Tenga en cuenta que <code>paso</"
-"code> no se usa en este caso, y puede establecerse a <code>0</code>."
-
-#. (itstool) path: item/p
-#: C/scrolledwindow.py.page:45 C/textview.py.page:99
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkScrolledWindow.html"
-"\">GtkScrolledWindow</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkScrolledWindow.html"
-"\">GtkScrolledWindow</link>"
-
-#. (itstool) path: info/title
-#: C/scrolledwindow.vala.page:8
-msgctxt "text"
-msgid "ScrolledWindow (Vala)"
-msgstr "ScrolledWindow (Vala)"
-
-#. (itstool) path: page/code
-#: C/scrolledwindow.vala.page:26
-#, no-wrap
-msgid ""
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\t\t/* Create the window of this application. */\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.title = \"ScrolledWindow Example\";\n"
-"\t\twindow.set_default_size (200, 200);\n"
-"\n"
-"\t\tvar scrolled_window = new Gtk.ScrolledWindow (null, null);\n"
-"\t\tscrolled_window.set_border_width (10);\n"
-"\t\tscrolled_window.add_with_viewport (new Gtk.Image.from_file (\"gnome-image.png\"));\n"
-"\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);\n"
-"\n"
-"\t\twindow.add (scrolled_window);\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\t\t/* Create the window of this application. */\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.title = \"ScrolledWindow Example\";\n"
-"\t\twindow.set_default_size (200, 200);\n"
-"\n"
-"\t\tvar scrolled_window = new Gtk.ScrolledWindow (null, null);\n"
-"\t\tscrolled_window.set_border_width (10);\n"
-"\t\tscrolled_window.add_with_viewport (new Gtk.Image.from_file (\"gnome-image.png\"));\n"
-"\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);\n"
-"\n"
-"\t\twindow.add (scrolled_window);\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/scrolledwindow.vala.page:31 C/textview.vala.page:37
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ScrolledWindow.html\">Gtk."
-"ScrolledWindow</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ScrolledWindow.html\">Gtk."
-"ScrolledWindow</link>"
-
-#. (itstool) path: item/p
-#: C/scrolledwindow.vala.page:32 C/textview.vala.page:39
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.PolicyType.html\">Gtk."
-"PolicyType</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.PolicyType.html\">Gtk."
-"PolicyType</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/separator.c.page:24 C/separator.py.page:25 C/separator.vala.page:26
-msgctxt "_"
-msgid ""
-"external ref='media/separator.png' md5='8769b27662ce5c77f99e9ce33751a21a'"
-msgstr ""
-"external ref='media/separator.png' md5='8769b27662ce5c77f99e9ce33751a21a'"
-
-#. (itstool) path: info/title
-#: C/separator.c.page:8
-msgctxt "text"
-msgid "Separator (C)"
-msgstr "Separador (C)"
-
-#. (itstool) path: info/desc
-#: C/separator.c.page:19 C/separator.py.page:20 C/separator.vala.page:21
-msgid "A separator widget"
-msgstr "Un widget separador"
-
-#. (itstool) path: page/title
-#: C/separator.c.page:22 C/separator.py.page:23 C/separator.vala.page:24
-msgid "Separator"
-msgstr "Separador"
-
-#. (itstool) path: page/p
-#: C/separator.c.page:25 C/separator.py.page:26 C/separator.vala.page:27
-msgid "A horizontal and a vertical separator divide some labels."
-msgstr "Un separador horizontal y uno vertical dividen algunas etiquetas."
-
-#. (itstool) path: section/code
-#: C/separator.c.page:31
-#, no-wrap
-msgid ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *grid;\n"
-" GtkWidget *window;\n"
-" GtkWidget *label1;\n"
-" GtkWidget *label2;\n"
-" GtkWidget *label3;\n"
-" GtkWidget *hseparator;\n"
-" GtkWidget *vseparator;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Separator Example\");\n"
-"\n"
-" label1 = gtk_label_new (\"Below, a horizontal separator.\");\n"
-" label2 = gtk_label_new (\"On the right, a vertical separator.\");\n"
-" label3 = gtk_label_new (\"On the left, a vertical separator.\");\n"
-"\n"
-" vseparator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);\n"
-" hseparator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);\n"
-"\n"
-" grid = gtk_grid_new ();\n"
-"\n"
-" gtk_grid_attach (GTK_GRID (grid), label1, 0, 0, 3, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), hseparator, 0, 1, 3, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), label2, 0, 2, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), vseparator, 1, 2, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), label3, 2, 2, 1, 1);\n"
-"\n"
-" gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), grid);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *grid;\n"
-" GtkWidget *window;\n"
-" GtkWidget *label1;\n"
-" GtkWidget *label2;\n"
-" GtkWidget *label3;\n"
-" GtkWidget *hseparator;\n"
-" GtkWidget *vseparator;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Separator Example\");\n"
-"\n"
-" label1 = gtk_label_new (\"Below, a horizontal separator.\");\n"
-" label2 = gtk_label_new (\"On the right, a vertical separator.\");\n"
-" label3 = gtk_label_new (\"On the left, a vertical separator.\");\n"
-"\n"
-" vseparator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);\n"
-" hseparator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);\n"
-"\n"
-" grid = gtk_grid_new ();\n"
-"\n"
-" gtk_grid_attach (GTK_GRID (grid), label1, 0, 0, 3, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), hseparator, 0, 1, 3, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), label2, 0, 2, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), vseparator, 1, 2, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), label3, 2, 2, 1, 1);\n"
-"\n"
-" gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), grid);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: section/title
-#: C/separator.c.page:35 C/separator.py.page:36 C/separator.vala.page:37
-msgid "API Reference"
-msgstr "Referencias de la API"
-
-#. (itstool) path: item/p
-#: C/separator.c.page:39 C/separator.py.page:40
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSeparator.html"
-"\">GtkSeparator</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSeparator.html"
-"\">GtkSeparator</link>"
-
-#. (itstool) path: info/title
-#: C/separator.py.page:8
-msgctxt "text"
-msgid "Separator (Python)"
-msgstr "Separador (Python)"
-
-#. (itstool) path: section/code
-#: C/separator.py.page:32
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Separator Example\", application=app)\n"
-"\n"
-" # three labels\n"
-" label1 = Gtk.Label()\n"
-" label1.set_text(\"Below, a horizontal separator.\")\n"
-"\n"
-" label2 = Gtk.Label()\n"
-" label2.set_text(\"On the right, a vertical separator.\")\n"
-"\n"
-" label3 = Gtk.Label()\n"
-" label3.set_text(\"On the left, a vertical separator.\")\n"
-"\n"
-" # a horizontal separator\n"
-" hseparator = Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL)\n"
-" # a vertical separator\n"
-" vseparator = Gtk.Separator(orientation=Gtk.Orientation.VERTICAL)\n"
-"\n"
-" # a grid to attach labels and separators\n"
-" grid = Gtk.Grid()\n"
-" grid.attach(label1, 0, 0, 3, 1)\n"
-" grid.attach(hseparator, 0, 1, 3, 1)\n"
-" grid.attach(label2, 0, 2, 1, 1)\n"
-" grid.attach(vseparator, 1, 2, 1, 1)\n"
-" grid.attach(label3, 2, 2, 1, 1)\n"
-" grid.set_column_homogeneous(True)\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Separator Example\", application=app)\n"
-"\n"
-" # three labels\n"
-" label1 = Gtk.Label()\n"
-" label1.set_text(\"Below, a horizontal separator.\")\n"
-"\n"
-" label2 = Gtk.Label()\n"
-" label2.set_text(\"On the right, a vertical separator.\")\n"
-"\n"
-" label3 = Gtk.Label()\n"
-" label3.set_text(\"On the left, a vertical separator.\")\n"
-"\n"
-" # a horizontal separator\n"
-" hseparator = Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL)\n"
-" # a vertical separator\n"
-" vseparator = Gtk.Separator(orientation=Gtk.Orientation.VERTICAL)\n"
-"\n"
-" # a grid to attach labels and separators\n"
-" grid = Gtk.Grid()\n"
-" grid.attach(label1, 0, 0, 3, 1)\n"
-" grid.attach(hseparator, 0, 1, 3, 1)\n"
-" grid.attach(label2, 0, 2, 1, 1)\n"
-" grid.attach(vseparator, 1, 2, 1, 1)\n"
-" grid.attach(label3, 2, 2, 1, 1)\n"
-" grid.set_column_homogeneous(True)\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: info/title
-#: C/separator.vala.page:8
-msgctxt "text"
-msgid "Separator (Vala)"
-msgstr "Separador (Vala)"
-
-#. (itstool) path: section/code
-#: C/separator.vala.page:33
-#, no-wrap
-msgid ""
-"/* This is the application. */\n"
-"public class Application : Gtk.Application {\n"
-"\n"
-"\tpublic Application () {\n"
-"\t\tObject (application_id: \"org.example.window\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application,\n"
-"\t * which is inherited by Gtk.Application. */\n"
-"\tpublic override void activate () {\n"
-"\n"
-"\t\tvar window = new Gtk.Window ();\n"
-"\t\twindow.title = \"Separator Example\";\n"
-"\n"
-"\t\tvar label1 = new Gtk.Label (\"Below, a horizontal separator.\");\n"
-"\t\tvar label2 = new Gtk.Label (\"On the right, a vertical separator.\");\n"
-"\t\tvar label3 = new Gtk.Label (\"On the left, a vertical separator.\");\n"
-"\n"
-"\t\tvar hseparator = new Gtk.Separator (Gtk.Orientation.HORIZONTAL);\n"
-"\t\tvar vseparator = new Gtk.Separator (Gtk.Orientation.VERTICAL);\n"
-"\n"
-"\t\tvar grid = new Gtk.Grid();\n"
-"\n"
-"\t\tgrid.attach (label1, 0, 0, 3, 1);\n"
-"\t\tgrid.attach (hseparator, 0, 1, 3, 1);\n"
-"\t\tgrid.attach (label2, 0, 2, 1, 1);\n"
-"\t\tgrid.attach (vseparator, 1, 2, 1, 1);\n"
-"\t\tgrid.attach (label3, 2, 2, 1, 1);\n"
-"\n"
-"\t\tgrid.set_column_homogeneous(true);\n"
-"\n"
-"\t\twindow.add (grid);\n"
-"\t\tthis.add_window (window);\n"
-"\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* The main function creates the application and runs it.*/\n"
-"int main (string[] args) {\n"
-"\tvar app = new Application ();\n"
-"\treturn app.run (args);\n"
-"}\n"
-msgstr ""
-"/* This is the application. */\n"
-"public class Application : Gtk.Application {\n"
-"\n"
-"\tpublic Application () {\n"
-"\t\tObject (application_id: \"org.example.window\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application,\n"
-"\t * which is inherited by Gtk.Application. */\n"
-"\tpublic override void activate () {\n"
-"\n"
-"\t\tvar window = new Gtk.Window ();\n"
-"\t\twindow.title = \"Separator Example\";\n"
-"\n"
-"\t\tvar label1 = new Gtk.Label (\"Below, a horizontal separator.\");\n"
-"\t\tvar label2 = new Gtk.Label (\"On the right, a vertical separator.\");\n"
-"\t\tvar label3 = new Gtk.Label (\"On the left, a vertical separator.\");\n"
-"\n"
-"\t\tvar hseparator = new Gtk.Separator (Gtk.Orientation.HORIZONTAL);\n"
-"\t\tvar vseparator = new Gtk.Separator (Gtk.Orientation.VERTICAL);\n"
-"\n"
-"\t\tvar grid = new Gtk.Grid();\n"
-"\n"
-"\t\tgrid.attach (label1, 0, 0, 3, 1);\n"
-"\t\tgrid.attach (hseparator, 0, 1, 3, 1);\n"
-"\t\tgrid.attach (label2, 0, 2, 1, 1);\n"
-"\t\tgrid.attach (vseparator, 1, 2, 1, 1);\n"
-"\t\tgrid.attach (label3, 2, 2, 1, 1);\n"
-"\n"
-"\t\tgrid.set_column_homogeneous(true);\n"
-"\n"
-"\t\twindow.add (grid);\n"
-"\t\tthis.add_window (window);\n"
-"\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* The main function creates the application and runs it.*/\n"
-"int main (string[] args) {\n"
-"\tvar app = new Application ();\n"
-"\treturn app.run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/separator.vala.page:41
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.html\">GtkWindow</"
-"link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.html\">GtkWindow</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/separator.vala.page:42
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Separator.html"
-"\">GtkSeparator</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Separator.html"
-"\">GtkSeparator</link>"
-
-#. (itstool) path: item/p
-#: C/separator.vala.page:43
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Grid.html\">GtkGrid</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Grid.html\">GtkGrid</link>"
-
-#. (itstool) path: item/p
-#: C/separator.vala.page:44
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Label.html\">GtkLabel</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Label.html\">GtkLabel</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/set-up-gedit.js.page:25
-msgctxt "_"
-msgid ""
-"external ref='media/geditview.png' md5='f1438295662d95f56fcd1d8200efaaf2'"
-msgstr ""
-"external ref='media/geditview.png' md5='f1438295662d95f56fcd1d8200efaaf2'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/set-up-gedit.js.page:37
-msgctxt "_"
-msgid ""
-"external ref='media/gediteditor.png' md5='50db1ee8f2c545744879ee9fba5b4b24'"
-msgstr ""
-"external ref='media/gediteditor.png' md5='50db1ee8f2c545744879ee9fba5b4b24'"
-
-#. (itstool) path: page/title
-#: C/set-up-gedit.js.page:19
-msgid "Set up gedit for JavaScript development"
-msgstr "Configurar gedit para el desarrollo de JavaScript"
-
-#. (itstool) path: page/p
-#: C/set-up-gedit.js.page:20
-msgid ""
-"This tutorial will show you how to set up <link href=\"http://projects.gnome."
-"org/gedit/\">gedit</link>, GNOME's basic text editor, so that it has a "
-"handful of extra features which are useful for writing JavaScript code."
-msgstr ""
-"Este tutorial le mostrará cómo configurar <link href=\"http://projects.gnome."
-"org/gedit/\">gedit</link>, el editor de texto básico de GNOME para que tenga "
-"algunas características adicionales que son útiles para escribir código de "
-"JavaScript."
-
-#. (itstool) path: section/title
-#: C/set-up-gedit.js.page:23
-msgid "Making code clearer"
-msgstr "Simplificar el código"
-
-#. (itstool) path: section/p
-#: C/set-up-gedit.js.page:24
-msgid ""
-"Click on <gui>Edit</gui> in gedit's menu bar, then click on "
-"<gui>Preferences</gui>. You should see something like this:"
-msgstr ""
-"Pulse en <gui>Editar</gui> en la barra de menú de gedit, después pulse en "
-"<gui>Preferencias</gui>. Debería ver algo así:"
-
-#. (itstool) path: section/p
-#: C/set-up-gedit.js.page:26
-msgid "Here are the options you want to make sure are turned on."
-msgstr "Aquí están las opciones que quiere asegurarse que estén activadas."
-
-#. (itstool) path: item/p
-#: C/set-up-gedit.js.page:28
-msgid ""
-"<gui>Display line numbers</gui> will help you compare the code you type in "
-"with the original, and make it easier to see which line is causing an error "
-"if there is a bug."
-msgstr ""
-"<gui>Mostrar números de línea</gui> le ayudará a comparar el código que "
-"introduce con el original, y le hará más fácil ver qué línea está causando "
-"un error si hay alguno."
-
-#. (itstool) path: item/p
-#: C/set-up-gedit.js.page:29
-msgid ""
-"<gui>Highlight current line</gui> makes it easier to see which line you're "
-"on, when you have to go back and forth a lot."
-msgstr ""
-"<gui>Resaltar la línea actual</gui> hace más fácil ver en qué línea está, "
-"cuando tiene que ir hacia atrás y adelante mucho."
-
-#. (itstool) path: item/p
-#: C/set-up-gedit.js.page:30
-msgid ""
-"<gui>Highlight matching brackets</gui> helps you make sure you didn't leave "
-"out a bracket by accident."
-msgstr ""
-"<gui>Resaltar corchetes correspondientes</gui> le ayuda a asegurarse de que "
-"no dejó fuera un corchete por accidente."
-
-#. (itstool) path: section/title
-#: C/set-up-gedit.js.page:35
-msgid "Making editing easier"
-msgstr "Facilitar la edición"
-
-#. (itstool) path: section/p
-#: C/set-up-gedit.js.page:36
-msgid ""
-"In gedit's <gui>Preferences</gui> dialog, click on the <gui>Editor</gui> "
-"tab. You should see something like this:"
-msgstr ""
-"En el diálogo <gui>Preferencias</gui> de gedit, pulse en la pestaña "
-"<gui>Editor</gui>. Debería ver algo así:"
-
-#. (itstool) path: section/p
-#: C/set-up-gedit.js.page:38
-msgid ""
-"Here, you want to have <gui>Enable automatic indentation</gui> turned on. "
-"This means that when you hit <key>Enter</key> the cursor stays indented as "
-"far as the last line was. This is extremely useful when writing JavaScript "
-"code, since it uses indentation to make it clearer which parts do what."
-msgstr ""
-"Aquí, puede querer tener activada la opción <gui>Activar sangría automática</"
-"gui>. Esto significa que cuando pulse <key>Intro</key> el cursor mantendrá "
-"la sangría de la última línea. Esto es extremadamente útil cuando escribe "
-"código de JavaScript, dado que usa la sangría para hacer más claro qué "
-"partes hacen qué."
-
-#. (itstool) path: note/p
-#: C/set-up-gedit.js.page:39
-msgid ""
-"If you want to share code with other people who write GNOME JavaScript "
-"applications, you'll also want to set <gui>Tab width</gui> to 4 and turn on "
-"<gui>Insert spaces instead of tabs</gui>."
-msgstr ""
-"Si quiere compartir código con otras personas que escriben aplicaciones de "
-"GNOME en JavaScript, también querrá establecer la <gui>Anchura del "
-"tabulador</gui> a 4 y activar <gui>Insertar espacios en lugar de "
-"tabuladores</gui>."
-
-#. (itstool) path: info/title
-#: C/signals-callbacks.py.page:9
-msgctxt "text"
-msgid "Signals and callbacks (Python)"
-msgstr "Señales y retornos de llamada (Python)"
-
-#. (itstool) path: info/desc
-#: C/signals-callbacks.py.page:14
-msgid "An explanation of signals and callbacks in GTK+."
-msgstr "Una explicación de señales y retornos de llamada en GTK+."
-
-#. (itstool) path: page/title
-#: C/signals-callbacks.py.page:27
-msgid "Signals and callbacks"
-msgstr "Señales y retornos de llamada"
-
-#. (itstool) path: section/p
-#: C/signals-callbacks.py.page:34
-msgid ""
-"Like most GUI toolkits, GTK+ uses an event-driven programming model. When "
-"the user is doing nothing, GTK+ sits in the main loop and waits for input. "
-"If the user performs some action - say, a mouse click - then the main loop "
-"\"wakes up\" and delivers an event to GTK+."
-msgstr ""
-"Al igual que la mayoría de los kits de herramientas de IGU, GTK+ usa un "
-"modelo de programación dirigida por eventos. Cuando el usuario no hace nada, "
-"GTK+ se queda en el bucle principal y espera la entrada. Si el usuario "
-"realiza alguna acción (como una pulsación del ratón), entonces el bucle "
-"principal «despierta» y le envía un evento a GTK+."
-
-#. (itstool) path: section/p
-#: C/signals-callbacks.py.page:36
-msgid ""
-"When widgets receive an event, they frequently emit one or more signals. "
-"Signals notify your program that \"something interesting happened\" by "
-"invoking functions you have connected to the signal. Such functions are "
-"commonly known as callbacks. When your callbacks are invoked, you would "
-"typically take some action. After a callback finishes, GTK+ will return to "
-"the main loop and await more user input."
-msgstr ""
-"Cuando los widgets reciben un evento, frecuentemente emiten una o más "
-"señales. Las señales le notifican a su programa que «algo interesante "
-"sucedió» invocando funciones que les ha conectado. Estas funciones se "
-"conocen comúnmente como retornos de llamada. Cuando sus retornos de llamada "
-"se invoquen, típicamente realizaría alguna acción. Después de que un retorno "
-"de llamada termina, GTK+ retorna al bucle principal y espera más entrada del "
-"usuario."
-
-#. (itstool) path: section/p
-#: C/signals-callbacks.py.page:38
-msgid ""
-"A generic example is: <code>handler_id = widget.connect(\"event\", callback, "
-"data)</code>. <code>widget</code> is an instance of a widget we created "
-"earlier. Next, the <code>event</code> we are interested in. Each widget has "
-"its own particular events which can occur. For instance, if you have a Gtk."
-"Button you usually want to connect to the \"clicked\" event: this means that "
-"when the button is clicked, the signal is issued. Another example is the "
-"<code>notify::property</code> signal: whenever a <link xref=\"properties.py"
-"\">property</link> is modified on a GObject, instead of just emitting the "
-"<code>notify</code> signal, GObject associates as a detail to this signal "
-"emission the name of the property modified. This allows clients who wish to "
-"be notified of changes to only one property to filter most events before "
-"receiving them. Thirdly, the callback argument is the name of the callback "
-"function, which contains the code which runs when signals of the specified "
-"type are issued. Finally, the optional data argument includes any data which "
-"should be passed when the signal is issued."
-msgstr ""
-"Un ejemplo genérico es: <code>id_de_manejador = widget.connect(\"evento\", "
-"retorno_de_llamada, datos)</code>. <code>widget</code> es una instancia de "
-"un widget que creó anteriormente. A continuación, el <code>evento</code> en "
-"el que está interesado. Cada widget tiene sus propios eventos particulares "
-"que pueden ocurrir. Por ejemplo, si tiene un «Gtk.Button» generalmente querrá "
-"conectar el evento «clicked»: esto significa que cuando el botón se pulsa, la "
-"señal se envía. Otro ejemplo es la señal <code>notify::property</code>: cada "
-"vez que una <link xref=\"properties.py\">propiedad</link> se modifica en un "
-"«GObject», en lugar de sólo emitir la señal <code>notify</code>, GObject "
-"asocia como un detalle a la emisión de la señal el nombre de la propiedad "
-"modificada. Esto permite clientes que quieran notificarse de cambios de una "
-"sola propiedad para filtrar la mayoría de los eventos antes de recibirlos. "
-"Tercero, el argumento «retorno_de_llamada» es el nombre de la función de "
-"retorno de llamada, que contiene el código que se ejecuta cuando se emiten "
-"las señales del tipo especificado. Finalmente, el argumento opcional «datos» "
-"incluye cualquier dato que debe pasarse cuando se emita la señal."
-
-#. (itstool) path: section/p
-#: C/signals-callbacks.py.page:40
-msgid ""
-"The function returns a number (the <code>handler_id</code>) that identifies "
-"this particular signal-callback pair. This number is required to disconnect "
-"from a signal such that the callback function will not be called during any "
-"future or currently ongoing emissions of the signal it has been connected "
-"to, as in <code>widget.disconnect(handler_id)</code>."
-msgstr ""
-"La función devuelve un número (el <code>id_de_manejador</code>) que "
-"identifica este par «señal-retorno de llamada» particular. Este número se "
-"requiere para desconectar una señal para que la función de retorno de "
-"llamada no se llame durante emisiones de la señal a la que se ha conectado "
-"futuras o en progreso, como en <code>widget.disconnect(id_de_manejador)</"
-"code>."
-
-#. (itstool) path: section/p
-#: C/signals-callbacks.py.page:47
-msgid ""
-"<link href=\"http://developer.gnome.org/gobject/stable/signal.html"
-"\">Signals</link> in GObject documentation"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gobject/stable/signal.html"
-"\">Señales</link> en la documentación de GObject"
-
-#. (itstool) path: section/p
-#: C/signals-callbacks.py.page:48
-msgid ""
-"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/basics."
-"html\">Basics - Main loop and Signals</link> in Python GTK+ 3 Tutorial"
-msgstr ""
-"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/basics."
-"html\">Conceptos básicos: bucle principal y señales</link> en el tutorial de "
-"GTK+ en Python 3"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/spinbutton.c.page:26 C/spinbutton.py.page:24 C/spinbutton.vala.page:24
-msgctxt "_"
-msgid ""
-"external ref='media/spinbutton.png' md5='993cbb7d9bd271a329727a926195712a'"
-msgstr ""
-"external ref='media/spinbutton.png' md5='993cbb7d9bd271a329727a926195712a'"
-
-#. (itstool) path: info/title
-#: C/spinbutton.c.page:8
-msgctxt "text"
-msgid "SpinButton (C)"
-msgstr "SpinButton (C)"
-
-#. (itstool) path: info/desc
-#: C/spinbutton.c.page:21
-msgid "Retrieve an integer or floating point number"
-msgstr "Obtener un número entero o en coma flotante"
-
-#. (itstool) path: page/title
-#: C/spinbutton.c.page:24 C/spinbutton.js.page:24 C/spinbutton.py.page:23
-#: C/spinbutton.vala.page:23
-msgid "SpinButton"
-msgstr "SpinButton"
-
-#. (itstool) path: page/p
-#: C/spinbutton.c.page:27 C/spinbutton.py.page:25 C/spinbutton.vala.page:25
-msgid "Choose a number, by entering it or by clicking on the -/+ buttons!"
-msgstr "Elija un número, escribiéndolo o pulsando los botones -/+."
-
-#. (itstool) path: page/code
-#: C/spinbutton.c.page:29
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/* This is the callback function. \n"
-" * It is a handler function which reacts to the signal. \n"
-" * In this case, it will notify the user the value of their spinbutton \n"
-" * as a label.\n"
-" */\n"
-"static void\n"
-"spin_clicked (GtkSpinButton *spinbutton,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *label = user_data;\n"
-" gint value = gtk_spin_button_get_value_as_int (spinbutton);\n"
-"\n"
-" /* %d - Is used when printing integers.\n"
-" * Note: Using g_strdup_printf returns a string that must be freed. \n"
-" * (In which is done below)\n"
-" */\n"
-" gchar *str = g_strdup_printf (\"The number you selected is %d.\", value);\n"
-" gtk_label_set_text (GTK_LABEL (label), str);\n"
-"\n"
-" g_free(str);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* Declare variables */\n"
-" GtkWidget *window;\n"
-" GtkWidget *label;\n"
-" GtkWidget *grid;\n"
-" GtkWidget *spin_button;\n"
-" GtkAdjustment *adjustment;\n"
-"\n"
-"\n"
-" /* Create a window with a title, a border width, and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"SpinButton Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 210, 70);\n"
-" gtk_container_set_border_width (GTK_CONTAINER (window), 5);\n"
-"\n"
-" /* Create a label to be shown in the window */\n"
-" label = gtk_label_new (\"Choose a number\");\n"
-"\n"
-" /* Create an adjustment representing an adjustable bounded value */\n"
-" adjustment = gtk_adjustment_new (0, 0, 100, 1, 0, 0);\n"
-"\n"
-"\n"
-" /* Create a spin button that is to be as wide as possible */\n"
-" spin_button = gtk_spin_button_new (adjustment, 1, 0);\n"
-" gtk_widget_set_hexpand (spin_button, TRUE);\n"
-" \n"
-" /* Connecting the \"value-changed\" signal for the spinbutton \n"
-" * to the appropriate callback function. \n"
-" */\n"
-" g_signal_connect (spin_button, \n"
-" \"value-changed\", \n"
-" G_CALLBACK (spin_clicked), \n"
-" label);\n"
-"\n"
-"\n"
-" /* Create a grid and arrange everything accordingly */\n"
-" grid = gtk_grid_new ();\n"
-" gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n"
-" gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n"
-" gtk_grid_attach (GTK_GRID (grid), spin_button, 0, 0, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1);\n"
-" \n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), grid);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/* This is the callback function. \n"
-" * It is a handler function which reacts to the signal. \n"
-" * In this case, it will notify the user the value of their spinbutton \n"
-" * as a label.\n"
-" */\n"
-"static void\n"
-"spin_clicked (GtkSpinButton *spinbutton,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *label = user_data;\n"
-" gint value = gtk_spin_button_get_value_as_int (spinbutton);\n"
-"\n"
-" /* %d - Is used when printing integers.\n"
-" * Note: Using g_strdup_printf returns a string that must be freed. \n"
-" * (In which is done below)\n"
-" */\n"
-" gchar *str = g_strdup_printf (\"The number you selected is %d.\", value);\n"
-" gtk_label_set_text (GTK_LABEL (label), str);\n"
-"\n"
-" g_free(str);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* Declare variables */\n"
-" GtkWidget *window;\n"
-" GtkWidget *label;\n"
-" GtkWidget *grid;\n"
-" GtkWidget *spin_button;\n"
-" GtkAdjustment *adjustment;\n"
-"\n"
-"\n"
-" /* Create a window with a title, a border width, and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"SpinButton Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 210, 70);\n"
-" gtk_container_set_border_width (GTK_CONTAINER (window), 5);\n"
-"\n"
-" /* Create a label to be shown in the window */\n"
-" label = gtk_label_new (\"Choose a number\");\n"
-"\n"
-" /* Create an adjustment representing an adjustable bounded value */\n"
-" adjustment = gtk_adjustment_new (0, 0, 100, 1, 0, 0);\n"
-"\n"
-"\n"
-" /* Create a spin button that is to be as wide as possible */\n"
-" spin_button = gtk_spin_button_new (adjustment, 1, 0);\n"
-" gtk_widget_set_hexpand (spin_button, TRUE);\n"
-" \n"
-" /* Connecting the \"value-changed\" signal for the spinbutton \n"
-" * to the appropriate callback function. \n"
-" */\n"
-" g_signal_connect (spin_button, \n"
-" \"value-changed\", \n"
-" G_CALLBACK (spin_clicked), \n"
-" label);\n"
-"\n"
-"\n"
-" /* Create a grid and arrange everything accordingly */\n"
-" grid = gtk_grid_new ();\n"
-" gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n"
-" gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n"
-" gtk_grid_attach (GTK_GRID (grid), spin_button, 0, 0, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1);\n"
-" \n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), grid);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/spinbutton.c.page:37
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkSpinButton.html"
-"\">GtkSpinButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkSpinButton.html"
-"\">GtkSpinButton</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/spinbutton.js.page:25
-msgctxt "_"
-msgid ""
-"external ref='media/spinbuttonkittens.png' "
-"md5='577cce8a902140aacbab73fe8a76a010'"
-msgstr ""
-"external ref='media/spinbuttonkittens.png' "
-"md5='577cce8a902140aacbab73fe8a76a010'"
-
-#. (itstool) path: info/title
-#: C/spinbutton.js.page:8
-msgctxt "text"
-msgid "SpinButton (JavaScript)"
-msgstr "SpinButton (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/spinbutton.js.page:21
-msgid "A number entry field that has + and - buttons"
-msgstr "Un campo de entrada numérico que tiene botones «+» y «-»."
-
-#. (itstool) path: page/p
-#: C/spinbutton.js.page:26
-msgid ""
-"A SpinButton is not related to a <link xref=\"spinner.js\">Spinner</link>. "
-"It's a text entry field which only accepts numbers, and which has plus and "
-"minus buttons to let you change the value without having to type anything in."
-msgstr ""
-"Un «SpinButton» no está relacionado con un <link xref=\"spinner.js\">Spinner</"
-"link>. Es un campo de entrada de texto que sólo acepta números, y que tiene "
-"botones más y menos para dejarle cambiar el valor sin tener que escribir "
-"nada."
-
-#. (itstool) path: page/p
-#: C/spinbutton.js.page:27
-msgid ""
-"It's best used when it's obvious that only a number can be entered into it. "
-"In this example, two SpinButtons are used for the number of kittens and "
-"number of cans of tuna to give them."
-msgstr ""
-"Su uso es bueno cuando es obvio que sólo se le puede introducir un número. "
-"En este ejemplo, se usan dos botones incrementales para el número de gatitos "
-"y el número de latas de atún para darles."
-
-#. (itstool) path: section/code
-#: C/spinbutton.js.page:44
-#, no-wrap
-msgid ""
-"\n"
-"const SpinButtonExample = new Lang.Class({\n"
-" Name: 'SpinButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsspinbutton'\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-"const SpinButtonExample = new Lang.Class({\n"
-" Name: 'SpinButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsspinbutton'\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/spinbutton.js.page:69
-msgid ""
-"All the code for this sample goes in the SpinButtonExample class. The above "
-"code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> for our widgets and window to "
-"go in."
-msgstr ""
-"Todo el código de este ejemplo va en la clase «SpinButtonExample». El código "
-"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> para que vayan los widgets y "
-"la ventana."
-
-#. (itstool) path: section/code
-#: C/spinbutton.js.page:70
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Kitten Feeder\"});\n"
-msgstr ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Kitten Feeder\"});\n"
-
-#. (itstool) path: section/title
-#: C/spinbutton.js.page:85
-msgid "Creating the SpinButtons"
-msgstr "Crear los botones incrementales"
-
-#. (itstool) path: section/code
-#: C/spinbutton.js.page:86
-#, no-wrap
-msgid ""
-"\n"
-" // Create the first spinbutton using a function\n"
-" this._kittens = Gtk.SpinButton.new_with_range (1, 9001, 1);\n"
-" this._kittens.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
-msgstr ""
-"\n"
-" // Create the first spinbutton using a function\n"
-" this._kittens = Gtk.SpinButton.new_with_range (1, 9001, 1);\n"
-" this._kittens.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
-
-#. (itstool) path: section/p
-#: C/spinbutton.js.page:92
-msgid ""
-"We can use the new_with_range function to create a new SpinButton quickly. "
-"Its first parameter is the SpinButton's starting value, its second is the "
-"maximum value, and its third is how much to increment it when the plus or "
-"minus buttons are pressed."
-msgstr ""
-"Se puede usar la función «new_with_range» para crear un botón incremental "
-"nuevo rápidamente. Su primer parámetro es el valor inicial del botón "
-"incremental, el segundo es el valor máximo, y el tercero es cuánto se "
-"incrementa cuando se presionan los botones más o menos."
-
-#. (itstool) path: section/p
-#: C/spinbutton.js.page:93
-msgid ""
-"After we create the first SpinButton, we connect its value-changed signal to "
-"a function which handles what happens when the number inside either "
-"SpinButton changes."
-msgstr ""
-"Después de crear el primer botón incremental, se conecta su señal «value-"
-"changed» a una función que maneja qué sucede cuando cambia el número dentro "
-"de cada botón incremental."
-
-#. (itstool) path: section/code
-#: C/spinbutton.js.page:95
-#, no-wrap
-msgid ""
-"\n"
-" // Create an adjustment to use for the second spinbutton\n"
-" this._adjustment = new Gtk.Adjustment ({\n"
-" value: 1,\n"
-" lower: 0,\n"
-" upper: 9001,\n"
-" step_increment: 1,\n"
-" page_increment: 10 });\n"
-"\n"
-" // Create the second spinbutton\n"
-" this._tuna = new Gtk.SpinButton ({ adjustment: this._adjustment });\n"
-" this._tuna.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
-"\n"
-" // this._tuna.set_digits (1);\n"
-" // this._tuna.set_wrap (true);\n"
-msgstr ""
-"\n"
-" // Create an adjustment to use for the second spinbutton\n"
-" this._adjustment = new Gtk.Adjustment ({\n"
-" value: 1,\n"
-" lower: 0,\n"
-" upper: 9001,\n"
-" step_increment: 1,\n"
-" page_increment: 10 });\n"
-"\n"
-" // Create the second spinbutton\n"
-" this._tuna = new Gtk.SpinButton ({ adjustment: this._adjustment });\n"
-" this._tuna.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
-"\n"
-" // this._tuna.set_digits (1);\n"
-" // this._tuna.set_wrap (true);\n"
-
-#. (itstool) path: section/p
-#: C/spinbutton.js.page:112
-msgid ""
-"If you want more fine-grained control over a SpinButton, or want to create a "
-"bunch of SpinButtons which all use the same parameters, you can create an "
-"object called an <link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Adjustment.html\">Adjustment</link>. Then you can use that object as a "
-"new SpinButton's adjustment property, and it sets all the values at once. "
-"Afterwards, you can change all the SpinButtons which use that adjustment by "
-"changing the Adjustment object's properties."
-msgstr ""
-"Si quiere un control más fino sobre un botón incremental, o si quiere crear "
-"varios botones incrementales que usen todos los mismos parámetros, puede "
-"crear un objeto llamado <link href=\"http://www.roojs.org/seed/gir-1.2-gtk-"
-"3.0/gjs/Gtk.Adjustment.html\">Ajuste</link>. Entonces, podrá usar ese objeto "
-"como una propiedad de ajuste nueva del botón incremental, y establecer todos "
-"los valores de una vez. Después, puede cambiar todos los botones "
-"incrementales que usan ese ajuste cambiando las propiedades de su objeto."
-
-#. (itstool) path: section/p
-#: C/spinbutton.js.page:113
-msgid ""
-"The commented-out lines here show things you can do to customize your "
-"SpinButton. You can set the number of digits which go after the decimal "
-"point, for example, or tell it to wrap the number around if it goes past the "
-"upper or lower bounds that you set."
-msgstr ""
-"Las líneas comentadas aquí muestran cosas que puede hacer para personalizar "
-"su botón incremental. Puede configurar el número de dígitos que van después "
-"de la coma decimal, por ejemplo, o decirle que dé la vuelta si pasa el "
-"límite superior o inferior que estableció."
-
-#. (itstool) path: note/p
-#: C/spinbutton.js.page:114
-msgid ""
-"For the kitties' sake, please don't use set_digits to allow a decimal number "
-"of kittens."
-msgstr ""
-"Por el bien de los gatitos, por favor no use «set_digits» para permitir un "
-"número decimal de gatitos."
-
-#. (itstool) path: section/title
-#: C/spinbutton.js.page:118
-msgid "Creating the rest of the UI"
-msgstr "Crear el resto de la IU"
-
-#. (itstool) path: section/code
-#: C/spinbutton.js.page:120
-#, no-wrap
-msgid ""
-"\n"
-" // Create the text labels to go with the spinbuttons\n"
-" this._startLabel = new Gtk.Label ({ label: \"There are \" });\n"
-" this._kittenLabel = new Gtk.Label ({ label: \" kitten(s), and \"});\n"
-" this._tunaLabel = new Gtk.Label ({ label: \" can(s) of tuna.\"});\n"
-" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()));\n"
-" this._lastLabel = new Gtk.Label ({\n"
-" label: \"That's \" + this.perKitten + \" can(s) of tuna per kitten.\" });\n"
-msgstr ""
-"\n"
-" // Create the text labels to go with the spinbuttons\n"
-" this._startLabel = new Gtk.Label ({ label: \"There are \" });\n"
-" this._kittenLabel = new Gtk.Label ({ label: \" kitten(s), and \"});\n"
-" this._tunaLabel = new Gtk.Label ({ label: \" can(s) of tuna.\"});\n"
-" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()));\n"
-" this._lastLabel = new Gtk.Label ({\n"
-" label: \"That's \" + this.perKitten + \" can(s) of tuna per kitten.\" });\n"
-
-#. (itstool) path: section/p
-#: C/spinbutton.js.page:129
-msgid ""
-"We create each <link xref=\"label.js\">Label</link> individually, and then "
-"string them together along with the SpinButtons. The last label needs to "
-"show the number of cans of tuna per kitten, so it has a variable in the "
-"middle, which corresponds to an equation that uses the SpinButtons' "
-"get_value functions to find out what they're set at. JavaScript's Math "
-"function's floor method is used to round the number of cans of tuna per "
-"kitten down to the nearest whole number."
-msgstr ""
-"Se crea cada <link xref=\"label.js\">etiqueta</link> individualmente, y "
-"después se encadenan con los botones incrementales. La última etiqueta tiene "
-"que mostrar el número de latas de atún por gatito, por lo que tiene una "
-"variable en el medio, que corresponde a una ecuación que usa las funciones "
-"«get_value» de los botones incrementales para descubrir sus valores. El "
-"método «floor» de las funciones «Math» de JavaScript se usa para redondear el "
-"número de latas atún por gatito al número entero inferior más cercano."
-
-#. (itstool) path: section/code
-#: C/spinbutton.js.page:131
-#, no-wrap
-msgid ""
-"\n"
-" // Create a grid to put the spinbuttons and their labels in\n"
-" this._spinGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_bottom: 20 });\n"
-"\n"
-" // Attach everything to the grid\n"
-" this._spinGrid.attach (this._startLabel, 0, 0, 1, 1);\n"
-" this._spinGrid.attach (this._kittens, 1, 0, 1, 1);\n"
-" this._spinGrid.attach (this._kittenLabel, 2, 0, 1, 1);\n"
-" this._spinGrid.attach (this._tuna, 3, 0, 1, 1);\n"
-" this._spinGrid.attach (this._tunaLabel, 4, 0, 1, 1);\n"
-"\n"
-" // Create a main grid to hold it and the last label\n"
-" this._mainGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Attach the smaller grid and the last label to the main grid\n"
-" this._mainGrid.attach (this._spinGrid, 0, 0, 1, 1);\n"
-" this._mainGrid.attach (this._lastLabel, 0, 1, 1, 1);\n"
-msgstr ""
-"\n"
-" // Create a grid to put the spinbuttons and their labels in\n"
-" this._spinGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_bottom: 20 });\n"
-"\n"
-" // Attach everything to the grid\n"
-" this._spinGrid.attach (this._startLabel, 0, 0, 1, 1);\n"
-" this._spinGrid.attach (this._kittens, 1, 0, 1, 1);\n"
-" this._spinGrid.attach (this._kittenLabel, 2, 0, 1, 1);\n"
-" this._spinGrid.attach (this._tuna, 3, 0, 1, 1);\n"
-" this._spinGrid.attach (this._tunaLabel, 4, 0, 1, 1);\n"
-"\n"
-" // Create a main grid to hold it and the last label\n"
-" this._mainGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Attach the smaller grid and the last label to the main grid\n"
-" this._mainGrid.attach (this._spinGrid, 0, 0, 1, 1);\n"
-" this._mainGrid.attach (this._lastLabel, 0, 1, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/spinbutton.js.page:155
-msgid ""
-"Here we use <link xref=\"grid.js\">Grid</link> widgets to keep everything "
-"organized. One Grid holds the labels and SpinButtons in order, while the "
-"next puts that Grid on top and the final Label on the bottom."
-msgstr ""
-"Aquí se usan widgets <link xref=\"grid.js\">rejilla</link> para mantener "
-"todo organizado. Una rejilla mantiene las etiquetas y los botones "
-"incrementales en orden, mientras que la otra pone esa rejilla en la parte "
-"superior y la última etiqueta en la parte inferior."
-
-#. (itstool) path: section/p
-#: C/spinbutton.js.page:156
-msgid ""
-"There isn't a wrong way to organize things in Grids, so long as you like how "
-"it turns out. In this case, the top Grid has a margin on the bottom to keep "
-"it evenly spaced from the bottom Label, and the bottom Label is inside a "
-"separate Grid so it will be centered relative to the Labels and SpinButtons "
-"on the top."
-msgstr ""
-"No hay una manera incorrecta de organizar cosas en rejillas, siempre que le "
-"agrade cómo resulta. En este caso, la rejilla superior tiene un margen en la "
-"parte inferior para mantenerla espaciada uniformemente de la etiqueta "
-"inferior, que está dentro de una rejilla separada por lo que se centrará en "
-"relación a las etiquetas y botones incrementales de la parte superior."
-
-#. (itstool) path: section/code
-#: C/spinbutton.js.page:158
-#, no-wrap
-msgid ""
-"\n"
-" // Add the main grid to the window\n"
-" this._window.add (this._mainGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-msgstr ""
-"\n"
-" // Add the main grid to the window\n"
-" this._window.add (this._mainGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/spinbutton.js.page:166 C/switch.js.page:154
-msgid ""
-"Finally, we add the larger Grid to the window, then tell the window to show "
-"itself and all the widgets inside of it."
-msgstr ""
-"Finalmente, se añade la rejilla más grande a la ventana, después se le dice "
-"a la ventana que se muestre con todos sus widgets."
-
-#. (itstool) path: section/title
-#: C/spinbutton.js.page:170
-msgid "Function which handles the SpinButtons' numerical values being adjusted"
-msgstr ""
-"Función que maneja los valores numéricos de los botones incrementales que se "
-"ajustan"
-
-#. (itstool) path: section/code
-#: C/spinbutton.js.page:172
-#, no-wrap
-msgid ""
-"\n"
-" _newValue: function () {\n"
-"\n"
-" // Update the label which shows how many cans there are per kitten\n"
-" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()))\n"
-" this._lastLabel.set_label (\"That's \" + this.perKitten + \" can(s) of tuna per kitten.\");\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-msgstr ""
-"\n"
-" _newValue: function () {\n"
-"\n"
-" // Update the label which shows how many cans there are per kitten\n"
-" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()))\n"
-" this._lastLabel.set_label (\"That's \" + this.perKitten + \" can(s) of tuna per kitten.\");\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-
-#. (itstool) path: section/p
-#: C/spinbutton.js.page:183
-msgid ""
-"Here we update the perKitten variable based on the SpinButtons' new values, "
-"and use the set_label property to refresh what _lastLabel shows. Since both "
-"SpinButtons have their value-changed signal connected to this function, "
-"every time either of the numbers changes this function will update the Label."
-msgstr ""
-"Aquí se actualiza la variable «perKitten» de acuerdo a los valores nuevos de "
-"los botones incrementales, y se usa la propiedad «set_label» para actualizar "
-"lo que «_lastLabel» muestra. Dado que ambos botones incrementales tienen su "
-"señal «value-changed» conectada a esta función, cada vez que cualquiera de "
-"los números cambie esta función actualizará la etiqueta."
-
-#. (itstool) path: section/code
-#: C/spinbutton.js.page:185
-#, no-wrap
-msgid ""
-"\n"
-"// Run the application\n"
-"let app = new SpinButtonExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"// Run the application\n"
-"let app = new SpinButtonExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/p
-#: C/spinbutton.js.page:190
-msgid ""
-"Finally, we create a new instance of the finished SpinButtonExample class, "
-"and set the application running."
-msgstr ""
-"Finalmente, se crea una instancia nueva de la clase «SpinButtonExample» "
-"terminada, y se ejecuta la aplicación."
-
-#. (itstool) path: section/code
-#: C/spinbutton.js.page:195
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const SpinButtonExample = new Lang.Class({\n"
-" Name: 'SpinButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsspinbutton'\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Kitten Feeder\"});\n"
-"\n"
-" // Create the first spinbutton using a function\n"
-" this._kittens = Gtk.SpinButton.new_with_range (1, 9001, 1);\n"
-" this._kittens.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
-"\n"
-" // Create an adjustment to use for the second spinbutton\n"
-" this._adjustment = new Gtk.Adjustment ({\n"
-" value: 1,\n"
-" lower: 0,\n"
-" upper: 9001,\n"
-" step_increment: 1,\n"
-" page_increment: 10 });\n"
-"\n"
-" // Create the second spinbutton\n"
-" this._tuna = new Gtk.SpinButton ({ adjustment: this._adjustment });\n"
-" this._tuna.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
-"\n"
-" // this._tuna.set_digits (1);\n"
-" // this._tuna.set_wrap (true);\n"
-"\n"
-" // Create the text labels to go with the spinbuttons\n"
-" this._startLabel = new Gtk.Label ({ label: \"There are \" });\n"
-" this._kittenLabel = new Gtk.Label ({ label: \" kitten(s), and \"});\n"
-" this._tunaLabel = new Gtk.Label ({ label: \" can(s) of tuna.\"});\n"
-" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()));\n"
-" this._lastLabel = new Gtk.Label ({\n"
-" label: \"That's \" + this.perKitten + \" can(s) of tuna per kitten.\" });\n"
-"\n"
-" // Create a grid to put the spinbuttons and their labels in\n"
-" this._spinGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_bottom: 20 });\n"
-"\n"
-" // Attach everything to the grid\n"
-" this._spinGrid.attach (this._startLabel, 0, 0, 1, 1);\n"
-" this._spinGrid.attach (this._kittens, 1, 0, 1, 1);\n"
-" this._spinGrid.attach (this._kittenLabel, 2, 0, 1, 1);\n"
-" this._spinGrid.attach (this._tuna, 3, 0, 1, 1);\n"
-" this._spinGrid.attach (this._tunaLabel, 4, 0, 1, 1);\n"
-"\n"
-" // Create a main grid to hold it and the last label\n"
-" this._mainGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Attach the smaller grid and the last label to the main grid\n"
-" this._mainGrid.attach (this._spinGrid, 0, 0, 1, 1);\n"
-" this._mainGrid.attach (this._lastLabel, 0, 1, 1, 1);\n"
-"\n"
-" // Add the main grid to the window\n"
-" this._window.add (this._mainGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _newValue: function () {\n"
-"\n"
-" // Update the label which shows how many cans there are per kitten\n"
-" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()))\n"
-" this._lastLabel.set_label (\"That's \" + this.perKitten + \" can(s) of tuna per kitten.\");\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new SpinButtonExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const SpinButtonExample = new Lang.Class({\n"
-" Name: 'SpinButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsspinbutton'\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Kitten Feeder\"});\n"
-"\n"
-" // Create the first spinbutton using a function\n"
-" this._kittens = Gtk.SpinButton.new_with_range (1, 9001, 1);\n"
-" this._kittens.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
-"\n"
-" // Create an adjustment to use for the second spinbutton\n"
-" this._adjustment = new Gtk.Adjustment ({\n"
-" value: 1,\n"
-" lower: 0,\n"
-" upper: 9001,\n"
-" step_increment: 1,\n"
-" page_increment: 10 });\n"
-"\n"
-" // Create the second spinbutton\n"
-" this._tuna = new Gtk.SpinButton ({ adjustment: this._adjustment });\n"
-" this._tuna.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
-"\n"
-" // this._tuna.set_digits (1);\n"
-" // this._tuna.set_wrap (true);\n"
-"\n"
-" // Create the text labels to go with the spinbuttons\n"
-" this._startLabel = new Gtk.Label ({ label: \"There are \" });\n"
-" this._kittenLabel = new Gtk.Label ({ label: \" kitten(s), and \"});\n"
-" this._tunaLabel = new Gtk.Label ({ label: \" can(s) of tuna.\"});\n"
-" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()));\n"
-" this._lastLabel = new Gtk.Label ({\n"
-" label: \"That's \" + this.perKitten + \" can(s) of tuna per kitten.\" });\n"
-"\n"
-" // Create a grid to put the spinbuttons and their labels in\n"
-" this._spinGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_bottom: 20 });\n"
-"\n"
-" // Attach everything to the grid\n"
-" this._spinGrid.attach (this._startLabel, 0, 0, 1, 1);\n"
-" this._spinGrid.attach (this._kittens, 1, 0, 1, 1);\n"
-" this._spinGrid.attach (this._kittenLabel, 2, 0, 1, 1);\n"
-" this._spinGrid.attach (this._tuna, 3, 0, 1, 1);\n"
-" this._spinGrid.attach (this._tunaLabel, 4, 0, 1, 1);\n"
-"\n"
-" // Create a main grid to hold it and the last label\n"
-" this._mainGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Attach the smaller grid and the last label to the main grid\n"
-" this._mainGrid.attach (this._spinGrid, 0, 0, 1, 1);\n"
-" this._mainGrid.attach (this._lastLabel, 0, 1, 1, 1);\n"
-"\n"
-" // Add the main grid to the window\n"
-" this._window.add (this._mainGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _newValue: function () {\n"
-"\n"
-" // Update the label which shows how many cans there are per kitten\n"
-" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()))\n"
-" this._lastLabel.set_label (\"That's \" + this.perKitten + \" can(s) of tuna per kitten.\");\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new SpinButtonExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/spinbutton.js.page:206
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.SpinButton."
-"html\">Gtk.SpinButton</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.SpinButton."
-"html\">Gtk.SpinButton</link>"
-
-#. (itstool) path: info/title
-#: C/spinbutton.py.page:8
-msgctxt "text"
-msgid "SpinButton (Python)"
-msgstr "SpinButton (Python)"
-
-#. (itstool) path: info/desc
-#: C/spinbutton.py.page:20
-msgid "Retrieve an integer or floating-point number from the user."
-msgstr "Obtener un número entero o en coma flotante del usuario."
-
-#. (itstool) path: section/code
-#: C/spinbutton.py.page:31
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"SpinButton Example\", application=app)\n"
-" self.set_default_size(210, 70)\n"
-" self.set_border_width(5)\n"
-"\n"
-" # an adjustment (initial value, min value, max value,\n"
-" # step increment - press cursor keys or +/- buttons to see!,\n"
-" # page increment - not used here,\n"
-" # page size - not used here)\n"
-" ad = Gtk.Adjustment(0, 0, 100, 1, 0, 0)\n"
-"\n"
-" # a spin button for integers (digits=0)\n"
-" self.spin = Gtk.SpinButton(adjustment=ad, climb_rate=1, digits=0)\n"
-" # as wide as possible\n"
-" self.spin.set_hexpand(True)\n"
-"\n"
-" # we connect the signal \"value-changed\" emitted by the spinbutton with the callback\n"
-" # function spin_selected\n"
-" self.spin.connect(\"value-changed\", self.spin_selected)\n"
-"\n"
-" # a label\n"
-" self.label = Gtk.Label()\n"
-" self.label.set_text(\"Choose a number\")\n"
-"\n"
-" # a grid to attach the widgets\n"
-" grid = Gtk.Grid()\n"
-" grid.attach(self.spin, 0, 0, 1, 1)\n"
-" grid.attach(self.label, 0, 1, 2, 1)\n"
-"\n"
-" self.add(grid)\n"
-"\n"
-" # callback function: the signal of the spinbutton is used to change the\n"
-" # text of the label\n"
-" def spin_selected(self, event):\n"
-" self.label.set_text(\n"
-" \"The number you selected is \" + str(self.spin.get_value_as_int()) + \".\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"SpinButton Example\", application=app)\n"
-" self.set_default_size(210, 70)\n"
-" self.set_border_width(5)\n"
-"\n"
-" # an adjustment (initial value, min value, max value,\n"
-" # step increment - press cursor keys or +/- buttons to see!,\n"
-" # page increment - not used here,\n"
-" # page size - not used here)\n"
-" ad = Gtk.Adjustment(0, 0, 100, 1, 0, 0)\n"
-"\n"
-" # a spin button for integers (digits=0)\n"
-" self.spin = Gtk.SpinButton(adjustment=ad, climb_rate=1, digits=0)\n"
-" # as wide as possible\n"
-" self.spin.set_hexpand(True)\n"
-"\n"
-" # we connect the signal \"value-changed\" emitted by the spinbutton with the callback\n"
-" # function spin_selected\n"
-" self.spin.connect(\"value-changed\", self.spin_selected)\n"
-"\n"
-" # a label\n"
-" self.label = Gtk.Label()\n"
-" self.label.set_text(\"Choose a number\")\n"
-"\n"
-" # a grid to attach the widgets\n"
-" grid = Gtk.Grid()\n"
-" grid.attach(self.spin, 0, 0, 1, 1)\n"
-" grid.attach(self.label, 0, 1, 2, 1)\n"
-"\n"
-" self.add(grid)\n"
-"\n"
-" # callback function: the signal of the spinbutton is used to change the\n"
-" # text of the label\n"
-" def spin_selected(self, event):\n"
-" self.label.set_text(\n"
-" \"The number you selected is \" + str(self.spin.get_value_as_int()) + \".\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/spinbutton.py.page:35
-msgid "Useful methods for a SpinButton widget"
-msgstr "Métodos útiles para un widget «SpinButton»"
-
-#. (itstool) path: section/p
-#: C/spinbutton.py.page:36
-msgid ""
-"A Gtk.Adjustment is needed to construct the Gtk.SpinButton. This is the "
-"representation of a value with a lower and upper bound, together with step "
-"and page increments, and a page size, and it is constructed as <code>Gtk."
-"Adjustment(value, lower, upper, step_increment, page_increment, page_size)</"
-"code> where the fields are of type <code>float</code>; <code>step_increment</"
-"code> is the increment/decrement that is obtained by using the cursor keys "
-"or the buttons of the spinbutton. Note that <code>page_increment</code> and "
-"<code>page_size</code> are not used in this case, and they should be set to "
-"<code>0</code>."
-msgstr ""
-"Se necesita un «Gtk.Adjustment» para construir el «Gtk.SpinButton». Este es la "
-"representación de un valor con un límite superior e inferior, junto con "
-"pasos y páginas de incrementos, y un tamaño de página, y se construye como "
-"<code>Gtk.Adjustment(valor, mínimo, ,máximo, paso, página, tamaño_de_página)"
-"</code> donde los campos son del tipo <code>float</code>; <code>paso</code> "
-"es el incremento/decremento que se obtiene usando las teclas de dirección o "
-"los botones del botón incremental. Tenga en cuenta que <code>página</code> y "
-"<code>tamaño_de_página</code> no se usan en este caso, y deben establecerse "
-"a <code>0</code>."
-
-#. (itstool) path: section/p
-#: C/spinbutton.py.page:37
-msgid ""
-"In line 23 the signal <code>\"value-changed\"</code> is connected to the "
-"callback function <code>spin_selected()</code> using <code><var>widget</var>."
-"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
-"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 23, la señal <code>«value-changed»</code> se conecta a la función "
-"de retorno de llamada <code>spin_selected()</code> usando <code><var>widget</"
-"var>.connect(<var>señal</var>, <var>función de retorno de llamada</var>)</"
-"code>. Consulte la <link xref=\"signals-callbacks.py\"/> para una "
-"explicación más detallada."
-
-#. (itstool) path: item/p
-#: C/spinbutton.py.page:39
-msgid ""
-"If you want the value of the spinbutton to wrap around when they exceed the "
-"maximum or the minimum, set <code>set_wrap(True)</code>. The <code>\"wrapped"
-"\"</code> signal is emitted when this happens."
-msgstr ""
-"Si quiere que el valor del botón incremental dé la vuelta cuando exceda el "
-"máximo o el mínimo, establezca <code>set_wrap(True)</code>. La señal <code>"
-"\"wrapped\"</code> se emite cuando esto sucede."
-
-#. (itstool) path: item/p
-#: C/spinbutton.py.page:40
-msgid ""
-"<code>set_digits(digits)</code> sets the precision to be displayed by the "
-"spinbutton, up to 20 digits."
-msgstr ""
-"<code>set_digits(dígitos)</code> establece la precisión que muestra el botón "
-"incremental, hasta 20 dígitos."
-
-#. (itstool) path: item/p
-#: C/spinbutton.py.page:41
-msgid ""
-"To get the value of the spinbutton as an integer, use <code>get_value_as_int"
-"()</code>."
-msgstr ""
-"Para obtener el valor del botón incremental como un entero, use "
-"<code>get_value_as_int()</code>."
-
-#. (itstool) path: item/p
-#: C/spinbutton.py.page:49
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSpinButton.html"
-"\">GtkSpinButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSpinButton.html"
-"\">GtkSpinButton</link>"
-
-#. (itstool) path: info/title
-#: C/spinbutton.vala.page:8
-msgctxt "text"
-msgid "SpinButton (Vala)"
-msgstr "SpinButton (Vala)"
-
-#. (itstool) path: info/desc
-#: C/spinbutton.vala.page:20
-msgid "Retrieve an integer or floating point number."
-msgstr "Obtener un número entero o en coma flotante."
-
-#. (itstool) path: page/code
-#: C/spinbutton.vala.page:27
-#, no-wrap
-msgid ""
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tGtk.Label label;\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.title = \"SpinButton Example\";\n"
-"\t\twindow.set_default_size (210, 70);\n"
-"\t\twindow.set_border_width (5);\n"
-"\n"
-"\t\tvar spinbutton = new Gtk.SpinButton.with_range (0, 100, 1);\n"
-"\t\tspinbutton.set_hexpand (true);\n"
-"\n"
-"\t\tlabel = new Gtk.Label (\"Choose a number\");\n"
-"\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tgrid.attach (spinbutton, 0, 0, 1, 1);\n"
-"\t\tgrid.attach (label, 0, 1, 1, 1);\n"
-"\n"
-"\t\tspinbutton.value_changed.connect (this.value_changed_cb);\n"
-"\n"
-"\t\twindow.add (grid);\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"\n"
-"\tvoid value_changed_cb (Gtk.SpinButton spin) {\n"
-"\t\tlabel.set_text (\"The number you selected is %.0f.\".printf (spin.get_value()));\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tGtk.Label label;\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
-"\t\twindow.title = \"SpinButton Example\";\n"
-"\t\twindow.set_default_size (210, 70);\n"
-"\t\twindow.set_border_width (5);\n"
-"\n"
-"\t\tvar spinbutton = new Gtk.SpinButton.with_range (0, 100, 1);\n"
-"\t\tspinbutton.set_hexpand (true);\n"
-"\n"
-"\t\tlabel = new Gtk.Label (\"Choose a number\");\n"
-"\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tgrid.attach (spinbutton, 0, 0, 1, 1);\n"
-"\t\tgrid.attach (label, 0, 1, 1, 1);\n"
-"\n"
-"\t\tspinbutton.value_changed.connect (this.value_changed_cb);\n"
-"\n"
-"\t\twindow.add (grid);\n"
-"\t\twindow.show_all ();\n"
-"\t}\n"
-"\n"
-"\tvoid value_changed_cb (Gtk.SpinButton spin) {\n"
-"\t\tlabel.set_text (\"The number you selected is %.0f.\".printf (spin.get_value()));\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/spinbutton.vala.page:32
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.SpinButton.html\">Gtk."
-"SpinButton</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.SpinButton.html\">Gtk."
-"SpinButton</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/spinner.c.page:24 C/spinner.js.page:22 C/spinner.py.page:23
-#: C/spinner.vala.page:22
-msgctxt "_"
-msgid "external ref='media/spinner.png' md5='d04f2d81f1d72c6c2f97e8729947dfed'"
-msgstr ""
-"external ref='media/spinner.png' md5='d04f2d81f1d72c6c2f97e8729947dfed'"
-
-#. (itstool) path: info/title
-#: C/spinner.c.page:8
-msgctxt "text"
-msgid "Spinner (C)"
-msgstr "Spinner (C)"
-
-#. (itstool) path: info/desc
-#: C/spinner.c.page:19 C/spinner.js.page:18 C/spinner.py.page:19
-#: C/spinner.vala.page:18
-msgid "A spinner animation"
-msgstr "Una animación giratoria"
-
-#. (itstool) path: page/title
-#: C/spinner.c.page:22 C/spinner.js.page:21 C/spinner.py.page:22
-#: C/spinner.vala.page:21
-msgid "Spinner"
-msgstr "Spinner"
-
-#. (itstool) path: page/p
-#: C/spinner.c.page:25 C/spinner.js.page:23 C/spinner.py.page:24
-#: C/spinner.vala.page:23
-msgid "This Spinner is stopped and started by pressing the spacebar."
-msgstr ""
-"Este indicador de progreso está detenido y se inicia al pulsar la barra "
-"espaciadora."
-
-#. (itstool) path: page/code
-#: C/spinner.c.page:27
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-" \n"
-"\n"
-"\n"
-" /*Global variable used to indicate active state of the\n"
-"spinner. TRUE = active, FALSE = not-active. This is because \n"
-"there isn't a current function for C that does this for us*/\n"
-"gboolean active; \n"
-" \n"
-"\n"
-"\n"
-"/*This is the callback function. It is a handler function \n"
-"which reacts to the signal. In this case, it will cause the \n"
-"spinner to start and stop according to how many times the user \n"
-"presses the spacebar.*/ \n"
-"static gboolean\n"
-"key_pressed_event (GtkWidget *widget,\n"
-" GdkEvent *event,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *spinner = user_data;\n"
-" guint keyval;\n"
-" \n"
-" /*Extracts the keyval from an event. And stores it in the variable \n"
-" \"keyval\" (we give the function the address). In this case, the \n"
-" event is GdkEventKey, a key press event*/\n"
-" gdk_event_get_keyval (event, &keyval); \n"
-"\n"
-" /*Grabbing the boolean value from the spinner*/\n"
-" g_object_get (GTK_SPINNER (spinner), \"active\", &active, NULL);\n"
-" \n"
-" if (keyval == GDK_KEY_space) {\n"
-" if (active) {\n"
-" gtk_spinner_stop (GTK_SPINNER (spinner));\n"
-" }\n"
-" else {\n"
-" gtk_spinner_start (GTK_SPINNER (spinner));\n"
-" } \n"
-" }\n"
-" \n"
-"return TRUE;\n"
-"}\n"
-" \n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *spinner;\n"
-" \n"
-" /*Create a window with a title, border width and a default size*/\n"
-" window = gtk_application_window_new (app);\n"
-" \n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Spinner Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n"
-" gtk_container_set_border_width (GTK_CONTAINER(window), 30);\n"
-" \n"
-" /*Create a spinner, with extra horizontal and vertical space*/\n"
-" spinner = gtk_spinner_new ();\n"
-" gtk_spinner_start (GTK_SPINNER (spinner));\n"
-" \n"
-" gtk_container_add (GTK_CONTAINER (window), spinner);\n"
-" \n"
-" /*Connecting the key-press-event signal to the callback*/\n"
-" g_signal_connect (GTK_WINDOW (window), \"key-press-event\", \n"
-" G_CALLBACK (key_pressed_event), spinner);\n"
-" \n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-" \n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-" \n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" \n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-" \n"
-"\n"
-"\n"
-" /*Global variable used to indicate active state of the\n"
-"spinner. TRUE = active, FALSE = not-active. This is because \n"
-"there isn't a current function for C that does this for us*/\n"
-"gboolean active; \n"
-" \n"
-"\n"
-"\n"
-"/*This is the callback function. It is a handler function \n"
-"which reacts to the signal. In this case, it will cause the \n"
-"spinner to start and stop according to how many times the user \n"
-"presses the spacebar.*/ \n"
-"static gboolean\n"
-"key_pressed_event (GtkWidget *widget,\n"
-" GdkEvent *event,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *spinner = user_data;\n"
-" guint keyval;\n"
-" \n"
-" /*Extracts the keyval from an event. And stores it in the variable \n"
-" \"keyval\" (we give the function the address). In this case, the \n"
-" event is GdkEventKey, a key press event*/\n"
-" gdk_event_get_keyval (event, &keyval); \n"
-"\n"
-" /*Grabbing the boolean value from the spinner*/\n"
-" g_object_get (GTK_SPINNER (spinner), \"active\", &active, NULL);\n"
-" \n"
-" if (keyval == GDK_KEY_space) {\n"
-" if (active) {\n"
-" gtk_spinner_stop (GTK_SPINNER (spinner));\n"
-" }\n"
-" else {\n"
-" gtk_spinner_start (GTK_SPINNER (spinner));\n"
-" } \n"
-" }\n"
-" \n"
-"return TRUE;\n"
-"}\n"
-" \n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *spinner;\n"
-" \n"
-" /*Create a window with a title, border width and a default size*/\n"
-" window = gtk_application_window_new (app);\n"
-" \n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Spinner Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n"
-" gtk_container_set_border_width (GTK_CONTAINER(window), 30);\n"
-" \n"
-" /*Create a spinner, with extra horizontal and vertical space*/\n"
-" spinner = gtk_spinner_new ();\n"
-" gtk_spinner_start (GTK_SPINNER (spinner));\n"
-" \n"
-" gtk_container_add (GTK_CONTAINER (window), spinner);\n"
-" \n"
-" /*Connecting the key-press-event signal to the callback*/\n"
-" g_signal_connect (GTK_WINDOW (window), \"key-press-event\", \n"
-" G_CALLBACK (key_pressed_event), spinner);\n"
-" \n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-" \n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-" \n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" \n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/spinner.c.page:35
-msgid ""
-"<link href=\"http://developer.gnome.org/gobject/stable/gobject-The-Base-"
-"Object-Type.html#g-object-get\">GObject</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gobject/stable/gobject-The-Base-"
-"Object-Type.html#g-object-get\">GObject</link>"
-
-#. (itstool) path: item/p
-#: C/spinner.c.page:36 C/togglebutton.c.page:38
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkSpinner.html"
-"\">GtkSpinner</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkSpinner.html"
-"\">GtkSpinner</link>"
-
-#. (itstool) path: info/title
-#: C/spinner.js.page:8
-msgctxt "text"
-msgid "Spinner (JavaScript)"
-msgstr "Spinner (JavaScript)"
-
-#. (itstool) path: page/code
-#: C/spinner.js.page:25
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Gdk = imports.gi.Gdk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const SpinnerExample = new Lang.Class ({\n"
-" Name: 'Spinner Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jsspinner',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Spinner Example\",\n"
-" default_height: 200,\n"
-" default_width: 200,\n"
-" border_width: 30 });\n"
-"\n"
-" // Create a spinner which starts spinning automatically\n"
-" this._spinner = new Gtk.Spinner ({active: true});\n"
-" this._window.add (this._spinner);\n"
-"\n"
-" // Connect a keypress event to the function that makes it start or stop spinning\n"
-" this._window.connect(\"key-press-event\", Lang.bind(this, this._onKeyPress));\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _onKeyPress: function(widget, event) {\n"
-"\n"
-" // Get the value of the key that was pressed\n"
-" let keyval = event.get_keyval()[1];\n"
-"\n"
-" // If it was the spacebar, toggle the spinner to start or stop\n"
-" if (keyval == Gdk.KEY_space) {\n"
-" if (this._spinner.active == true)\n"
-" this._spinner.stop();\n"
-" else\n"
-" this._spinner.start();\n"
-" }\n"
-" }\n"
-"\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new SpinnerExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Gdk = imports.gi.Gdk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const SpinnerExample = new Lang.Class ({\n"
-" Name: 'Spinner Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jsspinner',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Spinner Example\",\n"
-" default_height: 200,\n"
-" default_width: 200,\n"
-" border_width: 30 });\n"
-"\n"
-" // Create a spinner which starts spinning automatically\n"
-" this._spinner = new Gtk.Spinner ({active: true});\n"
-" this._window.add (this._spinner);\n"
-"\n"
-" // Connect a keypress event to the function that makes it start or stop spinning\n"
-" this._window.connect(\"key-press-event\", Lang.bind(this, this._onKeyPress));\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _onKeyPress: function(widget, event) {\n"
-"\n"
-" // Get the value of the key that was pressed\n"
-" let keyval = event.get_keyval()[1];\n"
-"\n"
-" // If it was the spacebar, toggle the spinner to start or stop\n"
-" if (keyval == Gdk.KEY_space) {\n"
-" if (this._spinner.active == true)\n"
-" this._spinner.stop();\n"
-" else\n"
-" this._spinner.start();\n"
-" }\n"
-" }\n"
-"\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new SpinnerExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/spinner.js.page:30
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gdk.html\">Gdk - "
-"Key Values</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gdk.html\">Gdk: "
-"valores de teclas</link>"
-
-#. (itstool) path: item/p
-#: C/spinner.js.page:33 C/togglebutton.js.page:158
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Spinner.html"
-"\">Gtk.Spinner</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Spinner.html"
-"\">Gtk.Spinner</link>"
-
-#. (itstool) path: info/title
-#: C/spinner.py.page:8
-msgctxt "text"
-msgid "Spinner (Python)"
-msgstr "Spinner (Python)"
-
-#. (itstool) path: section/code
-#: C/spinner.py.page:31
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gdk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Spinner Example\", application=app)\n"
-" self.set_default_size(200, 200)\n"
-" self.set_border_width(30)\n"
-"\n"
-" # a spinner\n"
-" self.spinner = Gtk.Spinner()\n"
-" # that by default spins\n"
-" self.spinner.start()\n"
-" # add the spinner to the window\n"
-" self.add(self.spinner)\n"
-"\n"
-" # event handler\n"
-" # a signal from the keyboard (space) controls if the spinner stops/starts\n"
-" def do_key_press_event(self, event):\n"
-" # keyname is the symbolic name of the key value given by the event\n"
-" keyname = Gdk.keyval_name(event.keyval)\n"
-" # if it is \"space\"\n"
-" if keyname == \"space\":\n"
-" # and the spinner is active\n"
-" if self.spinner.get_property(\"active\"):\n"
-" # stop the spinner\n"
-" self.spinner.stop()\n"
-" # if the spinner is not active\n"
-" else:\n"
-" # start it again\n"
-" self.spinner.start()\n"
-" # stop the signal emission\n"
-" return True\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gdk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Spinner Example\", application=app)\n"
-" self.set_default_size(200, 200)\n"
-" self.set_border_width(30)\n"
-"\n"
-" # a spinner\n"
-" self.spinner = Gtk.Spinner()\n"
-" # that by default spins\n"
-" self.spinner.start()\n"
-" # add the spinner to the window\n"
-" self.add(self.spinner)\n"
-"\n"
-" # event handler\n"
-" # a signal from the keyboard (space) controls if the spinner stops/starts\n"
-" def do_key_press_event(self, event):\n"
-" # keyname is the symbolic name of the key value given by the event\n"
-" keyname = Gdk.keyval_name(event.keyval)\n"
-" # if it is \"space\"\n"
-" if keyname == \"space\":\n"
-" # and the spinner is active\n"
-" if self.spinner.get_property(\"active\"):\n"
-" # stop the spinner\n"
-" self.spinner.stop()\n"
-" # if the spinner is not active\n"
-" else:\n"
-" # start it again\n"
-" self.spinner.start()\n"
-" # stop the signal emission\n"
-" return True\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: note/p
-#: C/spinner.py.page:33
-msgid ""
-"<code>Gdk.keyval_name(event.keyval)</code> converts the key value "
-"<code>event.keyval</code> into a symbolic name. The names and corresponding "
-"key values can be found <link href=\"http://git.gnome.org/browse/gtk+/tree/"
-"gdk/gdkkeysyms.h\">here</link>,but for instance <code>GDK_KEY_BackSpace</"
-"code> becomes the string <code>\"BackSpace\"</code>."
-msgstr ""
-"<code>Gdk.keyval_name(event.keyval)</code> convierte el valor de tecla "
-"<code>event.keyval</code> en un nombre simbólico. Los nombres y los valores "
-"de tecla correspondientes pueden encontrarse <link href=\"http://git.gnome."
-"org/browse/gtk+/tree/gdk/gdkkeysyms.h\">aquí</link>, pero por ejemplo "
-"<code>GDK_KEY_BackSpace</code> se convierte en la cadena <code>\"BackSpace"
-"\"</code>."
-
-#. (itstool) path: item/p
-#: C/spinner.py.page:42 C/togglebutton.py.page:46
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSpinner.html"
-"\">GtkSpinner</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSpinner.html"
-"\">GtkSpinner</link>"
-
-#. (itstool) path: item/p
-#: C/spinner.py.page:43
-msgid ""
-"<link href=\"http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling.html"
-"\">Key Values</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling.html"
-"\">Valores de teclas</link>"
-
-#. (itstool) path: info/title
-#: C/spinner.vala.page:8
-msgctxt "text"
-msgid "Spinner (Vala)"
-msgstr "Spinner (Vala)"
-
-#. (itstool) path: page/code
-#: C/spinner.vala.page:25
-#, no-wrap
-msgid ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\tGtk.Widget spinner;\n"
-"\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\n"
-"\t\tObject (application: app, title: \"Spinner Example\");\n"
-"\n"
-"\t\tthis.set_default_size (200, 200);\n"
-"\t\tthis.border_width = 30;\n"
-"\n"
-"\t\tspinner = new Gtk.Spinner ();\n"
-"\n"
-"\t\tthis.add (spinner);\n"
-"\t\t(spinner as Gtk.Spinner).active = true;\n"
-"\t\tspinner.show ();\n"
-"\t}\n"
-"\n"
-"\tprotected override bool key_press_event (Gdk.EventKey event) {\n"
-"\n"
-"\t\t//print (Gdk.keyval_name(event.keyval) +\"\\n\");\n"
-"\t\tif (Gdk.keyval_name(event.keyval) == \"space\") {\n"
-"\n"
-"\t\t\tif ((spinner as Gtk.Spinner).active) {\n"
-"\t\t\t\t(spinner as Gtk.Spinner).stop ();\n"
-"\t\t\t\t//spinner.visible = false;\n"
-"\t\t\t}\n"
-"\t\t\telse {\n"
-"\t\t\t\t(spinner as Gtk.Spinner).start ();\n"
-"\t\t\t\t//spinner.visible = true;\n"
-"\t\t\t}\n"
-"\t\t}\n"
-"\t\treturn true;\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\n"
-"\tprotected override void activate () {\n"
-"\t\tMyWindow window = new MyWindow (this);\n"
-"\t\twindow.show ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.spinner\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\tGtk.Widget spinner;\n"
-"\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\n"
-"\t\tObject (application: app, title: \"Spinner Example\");\n"
-"\n"
-"\t\tthis.set_default_size (200, 200);\n"
-"\t\tthis.border_width = 30;\n"
-"\n"
-"\t\tspinner = new Gtk.Spinner ();\n"
-"\n"
-"\t\tthis.add (spinner);\n"
-"\t\t(spinner as Gtk.Spinner).active = true;\n"
-"\t\tspinner.show ();\n"
-"\t}\n"
-"\n"
-"\tprotected override bool key_press_event (Gdk.EventKey event) {\n"
-"\n"
-"\t\t//print (Gdk.keyval_name(event.keyval) +\"\\n\");\n"
-"\t\tif (Gdk.keyval_name(event.keyval) == \"space\") {\n"
-"\n"
-"\t\t\tif ((spinner as Gtk.Spinner).active) {\n"
-"\t\t\t\t(spinner as Gtk.Spinner).stop ();\n"
-"\t\t\t\t//spinner.visible = false;\n"
-"\t\t\t}\n"
-"\t\t\telse {\n"
-"\t\t\t\t(spinner as Gtk.Spinner).start ();\n"
-"\t\t\t\t//spinner.visible = true;\n"
-"\t\t\t}\n"
-"\t\t}\n"
-"\t\treturn true;\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\n"
-"\tprotected override void activate () {\n"
-"\t\tMyWindow window = new MyWindow (this);\n"
-"\t\twindow.show ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.spinner\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/spinner.vala.page:30
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Widget.html\">Gtk.Widget</"
-"link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Widget.html\">Gtk.Widget</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/spinner.vala.page:31
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Spinner.html\">Gtk.Spinner</"
-"link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Spinner.html\">Gtk.Spinner</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/spinner.vala.page:32
-msgid ""
-"<link href=\"http://www.valadoc.org/gdk-3.0/Gdk.keyval_name.html\">Gdk."
-"keyval_name</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gdk-3.0/Gdk.keyval_name.html\">Gdk."
-"keyval_name</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/statusbar.c.page:27
-msgctxt "_"
-msgid ""
-"external ref='media/statusbar3.png' md5='60c71604fb44656237ee66dfb39a8689'"
-msgstr ""
-"external ref='media/statusbar3.png' md5='60c71604fb44656237ee66dfb39a8689'"
-
-#. (itstool) path: info/title
-#: C/statusbar.c.page:8
-msgctxt "text"
-msgid "Statusbar (C)"
-msgstr "Statusbar (C)"
-
-#. (itstool) path: info/desc
-#: C/statusbar.c.page:22 C/statusbar.py.page:20 C/statusbar.vala.page:21
-msgid "Report messages of minor importance to the user"
-msgstr "Enviar mensajes de menor importancia al usuario"
-
-#. (itstool) path: page/title
-#: C/statusbar.c.page:25 C/statusbar.js.page:21 C/statusbar.py.page:23
-#: C/statusbar.vala.page:24
-msgid "Statusbar"
-msgstr "Statusbar"
-
-#. (itstool) path: page/p
-#: C/statusbar.c.page:28
-msgid ""
-"This statusbar is used to demonstrate how messages are stacked in a last-in-"
-"first-out order. The message at the top of the stack is always the one "
-"displayed."
-msgstr ""
-"Esta barra de estado se usa para demostrar cómo se apilan los mensajes en un "
-"orden «último dentro, primero fuera». Siempre se muestra el mensaje en la "
-"parte superior de la pila."
-
-#. (itstool) path: page/code
-#: C/statusbar.c.page:30
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/*Callback function in which pushes an item onto the statusbar*/\n"
-"static void \n"
-"push_item (GtkWidget *widget,\n"
-" gpointer data)\n"
-"{\n"
-" GtkWidget *status_bar = data;\n"
-"\n"
-" /*Create a context id, which is used to uniquely identify \n"
-" *the source of a message*/\n"
-" guint context_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (status_bar), \n"
-" \"Statusbar example\");\n"
-"\n"
-" /*Count is used to keep track of the amount of items \n"
-" the user is pushing/popping*/\n"
-" static int count = 1;\n"
-" char hold_output[20];\n"
-" \n"
-" /*This is a safer form of the standard sprintf () function. The output is \n"
-" guaranteed in this case to not exceed 20 characters, and the result is stored\n"
-" into the 'hold_output' variable*/\n"
-" g_snprintf (hold_output, 20, \"Item %d\", count++);\n"
-" gtk_statusbar_push (GTK_STATUSBAR (status_bar), \n"
-" context_id, \n"
-" hold_output);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/*Callback function that is used to pop an item off the statusbar*/\n"
-"static void \n"
-"pop_item (GtkWidget *widget,\n"
-" gpointer data )\n"
-"{\n"
-" GtkWidget *status_bar = data;\n"
-" guint context_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (status_bar), \n"
-" \"Statusbar example\");\n"
-"\n"
-" gtk_statusbar_pop (GTK_STATUSBAR (status_bar), context_id);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *grid;\n"
-" GtkWidget *window;\n"
-" GtkWidget *status_bar;\n"
-" GtkWidget *pop_button;\n"
-" GtkWidget *push_button;\n"
-"\n"
-" /*Create a window with a title, border width, and a default size**/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 220, 100);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Statusbar Example\");\n"
-" gtk_container_set_border_width (GTK_CONTAINER(window), 10);\n"
-" \n"
-" /*Create the status bar, which is held in the global variable*/\n"
-" status_bar = gtk_statusbar_new (); \n"
-" \n"
-" /*Create the buttons with labels*/\n"
-" push_button = gtk_button_new_with_label (\"push item\");\n"
-" pop_button = gtk_button_new_with_label (\"pop last item\");\n"
-" \n"
-" /*Create the grid, and attach the buttons/statusbar accordingly*/\n"
-" grid = gtk_grid_new ();\n"
-" gtk_grid_attach (GTK_GRID (grid), push_button, 0,1,1,1);\n"
-" gtk_grid_attach (GTK_GRID (grid), pop_button, 0,2,1,1);\n"
-" gtk_grid_attach (GTK_GRID (grid), status_bar, 0,3,1,1);\n"
-" \n"
-" /*Connecting the clicked signals to the corresponding callback functions*/\n"
-" g_signal_connect (GTK_BUTTON (push_button), \"clicked\", \n"
-" G_CALLBACK (push_item), status_bar);\n"
-" g_signal_connect (GTK_BUTTON (pop_button), \"clicked\", \n"
-" G_CALLBACK (pop_item), status_bar);\n"
-" \n"
-" /*Attach the grid holding the child widgets onto the window, and show all*/\n"
-" gtk_container_add (GTK_CONTAINER (window), grid);\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/*Callback function in which pushes an item onto the statusbar*/\n"
-"static void \n"
-"push_item (GtkWidget *widget,\n"
-" gpointer data)\n"
-"{\n"
-" GtkWidget *status_bar = data;\n"
-"\n"
-" /*Create a context id, which is used to uniquely identify \n"
-" *the source of a message*/\n"
-" guint context_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (status_bar), \n"
-" \"Statusbar example\");\n"
-"\n"
-" /*Count is used to keep track of the amount of items \n"
-" the user is pushing/popping*/\n"
-" static int count = 1;\n"
-" char hold_output[20];\n"
-" \n"
-" /*This is a safer form of the standard sprintf () function. The output is \n"
-" guaranteed in this case to not exceed 20 characters, and the result is stored\n"
-" into the 'hold_output' variable*/\n"
-" g_snprintf (hold_output, 20, \"Item %d\", count++);\n"
-" gtk_statusbar_push (GTK_STATUSBAR (status_bar), \n"
-" context_id, \n"
-" hold_output);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/*Callback function that is used to pop an item off the statusbar*/\n"
-"static void \n"
-"pop_item (GtkWidget *widget,\n"
-" gpointer data )\n"
-"{\n"
-" GtkWidget *status_bar = data;\n"
-" guint context_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (status_bar), \n"
-" \"Statusbar example\");\n"
-"\n"
-" gtk_statusbar_pop (GTK_STATUSBAR (status_bar), context_id);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *grid;\n"
-" GtkWidget *window;\n"
-" GtkWidget *status_bar;\n"
-" GtkWidget *pop_button;\n"
-" GtkWidget *push_button;\n"
-"\n"
-" /*Create a window with a title, border width, and a default size**/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 220, 100);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Statusbar Example\");\n"
-" gtk_container_set_border_width (GTK_CONTAINER(window), 10);\n"
-" \n"
-" /*Create the status bar, which is held in the global variable*/\n"
-" status_bar = gtk_statusbar_new (); \n"
-" \n"
-" /*Create the buttons with labels*/\n"
-" push_button = gtk_button_new_with_label (\"push item\");\n"
-" pop_button = gtk_button_new_with_label (\"pop last item\");\n"
-" \n"
-" /*Create the grid, and attach the buttons/statusbar accordingly*/\n"
-" grid = gtk_grid_new ();\n"
-" gtk_grid_attach (GTK_GRID (grid), push_button, 0,1,1,1);\n"
-" gtk_grid_attach (GTK_GRID (grid), pop_button, 0,2,1,1);\n"
-" gtk_grid_attach (GTK_GRID (grid), status_bar, 0,3,1,1);\n"
-" \n"
-" /*Connecting the clicked signals to the corresponding callback functions*/\n"
-" g_signal_connect (GTK_BUTTON (push_button), \"clicked\", \n"
-" G_CALLBACK (push_item), status_bar);\n"
-" g_signal_connect (GTK_BUTTON (pop_button), \"clicked\", \n"
-" G_CALLBACK (pop_item), status_bar);\n"
-" \n"
-" /*Attach the grid holding the child widgets onto the window, and show all*/\n"
-" gtk_container_add (GTK_CONTAINER (window), grid);\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/statusbar.c.page:38
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkStatusbar.html"
-"\">GtkStatusBar</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkStatusbar.html"
-"\">GtkStatusBar</link>"
-
-#. (itstool) path: item/p
-#: C/statusbar.c.page:39
-msgid ""
-"<link href=\"http://developer.gnome.org/glib/stable/glib-String-Utility-"
-"Functions.html#g-snprintf\">String Utility Functions</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/glib/stable/glib-String-Utility-"
-"Functions.html#g-snprintf\">Funciones de cadenas útiles</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/statusbar.js.page:22
-msgctxt "_"
-msgid ""
-"external ref='media/statusbar2.png' md5='ff6f7e5b270827ca98b2d5f7087aa766'"
-msgstr ""
-"external ref='media/statusbar2.png' md5='ff6f7e5b270827ca98b2d5f7087aa766'"
-
-#. (itstool) path: info/title
-#: C/statusbar.js.page:8
-msgctxt "text"
-msgid "Statusbar (JavaScript)"
-msgstr "Statusbar (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/statusbar.js.page:18
-msgid "Show notifications in a dedicated statusbar"
-msgstr "Mostrar notificaciones en una barra de estado dedicada"
-
-#. (itstool) path: page/p
-#: C/statusbar.js.page:23
-msgid ""
-"This statusbar keeps track of how many times you've clicked a button. "
-"Applications like <link href=\"http://projects.gnome.org/gedit/\">gedit</"
-"link> use statusbars to display information at a glance, and show "
-"notifications without interrupting the user."
-msgstr ""
-"Esta barra de estado registra cuántas veces se pulsó un botón. Las "
-"aplicaciones como <link href=\"http://projects.gnome.org/gedit/\">gedit</"
-"link> usan barras de estado para mostrar información a simple vista, y "
-"mostrar notificaciones sin interrumpir al usuario."
-
-#. (itstool) path: page/p
-#: C/statusbar.js.page:24
-msgid ""
-"Messages pushed to a statusbar go on top of its stack, and can be popped off "
-"to show the next-most recent one. You can also clear away every message of a "
-"specific type all at once. This sample application demonstrates these "
-"functions."
-msgstr ""
-"Los mensajes que se muestran en una barra de estado van a la parte superior "
-"de su pila, y pueden extraerse para mostrar el siguiente más reciente. "
-"También puede limpiar todos los mensajes de un tipo específico de una vez. "
-"Esta aplicación de ejemplo demuestra estas funciones."
-
-#. (itstool) path: section/code
-#: C/statusbar.js.page:41
-#, no-wrap
-msgid ""
-"\n"
-"const StatusbarExample = new Lang.Class({\n"
-" Name: 'Statusbar Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsstatusbar',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-"const StatusbarExample = new Lang.Class({\n"
-" Name: 'Statusbar Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsstatusbar',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/statusbar.js.page:67
-msgid ""
-"All the code for this sample goes in the StatusbarExample class. The above "
-"code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> for our widgets and window to "
-"go in."
-msgstr ""
-"Todo el código de este ejemplo va en la clase «StatusBarExample». El código "
-"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> para que vayan los widgets y "
-"la ventana."
-
-#. (itstool) path: section/code
-#: C/statusbar.js.page:68
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 120,\n"
-" default_width: 300,\n"
-" title: \"Button Clicker\"});\n"
-"\n"
-" // Create a paned interface\n"
-" this._panes = new Gtk.Paned ({\n"
-" orientation: Gtk.Orientation.VERTICAL });\n"
-msgstr ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 120,\n"
-" default_width: 300,\n"
-" title: \"Button Clicker\"});\n"
-"\n"
-" // Create a paned interface\n"
-" this._panes = new Gtk.Paned ({\n"
-" orientation: Gtk.Orientation.VERTICAL });\n"
-
-#. (itstool) path: section/p
-#: C/statusbar.js.page:84
-msgid ""
-"The _buildUI function is where we put all the code to create the "
-"application's user interface. The first step is creating a new <link href="
-"\"GtkApplicationWindow.js.page\">Gtk.ApplicationWindow</link> to put all our "
-"widgets into. The next step is to create a vertically-oriented Gtk.Paned "
-"interface, to divide the window up into two sections. This way the statusbar "
-"looks like those used in other applications, and it stays at the bottom of "
-"the window, even if the user resizes it."
-msgstr ""
-"La función «_buildUI» es donde se pone todo el código para crear la interfaz "
-"de usuario de la aplicación. El primer paso es crear una <link href="
-"\"GtkApplicationWindow.js.page\">Gtk.ApplicationWindow</link> nueva para "
-"poner dentro todos los widgets. El siguiente paso es crear una interfaz «Gtk."
-"Paned» orientada verticalmente, para dividir la ventana en dos secciones. De "
-"esta manera la barra de estado se parece a aquellas usadas en otras "
-"aplicaciones, y permanece en la parte inferior de la ventana, incluso si el "
-"usuario la redimensiona."
-
-#. (itstool) path: section/title
-#: C/statusbar.js.page:88
-msgid "Creating the buttons"
-msgstr "Crear los botones"
-
-#. (itstool) path: section/code
-#: C/statusbar.js.page:89
-#, no-wrap
-msgid ""
-"\n"
-" // Create the main button\n"
-" this._clickMe = new Gtk.Button ({\n"
-" label: \"Click Me!\" });\n"
-" this._clickMe.connect (\"clicked\", Lang.bind (this, this._clicked));\n"
-"\n"
-" // Create the back button\n"
-" this._backButton = new Gtk.Button ({\n"
-" label: \"gtk-go-back\",\n"
-" use_stock: true });\n"
-" this._backButton.connect (\"clicked\", Lang.bind (this, this._back));\n"
-"\n"
-" // Create the clear button\n"
-" this._clearButton = new Gtk.Button ({\n"
-" label: \"gtk-clear\",\n"
-" use_stock: true });\n"
-" this._clearButton.connect (\"clicked\", Lang.bind (this, this._clear));\n"
-msgstr ""
-"\n"
-" // Create the main button\n"
-" this._clickMe = new Gtk.Button ({\n"
-" label: \"Click Me!\" });\n"
-" this._clickMe.connect (\"clicked\", Lang.bind (this, this._clicked));\n"
-"\n"
-" // Create the back button\n"
-" this._backButton = new Gtk.Button ({\n"
-" label: \"gtk-go-back\",\n"
-" use_stock: true });\n"
-" this._backButton.connect (\"clicked\", Lang.bind (this, this._back));\n"
-"\n"
-" // Create the clear button\n"
-" this._clearButton = new Gtk.Button ({\n"
-" label: \"gtk-clear\",\n"
-" use_stock: true });\n"
-" this._clearButton.connect (\"clicked\", Lang.bind (this, this._clear));\n"
-
-#. (itstool) path: section/p
-#: C/statusbar.js.page:107
-msgid ""
-"This code creates the three <link href=\"button.js.page\">Gtk.Buttons</link> "
-"we'll use to push a new message to the statusbar, pop the last one off, and "
-"clear all existing messages. The \"back\" and \"clear\" buttons are <link "
-"href=\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html\">stock "
-"buttons</link>, which are automatically translated into any language GNOME "
-"supports."
-msgstr ""
-"Este código crea los tres <link href=\"button.js.page\">Gtk.Buttons</link> "
-"que se usarán para empujar un mensaje nuevo a la barra de tareas, extraer el "
-"último, y limpiar todos los mensajes existentes. Los botones «back» y «clear» "
-"son <link href=\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html"
-"\">botones del almacén</link>, que se traducen automáticamente a cualquier "
-"idioma que GNOME soporte."
-
-#. (itstool) path: section/code
-#: C/statusbar.js.page:109
-#, no-wrap
-msgid ""
-"\n"
-" // Put the buttons in a grid\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-" this._grid.attach (this._backButton, 0, 0, 1, 1);\n"
-" this._grid.attach_next_to (this._clickMe, this._backButton, Gtk.PositionType.RIGHT, 1, 1);\n"
-" this._grid.attach_next_to (this._clearButton, this._clickMe, Gtk.PositionType.RIGHT, 1, 1);\n"
-"\n"
-" // Put the grid in a large frame that fills most of the window\n"
-" this._topFrame = new Gtk.Frame ({\n"
-" border_width: 20,\n"
-" height_request: 90,\n"
-" width_request: 300});\n"
-" this._topFrame.add (this._grid);\n"
-msgstr ""
-"\n"
-" // Put the buttons in a grid\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-" this._grid.attach (this._backButton, 0, 0, 1, 1);\n"
-" this._grid.attach_next_to (this._clickMe, this._backButton, Gtk.PositionType.RIGHT, 1, 1);\n"
-" this._grid.attach_next_to (this._clearButton, this._clickMe, Gtk.PositionType.RIGHT, 1, 1);\n"
-"\n"
-" // Put the grid in a large frame that fills most of the window\n"
-" this._topFrame = new Gtk.Frame ({\n"
-" border_width: 20,\n"
-" height_request: 90,\n"
-" width_request: 300});\n"
-" this._topFrame.add (this._grid);\n"
-
-#. (itstool) path: section/p
-#: C/statusbar.js.page:125
-msgid ""
-"This code creates the <link href=\"grid.js.page\">Gtk.Grid</link> that we'll "
-"use to organize the buttons, and attaches the buttons to it in order. It "
-"then creates a <link href=\"paned.js.page\">Gtk.Frame</link> which will take "
-"up most of the window and has a large amount of padding around the buttons, "
-"and adds the Grid to the Frame. Note that we still need to put the Frame "
-"into the Paned interface, and then add it to the ApplicationWindow."
-msgstr ""
-"Este código crea la <link href=\"grid.js.page\">Gtk.Grid</link> que se usará "
-"para organizar los botones, y le adjunta los botones en orden. Después crea "
-"un <link href=\"paned.js.page\">Gtk.Frame</link> que ocupará la mayor parte "
-"de la ventana y que tiene bastante relleno alrededor de los botones, y añade "
-"la rejilla al cuadro. Tenga en cuenta que todavía se necesita poner el "
-"cuadro en la interfaz con paneles, y después añadirlo a la "
-"«ApplicationWindow»."
-
-#. (itstool) path: section/title
-#: C/statusbar.js.page:129
-msgid "Creating the statusbar"
-msgstr "Crear la barra de estado"
-
-#. (itstool) path: section/code
-#: C/statusbar.js.page:130
-#, no-wrap
-msgid ""
-"\n"
-" // Create the statusbar\n"
-" this._statusbar = new Gtk.Statusbar();\n"
-"\n"
-" // Keep track of the number of times the button has been clicked\n"
-" this.Clicks = 0;\n"
-" this.ContextID = this._statusbar.get_context_id (\"Number of Clicks\");\n"
-"\n"
-" // Give the statusbar an initial message\n"
-" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
-"\n"
-" // Put the statusbar in its own frame at the bottom\n"
-" this._barFrame = new Gtk.Frame ({\n"
-" height_request: 30 });\n"
-" this._barFrame.add (this._statusbar);\n"
-msgstr ""
-"\n"
-" // Create the statusbar\n"
-" this._statusbar = new Gtk.Statusbar();\n"
-"\n"
-" // Keep track of the number of times the button has been clicked\n"
-" this.Clicks = 0;\n"
-" this.ContextID = this._statusbar.get_context_id (\"Number of Clicks\");\n"
-"\n"
-" // Give the statusbar an initial message\n"
-" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
-"\n"
-" // Put the statusbar in its own frame at the bottom\n"
-" this._barFrame = new Gtk.Frame ({\n"
-" height_request: 30 });\n"
-" this._barFrame.add (this._statusbar);\n"
-
-#. (itstool) path: section/p
-#: C/statusbar.js.page:146
-msgid ""
-"Here we create the Gtk.Statusbar, and push a message to it to start off "
-"with. Then we give it its own narrow frame at the bottom of the window."
-msgstr ""
-"Aquí se crea la «Gtk.Statusbar», y se le empuja un mensaje para comenzar. "
-"Después se le da su propio cuadro estrecho en la parte inferior de la "
-"ventana."
-
-#. (itstool) path: section/p
-#: C/statusbar.js.page:147
-msgid ""
-"Every message needs to have a context id, which is an integer value you can "
-"get from the statusbar with the get_context_id() function. Its only "
-"parameter is the string value you use to describe that particular context "
-"id. Normally, you'll get a new context id for different kinds of messages, "
-"so that you can use the remove() function to remove a specific message and "
-"not just the most recent one on the stack. This is a simple example with "
-"only one kind of message, though, so we're just using one for everything."
-msgstr ""
-"Cada mensaje necesita tener un ID de contexto, que es un valor entero que "
-"puede obtener de la barra de estado con la función «get_context_id()». Su "
-"único parámetro es el valor de la cadena que usa para describir ese ID de "
-"contexto particular. Normalmente, obtendría un ID de contexto nuevo para "
-"distintos tipos de mensajes, para que pueda usar la función «remove()» para "
-"eliminar un mensaje específico y no sólo el más reciente de la pila. Sin "
-"embargo, este es un ejemplo simple con sólo un tipo de mensaje, por lo que "
-"sólo se usa uno para todo."
-
-#. (itstool) path: section/p
-#: C/statusbar.js.page:148
-msgid ""
-"We use the push() function to push a new message onto the stack. Its first "
-"parameter is the context id, and its second is the message."
-msgstr ""
-"Se usa la función «push()» para empujar un mensaje nuevo a la pila. Su primer "
-"parámetro es el ID de contexto, y el segundo es el mensaje."
-
-#. (itstool) path: section/code
-#: C/statusbar.js.page:149
-#, no-wrap
-msgid ""
-"\n"
-" // Assemble the frames into the paned interface\n"
-" this._panes.pack1 (this._topFrame, true, false);\n"
-" this._panes.pack2 (this._barFrame, false, false);\n"
-"\n"
-" // Put the panes into the window\n"
-" this._window.add (this._panes);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-msgstr ""
-"\n"
-" // Assemble the frames into the paned interface\n"
-" this._panes.pack1 (this._topFrame, true, false);\n"
-" this._panes.pack2 (this._barFrame, false, false);\n"
-"\n"
-" // Put the panes into the window\n"
-" this._window.add (this._panes);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/statusbar.js.page:161
-msgid ""
-"This code finishes up creating the window, by packing the frames into the "
-"pane, adding it to the window, and telling the window to show all child "
-"widgets."
-msgstr ""
-"Este código termina de crear la ventana, empaquetando los marcos en el "
-"panel, añadiéndolo a la ventana, y diciéndole a la ventana que muestre todos "
-"los widgets hijos."
-
-#. (itstool) path: section/title
-#: C/statusbar.js.page:165
-msgid "Functions for interacting with the statusbar"
-msgstr "Funciones para interactuar con la barra de estado"
-
-#. (itstool) path: section/code
-#: C/statusbar.js.page:166
-#, no-wrap
-msgid ""
-"\n"
-" _clicked: function() {\n"
-"\n"
-" // Increment the number of clicks by 1\n"
-" this.Clicks++;\n"
-"\n"
-" // Update the statusbar with the new number of clicks\n"
-" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _back: function () {\n"
-"\n"
-" // If there have been any clicks, decrement by 1 and remove last statusbar update\n"
-" if (this.Clicks > 0 ) {\n"
-" this.Clicks--;\n"
-" this._statusbar.pop (this.ContextID);\n"
-" };\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _clear: function () {\n"
-"\n"
-" // Reset the number of clicks\n"
-" this.Clicks = 0;\n"
-"\n"
-" // Wipe out all the messages pushed to the statusbar\n"
-" this._statusbar.remove_all (this.ContextID);\n"
-"\n"
-" // Reset the statusbar's message\n"
-" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-msgstr ""
-"\n"
-" _clicked: function() {\n"
-"\n"
-" // Increment the number of clicks by 1\n"
-" this.Clicks++;\n"
-"\n"
-" // Update the statusbar with the new number of clicks\n"
-" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _back: function () {\n"
-"\n"
-" // If there have been any clicks, decrement by 1 and remove last statusbar update\n"
-" if (this.Clicks > 0 ) {\n"
-" this.Clicks--;\n"
-" this._statusbar.pop (this.ContextID);\n"
-" };\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _clear: function () {\n"
-"\n"
-" // Reset the number of clicks\n"
-" this.Clicks = 0;\n"
-"\n"
-" // Wipe out all the messages pushed to the statusbar\n"
-" this._statusbar.remove_all (this.ContextID);\n"
-"\n"
-" // Reset the statusbar's message\n"
-" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-
-#. (itstool) path: section/p
-#: C/statusbar.js.page:206
-msgid ""
-"Here we have functions which demonstrate pushing a message onto the stack, "
-"popping the top one off of it, and clearing all messages of a particular "
-"context id. The pop() function just takes one parameter, which is the "
-"context id for the type of message you want to pop off the most recent one "
-"of. The remove_all() function works the same way, except it removes all "
-"messages of that type from the stack."
-msgstr ""
-"Aquí están funciones que muestran cómo empujar un mensaje a la pila, extraer "
-"el que está arriba de todo, y limpiar todos los mensajes de un ID de "
-"contexto particular. La función «pop()» sólo toma un parámetro, que es el ID "
-"de contexto para el tipo de mensaje del que quiere extraer el más reciente. "
-"La función «remove_all()» funciona de la misma manera, excepto que elimina "
-"todos los mensajes de ese tipo de la pila."
-
-#. (itstool) path: section/code
-#: C/statusbar.js.page:207
-#, no-wrap
-msgid ""
-"\n"
-"// Run the application\n"
-"let app = new StatusbarExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"// Run the application\n"
-"let app = new StatusbarExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/p
-#: C/statusbar.js.page:212
-msgid ""
-"Finally, we create a new instance of the finished StatusbarExample class, "
-"and set the application running."
-msgstr ""
-"Finalmente, se crea una instancia nueva de la clase «StatusbarExample» "
-"terminada, y se ejecuta la aplicación."
-
-#. (itstool) path: section/code
-#: C/statusbar.js.page:217
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const StatusbarExample = new Lang.Class({\n"
-" Name: 'Statusbar Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsstatusbar',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 120,\n"
-" default_width: 300,\n"
-" title: \"Button Clicker\"});\n"
-"\n"
-" // Create a paned interface\n"
-" this._panes = new Gtk.Paned ({\n"
-" orientation: Gtk.Orientation.VERTICAL });\n"
-"\n"
-" // Create the main button\n"
-" this._clickMe = new Gtk.Button ({\n"
-" label: \"Click Me!\" });\n"
-" this._clickMe.connect (\"clicked\", Lang.bind (this, this._clicked));\n"
-"\n"
-" // Create the back button\n"
-" this._backButton = new Gtk.Button ({\n"
-" label: \"gtk-go-back\",\n"
-" use_stock: true });\n"
-" this._backButton.connect (\"clicked\", Lang.bind (this, this._back));\n"
-"\n"
-" // Create the clear button\n"
-" this._clearButton = new Gtk.Button ({\n"
-" label: \"gtk-clear\",\n"
-" use_stock: true });\n"
-" this._clearButton.connect (\"clicked\", Lang.bind (this, this._clear));\n"
-"\n"
-" // Put the buttons in a grid\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-" this._grid.attach (this._backButton, 0, 0, 1, 1);\n"
-" this._grid.attach_next_to (this._clickMe, this._backButton, Gtk.PositionType.RIGHT, 1, 1);\n"
-" this._grid.attach_next_to (this._clearButton, this._clickMe, Gtk.PositionType.RIGHT, 1, 1);\n"
-"\n"
-" // Put the grid in a large frame that fills most of the window\n"
-" this._topFrame = new Gtk.Frame ({\n"
-" border_width: 20,\n"
-" height_request: 90,\n"
-" width_request: 300});\n"
-" this._topFrame.add (this._grid);\n"
-"\n"
-" // Create the statusbar\n"
-" this._statusbar = new Gtk.Statusbar();\n"
-"\n"
-" // Keep track of the number of times the button has been clicked\n"
-" this.Clicks = 0;\n"
-" this.ContextID = this._statusbar.get_context_id (\"Number of Clicks\");\n"
-"\n"
-" // Give the statusbar an initial message\n"
-" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
-"\n"
-" // Put the statusbar in its own frame at the bottom\n"
-" this._barFrame = new Gtk.Frame ({\n"
-" height_request: 30 });\n"
-" this._barFrame.add (this._statusbar);\n"
-"\n"
-" // Assemble the frames into the paned interface\n"
-" this._panes.pack1 (this._topFrame, true, false);\n"
-" this._panes.pack2 (this._barFrame, false, false);\n"
-"\n"
-" // Put the panes into the window\n"
-" this._window.add (this._panes);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _clicked: function() {\n"
-"\n"
-" // Increment the number of clicks by 1\n"
-" this.Clicks++;\n"
-"\n"
-" // Update the statusbar with the new number of clicks\n"
-" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _back: function () {\n"
-"\n"
-" // If there have been any clicks, decrement by 1 and remove last statusbar update\n"
-" if (this.Clicks > 0 ) {\n"
-" this.Clicks--;\n"
-" this._statusbar.pop (this.ContextID);\n"
-" };\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _clear: function () {\n"
-"\n"
-" // Reset the number of clicks\n"
-" this.Clicks = 0;\n"
-"\n"
-" // Wipe out all the messages pushed to the statusbar\n"
-" this._statusbar.remove_all (this.ContextID);\n"
-"\n"
-" // Reset the statusbar's message\n"
-" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new StatusbarExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const StatusbarExample = new Lang.Class({\n"
-" Name: 'Statusbar Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsstatusbar',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 120,\n"
-" default_width: 300,\n"
-" title: \"Button Clicker\"});\n"
-"\n"
-" // Create a paned interface\n"
-" this._panes = new Gtk.Paned ({\n"
-" orientation: Gtk.Orientation.VERTICAL });\n"
-"\n"
-" // Create the main button\n"
-" this._clickMe = new Gtk.Button ({\n"
-" label: \"Click Me!\" });\n"
-" this._clickMe.connect (\"clicked\", Lang.bind (this, this._clicked));\n"
-"\n"
-" // Create the back button\n"
-" this._backButton = new Gtk.Button ({\n"
-" label: \"gtk-go-back\",\n"
-" use_stock: true });\n"
-" this._backButton.connect (\"clicked\", Lang.bind (this, this._back));\n"
-"\n"
-" // Create the clear button\n"
-" this._clearButton = new Gtk.Button ({\n"
-" label: \"gtk-clear\",\n"
-" use_stock: true });\n"
-" this._clearButton.connect (\"clicked\", Lang.bind (this, this._clear));\n"
-"\n"
-" // Put the buttons in a grid\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-" this._grid.attach (this._backButton, 0, 0, 1, 1);\n"
-" this._grid.attach_next_to (this._clickMe, this._backButton, Gtk.PositionType.RIGHT, 1, 1);\n"
-" this._grid.attach_next_to (this._clearButton, this._clickMe, Gtk.PositionType.RIGHT, 1, 1);\n"
-"\n"
-" // Put the grid in a large frame that fills most of the window\n"
-" this._topFrame = new Gtk.Frame ({\n"
-" border_width: 20,\n"
-" height_request: 90,\n"
-" width_request: 300});\n"
-" this._topFrame.add (this._grid);\n"
-"\n"
-" // Create the statusbar\n"
-" this._statusbar = new Gtk.Statusbar();\n"
-"\n"
-" // Keep track of the number of times the button has been clicked\n"
-" this.Clicks = 0;\n"
-" this.ContextID = this._statusbar.get_context_id (\"Number of Clicks\");\n"
-"\n"
-" // Give the statusbar an initial message\n"
-" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
-"\n"
-" // Put the statusbar in its own frame at the bottom\n"
-" this._barFrame = new Gtk.Frame ({\n"
-" height_request: 30 });\n"
-" this._barFrame.add (this._statusbar);\n"
-"\n"
-" // Assemble the frames into the paned interface\n"
-" this._panes.pack1 (this._topFrame, true, false);\n"
-" this._panes.pack2 (this._barFrame, false, false);\n"
-"\n"
-" // Put the panes into the window\n"
-" this._window.add (this._panes);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _clicked: function() {\n"
-"\n"
-" // Increment the number of clicks by 1\n"
-" this.Clicks++;\n"
-"\n"
-" // Update the statusbar with the new number of clicks\n"
-" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _back: function () {\n"
-"\n"
-" // If there have been any clicks, decrement by 1 and remove last statusbar update\n"
-" if (this.Clicks > 0 ) {\n"
-" this.Clicks--;\n"
-" this._statusbar.pop (this.ContextID);\n"
-" };\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _clear: function () {\n"
-"\n"
-" // Reset the number of clicks\n"
-" this.Clicks = 0;\n"
-"\n"
-" // Wipe out all the messages pushed to the statusbar\n"
-" this._statusbar.remove_all (this.ContextID);\n"
-"\n"
-" // Reset the statusbar's message\n"
-" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new StatusbarExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/statusbar.js.page:226
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Frame.html"
-"\">Gtk.Frame</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Frame.html"
-"\">Gtk.Frame</link>"
-
-#. (itstool) path: item/p
-#: C/statusbar.js.page:227
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Paned.html"
-"\">Gtk.Paned</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Paned.html"
-"\">Gtk.Paned</link>"
-
-#. (itstool) path: item/p
-#: C/statusbar.js.page:228
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Statusbar.html"
-"\">Gtk.Statusbar</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Statusbar.html"
-"\">Gtk.Statusbar</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/statusbar.py.page:24 C/statusbar.vala.page:25
-msgctxt "_"
-msgid ""
-"external ref='media/statusbar.png' md5='eb1aca55315d6cda57b12a5f36058ba8'"
-msgstr ""
-"external ref='media/statusbar.png' md5='eb1aca55315d6cda57b12a5f36058ba8'"
-
-#. (itstool) path: info/title
-#: C/statusbar.py.page:8
-msgctxt "text"
-msgid "Statusbar (Python)"
-msgstr "Statusbar (Python)"
-
-#. (itstool) path: page/p
-#: C/statusbar.py.page:25
-msgid ""
-"This statusbar tells you if you click the button or if you press any key "
-"(and which key)."
-msgstr ""
-"Esta barra de estado indica si ha pulsado el botón o si ha pulsado una tecla "
-"(y qué tecla ha pulsado)."
-
-#. (itstool) path: section/code
-#: C/statusbar.py.page:32
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gdk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"StatusBar Example\", application=app)\n"
-" self.set_default_size(200, 100)\n"
-"\n"
-" # a label\n"
-" label = Gtk.Label(label=\"Press any key or \")\n"
-"\n"
-" # a button\n"
-" button = Gtk.Button(label=\"click me.\")\n"
-" # connected to a callback\n"
-" button.connect(\"clicked\", self.button_clicked_cb)\n"
-"\n"
-" # the statusbar\n"
-" self.statusbar = Gtk.Statusbar()\n"
-" # its context_id - not shown in the UI but needed to uniquely identify\n"
-" # the source of a message\n"
-" self.context_id = self.statusbar.get_context_id(\"example\")\n"
-" # we push a message onto the statusbar's stack\n"
-" self.statusbar.push(\n"
-" self.context_id, \"Waiting for you to do something...\")\n"
-"\n"
-" # a grid to attach the widgets\n"
-" grid = Gtk.Grid()\n"
-" grid.set_column_spacing(5)\n"
-" grid.set_column_homogeneous(True)\n"
-" grid.set_row_homogeneous(True)\n"
-" grid.attach(label, 0, 0, 1, 1)\n"
-" grid.attach_next_to(button, label, Gtk.PositionType.RIGHT, 1, 1)\n"
-" grid.attach(self.statusbar, 0, 1, 2, 1)\n"
-"\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" # callback function for the button clicked\n"
-" # if the button is clicked the event is signaled to the statusbar\n"
-" # onto which we push a new status\n"
-" def button_clicked_cb(self, button):\n"
-" self.statusbar.push(self.context_id, \"You clicked the button.\")\n"
-"\n"
-" # event handler\n"
-" def do_key_press_event(self, event):\n"
-" # any signal from the keyboard is signaled to the statusbar\n"
-" # onto which we push a new status with the symbolic name\n"
-" # of the key pressed\n"
-" self.statusbar.push(self.context_id, Gdk.keyval_name(event.keyval) +\n"
-" \" key was pressed.\")\n"
-" # stop the signal emission\n"
-" return True\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gdk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"StatusBar Example\", application=app)\n"
-" self.set_default_size(200, 100)\n"
-"\n"
-" # a label\n"
-" label = Gtk.Label(label=\"Press any key or \")\n"
-"\n"
-" # a button\n"
-" button = Gtk.Button(label=\"click me.\")\n"
-" # connected to a callback\n"
-" button.connect(\"clicked\", self.button_clicked_cb)\n"
-"\n"
-" # the statusbar\n"
-" self.statusbar = Gtk.Statusbar()\n"
-" # its context_id - not shown in the UI but needed to uniquely identify\n"
-" # the source of a message\n"
-" self.context_id = self.statusbar.get_context_id(\"example\")\n"
-" # we push a message onto the statusbar's stack\n"
-" self.statusbar.push(\n"
-" self.context_id, \"Waiting for you to do something...\")\n"
-"\n"
-" # a grid to attach the widgets\n"
-" grid = Gtk.Grid()\n"
-" grid.set_column_spacing(5)\n"
-" grid.set_column_homogeneous(True)\n"
-" grid.set_row_homogeneous(True)\n"
-" grid.attach(label, 0, 0, 1, 1)\n"
-" grid.attach_next_to(button, label, Gtk.PositionType.RIGHT, 1, 1)\n"
-" grid.attach(self.statusbar, 0, 1, 2, 1)\n"
-"\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" # callback function for the button clicked\n"
-" # if the button is clicked the event is signaled to the statusbar\n"
-" # onto which we push a new status\n"
-" def button_clicked_cb(self, button):\n"
-" self.statusbar.push(self.context_id, \"You clicked the button.\")\n"
-"\n"
-" # event handler\n"
-" def do_key_press_event(self, event):\n"
-" # any signal from the keyboard is signaled to the statusbar\n"
-" # onto which we push a new status with the symbolic name\n"
-" # of the key pressed\n"
-" self.statusbar.push(self.context_id, Gdk.keyval_name(event.keyval) +\n"
-" \" key was pressed.\")\n"
-" # stop the signal emission\n"
-" return True\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: note/p
-#: C/statusbar.py.page:34
-msgid ""
-"<code>Gdk.keyval_name(event.keyval)</code> converts the key value "
-"<code>event.keyval</code> into a symbolic name. The names and corresponding "
-"key values can be found <link href=\"http://git.gnome.org/browse/gtk+/tree/"
-"gdk/gdkkeysyms.h\">here</link>, but for instance <code>GDK_KEY_BackSpace</"
-"code> becomes the string <code>\"BackSpace\"</code>."
-msgstr ""
-"<code>Gdk.keyval_name(event.keyval)</code> convierte el valor de la tecla "
-"<code>event.keyval</code> en un nombre simbólico. Los nombres y los valores "
-"de teclas correspondientes pueden encontrarse <link href=\"http://git.gnome."
-"org/browse/gtk+/tree/gdk/gdkkeysyms.h\">aquí</link>, pero por ejemplo "
-"<code>GDK_KEY_BackSpace</code> se convierte en la cadena <code>\"BackSpace"
-"\"</code>."
-
-#. (itstool) path: section/title
-#: C/statusbar.py.page:40
-msgid "Useful methods for a Statusbar widget"
-msgstr "Métodos útiles para un widget «Statusbar»"
-
-#. (itstool) path: section/p
-#: C/statusbar.py.page:41
-msgid ""
-"In line 17 the signal <code>\"clicked\"</code> is connected to the callback "
-"function <code>button_clicked_cb()</code> using <code><var>widget</var>."
-"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
-"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 17, la señal <code>«clicked»</code> se conecta a la función de "
-"retorno de llamada <code>button_clicked_cb()</code> usando "
-"<code><var>widget</var>.connect(<var>señal</var>, <var>función de retorno de "
-"llamada</var>)</code>. Consulte la <link xref=\"signals-callbacks.py\"/> "
-"para una explicación más detallada."
-
-#. (itstool) path: item/p
-#: C/statusbar.py.page:43
-msgid ""
-"<code>pop(context_id)</code> removes the first message in the statusbar "
-"stack with the given <code>context_id</code>."
-msgstr ""
-"<code>pop(id_del_contexto)</code> elimina el primer mensaje en la pila de la "
-"barra de estado con el <code>id_del_contexto</code> dado."
-
-#. (itstool) path: item/p
-#: C/statusbar.py.page:44
-msgid ""
-"<code>remove_all(context_id)</code> removes all the messages in the "
-"statusbar stack with the given <code>context_id</code>."
-msgstr ""
-"<code>remove_all(id_del_contexto)</code> elimina todos los mensajes en la "
-"pila de la barra de estado con el <code>id_del_contexto</code> dado."
-
-#. (itstool) path: item/p
-#: C/statusbar.py.page:45
-msgid ""
-"<code>remove(context_id, message_id)</code> removes the message with the "
-"given <code>message_id</code> in the statusbar stack with the given "
-"<code>context_id</code>. The <code>message_id</code> is returned by "
-"<code>push(context_id, \"the message\")</code> when pushing the message on "
-"the statusbar."
-msgstr ""
-"<code>remove(id_del_contexto, id_del_mensaje)</code> elimina el mensaje con "
-"el <code>id_del_mensaje</code> dado en la pila de la barra de estado con el "
-"<code>id_del_contexto</code> dado. <code>push(id_del_contexto, \"el mensaje"
-"\")</code> devuelve el <code>id_del_mensaje</code> cuando se muestra el "
-"mensaje en la barra de estado."
-
-#. (itstool) path: item/p
-#: C/statusbar.py.page:53
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkStatusbar.html"
-"\">GtkStatusbar</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkStatusbar.html"
-"\">GtkStatusbar</link>"
-
-#. (itstool) path: item/p
-#: C/statusbar.py.page:54
-msgid ""
-"<link href=\"http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling.html"
-"\">Gdk - Key Values</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling.html"
-"\">Gdk: valores de teclas</link>"
-
-#. (itstool) path: info/title
-#: C/statusbar.vala.page:8
-msgctxt "text"
-msgid "Statusbar (Vala)"
-msgstr "Statusbar (Vala)"
-
-#. (itstool) path: page/p
-#: C/statusbar.vala.page:26
-msgid "This statusbar tells you what's going on."
-msgstr "Esta barra de estado le indica qué está pasando."
-
-#. (itstool) path: page/code
-#: C/statusbar.vala.page:28
-#, no-wrap
-msgid ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\tGtk.Statusbar statusbar;\n"
-"\tuint context_id;\n"
-"\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Statusbar Example\");\n"
-"\n"
-"\t\tstatusbar = new Gtk.Statusbar ();\n"
-"\t\tcontext_id = statusbar.get_context_id (\"example\");\n"
-"\t\tstatusbar.push (context_id, \"Waiting for you to do something...\");\n"
-"\n"
-"\t\t//set the default size of the window\n"
-"\t\tthis.set_default_size (200, 100);\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tvar label = new Gtk.Label (\"Press any key or \");\n"
-"\n"
-"\t\tgrid.attach (label, 0, 0, 1, 1);\n"
-"\t\tlabel.show ();\n"
-"\n"
-"\t\tvar button = new Gtk.Button.with_label (\"click me.\");\n"
-"\t\tgrid.attach_next_to (button, label, Gtk.PositionType.RIGHT, 1, 1);\n"
-"\t\tbutton.show ();\n"
-"\n"
-"\t\tgrid.attach (statusbar, 0, 1, 2, 1);\n"
-"\t\tstatusbar.show ();\n"
-"\n"
-"\t\tgrid.set_column_spacing (5);\n"
-"\t\tgrid.set_column_homogeneous (true);\n"
-"\t\tgrid.set_row_homogeneous (true);\n"
-"\n"
-"\t\tthis.add (grid);\n"
-"\t\tgrid.show ();\n"
-"\n"
-"\t\tbutton.clicked.connect(button_clicked_cb);\n"
-"\t}\n"
-"\n"
-"\t/* Since the key-press-event is a signal received by the window, we don't need to connect\n"
-"\tthe window to a callback function. We can just override key_press_event. */\n"
-"\tprotected override bool key_press_event (Gdk.EventKey event) {\n"
-"\t\tstatusbar.push (context_id, Gdk.keyval_name(event.keyval) + \" key was pressed.\");\n"
-"\t\treturn true;\n"
-"\t}\n"
-"\n"
-"\tvoid button_clicked_cb (Gtk.Button button) {\n"
-"\t\tstatusbar.push (context_id, \"You clicked the button.\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.status\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\tGtk.Statusbar statusbar;\n"
-"\tuint context_id;\n"
-"\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Statusbar Example\");\n"
-"\n"
-"\t\tstatusbar = new Gtk.Statusbar ();\n"
-"\t\tcontext_id = statusbar.get_context_id (\"example\");\n"
-"\t\tstatusbar.push (context_id, \"Waiting for you to do something...\");\n"
-"\n"
-"\t\t//set the default size of the window\n"
-"\t\tthis.set_default_size (200, 100);\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tvar label = new Gtk.Label (\"Press any key or \");\n"
-"\n"
-"\t\tgrid.attach (label, 0, 0, 1, 1);\n"
-"\t\tlabel.show ();\n"
-"\n"
-"\t\tvar button = new Gtk.Button.with_label (\"click me.\");\n"
-"\t\tgrid.attach_next_to (button, label, Gtk.PositionType.RIGHT, 1, 1);\n"
-"\t\tbutton.show ();\n"
-"\n"
-"\t\tgrid.attach (statusbar, 0, 1, 2, 1);\n"
-"\t\tstatusbar.show ();\n"
-"\n"
-"\t\tgrid.set_column_spacing (5);\n"
-"\t\tgrid.set_column_homogeneous (true);\n"
-"\t\tgrid.set_row_homogeneous (true);\n"
-"\n"
-"\t\tthis.add (grid);\n"
-"\t\tgrid.show ();\n"
-"\n"
-"\t\tbutton.clicked.connect(button_clicked_cb);\n"
-"\t}\n"
-"\n"
-"\t/* Since the key-press-event is a signal received by the window, we don't need to connect\n"
-"\tthe window to a callback function. We can just override key_press_event. */\n"
-"\tprotected override bool key_press_event (Gdk.EventKey event) {\n"
-"\t\tstatusbar.push (context_id, Gdk.keyval_name(event.keyval) + \" key was pressed.\");\n"
-"\t\treturn true;\n"
-"\t}\n"
-"\n"
-"\tvoid button_clicked_cb (Gtk.Button button) {\n"
-"\t\tstatusbar.push (context_id, \"You clicked the button.\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.status\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/statusbar.vala.page:33
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Statusbar.html\">Gtk."
-"Statusbar</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Statusbar.html\">Gtk."
-"Statusbar</link>"
-
-#. (itstool) path: info/title
-#: C/strings.py.page:9
-msgctxt "text"
-msgid "Strings (Python)"
-msgstr "Cadenas (Python)"
-
-#. (itstool) path: info/desc
-#: C/strings.py.page:14
-msgid "An explanation of how to deal with strings in Python and GTK+."
-msgstr "Una explicación de cómo trabajar con cadenas en Python y GTK+."
-
-#. (itstool) path: page/title
-#: C/strings.py.page:27
-msgid "Strings"
-msgstr "Cadenas"
-
-#. (itstool) path: note/p
-#: C/strings.py.page:31
-msgid "GNOME strongly encourages the use of Python 3 for writing applications!"
-msgstr ""
-"GNOME recomienda fuertemente el uso de Python 3 para escribir aplicaciones."
-
-#. (itstool) path: section/title
-#: C/strings.py.page:34
-msgid "Strings in Python 2"
-msgstr "Cadenas en Python 2"
-
-#. (itstool) path: section/p
-#: C/strings.py.page:36
-msgid ""
-"Python 2 comes with two different kinds of objects that can be used to "
-"represent strings, <code>str</code> and <code>unicode</code>. Instances of "
-"<code>unicode</code> are used to express Unicode strings, whereas instances "
-"of the <code>str</code> type are byte representations (the encoded string). "
-"Under the hood, Python represents Unicode strings as either 16- or 32-bit "
-"integers, depending on how the Python interpreter was compiled."
-msgstr ""
-"Python 2 viene con dos tipos de objetos diferentes que pueden usarse para "
-"representar cadenas, <code>str</code> y <code>unicode</code>. Las instancias "
-"de <code>unicode</code> se usan para expresar cadenas de Unicode, mientras "
-"que las instancias del tipo <code>str</code> son representaciones de bytes "
-"(la cadena codificada). A nivel funcional, Python representa las cadenas de "
-"Unicode como enteros de 16 ó 32 bits, dependiendo de cómo se compiló su "
-"intérprete."
-
-#. (itstool) path: section/code
-#: C/strings.py.page:38
-#, no-wrap
-msgid ""
-"\n"
-">>> unicode_string = u\"Fu\\u00dfb\\u00e4lle\"\n"
-">>> print unicode_string\n"
-"Fußbälle\n"
-msgstr ""
-"\n"
-">>> unicode_string = u\"Fu\\u00dfb\\u00e4lle\"\n"
-">>> print unicode_string\n"
-"Fußbälle\n"
-
-#. (itstool) path: section/p
-#: C/strings.py.page:44
-msgid ""
-"Unicode strings can be converted to 8-bit strings with <code>unicode.encode()"
-"</code>. Python’s 8-bit strings have a <code>str.decode()</code> method that "
-"interprets the string using the given encoding (that is, it is the inverse "
-"of the <code>unicode.encode()</code>):"
-msgstr ""
-"Las cadenas de Unicode pueden convertirse a cadenas de 8 bits con "
-"<code>unicode.encode()</code>. Las cadenas de 8 bits de Python tienen un "
-"método <code>str.decode()</code> que interpreta la cadena usando la "
-"codificación dada (es decir, es la inversa de <code>unicode.encode()</code>):"
-
-#. (itstool) path: section/code
-#: C/strings.py.page:46
-#, no-wrap
-msgid ""
-"\n"
-">>> type(unicode_string)\n"
-"<type 'unicode'>\n"
-">>> unicode_string.encode(\"utf-8\")\n"
-"'Fu\\xc3\\x9fb\\xc3\\xa4lle'\n"
-">>> utf8_string = unicode_string.encode(\"utf-8\")\n"
-">>> type(utf8_string)\n"
-"<type 'str'>\n"
-">>> unicode_string == utf8_string.decode(\"utf-8\")\n"
-"True"
-msgstr ""
-"\n"
-">>> type(unicode_string)\n"
-"<type 'unicode'>\n"
-">>> unicode_string.encode(\"utf-8\")\n"
-"'Fu\\xc3\\x9fb\\xc3\\xa4lle'\n"
-">>> utf8_string = unicode_string.encode(\"utf-8\")\n"
-">>> type(utf8_string)\n"
-"<type 'str'>\n"
-">>> unicode_string == utf8_string.decode(\"utf-8\")\n"
-"True"
-
-#. (itstool) path: section/p
-#: C/strings.py.page:57
-msgid ""
-"Unfortunately, Python 2.x allows you to mix <code>unicode</code> and "
-"<code>str</code> if the 8-bit string happened to contain only 7-bit (ASCII) "
-"bytes, but would get <sys>UnicodeDecodeError</sys> if it contained non-ASCII "
-"values."
-msgstr ""
-"Desafortunadamente, Python 2.x le permite mezclar <code>unicode</code> y "
-"<code>str</code> si la cadena de 8 bits contuviera sólo bytes de 7 bits "
-"(ASCII), pero obtendría <sys>UnicodeDecodeError</sys> si contuviera valores "
-"no ASCII."
-
-#. (itstool) path: section/title
-#: C/strings.py.page:62
-msgid "Strings in Python 3"
-msgstr "Cadenas en Python 3"
-
-#. (itstool) path: section/p
-#: C/strings.py.page:64
-msgid ""
-"Since Python 3.0, all strings are stored as Unicode in an instance of the "
-"<code>str</code> type. Encoded strings on the other hand are represented as "
-"binary data in the form of instances of the bytes type. Conceptionally, "
-"<code>str</code> refers to text, whereas bytes refers to data. Use "
-"<code>encode()</code> to go from <code>str</code> to <code>bytes</code>, and "
-"<code>decode()</code> to go from <code>bytes</code> to <code>str</code>."
-msgstr ""
-"Desde Python 3.0, todas las cadenas se almacenan como Unicode en una "
-"instancia del tipo <code>str</code>. Las cadenas codificadas, por otro lado, "
-"se representan como datos binarios en la forma de instancias del tipo de "
-"bytes. Conceptualmente, <code>str</code> se refiere a texto, mientras que "
-"bytes se refieren a datos. Use <code>encode()</code> para ir de <code>str</"
-"code> a <code>bytes</code>, y <code>decode()</code> para ir de <code>bytes</"
-"code> a <code>str</code>."
-
-#. (itstool) path: section/p
-#: C/strings.py.page:66
-msgid ""
-"In addition, it is no longer possible to mix Unicode strings with encoded "
-"strings, because it will result in a <code>TypeError</code>:"
-msgstr ""
-"Además, ya no es posible mezclar cadenas de Unicode con cadenas codificadas, "
-"porque se producirá un <code>TypeError</code>:"
-
-#. (itstool) path: section/code
-#: C/strings.py.page:68
-#, no-wrap
-msgid ""
-"\n"
-">>> text = \"Fu\\u00dfb\\u00e4lle\"\n"
-">>> data = b\" sind rund\"\n"
-">>> text + data\n"
-"Traceback (most recent call last):\n"
-" File \"<stdin>\", line 1, in <module>\n"
-"TypeError: Can't convert 'bytes' object to str implicitly\n"
-">>> text + data.decode(\"utf-8\")\n"
-"'Fußbälle sind rund'\n"
-">>> text.encode(\"utf-8\") + data\n"
-"b'Fu\\xc3\\x9fb\\xc3\\xa4lle sind rund'"
-msgstr ""
-"\n"
-">>> text = \"Fu\\u00dfb\\u00e4lle\"\n"
-">>> data = b\" sind rund\"\n"
-">>> text + data\n"
-"Traceback (most recent call last):\n"
-" File \"<stdin>\", line 1, in <module>\n"
-"TypeError: Can't convert 'bytes' object to str implicitly\n"
-">>> text + data.decode(\"utf-8\")\n"
-"'Fußbälle sind rund'\n"
-">>> text.encode(\"utf-8\") + data\n"
-"b'Fu\\xc3\\x9fb\\xc3\\xa4lle sind rund'"
-
-#. (itstool) path: section/title
-#: C/strings.py.page:83
-msgid "Unicode in GTK+"
-msgstr "Unicode en GTK+"
-
-#. (itstool) path: section/p
-#: C/strings.py.page:85
-msgid ""
-"GTK+ uses UTF-8 encoded strings for all text. This means that if you call a "
-"method that returns a string you will always obtain an instance of the "
-"<code>str</code> type. The same applies to methods that expect one or more "
-"strings as parameter, they must be UTF-8 encoded. However, for convenience "
-"PyGObject will automatically convert any unicode instance to str if supplied "
-"as argument:"
-msgstr ""
-"GTK+ usa cadenas codificadas con UTF-8 para todo el texto. Esto significa "
-"que si llama a un método que devuelve una cadena, siempre obtendrá una "
-"instancia del tipo <code>str</code>. Lo mismo se aplica a métodos que "
-"esperan una o más cadenas como parámetro, deben estar codificadas con UTF-8. "
-"Sin embargo, por comodidad, PyGObject convertirá automáticamente cualquier "
-"instancia de Unicode a «str» si se proporciona como argumento:"
-
-#. (itstool) path: section/code
-#: C/strings.py.page:87
-#, no-wrap
-msgid ""
-"\n"
-">>> from gi.repository import Gtk\n"
-">>> label = Gtk.Label()\n"
-">>> unicode_string = u\"Fu\\u00dfb\\u00e4lle\"\n"
-">>> label.set_text(unicode_string)\n"
-">>> txt = label.get_text()\n"
-">>> type(txt)\n"
-"<type 'str'>"
-msgstr ""
-"\n"
-">>> from gi.repository import Gtk\n"
-">>> label = Gtk.Label()\n"
-">>> unicode_string = u\"Fu\\u00dfb\\u00e4lle\"\n"
-">>> label.set_text(unicode_string)\n"
-">>> txt = label.get_text()\n"
-">>> type(txt)\n"
-"<type 'str'>"
-
-#. (itstool) path: section/p
-#: C/strings.py.page:96
-msgid "Furthermore:"
-msgstr "Además:"
-
-#. (itstool) path: section/code
-#: C/strings.py.page:98
-#, no-wrap
-msgid ""
-"\n"
-">>> txt == unicode_string"
-msgstr ""
-"\n"
-">>> txt == unicode_string"
-
-#. (itstool) path: section/p
-#: C/strings.py.page:101
-msgid ""
-"would return <code>False</code>, with the warning <code>__main__:1: "
-"UnicodeWarning: Unicode equal comparison failed to convert both arguments to "
-"Unicode - interpreting them as being unequal</code> (<code>Gtk.Label.get_text"
-"()</code> will always return a <code>str</code> instance; therefore, "
-"<code>txt</code> and <code>unicode_string</code> are not equal)."
-msgstr ""
-"devolvería <code>False</code>, con la advertencia <code>__main__:1: "
-"UnicodeWarning: Unicode equal comparison failed to convert both arguments to "
-"Unicode - interpreting them as being unequal</code> (<code>Gtk.Label.get_text"
-"()</code> devolverá siempre una instancia de <code>str</code>; por lo tanto, "
-"<code>txt</code> y <code>unicode_string</code> no son iguales)."
-
-#. (itstool) path: section/p
-#: C/strings.py.page:103
-msgid ""
-"This is especially important if you want to internationalize your program "
-"using <link href=\"http://docs.python.org/library/gettext.html"
-"\"><code>gettext</code></link>. You have to make sure that <code>gettext</"
-"code> will return UTF-8 encoded 8-bit strings for all languages."
-msgstr ""
-"Esto es especialmente importante si quiere internacionalizar su programa "
-"usando <link href=\"http://docs.python.org/library/gettext.html"
-"\"><code>gettext</code></link>. Tiene que asegurarse de que <code>gettext</"
-"code> devuelva cadenas de 8 bits codificadas con UTF-8 para todos los "
-"idiomas."
-
-#. (itstool) path: section/p
-#: C/strings.py.page:105
-msgid ""
-"In general it is recommended to not use <code>unicode</code> objects in GTK+ "
-"applications at all, and only use UTF-8 encoded <code>str</code> objects "
-"since GTK+ does not fully integrate with <code>unicode</code> objects."
-msgstr ""
-"En general se recomienda no usar ningún objeto de <code>unicode</code> en "
-"aplicaciones de GTK+, y sólo usar objetos <code>str</code> codificados con "
-"UTF-8 dado que GTK+ no integra completamente objetos <code>unicode</code>."
-
-#. (itstool) path: section/p
-#: C/strings.py.page:107
-msgid ""
-"String encoding is more consistent in Python 3.x because PyGObject will "
-"automatically encode/decode to/from UTF-8 if you pass a string to a method "
-"or a method returns a string. Strings, or text, will always be represented "
-"as instances of <code>str</code> only."
-msgstr ""
-"En Python 3.x las codificación de cadenas es más consistente, porque "
-"PyGObject automáticamente codifica/decodifica hacia/desde UTF-8 si le pasa "
-"una cadena a un método o un método devuelve una cadena. Las cadenas, o el "
-"texto, siempre se representarán sólo como instancias de <code>str</code>."
-
-#. (itstool) path: section/p
-#: C/strings.py.page:114
-msgid ""
-"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/unicode."
-"html\">How To Deal With Strings - The Python GTK+ 3 Tutorial</link>"
-msgstr ""
-"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/unicode."
-"html\">Cómo manejar cadenas: el tutorial de GTK+ 3 en Python</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/switch.c.page:23 C/switch.py.page:23 C/switch.vala.page:26
-msgctxt "_"
-msgid ""
-"external ref='media/switch_off.png' md5='211a2962708800697ad5373dcc86ad6d'"
-msgstr ""
-"external ref='media/switch_off.png' md5='211a2962708800697ad5373dcc86ad6d'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/switch.c.page:24 C/switch.py.page:24 C/switch.vala.page:27
-msgctxt "_"
-msgid ""
-"external ref='media/switch_on.png' md5='95e8769f758c2d95ace0fa8ecf30b29d'"
-msgstr ""
-"external ref='media/switch_on.png' md5='95e8769f758c2d95ace0fa8ecf30b29d'"
-
-#. (itstool) path: info/title
-#: C/switch.c.page:8
-msgctxt "text"
-msgid "Switch (C)"
-msgstr "Interruptor (C)"
-
-#. (itstool) path: info/desc
-#: C/switch.c.page:18 C/switch.py.page:19 C/switch.vala.page:22
-msgid "A \"light switch\" style toggle"
-msgstr "Un interruptor estilo «ligero»"
-
-#. (itstool) path: page/title
-#: C/switch.c.page:21 C/switch.js.page:21 C/switch.py.page:22
-#: C/switch.vala.page:25
-msgid "Switch"
-msgstr "Interruptor"
-
-#. (itstool) path: page/p
-#: C/switch.c.page:25
-msgid "This switch toggles the title of the window."
-msgstr "Este interruptor cambia el título de la ventana."
-
-#. (itstool) path: page/code
-#: C/switch.c.page:27
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/*Signal handler for the \"active\" signal of the Switch*/\n"
-"static void\n"
-"activate_cb (GObject *switcher,\n"
-" GParamSpec *pspec,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWindow *window = user_data;\n"
-"\n"
-" if (gtk_switch_get_active (GTK_SWITCH (switcher)))\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Switch Example\");\n"
-" else\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *grid;\n"
-" GtkWidget *window;\n"
-" GtkWidget *label;\n"
-" GtkWidget *switcher;\n"
-"\n"
-" /*Create a window with a set title and default size.\n"
-" Also, set a border width for the amount of space to leave\n"
-" inside the window*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Switch Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n"
-" gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n"
-"\n"
-" /*Create a label*/\n"
-" label = gtk_label_new (\"Title\");\n"
-"\n"
-" /*Create a switch with a default active state*/\n"
-" switcher = gtk_switch_new ();\n"
-" gtk_switch_set_active (GTK_SWITCH (switcher), TRUE);\n"
-"\n"
-" /*Create a grid and set the column spacing, attach the label and\n"
-" switch onto the grid and position them accordingly*/\n"
-" grid = gtk_grid_new();\n"
-" gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n"
-" gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), switcher, 1, 0, 1, 1);\n"
-"\n"
-" /*Connecting the clicked signal to the callback function*/\n"
-" g_signal_connect (GTK_SWITCH (switcher), \n"
-" \"notify::active\", \n"
-" G_CALLBACK (activate_cb), \n"
-" window);\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/*Signal handler for the \"active\" signal of the Switch*/\n"
-"static void\n"
-"activate_cb (GObject *switcher,\n"
-" GParamSpec *pspec,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWindow *window = user_data;\n"
-"\n"
-" if (gtk_switch_get_active (GTK_SWITCH (switcher)))\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Switch Example\");\n"
-" else\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *grid;\n"
-" GtkWidget *window;\n"
-" GtkWidget *label;\n"
-" GtkWidget *switcher;\n"
-"\n"
-" /*Create a window with a set title and default size.\n"
-" Also, set a border width for the amount of space to leave\n"
-" inside the window*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Switch Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n"
-" gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n"
-"\n"
-" /*Create a label*/\n"
-" label = gtk_label_new (\"Title\");\n"
-"\n"
-" /*Create a switch with a default active state*/\n"
-" switcher = gtk_switch_new ();\n"
-" gtk_switch_set_active (GTK_SWITCH (switcher), TRUE);\n"
-"\n"
-" /*Create a grid and set the column spacing, attach the label and\n"
-" switch onto the grid and position them accordingly*/\n"
-" grid = gtk_grid_new();\n"
-" gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n"
-" gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), switcher, 1, 0, 1, 1);\n"
-"\n"
-" /*Connecting the clicked signal to the callback function*/\n"
-" g_signal_connect (GTK_SWITCH (switcher), \n"
-" \"notify::active\", \n"
-" G_CALLBACK (activate_cb), \n"
-" window);\n"
-"\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/switch.js.page:22
-msgctxt "_"
-msgid ""
-"external ref='media/switchanimals.png' md5='513ae15dcf68e15eef30b76420b8c714'"
-msgstr ""
-"external ref='media/switchanimals.png' md5='513ae15dcf68e15eef30b76420b8c714'"
-
-#. (itstool) path: info/title
-#: C/switch.js.page:8
-msgctxt "text"
-msgid "Switch (JavaScript)"
-msgstr "Interruptor (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/switch.js.page:18
-msgid "A sliding switch that can be flipped on and off"
-msgstr "Un interruptor deslizante que se puede activar y desactivar"
-
-#. (itstool) path: page/p
-#: C/switch.js.page:23
-msgid ""
-"A Switch has two positions, on and off. This example shows how you can use "
-"multiple switches together to control which <link xref=\"image.js\">Image</"
-"link> is shown in the window. The pictures used in this example <link href="
-"\"https://live.gnome.org/TarynFox?action=AttachFile&do=get&"
-"target=Animal+Photos.zip\">can be downloaded here</link>."
-msgstr ""
-"Un interruptor tiene dos posiciones: encendido y apagado. Este ejemplo "
-"muestra cómo puede usar múltiples interruptores para controlar qué <link "
-"xref=\"image.js\">Imagen</link> se muestra en la ventana. Las imágenes "
-"usadas en este ejemplo <link href=\"https://live.gnome.org/TarynFox?"
-"action=AttachFile&do=get&target=Animal+Photos.zip\">se pueden "
-"descargar aquí</link>."
-
-#. (itstool) path: note/p
-#: C/switch.js.page:24
-msgid ""
-"The window will contain a \"broken image\" icon instead of a picture if "
-"picture files named <file>redfox.png</file>, <file>muteswan.png</file>, "
-"<file>fruitbat.png</file>, and <file>gentoopenguin.png</file> aren't in the "
-"same directory. You can change the code and the pictures around as you like, "
-"but the Creative Commons-licensed photos used in this example were taken "
-"from the following sources and cropped to 640x425:"
-msgstr ""
-"La ventana contendrá un icono de «imagen rota» en lugar de una imagen si los "
-"archivos llamados <file>redfox.png</file>, <file>muteswan.png</file>, "
-"<file>fruitbat.png</file>, y <file>gentoopenguin.png</file> no están en la "
-"misma carpeta. Puede cambiar el código y las imágenes como quiera, pero las "
-"fotos con licencia Creative Commons usadas en este ejemplo se tomaron desde "
-"las siguientes fuentes y se redujeron a 640x425:"
-
-#. (itstool) path: item/p
-#: C/switch.js.page:26
-msgid ""
-"<link href=\"http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.jpg\">Red fox "
-"photo</link> by Rob Lee, licensed <link href=\"http://creativecommons.org/"
-"licenses/by/2.0/deed.en\">CC-By</link>"
-msgstr ""
-"<link href=\"http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.jpg\">Foto de un "
-"zorro rojo</link> por Rob Lee, con licencia <link href=\"http://"
-"creativecommons.org/licenses/by/2.0/deed.en\">CC-By</link>"
-
-#. (itstool) path: item/p
-#: C/switch.js.page:27
-msgid ""
-"<link href=\"http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-"
-"Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.jpg\">Gentoo penguin "
-"photo</link> by Ken Funakoshi, licensed <link href=\"http://creativecommons."
-"org/licenses/by-sa/2.0/deed.en\">CC-By-SA</link>"
-msgstr ""
-"<link href=\"http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-"
-"Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.jpg\">Foto de un pingüino "
-"papúa</link> por Ken Funakoshi, con licencia <link href=\"http://"
-"creativecommons.org/licenses/by-sa/2.0/deed.en\">CC-By-SA</link>"
-
-#. (itstool) path: item/p
-#: C/switch.js.page:28
-msgid ""
-"<link href=\"http://www.flickr.com/photos/shekgraham/127431519/in/"
-"photostream/\">Fruit bat photo</link> by Shek Graham, licensed <link href="
-"\"http://creativecommons.org/licenses/by/2.0/deed.en\">CC-By</link>"
-msgstr ""
-"<link href=\"http://www.flickr.com/photos/shekgraham/127431519/in/"
-"photostream/\">Foto de un murciélago de la fruta</link> por Shek Graham, con "
-"licencia <link href=\"http://creativecommons.org/licenses/by/2.0/deed.en"
-"\">CC-By</link>"
-
-#. (itstool) path: item/p
-#: C/switch.js.page:29
-msgid ""
-"<link href=\"http://commons.wikimedia.org/wiki/File:Mute_Swan-"
-"Mindaugas_Urbonas.jpg\">Mute swan photo</link> by Mindaugas Urbonas, "
-"licensed <link href=\"http://creativecommons.org/licenses/by-sa/2.5/deed.en"
-"\">CC-By-SA</link>"
-msgstr ""
-"<link href=\"http://commons.wikimedia.org/wiki/File:Mute_Swan-"
-"Mindaugas_Urbonas.jpg\">Foto de un cisne mudo</link> por Mindaugas Urbonas, "
-"con licencia <link href=\"http://creativecommons.org/licenses/by-sa/2.5/deed."
-"en\">CC-By-SA</link>"
-
-#. (itstool) path: note/p
-#: C/switch.js.page:31
-msgid ""
-"Photo credits and licensing information are shown in the application's <link "
-"xref=\"aboutdialog.js\">AboutDialog</link>. Always remember to credit the "
-"original artist when using <link href=\"http://creativecommons.org"
-"\">Creative Commons-licensed works!</link>"
-msgstr ""
-"Los créditos de las fotografías y la información de licencia se muestran en "
-"el <link xref=\"aboutdialog.js\">AboutDialog</link> de la aplicación. "
-"Recuerde reconocer siempre al artista original cuando use <link href="
-"\"http://creativecommons.org\">trabajos con licencia Creative Commons</link>."
-
-#. (itstool) path: section/code
-#: C/switch.js.page:48
-#, no-wrap
-msgid ""
-"\n"
-"const SwitchExample = new Lang.Class({\n"
-" Name: 'Switch Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsswitch',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal creates the menu and builds the UI\n"
-" _onStartup: function() {\n"
-" this._initMenus();\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-"const SwitchExample = new Lang.Class({\n"
-" Name: 'Switch Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsswitch',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal creates the menu and builds the UI\n"
-" _onStartup: function() {\n"
-" this._initMenus();\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/switch.js.page:75
-msgid ""
-"All the code for this sample goes in the SwitchExample class. The above code "
-"creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk."
-"Application.html\">Gtk.Application</link> for our widgets and window to go "
-"in."
-msgstr ""
-"Todo el código de este ejemplo va en la clase «SwitchExample». El código "
-"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> para que vayan los widgets y "
-"la ventana. "
-
-#. (itstool) path: section/code
-#: C/switch.js.page:77
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Animal Creator\"});\n"
-msgstr ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Animal Creator\"});\n"
-
-#. (itstool) path: section/title
-#: C/switch.js.page:92
-msgid "Creating the switches"
-msgstr "Crear los interruptores"
-
-#. (itstool) path: section/code
-#: C/switch.js.page:93
-#, no-wrap
-msgid ""
-"\n"
-" // Create the image widget and set its default picture\n"
-" this._image = new Gtk.Image ({file: \"redfox.png\"});\n"
-msgstr ""
-"\n"
-" // Create the image widget and set its default picture\n"
-" this._image = new Gtk.Image ({file: \"redfox.png\"});\n"
-
-#. (itstool) path: section/p
-#: C/switch.js.page:98
-msgid ""
-"We first create the <link xref=\"image.js\">Image</link> that the switches "
-"will control. Remember that a file named <file>redfox.png</file> needs to be "
-"in the same directory as this application."
-msgstr ""
-"Primero se crea la <link xref=\"image.js\">Imagen</link> que los "
-"interruptores controlarán. Recuerde que el archivo llamado <file>redfox.png</"
-"file> debe estar en la misma carpeta que la aplicación."
-
-#. (itstool) path: section/code
-#: C/switch.js.page:100
-#, no-wrap
-msgid ""
-"\n"
-" // Create a label for the first switch\n"
-" this._flyLabel = new Gtk.Label ({\n"
-" label: \"Make it fly\",\n"
-" margin_right: 30});\n"
-"\n"
-" // Create the first switch and set its default position\n"
-" this._flySwitch = new Gtk.Switch ({active: false});\n"
-" this._flySwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
-"\n"
-" // Create a label for the second switch\n"
-" this._birdLabel = new Gtk.Label ({\n"
-" label: \"Make it a bird\",\n"
-" margin_right: 30});\n"
-"\n"
-" // Create the second switch\n"
-" this._birdSwitch = new Gtk.Switch ({active: false});\n"
-" this._birdSwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
-msgstr ""
-"\n"
-" // Create a label for the first switch\n"
-" this._flyLabel = new Gtk.Label ({\n"
-" label: \"Make it fly\",\n"
-" margin_right: 30});\n"
-"\n"
-" // Create the first switch and set its default position\n"
-" this._flySwitch = new Gtk.Switch ({active: false});\n"
-" this._flySwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
-"\n"
-" // Create a label for the second switch\n"
-" this._birdLabel = new Gtk.Label ({\n"
-" label: \"Make it a bird\",\n"
-" margin_right: 30});\n"
-"\n"
-" // Create the second switch\n"
-" this._birdSwitch = new Gtk.Switch ({active: false});\n"
-" this._birdSwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
-
-#. (itstool) path: section/p
-#: C/switch.js.page:120
-msgid ""
-"We use a <link xref=\"label.js\">Label</link> to mark each Switch, and give "
-"them a bit of a margin on the right so that they aren't crammed right next "
-"to the Switches. After that we create the Switches, and set them to be "
-"switched off by default."
-msgstr ""
-"Se usa una <link xref=\"label.js\">Etiqueta</link> para marcar cada "
-"interruptor, y se les da un poco de margen a la derecha para que no se "
-"peguen a los interruptores. Después de esto se crean los interruptores, y se "
-"configuran para que estén apagados de forma predeterminada."
-
-#. (itstool) path: section/p
-#: C/switch.js.page:121
-msgid ""
-"The signal a switch sends out when it's flipped on or off is called notify::"
-"active. After we create each switch, we connect its notify::active signal to "
-"a function called _switchFlip. If you have multiple switches that each do "
-"something different, you might want to connect them to different functions, "
-"but here they're both used for the same thing: To control what picture's "
-"displayed by _image."
-msgstr ""
-"La señal que envía un interruptor cuando se activa o desactiva se llama "
-"«notify::active». Después de crear cada interruptor, se conecta su señal "
-"«notify::active» a una función llamada «_switchFlip». Si tiene múltiples "
-"interruptores, y cada uno hace algo diferente, tal vez quiera conectarlos a "
-"funciones diferentes, pero aquí ambos se usan para lo mismo: para controlar "
-"qué imagen muestra «_image»."
-
-#. (itstool) path: section/code
-#: C/switch.js.page:123
-#, no-wrap
-msgid ""
-"\n"
-" // Create a grid for the labels and switches beneath the picture\n"
-" this._UIGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_top: 20});\n"
-"\n"
-" // Attach the labels and switches to that grid\n"
-" this._UIGrid.attach (this._flyLabel, 0, 0, 1, 1);\n"
-" this._UIGrid.attach (this._flySwitch, 1, 0, 1, 1);\n"
-" this._UIGrid.attach (this._birdLabel, 0, 1, 1, 1);\n"
-" this._UIGrid.attach (this._birdSwitch, 1, 1, 1, 1);\n"
-"\n"
-" // Create a master grid to put both the UI and the picture into\n"
-" this._mainGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Attach the picture and the UI grid to the master grid\n"
-" this._mainGrid.attach (this._image, 0, 0, 1, 1);\n"
-" this._mainGrid.attach (this._UIGrid, 0, 1, 1, 1);\n"
-msgstr ""
-"\n"
-" // Create a grid for the labels and switches beneath the picture\n"
-" this._UIGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_top: 20});\n"
-"\n"
-" // Attach the labels and switches to that grid\n"
-" this._UIGrid.attach (this._flyLabel, 0, 0, 1, 1);\n"
-" this._UIGrid.attach (this._flySwitch, 1, 0, 1, 1);\n"
-" this._UIGrid.attach (this._birdLabel, 0, 1, 1, 1);\n"
-" this._UIGrid.attach (this._birdSwitch, 1, 1, 1, 1);\n"
-"\n"
-" // Create a master grid to put both the UI and the picture into\n"
-" this._mainGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Attach the picture and the UI grid to the master grid\n"
-" this._mainGrid.attach (this._image, 0, 0, 1, 1);\n"
-" this._mainGrid.attach (this._UIGrid, 0, 1, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/switch.js.page:145
-msgid ""
-"We create a <link xref=\"grid.js\">Grid</link> for the Labels and Switches "
-"first, so that we can organize them in a 2x2 layout with a margin between it "
-"and the Image. Then we put that Grid into a larger 2x1 Grid that has the "
-"Image on top, and the Grid with the Labels and Switches on the bottom."
-msgstr ""
-"Primero se crea una <link xref=\"grid.js\">rejilla</link> para las etiquetas "
-"y los interruptores, para que se puedan organizar en una distribución 2x2 "
-"con un margen entre estos y la imagen. Después se pone esa rejilla en una "
-"rejilla más grande de 2x1 que tiene una imagen en su parte superior, y la "
-"rejilla con las etiquetas y los interruptores en su parte inferior."
-
-#. (itstool) path: section/code
-#: C/switch.js.page:146
-#, no-wrap
-msgid ""
-"\n"
-" // Add the master grid to the window\n"
-" this._window.add (this._mainGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-msgstr ""
-"\n"
-" // Add the master grid to the window\n"
-" this._window.add (this._mainGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-
-#. (itstool) path: section/title
-#: C/switch.js.page:158
-msgid "Function which handles the switches being flipped"
-msgstr "Función que maneja los interruptores que se están pulsando"
-
-#. (itstool) path: section/code
-#: C/switch.js.page:160
-#, no-wrap
-msgid ""
-"\n"
-" _switchFlip: function() {\n"
-"\n"
-" // Change the picture depending on which switches are flipped\n"
-" if (this._flySwitch.get_active()) {\n"
-"\n"
-" if (this._birdSwitch.get_active()) this._image.set_from_file (\"muteswan.png\");\n"
-"\n"
-" else this._image.set_from_file (\"fruitbat.png\");\n"
-" }\n"
-"\n"
-" else {\n"
-"\n"
-" if (this._birdSwitch.get_active()) this._image.set_from_file (\"gentoopenguin.png\");\n"
-"\n"
-" else this._image.set_from_file (\"redfox.png\");\n"
-"\n"
-" }\n"
-"\n"
-" },\n"
-msgstr ""
-"\n"
-" _switchFlip: function() {\n"
-"\n"
-" // Change the picture depending on which switches are flipped\n"
-" if (this._flySwitch.get_active()) {\n"
-"\n"
-" if (this._birdSwitch.get_active()) this._image.set_from_file (\"muteswan.png\");\n"
-"\n"
-" else this._image.set_from_file (\"fruitbat.png\");\n"
-" }\n"
-"\n"
-" else {\n"
-"\n"
-" if (this._birdSwitch.get_active()) this._image.set_from_file (\"gentoopenguin.png\");\n"
-"\n"
-" else this._image.set_from_file (\"redfox.png\");\n"
-"\n"
-" }\n"
-"\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/switch.js.page:181
-msgid ""
-"Each time a Switch is flipped, this function checks to see which of the two "
-"Switches are active afterwards, using the Switches' built-in get_active() "
-"function. It then changes the Image accordingly. You can change the "
-"filenames around as you like, so long as you have pictures to go with them."
-msgstr ""
-"Cada vez que un interruptor se pulsa, esta función verifica cuál de los dos "
-"interruptores está activo, usando la función «get_active()» empotrada al "
-"interruptor. Después cambia la imagen consecuentemente. Puede cambiar los "
-"nombres de archivo como quiera, siempre que tenga imágenes que correspondan."
-
-#. (itstool) path: section/title
-#: C/switch.js.page:185
-msgid "Creating the AboutDialog"
-msgstr "Crear el AboutDialog"
-
-#. (itstool) path: section/code
-#: C/switch.js.page:186
-#, no-wrap
-msgid ""
-"\n"
-" _initMenus: function() {\n"
-"\n"
-" // Build the application's menu so we can have an \"About\" button\n"
-" let menu = new Gio.Menu();\n"
-" menu.append(\"About\", 'app.about');\n"
-" menu.append(\"Quit\",'app.quit');\n"
-" this.application.set_app_menu(menu);\n"
-"\n"
-" // Bind the \"About\" button to the _showAbout() function\n"
-" let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n"
-" aboutAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showAbout();\n"
-" }));\n"
-" this.application.add_action(aboutAction);\n"
-"\n"
-" // Bind the \"Quit\" button to the function that closes the window\n"
-" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-" },\n"
-msgstr ""
-"\n"
-" _initMenus: function() {\n"
-"\n"
-" // Build the application's menu so we can have an \"About\" button\n"
-" let menu = new Gio.Menu();\n"
-" menu.append(\"About\", 'app.about');\n"
-" menu.append(\"Quit\",'app.quit');\n"
-" this.application.set_app_menu(menu);\n"
-"\n"
-" // Bind the \"About\" button to the _showAbout() function\n"
-" let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n"
-" aboutAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showAbout();\n"
-" }));\n"
-" this.application.add_action(aboutAction);\n"
-"\n"
-" // Bind the \"Quit\" button to the function that closes the window\n"
-" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/switch.js.page:212
-msgid ""
-"The first step is building the <link xref=\"gmenu.js\">GMenu</link> that the "
-"\"About\" button goes into. This is the menu that appears when you click the "
-"application's name in the upper-left corner of the screen, next to the "
-"Activities menu. Our menu only has two options in it: About, and Quit."
-msgstr ""
-"El primer paso es construir el <link xref=\"gmenu.js\">GMenu</link> en el "
-"que va el botón «About». Este es el menú que aparece cuando pulsa en el "
-"nombre de la aplicación en la esquina superior izquierda de la pantalla, al "
-"lado del menú de actividades. Este menú sólo tiene dos opciones: «About» y "
-"«Quit»."
-
-#. (itstool) path: section/code
-#: C/switch.js.page:214
-#, no-wrap
-msgid ""
-"\n"
-" _showAbout: function () {\n"
-"\n"
-" // String arrays of the names of the people involved in the project\n"
-" var artists = ['Rob Lee http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.jpg', 'Ken Funakoshi
http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.jpg',
'Shek Graham http://www.flickr.com/photos/shekgraham/127431519/in/photostream/', 'Mindaugas Urbonas
http://commons.wikimedia.org/wiki/File:Mute_Swan-Mindaugas_Urbonas.jpg'];\n"
-" var authors = [\"GNOME Documentation Team\"];\n"
-" var documenters = [\"GNOME Documentation Team\"];\n"
-"\n"
-" // Create the About dialog\n"
-" let aboutDialog = new Gtk.AboutDialog({\n"
-" title: \"AboutDialog Example\",\n"
-" program_name: \"Animal Creator\",\n"
-" copyright: \"Copyright \\xa9 2012 GNOME Documentation Team\\n\\nRed fox photo licensed CC-By by
Rob Lee\\nGentoo penguin photo licensed CC-By-SA by Ken Funakoshi\\nFruit bat photo licensed CC-By by Shek
Graham\\nMute swan photo licensed CC-By-SA by Mindaugas Urbonas\\nLinks to the originals are available under
Credits.\\n\\nHave you hugged a penguin today?\",\n"
-" artists: artists,\n"
-" authors: authors,\n"
-" documenters: documenters,\n"
-" website: \"http://developer.gnome.org\",\n"
-" website_label: \"GNOME Developer Website\" });\n"
-"\n"
-" // Attach the About dialog to the window\n"
-" aboutDialog.modal = true;\n"
-" aboutDialog.transient_for = this._window;\n"
-"\n"
-" // Show the About dialog\n"
-" aboutDialog.show();\n"
-"\n"
-" // Connect the Close button to the destroy signal for the dialog\n"
-" aboutDialog.connect('response', function() {\n"
-" aboutDialog.destroy();\n"
-" });\n"
-" }\n"
-"\n"
-"});\n"
-msgstr ""
-"\n"
-" _showAbout: function () {\n"
-"\n"
-" // String arrays of the names of the people involved in the project\n"
-" var artists = ['Rob Lee http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.jpg', 'Ken Funakoshi
http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.jpg',
'Shek Graham http://www.flickr.com/photos/shekgraham/127431519/in/photostream/', 'Mindaugas Urbonas
http://commons.wikimedia.org/wiki/File:Mute_Swan-Mindaugas_Urbonas.jpg'];\n"
-" var authors = [\"GNOME Documentation Team\"];\n"
-" var documenters = [\"GNOME Documentation Team\"];\n"
-"\n"
-" // Create the About dialog\n"
-" let aboutDialog = new Gtk.AboutDialog({\n"
-" title: \"AboutDialog Example\",\n"
-" program_name: \"Animal Creator\",\n"
-" copyright: \"Copyright \\xa9 2012 GNOME Documentation Team\\n\\nRed fox photo licensed CC-By by
Rob Lee\\nGentoo penguin photo licensed CC-By-SA by Ken Funakoshi\\nFruit bat photo licensed CC-By by Shek
Graham\\nMute swan photo licensed CC-By-SA by Mindaugas Urbonas\\nLinks to the originals are available under
Credits.\\n\\nHave you hugged a penguin today?\",\n"
-" artists: artists,\n"
-" authors: authors,\n"
-" documenters: documenters,\n"
-" website: \"http://developer.gnome.org\",\n"
-" website_label: \"GNOME Developer Website\" });\n"
-"\n"
-" // Attach the About dialog to the window\n"
-" aboutDialog.modal = true;\n"
-" aboutDialog.transient_for = this._window;\n"
-"\n"
-" // Show the About dialog\n"
-" aboutDialog.show();\n"
-"\n"
-" // Connect the Close button to the destroy signal for the dialog\n"
-" aboutDialog.connect('response', function() {\n"
-" aboutDialog.destroy();\n"
-" });\n"
-" }\n"
-"\n"
-"});\n"
-
-#. (itstool) path: section/p
-#: C/switch.js.page:248
-msgid ""
-"An <link xref=\"aboutdialog.js\">AboutDialog</link> has a lot of different "
-"things you can set, to credit everyone who worked on the application and "
-"leave a note to whomever reads it. In this case, the copyright section "
-"contains our note and credits the original photographers, while the artists "
-"section shows you a list of the photographers with links to the original "
-"photos when you click the Credits button. The web URLs put after their names "
-"in the array turn their names into clickable links in the Credits section."
-msgstr ""
-"Un <link xref=\"aboutdialog.js\">AboutDialog</link> tiene muchas cosas que "
-"puede establecer, para reconocer a todos los que trabajaron en la aplicación "
-"y dejar una nota a cualquiera que la lea. En este caso, la sección de "
-"derechos de autor contiene una nota y reconoce a los fotógrafos originales, "
-"mientras que la sección de artistas muestra una lista de los fotógrafos con "
-"enlaces a las fotografías originales cuando pulsa en el botón «Credits». Las "
-"URL web después de sus nombres en la matriz convierten sus nombres en "
-"enlaces que puede pulsar en la sección de créditos."
-
-#. (itstool) path: section/code
-#: C/switch.js.page:250
-#, no-wrap
-msgid ""
-"\n"
-"// Run the application\n"
-"let app = new SwitchExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"// Run the application\n"
-"let app = new SwitchExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/p
-#: C/switch.js.page:255
-msgid ""
-"Finally, we create a new instance of the finished SwitchExample class, and "
-"set the application running."
-msgstr ""
-"Finalmente, se crea una instancia nueva de la clase «SwitchExample» "
-"terminada, y se ejecuta la aplicación."
-
-#. (itstool) path: section/code
-#: C/switch.js.page:260
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const SwitchExample = new Lang.Class({\n"
-" Name: 'Switch Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsswitch'\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal creates the menu and builds the UI\n"
-" _onStartup: function() {\n"
-" this._initMenus();\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Animal Creator\"});\n"
-"\n"
-" // Create the image widget and set its default picture\n"
-" this._image = new Gtk.Image ({file: \"redfox.png\"});\n"
-"\n"
-" // Create a label for the first switch\n"
-" this._flyLabel = new Gtk.Label ({\n"
-" label: \"Make it fly\",\n"
-" margin_right: 30});\n"
-"\n"
-" // Create the first switch and set its default position\n"
-" this._flySwitch = new Gtk.Switch ({active: false});\n"
-" this._flySwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
-"\n"
-" // Create a label for the second switch\n"
-" this._birdLabel = new Gtk.Label ({\n"
-" label: \"Make it a bird\",\n"
-" margin_right: 30});\n"
-"\n"
-" // Create the second switch\n"
-" this._birdSwitch = new Gtk.Switch ({active: false});\n"
-" this._birdSwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
-"\n"
-" // Create a grid for the labels and switches beneath the picture\n"
-" this._UIGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_top: 20});\n"
-"\n"
-" // Attach the labels and switches to that grid\n"
-" this._UIGrid.attach (this._flyLabel, 0, 0, 1, 1);\n"
-" this._UIGrid.attach (this._flySwitch, 1, 0, 1, 1);\n"
-" this._UIGrid.attach (this._birdLabel, 0, 1, 1, 1);\n"
-" this._UIGrid.attach (this._birdSwitch, 1, 1, 1, 1);\n"
-"\n"
-" // Create a master grid to put both the UI and the picture into\n"
-" this._mainGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Attach the picture and the UI grid to the master grid\n"
-" this._mainGrid.attach (this._image, 0, 0, 1, 1);\n"
-" this._mainGrid.attach (this._UIGrid, 0, 1, 1, 1);\n"
-"\n"
-" // Add the master grid to the window\n"
-" this._window.add (this._mainGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _switchFlip: function() {\n"
-"\n"
-" // Change the picture depending on which switches are flipped\n"
-" if (this._flySwitch.get_active()) {\n"
-"\n"
-" if (this._birdSwitch.get_active()) this._image.set_from_file (\"muteswan.png\");\n"
-"\n"
-" else this._image.set_from_file (\"fruitbat.png\");\n"
-" }\n"
-"\n"
-" else {\n"
-"\n"
-" if (this._birdSwitch.get_active()) this._image.set_from_file (\"gentoopenguin.png\");\n"
-"\n"
-" else this._image.set_from_file (\"redfox.png\");\n"
-"\n"
-" }\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _initMenus: function() {\n"
-"\n"
-" // Build the application's menu so we can have an \"About\" button\n"
-" let menu = new Gio.Menu();\n"
-" menu.append(\"About\", 'app.about');\n"
-" menu.append(\"Quit\",'app.quit');\n"
-" this.application.set_app_menu(menu);\n"
-"\n"
-" // Bind the \"About\" button to the _showAbout() function\n"
-" let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n"
-" aboutAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showAbout();\n"
-" }));\n"
-" this.application.add_action(aboutAction);\n"
-"\n"
-" // Bind the \"Quit\" button to the function that closes the window\n"
-" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _showAbout: function () {\n"
-"\n"
-" // String arrays of the names of the people involved in the project\n"
-" var artists = ['Rob Lee http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.png', 'Ken Funakoshi
http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.png',
'Shek Graham http://www.flickr.com/photos/shekgraham/127431519/in/photostream/', 'Mindaugas Urbonas
http://commons.wikimedia.org/wiki/File:Mute_Swan-Mindaugas_Urbonas.png'];\n"
-" var authors = [\"GNOME Documentation Team\"];\n"
-" var documenters = [\"GNOME Documentation Team\"];\n"
-"\n"
-" // Create the About dialog\n"
-" let aboutDialog = new Gtk.AboutDialog({\n"
-" title: \"AboutDialog Example\",\n"
-" program_name: \"Animal Creator\",\n"
-" copyright: \"Copyright \\xa9 2012 GNOME Documentation Team\\n\\nRed fox photo licensed CC-By by
Rob Lee\\nGentoo penguin photo licensed CC-By-SA by Ken Funakoshi\\nFruit bat photo licensed CC-By by Shek
Graham\\nMute swan photo licensed CC-By-SA by Mindaugas Urbonas\\nLinks to the originals are available under
Credits.\\n\\nHave you hugged a penguin today?\",\n"
-" artists: artists,\n"
-" authors: authors,\n"
-" documenters: documenters,\n"
-" website: \"http://developer.gnome.org\",\n"
-" website_label: \"GNOME Developer Website\" });\n"
-"\n"
-" // Attach the About dialog to the window\n"
-" aboutDialog.modal = true;\n"
-" aboutDialog.transient_for = this._window;\n"
-"\n"
-" // Show the About dialog\n"
-" aboutDialog.show();\n"
-"\n"
-" // Connect the Close button to the destroy signal for the dialog\n"
-" aboutDialog.connect('response', function() {\n"
-" aboutDialog.destroy();\n"
-" });\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new SwitchExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const SwitchExample = new Lang.Class({\n"
-" Name: 'Switch Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jsswitch'\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal creates the menu and builds the UI\n"
-" _onStartup: function() {\n"
-" this._initMenus();\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" border_width: 20,\n"
-" title: \"Animal Creator\"});\n"
-"\n"
-" // Create the image widget and set its default picture\n"
-" this._image = new Gtk.Image ({file: \"redfox.png\"});\n"
-"\n"
-" // Create a label for the first switch\n"
-" this._flyLabel = new Gtk.Label ({\n"
-" label: \"Make it fly\",\n"
-" margin_right: 30});\n"
-"\n"
-" // Create the first switch and set its default position\n"
-" this._flySwitch = new Gtk.Switch ({active: false});\n"
-" this._flySwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
-"\n"
-" // Create a label for the second switch\n"
-" this._birdLabel = new Gtk.Label ({\n"
-" label: \"Make it a bird\",\n"
-" margin_right: 30});\n"
-"\n"
-" // Create the second switch\n"
-" this._birdSwitch = new Gtk.Switch ({active: false});\n"
-" this._birdSwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
-"\n"
-" // Create a grid for the labels and switches beneath the picture\n"
-" this._UIGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER,\n"
-" margin_top: 20});\n"
-"\n"
-" // Attach the labels and switches to that grid\n"
-" this._UIGrid.attach (this._flyLabel, 0, 0, 1, 1);\n"
-" this._UIGrid.attach (this._flySwitch, 1, 0, 1, 1);\n"
-" this._UIGrid.attach (this._birdLabel, 0, 1, 1, 1);\n"
-" this._UIGrid.attach (this._birdSwitch, 1, 1, 1, 1);\n"
-"\n"
-" // Create a master grid to put both the UI and the picture into\n"
-" this._mainGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Attach the picture and the UI grid to the master grid\n"
-" this._mainGrid.attach (this._image, 0, 0, 1, 1);\n"
-" this._mainGrid.attach (this._UIGrid, 0, 1, 1, 1);\n"
-"\n"
-" // Add the master grid to the window\n"
-" this._window.add (this._mainGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _switchFlip: function() {\n"
-"\n"
-" // Change the picture depending on which switches are flipped\n"
-" if (this._flySwitch.get_active()) {\n"
-"\n"
-" if (this._birdSwitch.get_active()) this._image.set_from_file (\"muteswan.png\");\n"
-"\n"
-" else this._image.set_from_file (\"fruitbat.png\");\n"
-" }\n"
-"\n"
-" else {\n"
-"\n"
-" if (this._birdSwitch.get_active()) this._image.set_from_file (\"gentoopenguin.png\");\n"
-"\n"
-" else this._image.set_from_file (\"redfox.png\");\n"
-"\n"
-" }\n"
-"\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _initMenus: function() {\n"
-"\n"
-" // Build the application's menu so we can have an \"About\" button\n"
-" let menu = new Gio.Menu();\n"
-" menu.append(\"About\", 'app.about');\n"
-" menu.append(\"Quit\",'app.quit');\n"
-" this.application.set_app_menu(menu);\n"
-"\n"
-" // Bind the \"About\" button to the _showAbout() function\n"
-" let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n"
-" aboutAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._showAbout();\n"
-" }));\n"
-" this.application.add_action(aboutAction);\n"
-"\n"
-" // Bind the \"Quit\" button to the function that closes the window\n"
-" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _showAbout: function () {\n"
-"\n"
-" // String arrays of the names of the people involved in the project\n"
-" var artists = ['Rob Lee http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.png', 'Ken Funakoshi
http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.png',
'Shek Graham http://www.flickr.com/photos/shekgraham/127431519/in/photostream/', 'Mindaugas Urbonas
http://commons.wikimedia.org/wiki/File:Mute_Swan-Mindaugas_Urbonas.png'];\n"
-" var authors = [\"GNOME Documentation Team\"];\n"
-" var documenters = [\"GNOME Documentation Team\"];\n"
-"\n"
-" // Create the About dialog\n"
-" let aboutDialog = new Gtk.AboutDialog({\n"
-" title: \"AboutDialog Example\",\n"
-" program_name: \"Animal Creator\",\n"
-" copyright: \"Copyright \\xa9 2012 GNOME Documentation Team\\n\\nRed fox photo licensed CC-By by
Rob Lee\\nGentoo penguin photo licensed CC-By-SA by Ken Funakoshi\\nFruit bat photo licensed CC-By by Shek
Graham\\nMute swan photo licensed CC-By-SA by Mindaugas Urbonas\\nLinks to the originals are available under
Credits.\\n\\nHave you hugged a penguin today?\",\n"
-" artists: artists,\n"
-" authors: authors,\n"
-" documenters: documenters,\n"
-" website: \"http://developer.gnome.org\",\n"
-" website_label: \"GNOME Developer Website\" });\n"
-"\n"
-" // Attach the About dialog to the window\n"
-" aboutDialog.modal = true;\n"
-" aboutDialog.transient_for = this._window;\n"
-"\n"
-" // Show the About dialog\n"
-" aboutDialog.show();\n"
-"\n"
-" // Connect the Close button to the destroy signal for the dialog\n"
-" aboutDialog.connect('response', function() {\n"
-" aboutDialog.destroy();\n"
-" });\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new SwitchExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/switch.js.page:271
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html"
-"\">Gtk.Image</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html"
-"\">Gtk.Image</link>"
-
-#. (itstool) path: item/p
-#: C/switch.js.page:273
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Switch.html"
-"\">Gtk.Switch</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Switch.html"
-"\">Gtk.Switch</link>"
-
-#. (itstool) path: info/title
-#: C/switch.py.page:8
-msgctxt "text"
-msgid "Switch (Python)"
-msgstr "Interruptor (Python)"
-
-#. (itstool) path: page/p
-#: C/switch.py.page:26
-msgid "This Switch makes the title appears and disappear."
-msgstr "Este interruptor hace que el título aparezca y desaparezca."
-
-#. (itstool) path: section/code
-#: C/switch.py.page:33
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Switch Example\", application=app)\n"
-" self.set_default_size(300, 100)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # a switch\n"
-" switch = Gtk.Switch()\n"
-" # turned on by default\n"
-" switch.set_active(True)\n"
-" # connect the signal notify::active emitted by the switch\n"
-" # to the callback function activate_cb\n"
-" switch.connect(\"notify::active\", self.activate_cb)\n"
-"\n"
-" # a label\n"
-" label = Gtk.Label()\n"
-" label.set_text(\"Title\")\n"
-"\n"
-" # a grid to allocate the widgets\n"
-" grid = Gtk.Grid()\n"
-" grid.set_column_spacing(10)\n"
-" grid.attach(label, 0, 0, 1, 1)\n"
-" grid.attach(switch, 1, 0, 1, 1)\n"
-"\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" # Callback function. Since the signal is notify::active\n"
-" # we need the argument 'active'\n"
-" def activate_cb(self, button, active):\n"
-" # if the button (i.e. the switch) is active, set the title\n"
-" # of the window to \"Switch Example\"\n"
-" if button.get_active():\n"
-" self.set_title(\"Switch Example\")\n"
-" # else, set it to \"\" (empty string)\n"
-" else:\n"
-" self.set_title(\"\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Switch Example\", application=app)\n"
-" self.set_default_size(300, 100)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # a switch\n"
-" switch = Gtk.Switch()\n"
-" # turned on by default\n"
-" switch.set_active(True)\n"
-" # connect the signal notify::active emitted by the switch\n"
-" # to the callback function activate_cb\n"
-" switch.connect(\"notify::active\", self.activate_cb)\n"
-"\n"
-" # a label\n"
-" label = Gtk.Label()\n"
-" label.set_text(\"Title\")\n"
-"\n"
-" # a grid to allocate the widgets\n"
-" grid = Gtk.Grid()\n"
-" grid.set_column_spacing(10)\n"
-" grid.attach(label, 0, 0, 1, 1)\n"
-" grid.attach(switch, 1, 0, 1, 1)\n"
-"\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" # Callback function. Since the signal is notify::active\n"
-" # we need the argument 'active'\n"
-" def activate_cb(self, button, active):\n"
-" # if the button (i.e. the switch) is active, set the title\n"
-" # of the window to \"Switch Example\"\n"
-" if button.get_active():\n"
-" self.set_title(\"Switch Example\")\n"
-" # else, set it to \"\" (empty string)\n"
-" else:\n"
-" self.set_title(\"\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/switch.py.page:37
-msgid "Useful methods for a Switch widget"
-msgstr "Métodos útiles para un widget interruptor"
-
-#. (itstool) path: section/p
-#: C/switch.py.page:38
-msgid ""
-"In line 17 the signal <code>\"notify::active\"</code> is connected to the "
-"callback function <code>activate_cb()</code> using <code><var>widget</var>."
-"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
-"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 17, la señal <code>«notify::active»</code> se conecta a la "
-"función de retorno de llamada <code>activate_cb()</code> usando "
-"<code><var>widget</var>.connect(<var>señal</var>, <var>función de retorno de "
-"llamada</var>)</code>. Consulte la <link xref=\"signals-callbacks.py\"/> "
-"para una explicación más detallada."
-
-#. (itstool) path: item/p
-#: C/switch.py.page:45
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSwitch.html"
-"\">GtkSwitch</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSwitch.html"
-"\">GtkSwitch</link>"
-
-#. (itstool) path: info/title
-#: C/switch.vala.page:8
-msgctxt "text"
-msgid "Switch (Vala)"
-msgstr "Interruptor (Vala)"
-
-#. (itstool) path: page/p
-#: C/switch.vala.page:29
-msgid "This Switch toggles the title."
-msgstr "Este interruptor cambia el título."
-
-#. (itstool) path: page/code
-#: C/switch.vala.page:31
-#, no-wrap
-msgid ""
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Switch Example\");\n"
-"\n"
-"\t\tthis.set_default_size (300, 100);\n"
-"\t\tthis.border_width = 10;\n"
-"\n"
-"\t\tvar label = new Gtk.Label (\"Title\");\n"
-"\t\tvar switcher = new Gtk.Switch ();\n"
-"\n"
-"\t\tswitcher.set_active (true);\n"
-"\n"
-"\t\tswitcher.notify[\"active\"].connect (switcher_cb);\n"
-"\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tgrid.set_column_spacing (10);\n"
-"\t\tgrid.attach (label, 0, 0, 1, 1);\n"
-"\t\tgrid.attach (switcher, 1, 0, 1, 1);\n"
-"\n"
-"\t\tthis.add (grid);\n"
-"\t}\n"
-"\n"
-"\tvoid switcher_cb (Object switcher, ParamSpec pspec) {\n"
-"\t\tif ((switcher as Gtk.Switch).get_active())\n"
-"\t\t\tthis.set_title (\"Switch Example\");\n"
-"\t\telse\n"
-"\t\t\tthis.set_title (\"\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\tvar window = new MyWindow (this);\n"
-"\t\twindow.show_all (); //show all the things\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.checkbutton\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Switch Example\");\n"
-"\n"
-"\t\tthis.set_default_size (300, 100);\n"
-"\t\tthis.border_width = 10;\n"
-"\n"
-"\t\tvar label = new Gtk.Label (\"Title\");\n"
-"\t\tvar switcher = new Gtk.Switch ();\n"
-"\n"
-"\t\tswitcher.set_active (true);\n"
-"\n"
-"\t\tswitcher.notify[\"active\"].connect (switcher_cb);\n"
-"\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tgrid.set_column_spacing (10);\n"
-"\t\tgrid.attach (label, 0, 0, 1, 1);\n"
-"\t\tgrid.attach (switcher, 1, 0, 1, 1);\n"
-"\n"
-"\t\tthis.add (grid);\n"
-"\t}\n"
-"\n"
-"\tvoid switcher_cb (Object switcher, ParamSpec pspec) {\n"
-"\t\tif ((switcher as Gtk.Switch).get_active())\n"
-"\t\t\tthis.set_title (\"Switch Example\");\n"
-"\t\telse\n"
-"\t\t\tthis.set_title (\"\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\tvar window = new MyWindow (this);\n"
-"\t\twindow.show_all (); //show all the things\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.checkbutton\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/switch.vala.page:36
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Switch.html\">Gtk.Switch</"
-"link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Switch.html\">Gtk.Switch</"
-"link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/textview.c.page:27 C/textview.py.page:39 C/textview.vala.page:27
-msgctxt "_"
-msgid ""
-"external ref='media/textview.png' md5='049e859ed1af2d7c93d8cb5cfd9f7792'"
-msgstr ""
-"external ref='media/textview.png' md5='049e859ed1af2d7c93d8cb5cfd9f7792'"
-
-#. (itstool) path: info/title
-#: C/textview.c.page:8
-msgctxt "text"
-msgid "TextView (C)"
-msgstr "TextView (C)"
-
-#. (itstool) path: info/desc
-#: C/textview.c.page:18 C/textview.vala.page:18
-msgid "Widget which displays a GtkTextBuffer"
-msgstr "Un widget que muestra un GtkTextBuffer"
-
-#. (itstool) path: page/title
-#: C/textview.c.page:21 C/textview.vala.page:21
-msgid "TextView widget"
-msgstr "Widget TextView"
-
-#. (itstool) path: note/p
-#: C/textview.c.page:22 C/textview.py.page:33 C/textview.vala.page:22
-msgid "If we press \"enter\", we have a new line."
-msgstr "Si se pulsa «Intro» se obtiene una línea nueva."
-
-#. (itstool) path: note/p
-#: C/textview.c.page:23 C/textview.vala.page:23
-msgid ""
-"If we press \"enter\" more times then there are lines in the default sized "
-"window, then a vertical scrollbar appears."
-msgstr ""
-"Si se pulsa «Intro» más veces entonces hay líneas en la ventana de tamaño "
-"predeterminado, y después aparece una barra de desplazamiento vertical."
-
-#. (itstool) path: note/p
-#: C/textview.c.page:24 C/textview.vala.page:24
-msgid ""
-"If we write a long sentence, the text will wrap breaking lines between words."
-msgstr ""
-"Si se escribe una frase larga, el texto se ajustará a los saltos de línea "
-"entre palabras."
-
-#. (itstool) path: note/p
-#: C/textview.c.page:25
-msgid ""
-"If we have a loooooooooooooooooooooooooooooooooooong (that was long) word, "
-"a* horizontal scrollbar will appear."
-msgstr ""
-"Si es escribe una palabra laaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarga (eso es "
-"largo), aparecerá una barra de desplazamiento horizontal."
-
-#. (itstool) path: page/p
-#: C/textview.c.page:28 C/textview.vala.page:28
-msgid "This is an example of Gtk.TextView"
-msgstr "Esto es un ejemplo de Gtk.TextView"
-
-#. (itstool) path: page/code
-#: C/textview.c.page:30
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* Declare variables */\n"
-" GtkWidget *window;\n"
-" GtkWidget *text_view;\n"
-" GtkWidget *scrolled_window;\n"
-"\n"
-" GtkTextBuffer *buffer;\n"
-"\n"
-"\n"
-" /* Create a window with a title, and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"TextView Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 220, 200);\n"
-"\n"
-"\n"
-" /* The text buffer represents the text being edited */\n"
-" buffer = gtk_text_buffer_new (NULL);\n"
-" \n"
-"\n"
-" /* Text view is a widget in which can display the text buffer. \n"
-" * The line wrapping is set to break lines in between words.\n"
-" */\n"
-" text_view = gtk_text_view_new_with_buffer (buffer);\n"
-" gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD); \n"
-"\n"
-"\n"
-" /* Create the scrolled window. Usually NULL is passed for both parameters so \n"
-" * that it creates the horizontal/vertical adjustments automatically. Setting \n"
-" * the scrollbar policy to automatic allows the scrollbars to only show up \n"
-" * when needed. \n"
-" */\n"
-" scrolled_window = gtk_scrolled_window_new (NULL, NULL);\n"
-" gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), \n"
-" GTK_POLICY_AUTOMATIC, \n"
-" GTK_POLICY_AUTOMATIC); \n"
-" /* The function directly below is used to add children to the scrolled window \n"
-" * with scrolling capabilities (e.g text_view), otherwise, \n"
-" * gtk_scrolled_window_add_with_viewport() would have been used\n"
-" */\n"
-" gtk_container_add (GTK_CONTAINER (scrolled_window), \n"
-" text_view);\n"
-" gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 5);\n"
-" \n"
-" \n"
-" gtk_container_add (GTK_CONTAINER (window), scrolled_window);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* Declare variables */\n"
-" GtkWidget *window;\n"
-" GtkWidget *text_view;\n"
-" GtkWidget *scrolled_window;\n"
-"\n"
-" GtkTextBuffer *buffer;\n"
-"\n"
-"\n"
-" /* Create a window with a title, and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"TextView Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 220, 200);\n"
-"\n"
-"\n"
-" /* The text buffer represents the text being edited */\n"
-" buffer = gtk_text_buffer_new (NULL);\n"
-" \n"
-"\n"
-" /* Text view is a widget in which can display the text buffer. \n"
-" * The line wrapping is set to break lines in between words.\n"
-" */\n"
-" text_view = gtk_text_view_new_with_buffer (buffer);\n"
-" gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD); \n"
-"\n"
-"\n"
-" /* Create the scrolled window. Usually NULL is passed for both parameters so \n"
-" * that it creates the horizontal/vertical adjustments automatically. Setting \n"
-" * the scrollbar policy to automatic allows the scrollbars to only show up \n"
-" * when needed. \n"
-" */\n"
-" scrolled_window = gtk_scrolled_window_new (NULL, NULL);\n"
-" gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), \n"
-" GTK_POLICY_AUTOMATIC, \n"
-" GTK_POLICY_AUTOMATIC); \n"
-" /* The function directly below is used to add children to the scrolled window \n"
-" * with scrolling capabilities (e.g text_view), otherwise, \n"
-" * gtk_scrolled_window_add_with_viewport() would have been used\n"
-" */\n"
-" gtk_container_add (GTK_CONTAINER (scrolled_window), \n"
-" text_view);\n"
-" gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 5);\n"
-" \n"
-" \n"
-" gtk_container_add (GTK_CONTAINER (window), scrolled_window);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/textview.c.page:41
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkContainer.html"
-"\">GtkContainer</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkContainer.html"
-"\">GtkContainer</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/textview.js.page:26
-msgctxt "_"
-msgid ""
-"external ref='media/textviewpenguinchat.png' "
-"md5='0dd6f6aa44aaeab7901bd90162ed4c9a'"
-msgstr ""
-"external ref='media/textviewpenguinchat.png' "
-"md5='0dd6f6aa44aaeab7901bd90162ed4c9a'"
-
-#. (itstool) path: info/title
-#: C/textview.js.page:8
-msgctxt "text"
-msgid "TextView (JavaScript)"
-msgstr "TextView (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/textview.js.page:22
-msgid "A multiline text editor"
-msgstr "Un editor de texto multilínea"
-
-#. (itstool) path: page/title
-#: C/textview.js.page:25 C/textview.py.page:30
-msgid "TextView"
-msgstr "TextView"
-
-#. (itstool) path: page/p
-#: C/textview.js.page:27
-msgid ""
-"A TextView is really (or at least usually) a nested set of three objects."
-msgstr ""
-"Un «TextView» es realmente (o al menos generalmente) un conjunto anidado de "
-"tres objetos."
-
-#. (itstool) path: item/p
-#: C/textview.js.page:29
-msgid ""
-"At the bottom there is a <link href=\"http://www.roojs.org/seed/gir-1.2-gtk-"
-"3.0/gjs/Gtk.TextBuffer.html\">TextBuffer</link>. This holds the text itself."
-msgstr ""
-"En la parte inferior hay un <link href=\"http://www.roojs.org/seed/gir-1.2-"
-"gtk-3.0/gjs/Gtk.TextBuffer.html\">Búfer de texto</link>. Este almacena el "
-"texto."
-
-#. (itstool) path: item/p
-#: C/textview.js.page:30
-msgid ""
-"In the middle there is the <link href=\"http://www.roojs.org/seed/gir-1.2-"
-"gtk-3.0/gjs/Gtk.TextView.html\">TextView</link>, which is a widget that lets "
-"you see and edit the text in the buffer. It automatically resizes itself "
-"depending on how much text there is."
-msgstr ""
-"En el medio está el <link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/"
-"gjs/Gtk.TextView.html\">TextView</link>, que es un widget que le permite ver "
-"y editar el texto en el búfer. Cambia su tamaño automáticamente dependiendo "
-"de cuánto texto hay."
-
-#. (itstool) path: item/p
-#: C/textview.js.page:31
-msgid ""
-"Since the automatic resizing can make a TextView unwieldy, you normally "
-"place it inside of a ScrolledWindow. Despite the name, it's not an actual "
-"window in terms of having a title bar and an X button; it's a widget you put "
-"on the application you're making, which acts like a window onto a more "
-"manageable chunk of a TextView. If the text in the buffer is too big to fit, "
-"scrollbars will appear."
-msgstr ""
-"Dado que el cambio de tamaño automático puede hacer un «TextView» difícil de "
-"manejar, normalmente se ubica dentro de una «ScrolledWindow». A pesar de su "
-"nombre, no es una ventana real en términos de tener una barra de título y un "
-"botón «X»; es un widget en el que pone la aplicación que está haciendo, que "
-"actúa como una ventana sobre un pedazo más manejable de un «TextView». Si el "
-"texto en el búfer es demasiado grande para entrar, aparecerán barras de "
-"desplazamiento."
-
-#. (itstool) path: page/p
-#: C/textview.js.page:33
-msgid ""
-"If you want to change what text is displayed in the TextView, you act on the "
-"TextBuffer, since it's what actually holds the text. The same goes for if "
-"you want to see what text someone typed in. This sample application lets you "
-"talk to a (make-believe) penguin, and checks the TextBuffer to see if you "
-"typed the word \"fish\" anywhere in it."
-msgstr ""
-"Si quiere cambiar el texto que se muestra en el «TextView», actúe en el búfer "
-"de texto, dado que es lo que realmente contiene al texto. Es lo mismo si "
-"quiere ver lo que se ha introducido en él. Esta aplicación de ejemplo le "
-"permite hablar con un pingüino de fantasía, y verifica el búfer de texto "
-"para ver si ha introducido la palabra «fish» en él."
-
-#. (itstool) path: note/p
-#: C/textview.js.page:34
-msgid ""
-"Real-life penguin populations are declining fast, because climate change is "
-"melting the ice that they live on and killing the fish that they eat. If "
-"you'd like to play a (somewhat silly) GNOME game based on this premise, take "
-"a look at <link href=\"http://pingus.seul.org/\">Pingus</link>."
-msgstr ""
-"Las poblaciones de pingüinos reales están decayendo rápidamente, porque el "
-"cambio climático está derritiendo el hielo en el que viven y matando a los "
-"peces que comen. Si le interesa jugar a un juego de GNOME algo tonto basado "
-"en esta premisa, échele un vistazo a <link href=\"http://pingus.seul.org/"
-"\">Pingus</link>."
-
-#. (itstool) path: section/code
-#: C/textview.js.page:50
-#, no-wrap
-msgid ""
-"\n"
-"const TextViewExample = new Lang.Class ({\n"
-" Name: 'TextView Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jstextview' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-"const TextViewExample = new Lang.Class ({\n"
-" Name: 'TextView Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jstextview' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/textview.js.page:74
-msgid ""
-"All the code for this sample goes in the TextViewExample class. The above "
-"code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> for our widgets and window to "
-"go in."
-msgstr ""
-"Todo el código de este ejemplo va en la clase «TextViewExample». El código "
-"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> para poner los widgets y la "
-"ventana."
-
-#. (itstool) path: section/code
-#: C/textview.js.page:75
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Talk to a Penguin\",\n"
-" default_height: 400,\n"
-" default_width: 440,\n"
-" border_width: 20 });\n"
-msgstr ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Talk to a Penguin\",\n"
-" default_height: 400,\n"
-" default_width: 440,\n"
-" border_width: 20 });\n"
-
-#. (itstool) path: section/title
-#: C/textview.js.page:92
-msgid "Creating the TextView"
-msgstr "Crear el «TextView»"
-
-#. (itstool) path: section/code
-#: C/textview.js.page:93
-#, no-wrap
-msgid ""
-"\n"
-" // Create a label for the penguin to talk to you\n"
-" this._penguin = new Gtk.Label ({\n"
-" height_request: 180,\n"
-" width_request: 400,\n"
-" label: \"Squaaaak?\",\n"
-" wrap: true });\n"
-msgstr ""
-"\n"
-" // Create a label for the penguin to talk to you\n"
-" this._penguin = new Gtk.Label ({\n"
-" height_request: 180,\n"
-" width_request: 400,\n"
-" label: \"Squaaaak?\",\n"
-" wrap: true });\n"
-
-#. (itstool) path: section/p
-#: C/textview.js.page:102
-msgid ""
-"Our first step in this example is to create the <link xref=\"label.js"
-"\">Label</link> that the penguin will use to talk to you. We set the text in "
-"it to wrap by setting its wrap property to true, but we'll use a different "
-"method on the TextView itself that allows for more fine-grained control."
-msgstr ""
-"El primer paso en este ejemplo es crear la <link xref=\"label.js\">Label</"
-"link> que el pingüino usará para hablarle. Se configura para que tenga "
-"ajuste de línea estableciendo su propiedad «wrap» a «true», pero usaremos un "
-"método distinto en el «TextView» propio que permite un control más preciso."
-
-#. (itstool) path: section/code
-#: C/textview.js.page:104
-#, no-wrap
-msgid ""
-"\n"
-" // Create a textview for you to talk to the penguin\n"
-" this.buffer = new Gtk.TextBuffer();\n"
-" this._textView = new Gtk.TextView ({\n"
-" buffer: this.buffer,\n"
-" editable: true,\n"
-" wrap_mode: Gtk.WrapMode.WORD });\n"
-msgstr ""
-"\n"
-" // Create a textview for you to talk to the penguin\n"
-" this.buffer = new Gtk.TextBuffer();\n"
-" this._textView = new Gtk.TextView ({\n"
-" buffer: this.buffer,\n"
-" editable: true,\n"
-" wrap_mode: Gtk.WrapMode.WORD });\n"
-
-#. (itstool) path: section/p
-#: C/textview.js.page:113
-msgid ""
-"Our first step is to create a TextBuffer to put the words into. After that "
-"we create the TextView, and tell it to use the TextBuffer we created as its "
-"buffer. We also set it to be editable, since we want to be able to type new "
-"things in."
-msgstr ""
-"El primer paso es crear un «TextBuffer» para poner dentro las palabras. "
-"Después de eso se crea el «TextView», y se le dice que use el «TextBuffer» que "
-"se creó como su búfer. También se configura para que sea editable, dado que "
-"se quiere poder introducir cosas nuevas dentro."
-
-#. (itstool) path: section/p
-#: C/textview.js.page:114
-msgid ""
-"The wrap_mode property lets you select from four different <link href="
-"\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.WrapMode.html"
-"\">WrapModes</link>. Gtk.WrapMode.CHAR, for instance, starts wrapping around "
-"in the middle of a word if you keep typing when it gets to the edge. Most "
-"people are probably used to Gtk.WrapMode.WORD, which will automatically put "
-"the word you're typing on the next line if it gets to be too long."
-msgstr ""
-"La propiedad «wrap_mode» le permite elegir entre cuatro <link href=\"http://"
-"www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.WrapMode.html\">Modos de ajuste "
-"de línea</link> diferentes. «Gtk.WrapMode.CHAR», por ejemplo, salta de línea "
-"en el medio de una palabra si sigue escribiendo cuando llega al borde. La "
-"mayoría de la gente está probablemente acostumbrada a «Gtk.WrapMode.WORD», "
-"que pondrá la palabra que está escribiendo en la línea siguiente "
-"automáticamente si es demasiado larga."
-
-#. (itstool) path: section/code
-#: C/textview.js.page:116
-#, no-wrap
-msgid ""
-"\n"
-" // Create a \"scrolled window\" to put your textview in so it will scroll\n"
-" this._scrolled = new Gtk.ScrolledWindow ({\n"
-" hscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
-" vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
-" shadow_type: Gtk.ShadowType.ETCHED_IN,\n"
-" height_request: 180,\n"
-" width_request: 400, });\n"
-"\n"
-" // Put the textview into the scrolled window\n"
-" this._scrolled.add_with_viewport (this._textView);\n"
-msgstr ""
-"\n"
-" // Create a \"scrolled window\" to put your textview in so it will scroll\n"
-" this._scrolled = new Gtk.ScrolledWindow ({\n"
-" hscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
-" vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
-" shadow_type: Gtk.ShadowType.ETCHED_IN,\n"
-" height_request: 180,\n"
-" width_request: 400, });\n"
-"\n"
-" // Put the textview into the scrolled window\n"
-" this._scrolled.add_with_viewport (this._textView);\n"
-
-#. (itstool) path: section/p
-#: C/textview.js.page:128
-msgid ""
-"Here we create a ScrolledWindow, and set it to automatically scroll if it "
-"gets to be too big horizontally or vertically. We also give it a nice-"
-"looking ETCHED_IN border. After that, we put our TextView inside, and tell "
-"the ScrolledWindow to give us a viewport onto it."
-msgstr ""
-"Aquí se crea una «ScrolledWindow», y se configura para que se desplace "
-"automáticamente si se vuelve demasiado grande horizontal o verticalmente. "
-"También se le da un borde bonito ETCHED_IN. Después de eso, se pone el "
-"«TextView» dentro, y se hace que la «ScrolledWindow» dé un punto de vista "
-"sobre él."
-
-#. (itstool) path: section/code
-#: C/textview.js.page:134
-#, no-wrap
-msgid ""
-"\n"
-" // Create a grid to organize them in\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Put the label and textview in the grid one on top of the other\n"
-" this._grid.attach (this._penguin, 0, 0, 1, 1);\n"
-" this._grid.attach (this._scrolled, 0, 1, 1, 1);\n"
-msgstr ""
-"\n"
-" // Create a grid to organize them in\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Put the label and textview in the grid one on top of the other\n"
-" this._grid.attach (this._penguin, 0, 0, 1, 1);\n"
-" this._grid.attach (this._scrolled, 0, 1, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/textview.js.page:144
-msgid ""
-"The first <link xref=\"grid.js\">Grid</link> we create only has the Label "
-"and the ScrolledWindow inside it."
-msgstr ""
-"La primera <link xref=\"grid.js\">Rejilla</link> que se crea sólo tiene "
-"dentro la etiqueta y la «ScrolledWindow»."
-
-#. (itstool) path: section/code
-#: C/textview.js.page:146
-#, no-wrap
-msgid ""
-"\n"
-" // Create a button to send your message to the penguin\n"
-" this._send = new Gtk.Button ({\n"
-" halign: Gtk.Align.END,\n"
-" margin_top: 20,\n"
-" label: \"Send\" });\n"
-" this._send.connect ('clicked', Lang.bind (this, this._chat));\n"
-"\n"
-" // Create a grid that will have the other grid on top and the button on bottom\n"
-" this._mainGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Add the other grid and the button to the main grid\n"
-" this._mainGrid.attach (this._grid, 0, 0, 1, 1);\n"
-" this._mainGrid.attach (this._send, 0, 1, 1, 1);\n"
-msgstr ""
-"\n"
-" // Create a button to send your message to the penguin\n"
-" this._send = new Gtk.Button ({\n"
-" halign: Gtk.Align.END,\n"
-" margin_top: 20,\n"
-" label: \"Send\" });\n"
-" this._send.connect ('clicked', Lang.bind (this, this._chat));\n"
-"\n"
-" // Create a grid that will have the other grid on top and the button on bottom\n"
-" this._mainGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Add the other grid and the button to the main grid\n"
-" this._mainGrid.attach (this._grid, 0, 0, 1, 1);\n"
-" this._mainGrid.attach (this._send, 0, 1, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/textview.js.page:163
-msgid ""
-"We create a <link xref=\"button.js\">Button</link> to send your message to "
-"the penguin, and a new Grid that has the other one on top and the Button on "
-"the bottom. The Button has a margin on top, so that it isn't squished up "
-"against the ScrolledWindow."
-msgstr ""
-"Se crea un <link xref=\"button.js\">Botón</link> para enviar su mensaje al "
-"pingüino, y una rejilla nueva que tiene la otra en su parte superior y el "
-"botón en la parte inferior. El botón tiene un margen en su parte superior, "
-"para que no se aplaste contra la «ScrolledWindow»."
-
-#. (itstool) path: section/code
-#: C/textview.js.page:165
-#, no-wrap
-msgid ""
-"\n"
-" // Attach the main grid to the window\n"
-" this._window.add (this._mainGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-msgstr ""
-"\n"
-" // Attach the main grid to the window\n"
-" this._window.add (this._mainGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/textview.js.page:174
-msgid ""
-"Finally, we attach the main Grid to the window, then we tell the window and "
-"everything inside it to become visible when the application is run."
-msgstr ""
-"Finalmente, se adjunta la rejilla principal a la ventana, después se le dice "
-"a la ventana y a todo lo que tiene dentro de ella que se vuelva visible "
-"cuando se ejecute la aplicación."
-
-#. (itstool) path: section/title
-#: C/textview.js.page:179
-msgid "Function which handles the penguin's response"
-msgstr "Función que maneja la respuesta del pingüino"
-
-#. (itstool) path: section/code
-#: C/textview.js.page:180
-#, no-wrap
-msgid ""
-"\n"
-" _chat: function () {\n"
-"\n"
-" // Create a random number to determine what the penguin says\n"
-" this.number = Math.floor ((Math.random() * 3) + 1);\n"
-"\n"
-" // Did you actually say anything?\n"
-" if (this.buffer.text) {\n"
-"\n"
-" // Did you mention fish?\n"
-" if (this.buffer.text.match (/fish/gi)) {\n"
-"\n"
-" // Have the penguin squaak about fish\n"
-" if (this.number == 1)\n"
-" this._penguin.set_label (\"FISH!\");\n"
-"\n"
-" else if (this.number == 2)\n"
-" this._penguin.set_label (\"Fish fish fish fish. Fish!\");\n"
-"\n"
-" else\n"
-" this._penguin.set_label (\"Fish? Fish fish fish. Fish fish. FISH!\");\n"
-"\n"
-" }\n"
-"\n"
-" // I guess you didn't mention fish\n"
-" else {\n"
-"\n"
-" // Have the penguin talk about penguinny stuff\n"
-" if (this.number == 1)\n"
-" this._penguin.set_label (\"SQUAAK!\");\n"
-"\n"
-" else if (this.number == 2)\n"
-" this._penguin.set_label (\"Ork ork ork ork squaak. Squaak squaak! *waves
flippers*\");\n"
-"\n"
-" else\n"
-" this._penguin.set_label (\"Ork ork ork ork ork?\");\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-"\n"
-" // Clear the buffer\n"
-" this.buffer.text = \"\";\n"
-"\n"
-" // Give focus back to the textview so you don't have to click it again\n"
-" this._textView.has_focus = true;\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-msgstr ""
-"\n"
-" _chat: function () {\n"
-"\n"
-" // Create a random number to determine what the penguin says\n"
-" this.number = Math.floor ((Math.random() * 3) + 1);\n"
-"\n"
-" // Did you actually say anything?\n"
-" if (this.buffer.text) {\n"
-"\n"
-" // Did you mention fish?\n"
-" if (this.buffer.text.match (/fish/gi)) {\n"
-"\n"
-" // Have the penguin squaak about fish\n"
-" if (this.number == 1)\n"
-" this._penguin.set_label (\"FISH!\");\n"
-"\n"
-" else if (this.number == 2)\n"
-" this._penguin.set_label (\"Fish fish fish fish. Fish!\");\n"
-"\n"
-" else\n"
-" this._penguin.set_label (\"Fish? Fish fish fish. Fish fish. FISH!\");\n"
-"\n"
-" }\n"
-"\n"
-" // I guess you didn't mention fish\n"
-" else {\n"
-"\n"
-" // Have the penguin talk about penguinny stuff\n"
-" if (this.number == 1)\n"
-" this._penguin.set_label (\"SQUAAK!\");\n"
-"\n"
-" else if (this.number == 2)\n"
-" this._penguin.set_label (\"Ork ork ork ork squaak. Squaak squaak! *waves
flippers*\");\n"
-"\n"
-" else\n"
-" this._penguin.set_label (\"Ork ork ork ork ork?\");\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-"\n"
-" // Clear the buffer\n"
-" this.buffer.text = \"\";\n"
-"\n"
-" // Give focus back to the textview so you don't have to click it again\n"
-" this._textView.has_focus = true;\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-
-#. (itstool) path: section/p
-#: C/textview.js.page:231
-msgid ""
-"Here we use some basic JavaScript functions to have the penguins say "
-"something random. Penguins like fish, though, so if you mention fish we want "
-"the penguin to respond to that. To do that, we use the JavaScript String "
-"object's match method on <file>this.buffer.text</file>, which returns the "
-"contents of our TextBuffer."
-msgstr ""
-"Aquí se usan algunas funciones básicas de JavaScript para que el pingüino "
-"diga algo aleatorio. Sin embargo, a los pingüinos les gusta el pescado, por "
-"lo que se quiere que si se menciona «fish», el pingüino responda. Para hacer "
-"eso, se usa el método «match» del objeto de cadena de JavaScript sobre "
-"<file>this.buffer.text</file>, que devuelve el contenido del búfer de texto."
-
-#. (itstool) path: section/p
-#: C/textview.js.page:232
-msgid ""
-"Since we want to clear out the TextBuffer after each time you click Send, we "
-"set <file>this.buffer.text</file> to contain an empty string afterwards. "
-"Then we return focus to our TextView, so that you can keep typing without "
-"having to click on it beforehand."
-msgstr ""
-"Dado que se quiere limpiar el búfer de texto después de cada vez que pulsa "
-"«Send», se configura <file>this.buffer.text</file> para que contenga una "
-"cadena vacía justo entonces. Después, se devuelve el foco al «TextView», para "
-"poder seguir escribiendo sin tener que pulsar en él antes."
-
-#. (itstool) path: section/code
-#: C/textview.js.page:234
-#, no-wrap
-msgid ""
-"\n"
-"// Run the application\n"
-"let app = new TextViewExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"// Run the application\n"
-"let app = new TextViewExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/p
-#: C/textview.js.page:239
-msgid ""
-"Finally, we create a new instance of the finished TextViewExample class, and "
-"set the application running."
-msgstr ""
-"Finalmente, se crea una instancia nueva de la clase «TextViewExample» "
-"terminada, y se ejecuta la aplicación."
-
-#. (itstool) path: section/code
-#: C/textview.js.page:244
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const TextViewExample = new Lang.Class ({\n"
-" Name: 'TextView Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jstextview' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Talk to a Penguin\",\n"
-" default_height: 400,\n"
-" default_width: 440,\n"
-" border_width: 20 });\n"
-"\n"
-" // Create a label for the penguin to talk to you\n"
-" this._penguin = new Gtk.Label ({\n"
-" height_request: 180,\n"
-" width_request: 400,\n"
-" label: \"Squaaaak?\",\n"
-" wrap: true });\n"
-"\n"
-" // Create a textview for you to talk to the penguin\n"
-" this.buffer = new Gtk.TextBuffer();\n"
-" this._textView = new Gtk.TextView ({\n"
-" buffer: this.buffer,\n"
-" editable: true,\n"
-" wrap_mode: Gtk.WrapMode.WORD });\n"
-"\n"
-" // Create a \"scrolled window\" to put your textview in so it will scroll\n"
-" this._scrolled = new Gtk.ScrolledWindow ({\n"
-" hscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
-" vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
-" shadow_type: Gtk.ShadowType.ETCHED_IN,\n"
-" height_request: 180,\n"
-" width_request: 400, });\n"
-"\n"
-" // Put the textview into the scrolled window\n"
-" this._scrolled.add_with_viewport (this._textView);\n"
-"\n"
-" // Create a grid to organize them in\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Put the label and textview in the grid one on top of the other\n"
-" this._grid.attach (this._penguin, 0, 0, 1, 1);\n"
-" this._grid.attach (this._scrolled, 0, 1, 1, 1);\n"
-"\n"
-" // Create a button to send your message to the penguin\n"
-" this._send = new Gtk.Button ({\n"
-" halign: Gtk.Align.END,\n"
-" margin_top: 20,\n"
-" label: \"Send\" });\n"
-" this._send.connect ('clicked', Lang.bind (this, this._chat));\n"
-"\n"
-" // Create a grid that will have the other grid on top and the button on bottom\n"
-" this._mainGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Add the other grid and the button to the main grid\n"
-" this._mainGrid.attach (this._grid, 0, 0, 1, 1);\n"
-" this._mainGrid.attach (this._send, 0, 1, 1, 1);\n"
-"\n"
-" // Attach the main grid to the window\n"
-" this._window.add (this._mainGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _chat: function () {\n"
-"\n"
-" // Create a random number to determine what the penguin says\n"
-" this.number = Math.floor ((Math.random() * 3) + 1);\n"
-"\n"
-" // Did you actually say anything?\n"
-" if (this.buffer.text) {\n"
-"\n"
-" // Did you mention fish?\n"
-" if (this.buffer.text.match (/fish/gi)) {\n"
-"\n"
-" // Have the penguin squaak about fish\n"
-" if (this.number == 1)\n"
-" this._penguin.set_label (\"FISH!\");\n"
-"\n"
-" else if (this.number == 2)\n"
-" this._penguin.set_label (\"Fish fish fish fish. Fish!\");\n"
-"\n"
-" else\n"
-" this._penguin.set_label (\"Fish? Fish fish fish. Fish fish. FISH!\");\n"
-"\n"
-" }\n"
-"\n"
-" // I guess you didn't mention fish\n"
-" else {\n"
-"\n"
-" // Have the penguin talk about penguinny stuff\n"
-" if (this.number == 1)\n"
-" this._penguin.set_label (\"SQUAAK!\");\n"
-"\n"
-" else if (this.number == 2)\n"
-" this._penguin.set_label (\"Ork ork ork ork squaak. Squaak squaak! *waves
flippers*\");\n"
-"\n"
-" else\n"
-" this._penguin.set_label (\"Ork ork ork ork ork?\");\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-"\n"
-" // Clear the buffer\n"
-" this.buffer.text = \"\";\n"
-"\n"
-" // Give focus back to the textview so you don't have to click it again\n"
-" this._textView.has_focus = true;\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new TextViewExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const TextViewExample = new Lang.Class ({\n"
-" Name: 'TextView Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.jstextview' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function () {\n"
-" this._window.present ();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow ({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Talk to a Penguin\",\n"
-" default_height: 400,\n"
-" default_width: 440,\n"
-" border_width: 20 });\n"
-"\n"
-" // Create a label for the penguin to talk to you\n"
-" this._penguin = new Gtk.Label ({\n"
-" height_request: 180,\n"
-" width_request: 400,\n"
-" label: \"Squaaaak?\",\n"
-" wrap: true });\n"
-"\n"
-" // Create a textview for you to talk to the penguin\n"
-" this.buffer = new Gtk.TextBuffer();\n"
-" this._textView = new Gtk.TextView ({\n"
-" buffer: this.buffer,\n"
-" editable: true,\n"
-" wrap_mode: Gtk.WrapMode.WORD });\n"
-"\n"
-" // Create a \"scrolled window\" to put your textview in so it will scroll\n"
-" this._scrolled = new Gtk.ScrolledWindow ({\n"
-" hscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
-" vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
-" shadow_type: Gtk.ShadowType.ETCHED_IN,\n"
-" height_request: 180,\n"
-" width_request: 400, });\n"
-"\n"
-" // Put the textview into the scrolled window\n"
-" this._scrolled.add_with_viewport (this._textView);\n"
-"\n"
-" // Create a grid to organize them in\n"
-" this._grid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Put the label and textview in the grid one on top of the other\n"
-" this._grid.attach (this._penguin, 0, 0, 1, 1);\n"
-" this._grid.attach (this._scrolled, 0, 1, 1, 1);\n"
-"\n"
-" // Create a button to send your message to the penguin\n"
-" this._send = new Gtk.Button ({\n"
-" halign: Gtk.Align.END,\n"
-" margin_top: 20,\n"
-" label: \"Send\" });\n"
-" this._send.connect ('clicked', Lang.bind (this, this._chat));\n"
-"\n"
-" // Create a grid that will have the other grid on top and the button on bottom\n"
-" this._mainGrid = new Gtk.Grid ({\n"
-" halign: Gtk.Align.CENTER,\n"
-" valign: Gtk.Align.CENTER });\n"
-"\n"
-" // Add the other grid and the button to the main grid\n"
-" this._mainGrid.attach (this._grid, 0, 0, 1, 1);\n"
-" this._mainGrid.attach (this._send, 0, 1, 1, 1);\n"
-"\n"
-" // Attach the main grid to the window\n"
-" this._window.add (this._mainGrid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _chat: function () {\n"
-"\n"
-" // Create a random number to determine what the penguin says\n"
-" this.number = Math.floor ((Math.random() * 3) + 1);\n"
-"\n"
-" // Did you actually say anything?\n"
-" if (this.buffer.text) {\n"
-"\n"
-" // Did you mention fish?\n"
-" if (this.buffer.text.match (/fish/gi)) {\n"
-"\n"
-" // Have the penguin squaak about fish\n"
-" if (this.number == 1)\n"
-" this._penguin.set_label (\"FISH!\");\n"
-"\n"
-" else if (this.number == 2)\n"
-" this._penguin.set_label (\"Fish fish fish fish. Fish!\");\n"
-"\n"
-" else\n"
-" this._penguin.set_label (\"Fish? Fish fish fish. Fish fish. FISH!\");\n"
-"\n"
-" }\n"
-"\n"
-" // I guess you didn't mention fish\n"
-" else {\n"
-"\n"
-" // Have the penguin talk about penguinny stuff\n"
-" if (this.number == 1)\n"
-" this._penguin.set_label (\"SQUAAK!\");\n"
-"\n"
-" else if (this.number == 2)\n"
-" this._penguin.set_label (\"Ork ork ork ork squaak. Squaak squaak! *waves
flippers*\");\n"
-"\n"
-" else\n"
-" this._penguin.set_label (\"Ork ork ork ork ork?\");\n"
-"\n"
-" }\n"
-"\n"
-" }\n"
-"\n"
-" // Clear the buffer\n"
-" this.buffer.text = \"\";\n"
-"\n"
-" // Give focus back to the textview so you don't have to click it again\n"
-" this._textView.has_focus = true;\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new TextViewExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/textview.js.page:256
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
-"ScrolledWindow.html\">Gtk.ScrolledWindow</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
-"ScrolledWindow.html\">Gtk.ScrolledWindow</link>"
-
-#. (itstool) path: item/p
-#: C/textview.js.page:257
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TextBuffer."
-"html\">Gtk.TextBuffer</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TextBuffer."
-"html\">Gtk.TextBuffer</link>"
-
-#. (itstool) path: item/p
-#: C/textview.js.page:258
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TextView.html"
-"\">Gtk.TextView</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TextView.html"
-"\">Gtk.TextView</link>"
-
-#. (itstool) path: info/title
-#: C/textview.py.page:8
-msgctxt "text"
-msgid "TextView (Python)"
-msgstr "TextView (Python)"
-
-#. (itstool) path: info/desc
-#: C/textview.py.page:27
-msgid "Widget that displays a GtkTextBuffer"
-msgstr "Un widget que muestra un GtkTextBuffer"
-
-#. (itstool) path: note/p
-#: C/textview.py.page:32
-msgid "This is an example of Gtk.TextView."
-msgstr "Esto es un ejemplo de Gtk.TextView."
-
-#. (itstool) path: note/p
-#: C/textview.py.page:34
-msgid ""
-"But we can also have a new line if we write a long sentence (the text will "
-"wrap breaking lines between words)."
-msgstr ""
-"Pero también se puede obtener una línea nueva si se escribe una frase larga "
-"(el texto se ajustará a los saltos de línea entre palabras."
-
-#. (itstool) path: note/p
-#: C/textview.py.page:35
-msgid "If we have a loooooooooooooooooooooooooooooooooooong"
-msgstr "Si es escribe una palabra laaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarga"
-
-#. (itstool) path: note/p
-#: C/textview.py.page:36
-msgid "(that was long)"
-msgstr "(esto es una palabra larga)"
-
-#. (itstool) path: note/p
-#: C/textview.py.page:37
-msgid "word, an horizontal scrollbar will appear."
-msgstr ", aparecerá una barra de desplazamiento horizontal."
-
-#. (itstool) path: section/code
-#: C/textview.py.page:46
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"TextView Example\", application=app)\n"
-" self.set_default_size(300, 450)\n"
-"\n"
-" # a scrollbar for the child widget (that is going to be the textview)\n"
-" scrolled_window = Gtk.ScrolledWindow()\n"
-" scrolled_window.set_border_width(5)\n"
-" # we scroll only if needed\n"
-" scrolled_window.set_policy(\n"
-" Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)\n"
-"\n"
-" # a text buffer (stores text)\n"
-" buffer1 = Gtk.TextBuffer()\n"
-"\n"
-" # a textview (displays the buffer)\n"
-" textview = Gtk.TextView(buffer=buffer1)\n"
-" # wrap the text, if needed, breaking lines in between words\n"
-" textview.set_wrap_mode(Gtk.WrapMode.WORD)\n"
-"\n"
-" # textview is scrolled\n"
-" scrolled_window.add(textview)\n"
-"\n"
-" self.add(scrolled_window)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"TextView Example\", application=app)\n"
-" self.set_default_size(300, 450)\n"
-"\n"
-" # a scrollbar for the child widget (that is going to be the textview)\n"
-" scrolled_window = Gtk.ScrolledWindow()\n"
-" scrolled_window.set_border_width(5)\n"
-" # we scroll only if needed\n"
-" scrolled_window.set_policy(\n"
-" Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)\n"
-"\n"
-" # a text buffer (stores text)\n"
-" buffer1 = Gtk.TextBuffer()\n"
-"\n"
-" # a textview (displays the buffer)\n"
-" textview = Gtk.TextView(buffer=buffer1)\n"
-" # wrap the text, if needed, breaking lines in between words\n"
-" textview.set_wrap_mode(Gtk.WrapMode.WORD)\n"
-"\n"
-" # textview is scrolled\n"
-" scrolled_window.add(textview)\n"
-"\n"
-" self.add(scrolled_window)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/textview.py.page:50
-msgid "Useful methods for a TextView widget"
-msgstr "Métodos útiles para un widget «TextView»"
-
-#. (itstool) path: section/p
-#: C/textview.py.page:51
-msgid ""
-"A <code>Gtk.TextView</code> displays the text stored in a <code>Gtk."
-"TextBuffer</code>. However, most text manipulation is accomplished with "
-"iterators, represented by a <code>Gtk.TextIter</code> - a position between "
-"two characters in the text buffer. Iterators are not valid indefinitely; "
-"whenever the buffer is modified in a way that affects the contents of the "
-"buffer, all outstanding iterators become invalid. Because of this, iterators "
-"can’t be used to preserve positions across buffer modifications. To preserve "
-"a position, we use a <code>Gtk.TextMark</code>, that can be set visible with "
-"<code>visible(True)</code>. A text buffer contains two built-in marks; an "
-"\"insert\" mark (the position of the cursor) and the \"selection_bound\" "
-"mark."
-msgstr ""
-"Un <code>Gtk.TextView</code> muestra el texto almacenado en un <code>Gtk."
-"TextBuffer</code>. Sin embargo, la mayor parte de la manipulación de texto "
-"se hace con iteradores, representados por un <code>Gtk.TextIter</code>: una "
-"posición entre dos caracteres en el búfer de texto. Los iteradores no son "
-"válidos indefinidamente; cada vez que se modifica el búfer de alguna manera "
-"que se altere su contenido, todos los iteradores relevantes dejan de ser "
-"válidos. Es por esto que no se pueden usar iteradores para mantener "
-"posiciones entre modificaciones del búfer. Para mantener una posición, se "
-"usa una <code>Gtk.TextMark</code>, que puede hacerse visible con "
-"<code>visible(True)</code>. Un búfer de texto contiene dos marcas "
-"empotradas: una marca «insert» (la posición del cursor) y la marca "
-"«selection_bound»."
-
-#. (itstool) path: section/p
-#: C/textview.py.page:52
-msgid "Methods for a TextView widget:"
-msgstr "Métodos para un widget «TextView»:"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:54
-msgid ""
-"The TextView widget is by default editable. If you prefer otherwise, use "
-"<code>set_editable(False)</code>. If the buffer has no editable text, it "
-"might be a good idea to use <code>set_cursor_visible(False)</code> as well."
-msgstr ""
-"El widget «TextView» es editable de manera predeterminada. Si prefiere que no "
-"lo sea, use <code>set_editable(False)</code>. Si el búfer no tiene texto "
-"editable, puede ser una buena idea usar <code>set_cursor_visible(False)</"
-"code> también."
-
-#. (itstool) path: item/p
-#: C/textview.py.page:55
-msgid ""
-"The justification of the text is set with <code>set_justification(Gtk."
-"Justification.JUSTIFICATION)</code> where <code>JUSTIFICATION</code> is one "
-"of <code>LEFT, RIGHT, CENTER, FILL</code>."
-msgstr ""
-"La alineación del texto se establece con <code>set_justification(Gtk."
-"Justification.JUSTIFICACIÓN)</code> donde <code>JUSTIFICACIÓN</code> puede "
-"ser <code>LEFT, RIGHT, CENTER, FILL</code>."
-
-#. (itstool) path: item/p
-#: C/textview.py.page:56
-msgid ""
-"The line wrapping of the text is set with <code>set_wrap_mode(Gtk.WrapMode."
-"WRAP)</code> where <code>WRAP</code> is one of <code>NONE</code> (the text "
-"area is made wider), <code>CHAR</code> (break lines anywhere the cursor can "
-"appear), <code>WORD</code> (break lines between words), <code>WORD_CHAR</"
-"code> (break lines between words, but if that is not enough between "
-"characters)."
-msgstr ""
-"El ajuste de línea del texto se establece con <code>set_wrap_mode(Gtk."
-"WrapMode.WRAP)</code> donde <code>WRAP</code> es uno de <code>NONE</code> "
-"(el área de texto se hace más ancha), <code>CHAR</code> (rompe líneas en "
-"cualquier lugar en que el cursor pueda aparecer), <code>WORD</code> (rompe "
-"líneas entre palabras), <code>WORD_CHAR</code> (rompe líneas entre palabras, "
-"pero si no es suficiente, entre caracteres)."
-
-#. (itstool) path: section/p
-#: C/textview.py.page:58
-msgid "Methods for a TextBuffer widget:"
-msgstr "Métodos para un widget «TextBuffer»:"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:60
-msgid ""
-"<code>get_insert()</code> returns the <code>Gtk.TextMark</code> that "
-"represents the cursor, that is the insertion point."
-msgstr ""
-"<code>get_insert()</code> devuelve la <code>Gtk.TextMark</code> que "
-"representa al cursor, que es el punto de inserción."
-
-#. (itstool) path: item/p
-#: C/textview.py.page:61
-msgid ""
-"<code>get_selection_bound()</code> returns the <code>Gtk.TextMark</code> "
-"that represents the selection bound."
-msgstr ""
-"<code>get_selection_bound()</code> devuelve la <code>Gtk.TextMark</code> que "
-"representa los límites de la selección."
-
-#. (itstool) path: item/p
-#: C/textview.py.page:62
-msgid ""
-"<code>set_text(\"some text\", length)</code> where <code>length</code> is a "
-"positive integer or <code>-1</code>, sets the content of the buffer as the "
-"first <code>length</code> characters of the <code>\"some text\"</code> text. "
-"If <code>length</code> is omitted or <code>-1</code>, the text is inserted "
-"completely. The content of the buffer, if there is any, is destroyed."
-msgstr ""
-"<code>set_text(\"texto\", longitud)</code> donde <code>longitud</code> es un "
-"entero positivo o <code>-1</code>, establece el contenido del búfer como los "
-"primeros <code>longitud</code> caracteres del <code>\"texto\"</code>. Si se "
-"omite <code>longitud</code> o es <code>-1</code>, se inserta todo el texto. "
-"El contenido del búfer, si existe, se destruye."
-
-#. (itstool) path: item/p
-#: C/textview.py.page:63
-msgid ""
-"<code>insert(iter, \"some text\", length)</code> where <code>iter</code> is "
-"a text iterator and <code>length</code> is a positive integer or <code>-1</"
-"code>, inserts in the buffer at <code>iter</code> the first <code>length</"
-"code> characters of the <code>\"some text\"</code> text. If <code>length</"
-"code> is omitted or <code>-1</code>, the text is inserted completely."
-msgstr ""
-"<code>insert(iter, \"texto\", longitud)</code>, donde <code>iter</code> es "
-"un iterador de texto y <code>longitud</code> es un entero positivo o <code>-"
-"1</code>, inserta en el búfer en <code>iter</code> los primeros "
-"<code>longitud</code> caracteres del <code>texto</code>. Si se omite "
-"<code>longitud</code> o es <code>-1</code>, se inserta todo el texto."
-
-#. (itstool) path: item/p
-#: C/textview.py.page:64
-msgid ""
-"<code>insert_at_cursor(\"some text\", length)</code> does the same as "
-"<code>insert(iter, \"some text\", length)</code>, with the current cursor "
-"taken as <code>iter</code>."
-msgstr ""
-"<code>insert_at_cursor(\"texto\", longitud)</code> hace los mismo que "
-"<code>insert(iter, \"texto\", longitud)</code>, tomando el cursor actual "
-"como <code>iter</code>."
-
-#. (itstool) path: item/p
-#: C/textview.py.page:65
-msgid ""
-"<code>create_mark(\"mark_name\", iter, left_gravity)</code> where "
-"<code>iter</code> is a <code>Gtk.TextIter</code> and <code>left_gravity</"
-"code> is a boolean, creates a <code>Gtk.TextMark</code> at the position of "
-"<code>iter</code>. If <code>\"mark_name\"</code> is <code>None</code>, the "
-"mark is anonymous; otherwise, the mark can be retrieved by name using "
-"<code>get_mark()</code>. If a mark has left gravity, and text is inserted at "
-"the mark’s current location, the mark will be moved to the left of the newly-"
-"inserted text. If <code>left_gravity</code> is omitted, it defaults to "
-"<code>False</code>."
-msgstr ""
-"<code>create_mark(\"nombre_de_la_marca\", iter, gravedad_izquierda)</code> "
-"donde <code>iter</code> es un <code>Gtk.TextIter</code> y "
-"<code>gravedad_izquierda</code> es un booleano, crea una <code>Gtk.TextMark</"
-"code> en la posición de <code>iter</code>. Si <code>\"nombre_de_la_marca\"</"
-"code> es <code>None</code>, la marca es anónima; de lo contrario, la marca "
-"puede obtenerse por su nombre usando <code>get_mark()</code>. Si una marca "
-"tiene gravedad izquierda, y el texto se inserta en la posición actual de la "
-"marca, esta se moverá a la izquierda del texto recién insertado. Si "
-"<code>gravedad_izquierda</code> se omite, su valor predeterminado es "
-"<code>False</code>."
-
-#. (itstool) path: item/p
-#: C/textview.py.page:67
-msgid ""
-"To specify that some text in the buffer should have specific formatting, you "
-"must define a tag to hold that formatting information, and then apply that "
-"tag to the region of text using <code>create_tag(\"tag name\", property)</"
-"code> and <code>apply_tag(tag, start_iter, end_iter)</code> as in, for "
-"instance:"
-msgstr ""
-"Para especificar que algún texto en el búfer debe tener un formato "
-"específico, defina una etiqueta que contenga esa información de formato, y "
-"luego aplíquela a la región de texto usando <code>create_tag(\"nombre de la "
-"etiqueta\", propiedad)</code> y <code>apply_tag(etiqueta, iter_inicial, "
-"iter_final)</code> como en, por ejemplo:"
-
-#. (itstool) path: item/code
-#: C/textview.py.page:68
-#, no-wrap
-msgid ""
-"\n"
-"tag = textbuffer.create_tag(\"orange_bg\", background=\"orange\")\n"
-"textbuffer.apply_tag(tag, start_iter, end_iter)"
-msgstr ""
-"\n"
-"tag = textbuffer.create_tag(\"orange_bg\", background=\"orange\")\n"
-"textbuffer.apply_tag(tag, start_iter, end_iter)"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:71
-msgid "The following are some of the common styles applied to text:"
-msgstr ""
-"A continuación se muestran algunos de los estilos comunes aplicados al texto:"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:73
-msgid "Background colour (\"background\" property)"
-msgstr "Color de fondo (propiedad «background»)"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:74
-msgid "Foreground colour (\"foreground\" property)"
-msgstr "Color de primer plano (propiedad «foreground»)"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:75
-msgid "Underline (\"underline\" property)"
-msgstr "Subrayado (propiedad «underline»)"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:76
-msgid "Bold (\"weight\" property)"
-msgstr "Negrita (propiedad «weight»)"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:77
-msgid "Italics (\"style\" property)"
-msgstr "Cursiva (propiedad «style»)"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:78
-msgid "Strikethrough (\"strikethrough\" property)"
-msgstr "Tachado (propiedad «strikethrough»)"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:79
-msgid "Justification (\"justification\" property)"
-msgstr "Justificación (propiedad «justification»)"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:80
-msgid "Size (\"size\" and \"size-points\" properties)"
-msgstr "Tamaño (propiedades «size» y «size-points»)"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:81
-msgid "Text wrapping (\"wrap-mode\" property)"
-msgstr "Ajuste de texto (propiedad «wrap-mode»)"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:83
-msgid ""
-"You can also delete particular tags later using <code>remove_tag()</code> or "
-"delete all tags in a given region by calling <code>remove_all_tags()</code>."
-msgstr ""
-"También puede eliminar etiquetas particulares más tarde usando "
-"<code>remove_tag()</code> o eliminar todas las etiquetas en una región dada "
-"llamando a <code>remove_all_tags()</code>."
-
-#. (itstool) path: section/p
-#: C/textview.py.page:85
-msgid "Methods for a TextIter widget"
-msgstr "Métodos para un widget «TextIter»"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:87
-msgid ""
-"<code>forward_search(needle, flags, limit)</code> searches forward for "
-"<code>needle</code>. The search will not continue past the <code>Gtk."
-"TextIter</code> limit. The <code>flags</code> can be set to one of the "
-"following, or any combination of it by concatenating them with the bitwise-"
-"OR operator <code>|</code>: <code>0</code> (the match must be exact); "
-"<code>Gtk.TextSearchFlags.VISIBLE_ONLY</code> (the match may have invisible "
-"text interspersed in needle); <code>Gtk.TextSearchFlags.TEXT_ONLY</code> "
-"(the match may have pixbufs or child widgets mixed inside the matched "
-"range); <code>Gtk.TextSearchFlags.CASE_INSENSITIVE</code> (the text will be "
-"matched regardless of what case it is in). The method returns a tuple "
-"containing a <code>Gtk.TextIter</code> pointing to the start and to the "
-"first character after the match; if no match is found, <code>None</code> is "
-"returned."
-msgstr ""
-"<code>forward_search(cadena, banderas, límite)</code> busca <code>cadena</"
-"code> hacia delante. La búsqueda no continuará después del límite <code>Gtk."
-"TextIter</code>. Las <code>banderas</code> pueden ser cualquier combinación "
-"de las siguientes, concatenándolas con el operador OR a nivel de bits <code>|"
-"</code>: <code>0</code> (la coincidencia debe ser exacta); <code>Gtk."
-"TextSearchFlags.VISIBLE_ONLY</code> (la coincidencia puede tener texto "
-"invisible intercalado en «aguja»); <code>Gtk.TextSearchFlags.TEXT_ONLY</code> "
-"(la coincidencia puede tener «pixbufs» o widgets hijos mezclados dentro del "
-"rango coincidente); <code>Gtk.TextSearchFlags.CASE_INSENSITIVE</code> (el "
-"texto coincidirá sin importar su capitalización). El método devuelve una "
-"tupla que contiene un <code>Gtk.TextIter</code> apuntando al inicio y al "
-"primer carácter después de la coincidencia; si no se encuentra, se devuelve "
-"<code>None</code>."
-
-#. (itstool) path: item/p
-#: C/textview.py.page:88
-msgid ""
-"<code>backward_search(needle, flags, limit)</code> does the same as "
-"<code>forward_search()</code>, but moving backwards."
-msgstr ""
-"<code>backward_search(cadena, banderas, límite)</code> hace lo mismo que "
-"<code>forward_search()</code>, pero hacia atrás."
-
-#. (itstool) path: item/p
-#: C/textview.py.page:96
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTextView.html"
-"\">GtkTextView</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTextView.html"
-"\">GtkTextView</link>"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:97
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTextBuffer.html"
-"\">GtkTextBuffer</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTextBuffer.html"
-"\">GtkTextBuffer</link>"
-
-#. (itstool) path: item/p
-#: C/textview.py.page:98
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTextTag.html"
-"\">GtkTextTag</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTextTag.html"
-"\">GtkTextTag</link>"
-
-#. (itstool) path: info/title
-#: C/textview.vala.page:8
-msgctxt "text"
-msgid "TextView (Vala)"
-msgstr "TextView (Vala)"
-
-#. (itstool) path: note/p
-#: C/textview.vala.page:25
-msgid ""
-"If we have a loooooooooooooooooooooooooooooooooooong word, a horizontal "
-"scrollbar will appear."
-msgstr ""
-"Si es escribe una palabra laaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarga, "
-"aparecerá una barra de desplazamiento horizontal."
-
-#. (itstool) path: page/code
-#: C/textview.vala.page:30
-#, no-wrap
-msgid ""
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\t\t/* Create the window of this application. */\n"
-"\t\tnew MyWindow (this).show_all ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the window. */\n"
-"class MyWindow: Gtk.ApplicationWindow {\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"TextView Example\");\n"
-"\t\tthis.set_default_size (220, 200);\n"
-"\n"
-"\t\tvar buffer = new Gtk.TextBuffer (null); //stores text to be displayed\n"
-"\t\tvar textview = new Gtk.TextView.with_buffer (buffer); //displays TextBuffer\n"
-"\t\ttextview.set_wrap_mode (Gtk.WrapMode.WORD); //sets line wrapping\n"
-"\n"
-"\t\tvar scrolled_window = new Gtk.ScrolledWindow (null, null);\n"
-"\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC,\n"
-"\t\t Gtk.PolicyType.AUTOMATIC);\n"
-"\n"
-"\t\tscrolled_window.add (textview);\n"
-"\t\tscrolled_window.set_border_width (5);\n"
-"\n"
-"\t\tthis.add (scrolled_window);\n"
-"\t}\n"
-"}\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"/* This is the application. */\n"
-"public class MyApplication : Gtk.Application {\n"
-"\t/* Override the 'activate' signal of GLib.Application. */\n"
-"\tprotected override void activate () {\n"
-"\t\t/* Create the window of this application. */\n"
-"\t\tnew MyWindow (this).show_all ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the window. */\n"
-"class MyWindow: Gtk.ApplicationWindow {\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"TextView Example\");\n"
-"\t\tthis.set_default_size (220, 200);\n"
-"\n"
-"\t\tvar buffer = new Gtk.TextBuffer (null); //stores text to be displayed\n"
-"\t\tvar textview = new Gtk.TextView.with_buffer (buffer); //displays TextBuffer\n"
-"\t\ttextview.set_wrap_mode (Gtk.WrapMode.WORD); //sets line wrapping\n"
-"\n"
-"\t\tvar scrolled_window = new Gtk.ScrolledWindow (null, null);\n"
-"\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC,\n"
-"\t\t Gtk.PolicyType.AUTOMATIC);\n"
-"\n"
-"\t\tscrolled_window.add (textview);\n"
-"\t\tscrolled_window.set_border_width (5);\n"
-"\n"
-"\t\tthis.add (scrolled_window);\n"
-"\t}\n"
-"}\n"
-"/* main creates and runs the application. */\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/textview.vala.page:35
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TextBuffer.html\">Gtk."
-"TextBuffer</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TextBuffer.html\">Gtk."
-"TextBuffer</link>"
-
-#. (itstool) path: item/p
-#: C/textview.vala.page:36
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TextView.html\">Gtk."
-"TextView</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TextView.html\">Gtk."
-"TextView</link>"
-
-#. (itstool) path: item/p
-#: C/textview.vala.page:38
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.WrapMode.html\">Gtk."
-"WrapMode</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.WrapMode.html\">Gtk."
-"WrapMode</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/togglebutton.c.page:27 C/togglebutton.js.page:22
-#: C/togglebutton.py.page:23 C/togglebutton.vala.page:25
-msgctxt "_"
-msgid ""
-"external ref='media/togglebutton.png' md5='791e062613d4f9bd5936390b0aa18448'"
-msgstr ""
-"external ref='media/togglebutton.png' md5='791e062613d4f9bd5936390b0aa18448'"
-
-#. (itstool) path: info/title
-#: C/togglebutton.c.page:8
-msgctxt "text"
-msgid "ToggleButton (C)"
-msgstr "ToggleButton (C)"
-
-#. (itstool) path: info/desc
-#: C/togglebutton.c.page:22 C/togglebutton.py.page:19
-#: C/togglebutton.vala.page:21
-msgid "A button which retains state"
-msgstr "Un botón que mantiene su estado"
-
-#. (itstool) path: page/title
-#: C/togglebutton.c.page:25 C/togglebutton.js.page:21
-#: C/togglebutton.py.page:22 C/togglebutton.vala.page:24
-msgid "ToggleButton"
-msgstr "ToggleButton"
-
-#. (itstool) path: page/p
-#: C/togglebutton.c.page:28 C/togglebutton.py.page:24
-#: C/togglebutton.vala.page:26
-msgid "When this ToggleButton is in an active state, the spinner spins."
-msgstr "Cuando este ToggleButton está activado, el indicador de progreso gira."
-
-#. (itstool) path: page/code
-#: C/togglebutton.c.page:30
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/*This is the callback function. It is a handler function \n"
-"which reacts to the signal. In this case, it will cause the \n"
-"spinner to start and stop according to how many times the user \n"
-"presses the button.*/\n"
-"static void\n"
-"button_toggled_cb (GtkWidget *button,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *spinner = user_data;\n"
-"\n"
-" if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(button)))\n"
-" gtk_spinner_start (GTK_SPINNER (spinner));\n"
-" else {\n"
-" gtk_spinner_stop (GTK_SPINNER (spinner));\n"
-" }\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *button;\n"
-" GtkWidget *grid;\n"
-" GtkWidget *spinner;\n"
-"\n"
-" /*Create a window with a title, border width and a default size*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"ToggleButton Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);\n"
-" gtk_container_set_border_width(GTK_CONTAINER(window), 30);\n"
-"\n"
-" /*Create a togglebutton with a label*/\n"
-" button = gtk_toggle_button_new_with_label (\"Start/Stop\");\n"
-"\n"
-" /*Create a spinner, with extra horizontal and vertical space*/\n"
-" spinner = gtk_spinner_new ();\n"
-" gtk_widget_set_hexpand (spinner, TRUE);\n"
-" gtk_widget_set_vexpand (spinner, TRUE);\n"
-"\n"
-" /*Create a grid and set the row spacing, attach the togglebutton \n"
-" and spinner onto the grid and position them accordingly*/\n"
-" grid = gtk_grid_new();\n"
-" gtk_grid_set_row_homogeneous (GTK_GRID (grid), FALSE);\n"
-" gtk_grid_set_row_spacing (GTK_GRID (grid), 15);\n"
-" gtk_grid_attach (GTK_GRID (grid), spinner, 0, 0, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), button, 0, 1, 1, 1);\n"
-" \n"
-" gtk_container_add (GTK_CONTAINER (window), grid);\n"
-"\n"
-" /*Connecting the toggled signal to the callback*/\n"
-" g_signal_connect (GTK_TOGGLE_BUTTON (button), \"toggled\", \n"
-" G_CALLBACK (button_toggled_cb), spinner);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"\n"
-"\n"
-"/*This is the callback function. It is a handler function \n"
-"which reacts to the signal. In this case, it will cause the \n"
-"spinner to start and stop according to how many times the user \n"
-"presses the button.*/\n"
-"static void\n"
-"button_toggled_cb (GtkWidget *button,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *spinner = user_data;\n"
-"\n"
-" if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(button)))\n"
-" gtk_spinner_start (GTK_SPINNER (spinner));\n"
-" else {\n"
-" gtk_spinner_stop (GTK_SPINNER (spinner));\n"
-" }\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-" GtkWidget *button;\n"
-" GtkWidget *grid;\n"
-" GtkWidget *spinner;\n"
-"\n"
-" /*Create a window with a title, border width and a default size*/\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"ToggleButton Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);\n"
-" gtk_container_set_border_width(GTK_CONTAINER(window), 30);\n"
-"\n"
-" /*Create a togglebutton with a label*/\n"
-" button = gtk_toggle_button_new_with_label (\"Start/Stop\");\n"
-"\n"
-" /*Create a spinner, with extra horizontal and vertical space*/\n"
-" spinner = gtk_spinner_new ();\n"
-" gtk_widget_set_hexpand (spinner, TRUE);\n"
-" gtk_widget_set_vexpand (spinner, TRUE);\n"
-"\n"
-" /*Create a grid and set the row spacing, attach the togglebutton \n"
-" and spinner onto the grid and position them accordingly*/\n"
-" grid = gtk_grid_new();\n"
-" gtk_grid_set_row_homogeneous (GTK_GRID (grid), FALSE);\n"
-" gtk_grid_set_row_spacing (GTK_GRID (grid), 15);\n"
-" gtk_grid_attach (GTK_GRID (grid), spinner, 0, 0, 1, 1);\n"
-" gtk_grid_attach (GTK_GRID (grid), button, 0, 1, 1, 1);\n"
-" \n"
-" gtk_container_add (GTK_CONTAINER (window), grid);\n"
-"\n"
-" /*Connecting the toggled signal to the callback*/\n"
-" g_signal_connect (GTK_TOGGLE_BUTTON (button), \"toggled\", \n"
-" G_CALLBACK (button_toggled_cb), spinner);\n"
-"\n"
-" gtk_widget_show_all (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/togglebutton.c.page:39
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToggleButton.html"
-"\">GtkTogglebutton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToggleButton.html"
-"\">GtkTogglebutton</link>"
-
-#. (itstool) path: info/title
-#: C/togglebutton.js.page:8
-msgctxt "text"
-msgid "ToggleButton (JavaScript)"
-msgstr "ToggleButton (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/togglebutton.js.page:18
-msgid "Stays pressed until you click it again"
-msgstr "Se mantiene presionado hasta que lo pulsa de nuevo"
-
-#. (itstool) path: page/p
-#: C/togglebutton.js.page:23
-msgid ""
-"A ToggleButton is like a normal <link xref=\"button.js\">Button</link>, "
-"except that it stays pressed in when you click it. You can use it like an on/"
-"off switch, to control things like the <link xref=\"spinner.js\">Spinner</"
-"link> in this example."
-msgstr ""
-"Un «ToggleButton» es como un <link xref=\"button.js\">Button</link> normal, "
-"excepto que se mantiene presionado cuando pulsa en él. Puede usarlo como un "
-"conmutador de encendido/apagado, para controlar cosas como el <link xref="
-"\"spinner.js\">Spinner</link> en este ejemplo."
-
-#. (itstool) path: page/p
-#: C/togglebutton.js.page:24
-msgid ""
-"A ToggleButton's get_active method returns true if it's pressed in, and "
-"false if it's not. Its set_active method is used if you want to change its "
-"state without needing to click on it. When it changes state from pressed in "
-"to popped out and vice-versa, it sends out the \"toggled\" signal, which you "
-"can connect to a function to do something."
-msgstr ""
-"El método «get_active» del ToggleButton devuelve «true» si está presionado, y "
-"«false» si no lo está. Su método «set_active» se usa si quiere cambiar su "
-"estado sin la necesidad de pulsarlo. Cuando cambia su estado de «pulsado» a "
-"«no pulsado» y viceversa, envía la señal «toggled», que puede conectar a una "
-"función para hacer algo."
-
-#. (itstool) path: section/code
-#: C/togglebutton.js.page:41
-#, no-wrap
-msgid ""
-"\n"
-"const ToggleButtonExample = new Lang.Class({\n"
-" Name: 'ToggleButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jstogglebutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-"const ToggleButtonExample = new Lang.Class({\n"
-" Name: 'ToggleButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jstogglebutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: section/code
-#: C/togglebutton.js.page:68
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 300,\n"
-" default_width: 300,\n"
-" border_width: 30,\n"
-" title: \"ToggleButton Example\"});\n"
-msgstr ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 300,\n"
-" default_width: 300,\n"
-" border_width: 30,\n"
-" title: \"ToggleButton Example\"});\n"
-
-#. (itstool) path: section/title
-#: C/togglebutton.js.page:85
-msgid "Creating the ToggleButton and other widgets"
-msgstr "Crear el «ToggleButton» y otros widgets"
-
-#. (itstool) path: section/code
-#: C/togglebutton.js.page:86
-#, no-wrap
-msgid ""
-"\n"
-" // Create the spinner that the button stops and starts\n"
-" this._spinner = new Gtk.Spinner ({hexpand: true, vexpand: true});\n"
-msgstr ""
-"\n"
-" // Create the spinner that the button stops and starts\n"
-" this._spinner = new Gtk.Spinner ({hexpand: true, vexpand: true});\n"
-
-#. (itstool) path: section/p
-#: C/togglebutton.js.page:91
-msgid ""
-"We want this <link xref=\"spinner.js\">Spinner</link> to expand vertically "
-"and horizontally, to take up as much space as possible inside the window."
-msgstr ""
-"Se quiere que este <link xref=\"spinner.js\">Spinner</link> se expanda "
-"vertical y horizontalmente, para llenar tanto espacio como sea posible "
-"dentro de la ventana."
-
-#. (itstool) path: section/code
-#: C/togglebutton.js.page:93
-#, no-wrap
-msgid ""
-"\n"
-" // Create the togglebutton that starts and stops the spinner\n"
-" this._toggleButton = new Gtk.ToggleButton ({label: \"Start/Stop\"});\n"
-" this._toggleButton.connect ('toggled', Lang.bind (this, this._onToggle));\n"
-msgstr ""
-"\n"
-" // Create the togglebutton that starts and stops the spinner\n"
-" this._toggleButton = new Gtk.ToggleButton ({label: \"Start/Stop\"});\n"
-" this._toggleButton.connect ('toggled', Lang.bind (this, this._onToggle));\n"
-
-#. (itstool) path: section/p
-#: C/togglebutton.js.page:99
-msgid ""
-"Creating a ToggleButton is a lot like creating a normal <link xref=\"button."
-"js\">Button</link>. The biggest difference is that you're handling a "
-"\"toggled\" signal instead of a \"clicked\" signal. This code binds the "
-"_onToggle function to that signal, so that it's called whenever our "
-"ToggleButton is toggled."
-msgstr ""
-"Crear un ToggleButton es muy similar a crear un <link xref=\"button.js"
-"\">Button</link> normal. La mayor diferencia es que está manejando una señal "
-"«toggled» en lugar de una «clicked». Este código vincula la función _onToggle "
-"a esa señal, para que se llame cada vez que se conmute el ToggleButton."
-
-#. (itstool) path: section/code
-#: C/togglebutton.js.page:101
-#, no-wrap
-msgid ""
-"\n"
-" // Create a grid and put everything in it\n"
-" this._grid = new Gtk.Grid ({\n"
-" row_homogeneous: false,\n"
-" row_spacing: 15});\n"
-" this._grid.attach (this._spinner, 0, 0, 1, 1);\n"
-" this._grid.attach (this._toggleButton, 0, 1, 1, 1);\n"
-msgstr ""
-"\n"
-" // Create a grid and put everything in it\n"
-" this._grid = new Gtk.Grid ({\n"
-" row_homogeneous: false,\n"
-" row_spacing: 15});\n"
-" this._grid.attach (this._spinner, 0, 0, 1, 1);\n"
-" this._grid.attach (this._toggleButton, 0, 1, 1, 1);\n"
-
-#. (itstool) path: section/p
-#: C/togglebutton.js.page:109
-msgid ""
-"Here we create a simple <link xref=\"grid.js\">Grid</link> to organize "
-"everything in, then attach the Spinner and ToggleButton to it."
-msgstr ""
-"Aquí se crea una <link xref=\"grid.js\">Rejilla</link> simple para organizar "
-"todo dentro, y después se le adjuntan el «Spinner» y el «ToggleButton»."
-
-#. (itstool) path: section/code
-#: C/togglebutton.js.page:111
-#, no-wrap
-msgid ""
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-msgstr ""
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/togglebutton.js.page:119
-msgid ""
-"Now we add the Grid to the Window, and tell the Window to show itself and "
-"its child widgets when the application is started."
-msgstr ""
-"Ahora se añade la rejilla a la ventana, y se le dice a esta que se muestre "
-"con sus widgets hijos cuando la aplicación arranque."
-
-#. (itstool) path: section/title
-#: C/togglebutton.js.page:123
-msgid "Making something happen when the ToggleButton is toggled"
-msgstr "Hacer que algo suceda cuando se conmute el ToggleButton"
-
-#. (itstool) path: section/code
-#: C/togglebutton.js.page:125
-#, no-wrap
-msgid ""
-"\n"
-" _onToggle: function() {\n"
-"\n"
-" // Start or stop the spinner\n"
-" if (this._toggleButton.get_active ())\n"
-" this._spinner.start ();\n"
-" else this._spinner.stop ();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-msgstr ""
-"\n"
-" _onToggle: function() {\n"
-"\n"
-" // Start or stop the spinner\n"
-" if (this._toggleButton.get_active ())\n"
-" this._spinner.start ();\n"
-" else this._spinner.stop ();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-
-#. (itstool) path: section/p
-#: C/togglebutton.js.page:137
-msgid ""
-"Whenever someone toggles the button, this function checks what its state is "
-"afterwards using get_active and starts or stops the spinner accordingly. We "
-"want it to spin only while the button is pressed in, so if get_active "
-"returns true we start the spinner. Otherwise, we tell it to stop."
-msgstr ""
-"Cada vez que alguien conmuta el botón, esta función verifica cuál es su "
-"estado nuevo usando «get_active» e inicia o detiene el «spinner» "
-"consecuentemente. Se quiere que gire sólo cuando el botón está presionado, "
-"por lo que si «get_active» devuelve «true» se inicia el «spinner». De lo "
-"contrario, se le dice que se detenga."
-
-#. (itstool) path: section/code
-#: C/togglebutton.js.page:139
-#, no-wrap
-msgid ""
-"\n"
-"// Run the application\n"
-"let app = new ToggleButtonExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"// Run the application\n"
-"let app = new ToggleButtonExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/code
-#: C/togglebutton.js.page:149
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ToggleButtonExample = new Lang.Class({\n"
-" Name: 'ToggleButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jstogglebutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 300,\n"
-" default_width: 300,\n"
-" border_width: 30,\n"
-" title: \"ToggleButton Example\"});\n"
-"\n"
-" // Create the spinner that the button stops and starts\n"
-" this._spinner = new Gtk.Spinner ({hexpand: true, vexpand: true});\n"
-"\n"
-" // Create the togglebutton that starts and stops the spinner\n"
-" this._toggleButton = new Gtk.ToggleButton ({label: \"Start/Stop\"});\n"
-" this._toggleButton.connect ('toggled', Lang.bind (this, this._onToggle));\n"
-"\n"
-" // Create a grid and put everything in it\n"
-" this._grid = new Gtk.Grid ({\n"
-" row_homogeneous: false,\n"
-" row_spacing: 15});\n"
-" this._grid.attach (this._spinner, 0, 0, 1, 1);\n"
-" this._grid.attach (this._toggleButton, 0, 1, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _onToggle: function() {\n"
-"\n"
-" // Start or stop the spinner\n"
-" if (this._toggleButton.get_active ())\n"
-" this._spinner.start ();\n"
-" else this._spinner.stop ();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ToggleButtonExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const ToggleButtonExample = new Lang.Class({\n"
-" Name: 'ToggleButton Example',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jstogglebutton',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 300,\n"
-" default_width: 300,\n"
-" border_width: 30,\n"
-" title: \"ToggleButton Example\"});\n"
-"\n"
-" // Create the spinner that the button stops and starts\n"
-" this._spinner = new Gtk.Spinner ({hexpand: true, vexpand: true});\n"
-"\n"
-" // Create the togglebutton that starts and stops the spinner\n"
-" this._toggleButton = new Gtk.ToggleButton ({label: \"Start/Stop\"});\n"
-" this._toggleButton.connect ('toggled', Lang.bind (this, this._onToggle));\n"
-"\n"
-" // Create a grid and put everything in it\n"
-" this._grid = new Gtk.Grid ({\n"
-" row_homogeneous: false,\n"
-" row_spacing: 15});\n"
-" this._grid.attach (this._spinner, 0, 0, 1, 1);\n"
-" this._grid.attach (this._toggleButton, 0, 1, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _onToggle: function() {\n"
-"\n"
-" // Start or stop the spinner\n"
-" if (this._toggleButton.get_active ())\n"
-" this._spinner.start ();\n"
-" else this._spinner.stop ();\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new ToggleButtonExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/togglebutton.js.page:159
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ToggleButton."
-"html\">Gtk.ToggleButton</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ToggleButton."
-"html\">Gtk.ToggleButton</link>"
-
-#. (itstool) path: info/title
-#: C/togglebutton.py.page:8
-msgctxt "text"
-msgid "ToggleButton (Python)"
-msgstr "ToggleButton (Python)"
-
-#. (itstool) path: section/code
-#: C/togglebutton.py.page:31
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(\n"
-" self, title=\"ToggleButton Example\", application=app)\n"
-" self.set_default_size(300, 300)\n"
-" self.set_border_width(30)\n"
-"\n"
-" # a spinner animation\n"
-" self.spinner = Gtk.Spinner()\n"
-" # with extra horizontal space\n"
-" self.spinner.set_hexpand(True)\n"
-" # with extra vertical space\n"
-" self.spinner.set_vexpand(True)\n"
-"\n"
-" # a togglebutton\n"
-" button = Gtk.ToggleButton.new_with_label(\"Start/Stop\")\n"
-" # connect the signal \"toggled\" emitted by the togglebutton\n"
-" # when its state is changed to the callback function toggled_cb\n"
-" button.connect(\"toggled\", self.toggled_cb)\n"
-"\n"
-" # a grid to allocate the widgets\n"
-" grid = Gtk.Grid()\n"
-" grid.set_row_homogeneous(False)\n"
-" grid.set_row_spacing(15)\n"
-" grid.attach(self.spinner, 0, 0, 1, 1)\n"
-" grid.attach(button, 0, 1, 1, 1)\n"
-"\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" # callback function for the signal \"toggled\"\n"
-" def toggled_cb(self, button):\n"
-" # if the togglebutton is active, start the spinner\n"
-" if button.get_active():\n"
-" self.spinner.start()\n"
-" # else, stop it\n"
-" else:\n"
-" self.spinner.stop()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-" # a window\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(\n"
-" self, title=\"ToggleButton Example\", application=app)\n"
-" self.set_default_size(300, 300)\n"
-" self.set_border_width(30)\n"
-"\n"
-" # a spinner animation\n"
-" self.spinner = Gtk.Spinner()\n"
-" # with extra horizontal space\n"
-" self.spinner.set_hexpand(True)\n"
-" # with extra vertical space\n"
-" self.spinner.set_vexpand(True)\n"
-"\n"
-" # a togglebutton\n"
-" button = Gtk.ToggleButton.new_with_label(\"Start/Stop\")\n"
-" # connect the signal \"toggled\" emitted by the togglebutton\n"
-" # when its state is changed to the callback function toggled_cb\n"
-" button.connect(\"toggled\", self.toggled_cb)\n"
-"\n"
-" # a grid to allocate the widgets\n"
-" grid = Gtk.Grid()\n"
-" grid.set_row_homogeneous(False)\n"
-" grid.set_row_spacing(15)\n"
-" grid.attach(self.spinner, 0, 0, 1, 1)\n"
-" grid.attach(button, 0, 1, 1, 1)\n"
-"\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" # callback function for the signal \"toggled\"\n"
-" def toggled_cb(self, button):\n"
-" # if the togglebutton is active, start the spinner\n"
-" if button.get_active():\n"
-" self.spinner.start()\n"
-" # else, stop it\n"
-" else:\n"
-" self.spinner.stop()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/togglebutton.py.page:36
-msgid "Useful methods for a ToggleButton widget"
-msgstr "Métodos útiles para un widget «ToggleButton»"
-
-#. (itstool) path: section/p
-#: C/togglebutton.py.page:37
-msgid ""
-"In line 22 the signal <code>\"toggled\"</code> is connected to the callback "
-"function <code>toggled_cb()</code> using <code><var>widget</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 22, la señal <code>«toggled»</code> se conecta a la función de "
-"retorno de llamada <code>toggled_cb()</code> usando <code><var>widget</var>."
-"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
-"detallada."
-
-#. (itstool) path: item/p
-#: C/togglebutton.py.page:45 C/toolbar.py.page:60
-#: C/toolbar_builder.py.page:198 C/widget_drawing.py.page:38
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkWidget.html"
-"\">GtkWidget</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkWidget.html"
-"\">GtkWidget</link>"
-
-#. (itstool) path: info/title
-#: C/togglebutton.vala.page:8
-msgctxt "text"
-msgid "ToggleButton (Vala)"
-msgstr "ToggleButton (Vala)"
-
-#. (itstool) path: page/code
-#: C/togglebutton.vala.page:28
-#, no-wrap
-msgid ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\tGtk.Spinner spinner;\n"
-"\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"ToggleButton Example\");\n"
-"\n"
-"\t\tthis.set_default_size (300, 300);\n"
-"\t\tthis.border_width = 30;\n"
-"\n"
-"\t\t/*Spinner*/\n"
-"\t\tspinner = new Gtk.Spinner ();\n"
-"\t\tspinner.set_hexpand (true);\n"
-"\t\tspinner.set_vexpand (true);\n"
-"\n"
-"\t\t/*ToggleButton*/\n"
-"\t\tvar togglebutton = new Gtk.ToggleButton.with_label (\"Start/Stop\");\n"
-"\t\ttogglebutton.toggled.connect (toggled_cb);\n"
-"\n"
-"\t\t/*Grid*/\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tgrid.set_row_homogeneous (false);\n"
-"\t\tgrid.set_row_spacing (15);\n"
-"\t\tgrid.attach (spinner, 0, 0, 1, 1);\n"
-"\t\tgrid.attach (togglebutton, 0, 1, 1, 1);\n"
-"\n"
-"\t\tthis.add (grid);\n"
-"\t}\n"
-"\n"
-"\tvoid toggled_cb (Gtk.ToggleButton button) {\n"
-"\t\tif (button.get_active()) {\n"
-"\t\t\tspinner.start ();\n"
-"\t\t}\n"
-"\t\telse {\n"
-"\t\t\tspinner.stop ();\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t//Show all the things\n"
-"\t\tnew MyWindow (this).show_all ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.spinner\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"public class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\tGtk.Spinner spinner;\n"
-"\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"ToggleButton Example\");\n"
-"\n"
-"\t\tthis.set_default_size (300, 300);\n"
-"\t\tthis.border_width = 30;\n"
-"\n"
-"\t\t/*Spinner*/\n"
-"\t\tspinner = new Gtk.Spinner ();\n"
-"\t\tspinner.set_hexpand (true);\n"
-"\t\tspinner.set_vexpand (true);\n"
-"\n"
-"\t\t/*ToggleButton*/\n"
-"\t\tvar togglebutton = new Gtk.ToggleButton.with_label (\"Start/Stop\");\n"
-"\t\ttogglebutton.toggled.connect (toggled_cb);\n"
-"\n"
-"\t\t/*Grid*/\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tgrid.set_row_homogeneous (false);\n"
-"\t\tgrid.set_row_spacing (15);\n"
-"\t\tgrid.attach (spinner, 0, 0, 1, 1);\n"
-"\t\tgrid.attach (togglebutton, 0, 1, 1, 1);\n"
-"\n"
-"\t\tthis.add (grid);\n"
-"\t}\n"
-"\n"
-"\tvoid toggled_cb (Gtk.ToggleButton button) {\n"
-"\t\tif (button.get_active()) {\n"
-"\t\t\tspinner.start ();\n"
-"\t\t}\n"
-"\t\telse {\n"
-"\t\t\tspinner.stop ();\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"public class MyApplication : Gtk.Application {\n"
-"\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t//Show all the things\n"
-"\t\tnew MyWindow (this).show_all ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"org.example.spinner\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"public int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/togglebutton.vala.page:33
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ToggleButton.html\">Gtk."
-"ToggleButton</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ToggleButton.html\">Gtk."
-"ToggleButton</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/toolbar.c.page:25 C/toolbar.js.page:22 C/toolbar.py.page:25
-#: C/toolbar.vala.page:24 C/toolbar_builder.py.page:38
-#: C/toolbar_builder.vala.page:25
-msgctxt "_"
-msgid "external ref='media/toolbar.png' md5='f0350855eedf6343952b72d6d906f738'"
-msgstr ""
-"external ref='media/toolbar.png' md5='f0350855eedf6343952b72d6d906f738'"
-
-#. (itstool) path: info/title
-#: C/toolbar.c.page:8
-msgctxt "text"
-msgid "Toolbar (C)"
-msgstr "Barra de herramientas (C)"
-
-#. (itstool) path: info/desc
-#: C/toolbar.c.page:20 C/toolbar.vala.page:19 C/toolbar_builder.vala.page:20
-msgid "A bar of buttons"
-msgstr "Una barra de botones"
-
-#. (itstool) path: page/title
-#: C/toolbar.c.page:23 C/toolbar.js.page:21 C/toolbar.py.page:23
-#: C/toolbar.vala.page:22
-msgid "Toolbar"
-msgstr "Barra de herramientas"
-
-#. (itstool) path: page/p
-#: C/toolbar.c.page:26 C/toolbar.js.page:23 C/toolbar.vala.page:25
-msgid ""
-"Toolbar can contain either text or stock icons. In this sample we use stock "
-"icons. This example has fullscreen functionality."
-msgstr ""
-"La barra de herramientas puede contener texto o iconos del almacén. En este "
-"ejemplo se usan iconos del almacén. Este ejemplo funciona a pantalla "
-"completa."
-
-#. (itstool) path: page/p
-#: C/toolbar.c.page:27
-msgid ""
-"This example uses SimpleActions (window and app). App actions can easily be "
-"added to the app menu."
-msgstr ""
-"Este ejemplo usa «SimpleActions» (ventana y aplicación). Las acciones de la "
-"aplicación se pueden añadir fácilmente al menú de la aplicación."
-
-#. (itstool) path: page/code
-#: C/toolbar.c.page:29
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"/* Declare these two Toolbuttons, as they will be used in both the fullscreen\n"
-" * action callback as well as the activate function.\n"
-" */\n"
-"GtkToolItem *fullscreen_button;\n"
-"GtkToolItem *leavefullscreen_button;\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the undo action */\n"
-"static void\n"
-"undo_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"Undo\\\".\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the fullscreen action */\n"
-"static void\n"
-"fullscreen_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GdkWindow *window = gtk_widget_get_window (GTK_WIDGET (user_data));\n"
-"\n"
-" GdkWindowState current_state = gdk_window_get_state (window);\n"
-"\n"
-" /* If the window is currently in fullscreen mode */\n"
-" if ( (current_state & GDK_WINDOW_STATE_FULLSCREEN) != 0)\n"
-" {\n"
-" /* Minimize the window and change to the fullscreen button */\n"
-" gdk_window_unfullscreen (window);\n"
-" gtk_widget_hide (GTK_WIDGET(leavefullscreen_button));\n"
-" gtk_widget_show (GTK_WIDGET(fullscreen_button));\n"
-" }\n"
-" else\n"
-" {\n"
-" /* Maximize the window, and change to the unfullscreen button */\n"
-" gdk_window_fullscreen (window);\n"
-" gtk_widget_hide (GTK_WIDGET (fullscreen_button));\n"
-" gtk_widget_show (GTK_WIDGET (leavefullscreen_button));\n"
-" }\n"
-"}\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* Initialize variables */\n"
-" GtkWidget *window;\n"
-" GtkWidget *grid;\n"
-" GtkWidget *toolbar;\n"
-"\n"
-" GtkToolItem *new_button;\n"
-" GtkToolItem *open_button;\n"
-" GtkToolItem *undo_button;\n"
-"\n"
-" GtkStyleContext *style_context;\n"
-"\n"
-" GSimpleAction *undo_action;\n"
-" GSimpleAction *fullscreen_action;\n"
-" GSimpleAction *leavefullscreen_action;\n"
-"\n"
-" /* Create a window with a title and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Toolbar Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n"
-"\n"
-" /* Here we begin to create the toolbar */\n"
-" toolbar = gtk_toolbar_new ();\n"
-" /* Set the toolbar to be the primary toolbar of the application */\n"
-" style_context = gtk_widget_get_style_context (toolbar);\n"
-" gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);\n"
-"\n"
-" /* Create a button for the \"new\" action, with a stock image */\n"
-" new_button = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);\n"
-" /* Show the \"new\" button's label */\n"
-" gtk_tool_item_set_is_important (new_button, TRUE);\n"
-" /* Insert the button in the desired position within the toolbar */\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), new_button, 0);\n"
-" /* Show the button */\n"
-" gtk_widget_show (GTK_WIDGET (new_button));\n"
-" /* Set the action name for the \"new\" action. We use \"app.new\" to\n"
-" * indicate that the action controls the application.\n"
-" */\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (new_button), \"app.new\");\n"
-"\n"
-" /* Repeat the same steps for the \"open\" action */\n"
-" open_button = gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);\n"
-" gtk_tool_item_set_is_important (open_button, TRUE);\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), open_button, 1);\n"
-" gtk_widget_show (GTK_WIDGET (open_button));\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (open_button), \"app.open\");\n"
-"\n"
-" /* Repeat the same steps for the \"undo\" action */\n"
-" undo_button = gtk_tool_button_new_from_stock (GTK_STOCK_UNDO);\n"
-" gtk_tool_item_set_is_important (undo_button, TRUE);\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), undo_button, 2);\n"
-" gtk_widget_show (GTK_WIDGET (undo_button));\n"
-" /* In this case, we use \"win.undo\" to indicate that\n"
-" * the action controls only the window\n"
-" */\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (undo_button), \"win.undo\");\n"
-"\n"
-" /* Repeat the same steps for the \"fullscreen\" action */\n"
-" fullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_FULLSCREEN);\n"
-" gtk_tool_item_set_is_important (fullscreen_button, TRUE);\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), fullscreen_button, 3);\n"
-" gtk_widget_show (GTK_WIDGET (fullscreen_button));\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (fullscreen_button),\n"
-" \"win.fullscreen\");\n"
-"\n"
-" /*Repeat the same steps for the \"leavefullscreen\" action */\n"
-" leavefullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_LEAVE_FULLSCREEN);\n"
-" gtk_tool_item_set_is_important (leavefullscreen_button, TRUE);\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), leavefullscreen_button, 3);\n"
-" /* The only difference here is that we don't show the leavefullscreen button,\n"
-" * as it will later replace the fullscreen button.\n"
-" */\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (leavefullscreen_button),\n"
-" \"win.leavefullscreen\");\n"
-"\n"
-" /* Once we've created the bare-bones of the toolbar, we make\n"
-" * sure it has enough horizontal space.\n"
-" */\n"
-" gtk_widget_set_hexpand (toolbar, TRUE);\n"
-" gtk_widget_show (toolbar);\n"
-"\n"
-" /* Attach the toolbar to the grid and add it to the overall window */\n"
-" grid = gtk_grid_new ();\n"
-" gtk_grid_attach (GTK_GRID (grid), toolbar, 0, 0, 1, 1);\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
-" gtk_widget_show (GTK_WIDGET (grid));\n"
-"\n"
-" /* Use the action names to create the actions that control the window, and\n"
-" * connect them to the appropriate callbackfunctions.\n"
-" */\n"
-" undo_action = g_simple_action_new (\"undo\", NULL);\n"
-" g_signal_connect (undo_action, \"activate\", G_CALLBACK (undo_callback),\n"
-" GTK_WINDOW (window));\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (undo_action));\n"
-"\n"
-" fullscreen_action = g_simple_action_new (\"fullscreen\", NULL);\n"
-" g_signal_connect (fullscreen_action, \"activate\", G_CALLBACK (fullscreen_callback),\n"
-" GTK_WINDOW (window));\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (fullscreen_action));\n"
-"\n"
-" leavefullscreen_action = g_simple_action_new (\"leavefullscreen\", NULL);\n"
-" g_signal_connect (leavefullscreen_action, \"activate\", G_CALLBACK (fullscreen_callback),\n"
-" GTK_WINDOW (window));\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (leavefullscreen_action));\n"
-"\n"
-" gtk_widget_show (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the new action */\n"
-"static void\n"
-"new_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"New\\\".\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the open action */\n"
-"static void\n"
-"open_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"Open\\\".\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* In this function, we create the actions in which control the window, and\n"
-" * connect their signals to the appropriate callback function.\n"
-" */\n"
-"static void\n"
-"startup (GApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GSimpleAction *new_action;\n"
-" GSimpleAction *open_action;\n"
-"\n"
-" new_action = g_simple_action_new (\"new\", NULL);\n"
-" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
-"\n"
-" open_action = g_simple_action_new (\"open\", NULL);\n"
-" g_signal_connect (open_action, \"activate\", G_CALLBACK (open_callback), app);\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (open_action));\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the application */\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"/* Declare these two Toolbuttons, as they will be used in both the fullscreen\n"
-" * action callback as well as the activate function.\n"
-" */\n"
-"GtkToolItem *fullscreen_button;\n"
-"GtkToolItem *leavefullscreen_button;\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the undo action */\n"
-"static void\n"
-"undo_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"Undo\\\".\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the fullscreen action */\n"
-"static void\n"
-"fullscreen_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" GdkWindow *window = gtk_widget_get_window (GTK_WIDGET (user_data));\n"
-"\n"
-" GdkWindowState current_state = gdk_window_get_state (window);\n"
-"\n"
-" /* If the window is currently in fullscreen mode */\n"
-" if ( (current_state & GDK_WINDOW_STATE_FULLSCREEN) != 0)\n"
-" {\n"
-" /* Minimize the window and change to the fullscreen button */\n"
-" gdk_window_unfullscreen (window);\n"
-" gtk_widget_hide (GTK_WIDGET(leavefullscreen_button));\n"
-" gtk_widget_show (GTK_WIDGET(fullscreen_button));\n"
-" }\n"
-" else\n"
-" {\n"
-" /* Maximize the window, and change to the unfullscreen button */\n"
-" gdk_window_fullscreen (window);\n"
-" gtk_widget_hide (GTK_WIDGET (fullscreen_button));\n"
-" gtk_widget_show (GTK_WIDGET (leavefullscreen_button));\n"
-" }\n"
-"}\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* Initialize variables */\n"
-" GtkWidget *window;\n"
-" GtkWidget *grid;\n"
-" GtkWidget *toolbar;\n"
-"\n"
-" GtkToolItem *new_button;\n"
-" GtkToolItem *open_button;\n"
-" GtkToolItem *undo_button;\n"
-"\n"
-" GtkStyleContext *style_context;\n"
-"\n"
-" GSimpleAction *undo_action;\n"
-" GSimpleAction *fullscreen_action;\n"
-" GSimpleAction *leavefullscreen_action;\n"
-"\n"
-" /* Create a window with a title and a default size */\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Toolbar Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n"
-"\n"
-" /* Here we begin to create the toolbar */\n"
-" toolbar = gtk_toolbar_new ();\n"
-" /* Set the toolbar to be the primary toolbar of the application */\n"
-" style_context = gtk_widget_get_style_context (toolbar);\n"
-" gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);\n"
-"\n"
-" /* Create a button for the \"new\" action, with a stock image */\n"
-" new_button = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);\n"
-" /* Show the \"new\" button's label */\n"
-" gtk_tool_item_set_is_important (new_button, TRUE);\n"
-" /* Insert the button in the desired position within the toolbar */\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), new_button, 0);\n"
-" /* Show the button */\n"
-" gtk_widget_show (GTK_WIDGET (new_button));\n"
-" /* Set the action name for the \"new\" action. We use \"app.new\" to\n"
-" * indicate that the action controls the application.\n"
-" */\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (new_button), \"app.new\");\n"
-"\n"
-" /* Repeat the same steps for the \"open\" action */\n"
-" open_button = gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);\n"
-" gtk_tool_item_set_is_important (open_button, TRUE);\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), open_button, 1);\n"
-" gtk_widget_show (GTK_WIDGET (open_button));\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (open_button), \"app.open\");\n"
-"\n"
-" /* Repeat the same steps for the \"undo\" action */\n"
-" undo_button = gtk_tool_button_new_from_stock (GTK_STOCK_UNDO);\n"
-" gtk_tool_item_set_is_important (undo_button, TRUE);\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), undo_button, 2);\n"
-" gtk_widget_show (GTK_WIDGET (undo_button));\n"
-" /* In this case, we use \"win.undo\" to indicate that\n"
-" * the action controls only the window\n"
-" */\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (undo_button), \"win.undo\");\n"
-"\n"
-" /* Repeat the same steps for the \"fullscreen\" action */\n"
-" fullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_FULLSCREEN);\n"
-" gtk_tool_item_set_is_important (fullscreen_button, TRUE);\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), fullscreen_button, 3);\n"
-" gtk_widget_show (GTK_WIDGET (fullscreen_button));\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (fullscreen_button),\n"
-" \"win.fullscreen\");\n"
-"\n"
-" /*Repeat the same steps for the \"leavefullscreen\" action */\n"
-" leavefullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_LEAVE_FULLSCREEN);\n"
-" gtk_tool_item_set_is_important (leavefullscreen_button, TRUE);\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), leavefullscreen_button, 3);\n"
-" /* The only difference here is that we don't show the leavefullscreen button,\n"
-" * as it will later replace the fullscreen button.\n"
-" */\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (leavefullscreen_button),\n"
-" \"win.leavefullscreen\");\n"
-"\n"
-" /* Once we've created the bare-bones of the toolbar, we make\n"
-" * sure it has enough horizontal space.\n"
-" */\n"
-" gtk_widget_set_hexpand (toolbar, TRUE);\n"
-" gtk_widget_show (toolbar);\n"
-"\n"
-" /* Attach the toolbar to the grid and add it to the overall window */\n"
-" grid = gtk_grid_new ();\n"
-" gtk_grid_attach (GTK_GRID (grid), toolbar, 0, 0, 1, 1);\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
-" gtk_widget_show (GTK_WIDGET (grid));\n"
-"\n"
-" /* Use the action names to create the actions that control the window, and\n"
-" * connect them to the appropriate callbackfunctions.\n"
-" */\n"
-" undo_action = g_simple_action_new (\"undo\", NULL);\n"
-" g_signal_connect (undo_action, \"activate\", G_CALLBACK (undo_callback),\n"
-" GTK_WINDOW (window));\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (undo_action));\n"
-"\n"
-" fullscreen_action = g_simple_action_new (\"fullscreen\", NULL);\n"
-" g_signal_connect (fullscreen_action, \"activate\", G_CALLBACK (fullscreen_callback),\n"
-" GTK_WINDOW (window));\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (fullscreen_action));\n"
-"\n"
-" leavefullscreen_action = g_simple_action_new (\"leavefullscreen\", NULL);\n"
-" g_signal_connect (leavefullscreen_action, \"activate\", G_CALLBACK (fullscreen_callback),\n"
-" GTK_WINDOW (window));\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (leavefullscreen_action));\n"
-"\n"
-" gtk_widget_show (window);\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the new action */\n"
-"static void\n"
-"new_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"New\\\".\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Callback function for the open action */\n"
-"static void\n"
-"open_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"Open\\\".\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* In this function, we create the actions in which control the window, and\n"
-" * connect their signals to the appropriate callback function.\n"
-" */\n"
-"static void\n"
-"startup (GApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GSimpleAction *new_action;\n"
-" GSimpleAction *open_action;\n"
-"\n"
-" new_action = g_simple_action_new (\"new\", NULL);\n"
-" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
-"\n"
-" open_action = g_simple_action_new (\"open\", NULL);\n"
-" g_signal_connect (open_action, \"activate\", G_CALLBACK (open_callback), app);\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (open_action));\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the application */\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/toolbar.c.page:35 C/tooltip.c.page:39 C/tooltip.py.page:60
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToolbar.html"
-"\">GtkToolbar</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToolbar.html"
-"\">GtkToolbar</link>"
-
-#. (itstool) path: item/p
-#: C/toolbar.c.page:36
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToolButton.html"
-"\">GtkToolbutton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToolButton.html"
-"\">GtkToolbutton</link>"
-
-#. (itstool) path: info/title
-#: C/toolbar.js.page:8
-msgctxt "text"
-msgid "Toolbar (JavaScript)"
-msgstr "Toolbar (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/toolbar.js.page:18
-msgid "A bar of tools"
-msgstr "Una barra de botones"
-
-#. (itstool) path: page/p
-#: C/toolbar.js.page:24 C/toolbar.vala.page:26
-msgid ""
-"This example uses SimpleActions (window and app). App actions can easily be "
-"added the the app menu."
-msgstr ""
-"Este ejemplo usa SimpleActions (ventana y aplicación). Las acciones de la "
-"aplicación se pueden añadir fácilmente al menú de la aplicación."
-
-#. (itstool) path: page/code
-#: C/toolbar.js.page:26
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gdk = imports.gi.Gdk;\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const Application = new Lang.Class({\n"
-" Name: 'Application',\n"
-"\n"
-" //create the application\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.myapp',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" //connect to 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" //create the UI (in this case it's just the ApplicationWindow\n"
-" _buildUI: function() {\n"
-" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Toolbar Example\",\n"
-" default_height: 200,\n"
-" default_width: 400 });\n"
-"\n"
-" this._grid = new Gtk.Grid();\n"
-" this._window.add(this._grid);\n"
-" this._grid.show();\n"
-"\n"
-" this._createToolbar();\n"
-" this._toolbar.set_hexpand(true);\n"
-" this._grid.attach(this._toolbar, 0, 0, 1, 1);\n"
-"\n"
-" //show the toolbar and window\n"
-" this._toolbar.show();\n"
-" this._window.show();\n"
-" },\n"
-"\n"
-" //callback function for 'activate' signal\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" //callback function for 'startup' signal\n"
-" _onStartup: function() {\n"
-" this._initMenus();\n"
-" this._buildUI();\n"
-" },\n"
-"\n"
-" //create the toolbar, its toolbuttons and their actions\n"
-" _createToolbar: function() {\n"
-"\n"
-" this._toolbar = new Gtk.Toolbar();\n"
-" this._toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
-"\n"
-" //create the \"New\" ToolButton and its SimpleAction.\n"
-" //Using actions allows you to add them to the app menu\n"
-" //without duplicating code.\n"
-" let newAction = new Gio.SimpleAction({ name: 'new'});\n"
-" newAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._newCB();\n"
-" }));\n"
-" this.application.add_action(newAction);//note: this action is added to the app\n"
-"\n"
-" this._newButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW);\n"
-" this._newButton.is_important = true;\n"
-" this._toolbar.add(this._newButton);\n"
-" this._newButton.show();\n"
-" this._newButton.action_name = \"app.new\";\n"
-"\n"
-" //create the \"Open\" ToolButton and its SimpleAction\n"
-" let openAction = new Gio.SimpleAction({ name: 'open'});\n"
-" openAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._openCB();\n"
-" }));\n"
-" this.application.add_action(openAction);\n"
-"\n"
-" this._openButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN);\n"
-" this._openButton.is_important = true;\n"
-" this._toolbar.add(this._openButton);\n"
-" this._openButton.show();\n"
-" this._openButton.action_name = \"app.open\";\n"
-"\n"
-" //create the \"Undo\" ToolButton and its SimpleAction\n"
-" let undoAction = new Gio.SimpleAction({ name: 'undo'});\n"
-" undoAction.connect('activate', Lang.bind (this,\n"
-" function() {\n"
-" this._undoCB();\n"
-" }));\n"
-" this._window.add_action(undoAction);//note this action is added to the window\n"
-"\n"
-" this._undoButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO);\n"
-" this._undoButton.is_important = true;\n"
-" this._toolbar.add(this._undoButton);\n"
-" this._undoButton.show();\n"
-" this._undoButton.action_name = \"win.undo\";\n"
-"\n"
-" //create the \"Fullscreen\" ToolButton and its SimpleAction\n"
-" let fullscreenToggleAction = new Gio.SimpleAction ({ name: 'fullscreenToggle' });\n"
-" fullscreenToggleAction.connect ('activate', Lang.bind (this,\n"
-" function () {\n"
-" this._fullscreenToggleCB();\n"
-" }));\n"
-" this._window.add_action(fullscreenToggleAction);\n"
-"\n"
-" this._fullscreenButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_FULLSCREEN);\n"
-" this._fullscreenButton.is_important = true;\n"
-" this._toolbar.add(this._fullscreenButton);\n"
-" this._fullscreenButton.show();\n"
-" this._fullscreenButton.action_name = \"win.fullscreenToggle\";\n"
-"\n"
-" //create the \"leaveFullscreen\" ToolButton, and set the action name to \"win.fullscreenToggle\"\n"
-" this._leaveFullscreenButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_LEAVE_FULLSCREEN);\n"
-" this._leaveFullscreenButton.is_important = true;\n"
-" this._toolbar.add(this._leaveFullscreenButton);\n"
-" this._leaveFullscreenButton.action_name = \"win.fullscreenToggle\";\n"
-" },\n"
-"\n"
-" _initMenus: function () {\n"
-" let menu = new Gio.Menu();\n"
-" menu.append(\"New\", 'app.new');\n"
-" menu.append(\"Open\", 'app.open');\n"
-" menu.append(\"Quit\", 'app.quit');\n"
-"\n"
-" this.application.set_app_menu(menu);\n"
-"\n"
-" let quitAction = new Gio.SimpleAction({name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-" },\n"
-"\n"
-" _newCB: function() {\n"
-" print(\"You clicked 'New'.\");\n"
-" },\n"
-"\n"
-" _openCB: function() {\n"
-" print(\"You clicked 'Open'.\");\n"
-" },\n"
-"\n"
-" _undoCB:function () {\n"
-" print (\"You clicked 'Undo'.\");\n"
-" },\n"
-"\n"
-" _fullscreenToggleCB: function() {\n"
-" if ((this._window.get_window().get_state() & Gdk.WindowState.FULLSCREEN) != 0 ) {\n"
-" this._window.unfullscreen();\n"
-" this._leaveFullscreenButton.hide();\n"
-" this._fullscreenButton.show();\n"
-" }\n"
-" else {\n"
-" this._window.fullscreen();\n"
-" this._fullscreenButton.hide();\n"
-" this._leaveFullscreenButton.show();\n"
-" }\n"
-" }\n"
-"});\n"
-"\n"
-"//run the application\n"
-"let app = new Application();\n"
-"app.application.run(ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gdk = imports.gi.Gdk;\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const Application = new Lang.Class({\n"
-" Name: 'Application',\n"
-"\n"
-" //create the application\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.myapp',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" //connect to 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" //create the UI (in this case it's just the ApplicationWindow\n"
-" _buildUI: function() {\n"
-" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Toolbar Example\",\n"
-" default_height: 200,\n"
-" default_width: 400 });\n"
-"\n"
-" this._grid = new Gtk.Grid();\n"
-" this._window.add(this._grid);\n"
-" this._grid.show();\n"
-"\n"
-" this._createToolbar();\n"
-" this._toolbar.set_hexpand(true);\n"
-" this._grid.attach(this._toolbar, 0, 0, 1, 1);\n"
-"\n"
-" //show the toolbar and window\n"
-" this._toolbar.show();\n"
-" this._window.show();\n"
-" },\n"
-"\n"
-" //callback function for 'activate' signal\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" //callback function for 'startup' signal\n"
-" _onStartup: function() {\n"
-" this._initMenus();\n"
-" this._buildUI();\n"
-" },\n"
-"\n"
-" //create the toolbar, its toolbuttons and their actions\n"
-" _createToolbar: function() {\n"
-"\n"
-" this._toolbar = new Gtk.Toolbar();\n"
-" this._toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
-"\n"
-" //create the \"New\" ToolButton and its SimpleAction.\n"
-" //Using actions allows you to add them to the app menu\n"
-" //without duplicating code.\n"
-" let newAction = new Gio.SimpleAction({ name: 'new'});\n"
-" newAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._newCB();\n"
-" }));\n"
-" this.application.add_action(newAction);//note: this action is added to the app\n"
-"\n"
-" this._newButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW);\n"
-" this._newButton.is_important = true;\n"
-" this._toolbar.add(this._newButton);\n"
-" this._newButton.show();\n"
-" this._newButton.action_name = \"app.new\";\n"
-"\n"
-" //create the \"Open\" ToolButton and its SimpleAction\n"
-" let openAction = new Gio.SimpleAction({ name: 'open'});\n"
-" openAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._openCB();\n"
-" }));\n"
-" this.application.add_action(openAction);\n"
-"\n"
-" this._openButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN);\n"
-" this._openButton.is_important = true;\n"
-" this._toolbar.add(this._openButton);\n"
-" this._openButton.show();\n"
-" this._openButton.action_name = \"app.open\";\n"
-"\n"
-" //create the \"Undo\" ToolButton and its SimpleAction\n"
-" let undoAction = new Gio.SimpleAction({ name: 'undo'});\n"
-" undoAction.connect('activate', Lang.bind (this,\n"
-" function() {\n"
-" this._undoCB();\n"
-" }));\n"
-" this._window.add_action(undoAction);//note this action is added to the window\n"
-"\n"
-" this._undoButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO);\n"
-" this._undoButton.is_important = true;\n"
-" this._toolbar.add(this._undoButton);\n"
-" this._undoButton.show();\n"
-" this._undoButton.action_name = \"win.undo\";\n"
-"\n"
-" //create the \"Fullscreen\" ToolButton and its SimpleAction\n"
-" let fullscreenToggleAction = new Gio.SimpleAction ({ name: 'fullscreenToggle' });\n"
-" fullscreenToggleAction.connect ('activate', Lang.bind (this,\n"
-" function () {\n"
-" this._fullscreenToggleCB();\n"
-" }));\n"
-" this._window.add_action(fullscreenToggleAction);\n"
-"\n"
-" this._fullscreenButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_FULLSCREEN);\n"
-" this._fullscreenButton.is_important = true;\n"
-" this._toolbar.add(this._fullscreenButton);\n"
-" this._fullscreenButton.show();\n"
-" this._fullscreenButton.action_name = \"win.fullscreenToggle\";\n"
-"\n"
-" //create the \"leaveFullscreen\" ToolButton, and set the action name to \"win.fullscreenToggle\"\n"
-" this._leaveFullscreenButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_LEAVE_FULLSCREEN);\n"
-" this._leaveFullscreenButton.is_important = true;\n"
-" this._toolbar.add(this._leaveFullscreenButton);\n"
-" this._leaveFullscreenButton.action_name = \"win.fullscreenToggle\";\n"
-" },\n"
-"\n"
-" _initMenus: function () {\n"
-" let menu = new Gio.Menu();\n"
-" menu.append(\"New\", 'app.new');\n"
-" menu.append(\"Open\", 'app.open');\n"
-" menu.append(\"Quit\", 'app.quit');\n"
-"\n"
-" this.application.set_app_menu(menu);\n"
-"\n"
-" let quitAction = new Gio.SimpleAction({name: 'quit' });\n"
-" quitAction.connect('activate', Lang.bind(this,\n"
-" function() {\n"
-" this._window.destroy();\n"
-" }));\n"
-" this.application.add_action(quitAction);\n"
-" },\n"
-"\n"
-" _newCB: function() {\n"
-" print(\"You clicked 'New'.\");\n"
-" },\n"
-"\n"
-" _openCB: function() {\n"
-" print(\"You clicked 'Open'.\");\n"
-" },\n"
-"\n"
-" _undoCB:function () {\n"
-" print (\"You clicked 'Undo'.\");\n"
-" },\n"
-"\n"
-" _fullscreenToggleCB: function() {\n"
-" if ((this._window.get_window().get_state() & Gdk.WindowState.FULLSCREEN) != 0 ) {\n"
-" this._window.unfullscreen();\n"
-" this._leaveFullscreenButton.hide();\n"
-" this._fullscreenButton.show();\n"
-" }\n"
-" else {\n"
-" this._window.fullscreen();\n"
-" this._fullscreenButton.hide();\n"
-" this._leaveFullscreenButton.show();\n"
-" }\n"
-" }\n"
-"});\n"
-"\n"
-"//run the application\n"
-"let app = new Application();\n"
-"app.application.run(ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/toolbar.js.page:31
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Window.html"
-"\">Gtk.Window</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Window.html"
-"\">Gtk.Window</link>"
-
-#. (itstool) path: item/p
-#: C/toolbar.js.page:32
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Toolbar.html"
-"\">Gtk.Toolbar</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Toolbar.html"
-"\">Gtk.Toolbar</link>"
-
-#. (itstool) path: item/p
-#: C/toolbar.js.page:33
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ToolButton."
-"html\">Gtk.ToolButton</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ToolButton."
-"html\">Gtk.ToolButton</link>"
-
-#. (itstool) path: item/p
-#: C/toolbar.js.page:34
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.html\">Gtk "
-"Stock items</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.html"
-"\">Elementos del almacén de GTK</link>"
-
-#. (itstool) path: item/p
-#: C/toolbar.js.page:35
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gdk.WindowState."
-"html\">Gdk.WindowState</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gdk.WindowState."
-"html\">Gdk.WindowState</link>"
-
-#. (itstool) path: info/title
-#: C/toolbar.py.page:8
-msgctxt "text"
-msgid "Toolbar (Python)"
-msgstr "Toolbar (Python)"
-
-#. (itstool) path: info/desc
-#: C/toolbar.py.page:20 C/toolbar_builder.py.page:33
-msgid "A bar of buttons and other widgets"
-msgstr "Una barra de botones y otros widgets"
-
-#. (itstool) path: page/p
-#: C/toolbar.py.page:26
-msgid "An example of toolbar with buttons (from stock icons)."
-msgstr ""
-"Un ejemplo de barra de herramientas con botones (con iconos del almacén)."
-
-#. (itstool) path: section/code
-#: C/toolbar.py.page:33
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "from gi.repository import Gdk\n"
-#| "from gi.repository import Gio\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"Toolbar Example\", application=app)\n"
-#| " self.set_default_size(400, 200)\n"
-#| "\n"
-#| " # a grid to attach the toolbar\n"
-#| " grid = Gtk.Grid()\n"
-#| "\n"
-#| " # a toolbar created in the method create_toolbar (see below)\n"
-#| " toolbar = self.create_toolbar()\n"
-#| " # with extra horizontal space\n"
-#| " toolbar.set_hexpand(True)\n"
-#| " # show the toolbar\n"
-#| " toolbar.show()\n"
-#| "\n"
-#| " # attach the toolbar to the grid\n"
-#| " grid.attach(toolbar, 0, 0, 1, 1)\n"
-#| "\n"
-#| " # add the grid to the window\n"
-#| " self.add(grid)\n"
-#| "\n"
-#| " # create the actions that control the window and connect their signal to a\n"
-#| " # callback method (see below):\n"
-#| "\n"
-#| " # undo\n"
-#| " undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
-#| " undo_action.connect(\"activate\", self.undo_callback)\n"
-#| " self.add_action(undo_action)\n"
-#| "\n"
-#| " # fullscreen\n"
-#| " fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
-#| " fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
-#| " self.add_action(fullscreen_action)\n"
-#| "\n"
-#| " # a method to create the toolbar\n"
-#| " def create_toolbar(self):\n"
-#| " # a toolbar\n"
-#| " toolbar = Gtk.Toolbar()\n"
-#| "\n"
-#| " # which is the primary toolbar of the application\n"
-#| " toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)\n"
-#| "\n"
-#| " # create a button for the \"new\" action, with a stock image\n"
-#| " new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)\n"
-#| " # label is shown\n"
-#| " new_button.set_is_important(True)\n"
-#| " # insert the button at position in the toolbar\n"
-#| " toolbar.insert(new_button, 0)\n"
-#| " # show the button\n"
-#| " new_button.show()\n"
-#| " # set the name of the action associated with the button.\n"
-#| " # The action controls the application (app)\n"
-#| " new_button.set_action_name(\"app.new\")\n"
-#| "\n"
-#| " # button for the \"open\" action\n"
-#| " open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)\n"
-#| " open_button.set_is_important(True)\n"
-#| " toolbar.insert(open_button, 1)\n"
-#| " open_button.show()\n"
-#| " open_button.set_action_name(\"app.open\")\n"
-#| "\n"
-#| " # button for the \"undo\" action\n"
-#| " undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO)\n"
-#| " undo_button.set_is_important(True)\n"
-#| " toolbar.insert(undo_button, 2)\n"
-#| " undo_button.show()\n"
-#| " undo_button.set_action_name(\"win.undo\")\n"
-#| "\n"
-#| " # button for the \"fullscreen/leave fullscreen\" action\n"
-#| " self.fullscreen_button = Gtk.ToolButton.new_from_stock(\n"
-#| " Gtk.STOCK_FULLSCREEN)\n"
-#| " self.fullscreen_button.set_is_important(True)\n"
-#| " toolbar.insert(self.fullscreen_button, 3)\n"
-#| " self.fullscreen_button.set_action_name(\"win.fullscreen\")\n"
-#| "\n"
-#| " # return the complete toolbar\n"
-#| " return toolbar\n"
-#| "\n"
-#| " # callback method for undo\n"
-#| " def undo_callback(self, action, parameter):\n"
-#| " print \"You clicked \\\"Undo\\\".\"\n"
-#| "\n"
-#| " # callback method for fullscreen / leave fullscreen\n"
-#| " def fullscreen_callback(self, action, parameter):\n"
-#| " # check if the state is the same as Gdk.WindowState.FULLSCREEN, which\n"
-#| " # is a bit flag\n"
-#| " is_fullscreen = self.get_window().get_state(\n"
-#| " ) & Gdk.WindowState.FULLSCREEN != 0\n"
-#| " if not is_fullscreen:\n"
-#| " self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN)\n"
-#| " self.fullscreen()\n"
-#| " else:\n"
-#| " self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN)\n"
-#| " self.unfullscreen()\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| " # create the actions that control the window and connect their signal to a\n"
-#| " # callback method (see below):\n"
-#| "\n"
-#| " # new\n"
-#| " new_action = Gio.SimpleAction.new(\"new\", None)\n"
-#| " new_action.connect(\"activate\", self.new_callback)\n"
-#| " app.add_action(new_action)\n"
-#| "\n"
-#| " # open\n"
-#| " open_action = Gio.SimpleAction.new(\"open\", None)\n"
-#| " open_action.connect(\"activate\", self.open_callback)\n"
-#| " app.add_action(open_action)\n"
-#| "\n"
-#| " # callback method for new\n"
-#| " def new_callback(self, action, parameter):\n"
-#| " print \"You clicked \\\"New\\\".\"\n"
-#| "\n"
-#| " # callback method for open\n"
-#| " def open_callback(self, action, parameter):\n"
-#| " print \"You clicked \\\"Open\\\".\"\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gdk\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Toolbar Example\", application=app)\n"
-" self.set_default_size(400, 200)\n"
-"\n"
-" # a grid to attach the toolbar\n"
-" grid = Gtk.Grid()\n"
-"\n"
-" # a toolbar created in the method create_toolbar (see below)\n"
-" toolbar = self.create_toolbar()\n"
-" # with extra horizontal space\n"
-" toolbar.set_hexpand(True)\n"
-" # show the toolbar\n"
-" toolbar.show()\n"
-"\n"
-" # attach the toolbar to the grid\n"
-" grid.attach(toolbar, 0, 0, 1, 1)\n"
-"\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" # create the actions that control the window and connect their signal to a\n"
-" # callback method (see below):\n"
-"\n"
-" # undo\n"
-" undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
-" undo_action.connect(\"activate\", self.undo_callback)\n"
-" self.add_action(undo_action)\n"
-"\n"
-" # fullscreen\n"
-" fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
-" fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
-" self.add_action(fullscreen_action)\n"
-"\n"
-" # a method to create the toolbar\n"
-" def create_toolbar(self):\n"
-" # a toolbar\n"
-" toolbar = Gtk.Toolbar()\n"
-"\n"
-" # which is the primary toolbar of the application\n"
-" toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)\n"
-"\n"
-" # create a button for the \"new\" action, with a stock image\n"
-" new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)\n"
-" # label is shown\n"
-" new_button.set_is_important(True)\n"
-" # insert the button at position in the toolbar\n"
-" toolbar.insert(new_button, 0)\n"
-" # show the button\n"
-" new_button.show()\n"
-" # set the name of the action associated with the button.\n"
-" # The action controls the application (app)\n"
-" new_button.set_action_name(\"app.new\")\n"
-"\n"
-" # button for the \"open\" action\n"
-" open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)\n"
-" open_button.set_is_important(True)\n"
-" toolbar.insert(open_button, 1)\n"
-" open_button.show()\n"
-" open_button.set_action_name(\"app.open\")\n"
-"\n"
-" # button for the \"undo\" action\n"
-" undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO)\n"
-" undo_button.set_is_important(True)\n"
-" toolbar.insert(undo_button, 2)\n"
-" undo_button.show()\n"
-" undo_button.set_action_name(\"win.undo\")\n"
-"\n"
-" # button for the \"fullscreen/leave fullscreen\" action\n"
-" self.fullscreen_button = Gtk.ToolButton.new_from_stock(\n"
-" Gtk.STOCK_FULLSCREEN)\n"
-" self.fullscreen_button.set_is_important(True)\n"
-" toolbar.insert(self.fullscreen_button, 3)\n"
-" self.fullscreen_button.set_action_name(\"win.fullscreen\")\n"
-"\n"
-" # return the complete toolbar\n"
-" return toolbar\n"
-"\n"
-" # callback method for undo\n"
-" def undo_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Undo\\\".\")\n"
-"\n"
-" # callback method for fullscreen / leave fullscreen\n"
-" def fullscreen_callback(self, action, parameter):\n"
-" # check if the state is the same as Gdk.WindowState.FULLSCREEN, which\n"
-" # is a bit flag\n"
-" is_fullscreen = self.get_window().get_state(\n"
-" ) & Gdk.WindowState.FULLSCREEN != 0\n"
-" if not is_fullscreen:\n"
-" self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN)\n"
-" self.fullscreen()\n"
-" else:\n"
-" self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN)\n"
-" self.unfullscreen()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # create the actions that control the window and connect their signal to a\n"
-" # callback method (see below):\n"
-"\n"
-" # new\n"
-" new_action = Gio.SimpleAction.new(\"new\", None)\n"
-" new_action.connect(\"activate\", self.new_callback)\n"
-" app.add_action(new_action)\n"
-"\n"
-" # open\n"
-" open_action = Gio.SimpleAction.new(\"open\", None)\n"
-" open_action.connect(\"activate\", self.open_callback)\n"
-" app.add_action(open_action)\n"
-"\n"
-" # callback method for new\n"
-" def new_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"New\\\".\")\n"
-"\n"
-" # callback method for open\n"
-" def open_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Open\\\".\")\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gdk\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Toolbar Example\", application=app)\n"
-" self.set_default_size(400, 200)\n"
-"\n"
-" # a grid to attach the toolbar\n"
-" grid = Gtk.Grid()\n"
-"\n"
-" # a toolbar created in the method create_toolbar (see below)\n"
-" toolbar = self.create_toolbar()\n"
-" # with extra horizontal space\n"
-" toolbar.set_hexpand(True)\n"
-" # show the toolbar\n"
-" toolbar.show()\n"
-"\n"
-" # attach the toolbar to the grid\n"
-" grid.attach(toolbar, 0, 0, 1, 1)\n"
-"\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" # create the actions that control the window and connect their signal to a\n"
-" # callback method (see below):\n"
-"\n"
-" # undo\n"
-" undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
-" undo_action.connect(\"activate\", self.undo_callback)\n"
-" self.add_action(undo_action)\n"
-"\n"
-" # fullscreen\n"
-" fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
-" fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
-" self.add_action(fullscreen_action)\n"
-"\n"
-" # a method to create the toolbar\n"
-" def create_toolbar(self):\n"
-" # a toolbar\n"
-" toolbar = Gtk.Toolbar()\n"
-"\n"
-" # which is the primary toolbar of the application\n"
-" toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)\n"
-"\n"
-" # create a button for the \"new\" action, with a stock image\n"
-" new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)\n"
-" # label is shown\n"
-" new_button.set_is_important(True)\n"
-" # insert the button at position in the toolbar\n"
-" toolbar.insert(new_button, 0)\n"
-" # show the button\n"
-" new_button.show()\n"
-" # set the name of the action associated with the button.\n"
-" # The action controls the application (app)\n"
-" new_button.set_action_name(\"app.new\")\n"
-"\n"
-" # button for the \"open\" action\n"
-" open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)\n"
-" open_button.set_is_important(True)\n"
-" toolbar.insert(open_button, 1)\n"
-" open_button.show()\n"
-" open_button.set_action_name(\"app.open\")\n"
-"\n"
-" # button for the \"undo\" action\n"
-" undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO)\n"
-" undo_button.set_is_important(True)\n"
-" toolbar.insert(undo_button, 2)\n"
-" undo_button.show()\n"
-" undo_button.set_action_name(\"win.undo\")\n"
-"\n"
-" # button for the \"fullscreen/leave fullscreen\" action\n"
-" self.fullscreen_button = Gtk.ToolButton.new_from_stock(\n"
-" Gtk.STOCK_FULLSCREEN)\n"
-" self.fullscreen_button.set_is_important(True)\n"
-" toolbar.insert(self.fullscreen_button, 3)\n"
-" self.fullscreen_button.set_action_name(\"win.fullscreen\")\n"
-"\n"
-" # return the complete toolbar\n"
-" return toolbar\n"
-"\n"
-" # callback method for undo\n"
-" def undo_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Undo\\\".\")\n"
-"\n"
-" # callback method for fullscreen / leave fullscreen\n"
-" def fullscreen_callback(self, action, parameter):\n"
-" # check if the state is the same as Gdk.WindowState.FULLSCREEN, which\n"
-" # is a bit flag\n"
-" is_fullscreen = self.get_window().get_state(\n"
-" ) & Gdk.WindowState.FULLSCREEN != 0\n"
-" if not is_fullscreen:\n"
-" self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN)\n"
-" self.fullscreen()\n"
-" else:\n"
-" self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN)\n"
-" self.unfullscreen()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # create the actions that control the window and connect their signal to a\n"
-" # callback method (see below):\n"
-"\n"
-" # new\n"
-" new_action = Gio.SimpleAction.new(\"new\", None)\n"
-" new_action.connect(\"activate\", self.new_callback)\n"
-" app.add_action(new_action)\n"
-"\n"
-" # open\n"
-" open_action = Gio.SimpleAction.new(\"open\", None)\n"
-" open_action.connect(\"activate\", self.open_callback)\n"
-" app.add_action(open_action)\n"
-"\n"
-" # callback method for new\n"
-" def new_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"New\\\".\")\n"
-"\n"
-" # callback method for open\n"
-" def open_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Open\\\".\")\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/toolbar.py.page:37
-msgid "Useful methods for a Toolbar widget"
-msgstr "Métodos útiles para un widget de barra de herramientas"
-
-#. (itstool) path: section/p
-#: C/toolbar.py.page:38
-msgid ""
-"In line 32 the signal <code>\"activate\"</code> from the action "
-"<code>undo_action</code> is connected to the callback function "
-"<code>undo_callback()</code> using <code><var>action</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 32, la señal <code>«activate»</code> de la acción "
-"<code>undo_action</code> se conecta a la función de retorno de llamada "
-"<code>undo_callback()</code> usando <code><var>action</var>.connect"
-"(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
-"detallada."
-
-#. (itstool) path: item/p
-#: C/toolbar.py.page:41
-msgid ""
-"Use <code>insert(tool_item, position)</code> to insert the <code>tool_item</"
-"code> at <code>position</code>. If <code>position</code> is negative, the "
-"item is appended at the end of the toolbar."
-msgstr ""
-"Use <code>insert(tool_item, position)</code> para insertar el "
-"<code>tool_item</code> en <code>position</code>. Si <code>position</code> es "
-"negativo, el elemento se añade al final de la barra de herramientas."
-
-#. (itstool) path: item/p
-#: C/toolbar.py.page:42
-msgid ""
-"<code>get_item_index(tool_item)</code> retrieves the position of "
-"<code>tool_item</code> on the toolbar."
-msgstr ""
-"<code>get_item_index(tool_item)</code> obtiene la posición de "
-"<code>tool_item</code> en la barra de herramientas."
-
-#. (itstool) path: item/p
-#: C/toolbar.py.page:43
-msgid ""
-"<code>get_n_items()</code> returns the number of items on the toolbar; "
-"<code>get_nth_item(position)</code> returns the item in position "
-"<code>position</code>."
-msgstr ""
-"<code>get_n_items()</code> devuelve el número de elementos en la barra de "
-"herramientas; <code>get_nth_item(position)</code> devuelve el elemento en la "
-"posición <code>position</code>."
-
-#. (itstool) path: item/p
-#: C/toolbar.py.page:44
-msgid ""
-"If the toolbar does not have room for all the menu items, and "
-"<code>set_show_arrow(True)</code>, the items that do not have room are shown "
-"through an overflow menu."
-msgstr ""
-"Si la barra de herramientas no tiene espacio para todos los elementos del "
-"menú, y <code>set_show_arrow(True)</code>, los elementos que no entran se "
-"muestran a través de un menú flotante."
-
-#. (itstool) path: item/p
-#: C/toolbar.py.page:45
-msgid ""
-"<code>set_icon_size(icon_size)</code> sets the size of icons in the toolbar; "
-"<code>icon_size</code> can be one of <code>Gtk.IconSize.INVALID, Gtk."
-"IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk.IconSize.LARGE_TOOLBAR, Gtk."
-"IconSize.BUTTON, Gtk.IconSize.DND, Gtk.IconSize.DIALOG</code>. This should "
-"be used only for special-purpose toolbars, normal application toolbars "
-"should respect user preferences for the size of icons. <code>unset_icon_size"
-"()</code> unsets the preferences set with <code>set_icon_size(icon_size)</"
-"code>, so that user preferences are used to determine the icon size."
-msgstr ""
-"<code>set_icon_size(icon_size)</code> establece el tamaño de los iconos en "
-"la barra de herramientas; <code>icon_size</code> puede ser uno de <code>Gtk."
-"IconSize.INVALID, Gtk.IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk."
-"IconSize.LARGE_TOOLBAR, Gtk.IconSize.BUTTON, Gtk.IconSize.DND, Gtk.IconSize."
-"DIALOG</code>. Esto solo debe usarse para barras de herramientas con "
-"propósitos especiales, las barras de herramientas de aplicaciones normales "
-"deben respetar las preferencias del usuario para el tamaño de los iconos. "
-"<code>unset_icon_size()</code> restablece las preferencias establecidas con "
-"<code>set_icon_size(icon_size)</code>, para que las preferencias de usuario "
-"se usen para determinar el tamaño de los iconos."
-
-#. (itstool) path: item/p
-#: C/toolbar.py.page:46
-msgid ""
-"<code>set_style(style)</code>, where <code>style</code> is one of <code>Gtk."
-"ToolbarStyle.ICONS, Gtk.ToolbarStyle.TEXT, Gtk.ToolbarStyle.BOTH, Gtk."
-"ToolbarStyle.BOTH_HORIZ</code>, sets if the toolbar shows only icons, only "
-"text, or both (vertically stacked or alongside each other). To let user "
-"preferences determine the toolbar style, and unset a toolbar style so set, "
-"use <code>unset_style()</code>."
-msgstr ""
-"<code>set_style(style)</code>, donde <code>style</code> es uno de <code>Gtk."
-"ToolbarStyle.ICONS, Gtk.ToolbarStyle.TEXT, Gtk.ToolbarStyle.BOTH, Gtk."
-"ToolbarStyle.BOTH_HORIZ</code>, determina si la barra de herramientas "
-"muestra solo iconos, solo texto, o ambos (apilados verticalmente o uno al "
-"lado de otro). Para dejar que las preferencias del usuario determinen el "
-"estilo de la barra de herramientas, y restablecer el estilo de barra de "
-"herramientas, use <code>unset_style()</code>."
-
-#. (itstool) path: item/p
-#: C/toolbar.py.page:55
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolbar.html"
-"\">GtkToolbar</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolbar.html"
-"\">GtkToolbar</link>"
-
-#. (itstool) path: item/p
-#: C/toolbar.py.page:56
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolButton.html"
-"\">GtkToolButton</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolButton.html"
-"\">GtkToolButton</link>"
-
-#. (itstool) path: item/p
-#: C/toolbar.py.page:57
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolItem.html"
-"\">GtkToolItem</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolItem.html"
-"\">GtkToolItem</link>"
-
-#. (itstool) path: item/p
-#: C/toolbar.py.page:59
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkActionable.html"
-"\">GtkActionable</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkActionable.html"
-"\">GtkActionable</link>"
-
-#. (itstool) path: item/p
-#: C/toolbar.py.page:61 C/toolbar_builder.py.page:199
-msgid ""
-"<link href=\"http://developer.gnome.org/gdk3/unstable/gdk3-Event-Structures."
-"html#GdkEventWindowState\">Event Structures</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gdk3/unstable/gdk3-Event-Structures."
-"html#GdkEventWindowState\">Estructuras de eventos</link>"
-
-#. (itstool) path: info/title
-#: C/toolbar.vala.page:8
-msgctxt "text"
-msgid "Toolbar (Vala)"
-msgstr "Barra de herramientas (Vala)"
-
-#. (itstool) path: page/code
-#: C/toolbar.vala.page:28
-#, no-wrap
-msgid ""
-"/* This is the Window */\n"
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* Instance variables belonging to the window */\n"
-"\tGtk.Toolbar toolbar;\n"
-"\tGtk.ToolButton new_button;\n"
-"\tGtk.ToolButton open_button;\n"
-"\tGtk.ToolButton undo_button;\n"
-"\tGtk.ToolButton fullscreen_button;\n"
-"\tGtk.ToolButton leave_fullscreen_button;\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Toolbar Example\");\n"
-"\n"
-"\t\tthis.set_default_size (400, 200);\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tthis.add (grid);\n"
-"\t\tgrid.show ();\n"
-"\n"
-"\t\tcreate_toolbar ();\n"
-"\t\ttoolbar.set_hexpand (true);\n"
-"\t\tgrid.attach (toolbar, 0, 0, 1, 1);\n"
-"\t\ttoolbar.show ();\n"
-"\n"
-"\t\t/* create the \"undo\" window action action */\n"
-"\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
-"\t\tundo_action.activate.connect (undo_callback);\n"
-"\t\tthis.add_action (undo_action);\n"
-"\n"
-"\t\t/* create the \"fullscreen\" window action */\n"
-"\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
-"\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
-"\t\tthis.add_action (fullscreen_action);\n"
-"\t}\n"
-"\n"
-"\t/* This function creates the toolbar, its ToolButtons,\n"
-"\t * and assigns the actions names to the ToolButtons.*/\n"
-"\tvoid create_toolbar () {\n"
-"\t\ttoolbar = new Gtk.Toolbar ();\n"
-"\t\ttoolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
-"\n"
-"\t\tnew_button = new Gtk.ToolButton.from_stock (Gtk.Stock.NEW);\n"
-"\t\tnew_button.is_important = true; //decides whether to show the label\n"
-"\t\ttoolbar.add (new_button);\n"
-"\t\tnew_button.show ();\n"
-"\t\tnew_button.action_name = \"app.new\";\n"
-"\n"
-"\t\topen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.OPEN);\n"
-"\t\topen_button.is_important = true;\n"
-"\t\ttoolbar.add (open_button);\n"
-"\t\topen_button.show ();\n"
-"\t\topen_button.action_name = \"app.open\";\n"
-"\n"
-"\t\tundo_button = new Gtk.ToolButton.from_stock (Gtk.Stock.UNDO);\n"
-"\t\tundo_button.is_important = true;\n"
-"\t\ttoolbar.add (undo_button);\n"
-"\t\tundo_button.show ();\n"
-"\t\tundo_button.action_name = \"win.undo\";\n"
-"\n"
-"\t\tfullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.FULLSCREEN);\n"
-"\t\tfullscreen_button.is_important = true;\n"
-"\t\ttoolbar.add (fullscreen_button);\n"
-"\t\tfullscreen_button.show ();\n"
-"\t\tfullscreen_button.action_name = \"win.fullscreen\";\n"
-"\n"
-"\t\tleave_fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.LEAVE_FULLSCREEN)\n"
-";\n"
-"\t\tleave_fullscreen_button.is_important = true;\n"
-"\t\ttoolbar.add (leave_fullscreen_button);\n"
-"\n"
-"\t\tleave_fullscreen_button.action_name = \"win.fullscreen\";\n"
-"\t}\n"
-"\n"
-"\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
-"\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
-"\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n"
-"\t\t\tthis.unfullscreen ();\n"
-"\t\t\tleave_fullscreen_button.hide ();\n"
-"\t\t\tfullscreen_button.show ();\n"
-"\t\t}\n"
-"\t\telse {\n"
-"\t\t\tthis.fullscreen ();\n"
-"\t\t\tfullscreen_button.hide ();\n"
-"\t\t\tleave_fullscreen_button.show ();\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application */\n"
-"class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\t/* Create the \"new\" action and add it to the app*/\n"
-"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
-"\t\tnew_action.activate.connect (new_callback);\n"
-"\t\tthis.add_action (new_action);\n"
-"\n"
-"\t\t/* Create the \"open\" action, and add it to the app */\n"
-"\t\tvar open_action = new SimpleAction (\"open\", null);\n"
-"\t\topen_action.activate.connect (open_callback);\n"
-"\t\tthis.add_action (open_action);\n"
-"\n"
-"\t\t/* You could also add the action to the app menu\n"
-"\t\t * if you wanted to.\n"
-"\t\t */\n"
-"\t\t//var menu = new Menu ();\n"
-"\t\t//menu.append (\"New\", \"app.new\");\n"
-"\t\t//this.app_menu = menu;\n"
-"\t}\n"
-"\n"
-"\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
-"\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* The main function creates the application and runs it. */\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"/* This is the Window */\n"
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* Instance variables belonging to the window */\n"
-"\tGtk.Toolbar toolbar;\n"
-"\tGtk.ToolButton new_button;\n"
-"\tGtk.ToolButton open_button;\n"
-"\tGtk.ToolButton undo_button;\n"
-"\tGtk.ToolButton fullscreen_button;\n"
-"\tGtk.ToolButton leave_fullscreen_button;\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Toolbar Example\");\n"
-"\n"
-"\t\tthis.set_default_size (400, 200);\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tthis.add (grid);\n"
-"\t\tgrid.show ();\n"
-"\n"
-"\t\tcreate_toolbar ();\n"
-"\t\ttoolbar.set_hexpand (true);\n"
-"\t\tgrid.attach (toolbar, 0, 0, 1, 1);\n"
-"\t\ttoolbar.show ();\n"
-"\n"
-"\t\t/* create the \"undo\" window action action */\n"
-"\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
-"\t\tundo_action.activate.connect (undo_callback);\n"
-"\t\tthis.add_action (undo_action);\n"
-"\n"
-"\t\t/* create the \"fullscreen\" window action */\n"
-"\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
-"\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
-"\t\tthis.add_action (fullscreen_action);\n"
-"\t}\n"
-"\n"
-"\t/* This function creates the toolbar, its ToolButtons,\n"
-"\t * and assigns the actions names to the ToolButtons.*/\n"
-"\tvoid create_toolbar () {\n"
-"\t\ttoolbar = new Gtk.Toolbar ();\n"
-"\t\ttoolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
-"\n"
-"\t\tnew_button = new Gtk.ToolButton.from_stock (Gtk.Stock.NEW);\n"
-"\t\tnew_button.is_important = true; //decides whether to show the label\n"
-"\t\ttoolbar.add (new_button);\n"
-"\t\tnew_button.show ();\n"
-"\t\tnew_button.action_name = \"app.new\";\n"
-"\n"
-"\t\topen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.OPEN);\n"
-"\t\topen_button.is_important = true;\n"
-"\t\ttoolbar.add (open_button);\n"
-"\t\topen_button.show ();\n"
-"\t\topen_button.action_name = \"app.open\";\n"
-"\n"
-"\t\tundo_button = new Gtk.ToolButton.from_stock (Gtk.Stock.UNDO);\n"
-"\t\tundo_button.is_important = true;\n"
-"\t\ttoolbar.add (undo_button);\n"
-"\t\tundo_button.show ();\n"
-"\t\tundo_button.action_name = \"win.undo\";\n"
-"\n"
-"\t\tfullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.FULLSCREEN);\n"
-"\t\tfullscreen_button.is_important = true;\n"
-"\t\ttoolbar.add (fullscreen_button);\n"
-"\t\tfullscreen_button.show ();\n"
-"\t\tfullscreen_button.action_name = \"win.fullscreen\";\n"
-"\n"
-"\t\tleave_fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.LEAVE_FULLSCREEN)\n"
-";\n"
-"\t\tleave_fullscreen_button.is_important = true;\n"
-"\t\ttoolbar.add (leave_fullscreen_button);\n"
-"\n"
-"\t\tleave_fullscreen_button.action_name = \"win.fullscreen\";\n"
-"\t}\n"
-"\n"
-"\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
-"\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
-"\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n"
-"\t\t\tthis.unfullscreen ();\n"
-"\t\t\tleave_fullscreen_button.hide ();\n"
-"\t\t\tfullscreen_button.show ();\n"
-"\t\t}\n"
-"\t\telse {\n"
-"\t\t\tthis.fullscreen ();\n"
-"\t\t\tfullscreen_button.hide ();\n"
-"\t\t\tleave_fullscreen_button.show ();\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application */\n"
-"class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\t/* Create the \"new\" action and add it to the app*/\n"
-"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
-"\t\tnew_action.activate.connect (new_callback);\n"
-"\t\tthis.add_action (new_action);\n"
-"\n"
-"\t\t/* Create the \"open\" action, and add it to the app */\n"
-"\t\tvar open_action = new SimpleAction (\"open\", null);\n"
-"\t\topen_action.activate.connect (open_callback);\n"
-"\t\tthis.add_action (open_action);\n"
-"\n"
-"\t\t/* You could also add the action to the app menu\n"
-"\t\t * if you wanted to.\n"
-"\t\t */\n"
-"\t\t//var menu = new Menu ();\n"
-"\t\t//menu.append (\"New\", \"app.new\");\n"
-"\t\t//this.app_menu = menu;\n"
-"\t}\n"
-"\n"
-"\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
-"\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* The main function creates the application and runs it. */\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/toolbar.vala.page:34 C/toolbar_builder.vala.page:151
-#: C/tooltip.vala.page:40
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Toolbar.html\">Gtk.Toolbar</"
-"link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Toolbar.html\">Gtk.Toolbar</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/toolbar.vala.page:35 C/toolbar_builder.vala.page:152
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ToolButton.html\">Gtk."
-"Toolbutton</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ToolButton.html\">Gtk."
-"Toolbutton</link>"
-
-#. (itstool) path: item/p
-#: C/toolbar.vala.page:36 C/toolbar_builder.vala.page:153
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Stock.html\">Gtk.Stock</"
-"link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Stock.html\">Gtk.Stock</"
-"link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/toolbar_builder.py.page:50 C/toolbar_builder.vala.page:33
-msgctxt "_"
-msgid ""
-"external ref='media/glade_ui.png' md5='baea74fe213bc12ea934f64f6977215a'"
-msgstr ""
-"external ref='media/glade_ui.png' md5='baea74fe213bc12ea934f64f6977215a'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/toolbar_builder.py.page:56 C/toolbar_builder.vala.page:39
-msgctxt "_"
-msgid ""
-"external ref='media/glade_select_toolbar.png' "
-"md5='f7b5b224050b2e387eb04362fc99df00'"
-msgstr ""
-"external ref='media/glade_select_toolbar.png' "
-"md5='f7b5b224050b2e387eb04362fc99df00'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/toolbar_builder.py.page:62 C/toolbar_builder.vala.page:45
-msgctxt "_"
-msgid ""
-"external ref='media/glade_toolbar_general.png' "
-"md5='e31daba6e8a3e526aca89d5f1622edaa'"
-msgstr ""
-"external ref='media/glade_toolbar_general.png' "
-"md5='e31daba6e8a3e526aca89d5f1622edaa'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/toolbar_builder.py.page:68 C/toolbar_builder.vala.page:51
-msgctxt "_"
-msgid ""
-"external ref='media/glade_toolbar_common.png' "
-"md5='d5ec6cc0218ca98e195dbd033feb9ac5'"
-msgstr ""
-"external ref='media/glade_toolbar_common.png' "
-"md5='d5ec6cc0218ca98e195dbd033feb9ac5'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/toolbar_builder.py.page:74 C/toolbar_builder.vala.page:57
-msgctxt "_"
-msgid ""
-"external ref='media/glade_toolbar_edit.png' "
-"md5='feb1e2b7040d24a4d030f94cf07c81fd'"
-msgstr ""
-"external ref='media/glade_toolbar_edit.png' "
-"md5='feb1e2b7040d24a4d030f94cf07c81fd'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/toolbar_builder.py.page:133 C/toolbar_builder.vala.page:116
-msgctxt "_"
-msgid ""
-"external ref='media/glade_toolbar_editor.png' "
-"md5='8af65241e5ca47d5494a7b36640e6f1c'"
-msgstr ""
-"external ref='media/glade_toolbar_editor.png' "
-"md5='8af65241e5ca47d5494a7b36640e6f1c'"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/toolbar_builder.py.page:142 C/toolbar_builder.vala.page:125
-msgctxt "_"
-msgid ""
-"external ref='media/glade_visible_no.png' "
-"md5='dc6c025aa825f4d772fbd283d6330026'"
-msgstr ""
-"external ref='media/glade_visible_no.png' "
-"md5='dc6c025aa825f4d772fbd283d6330026'"
-
-#. (itstool) path: info/title
-#: C/toolbar_builder.py.page:8
-msgctxt "text"
-msgid "Toolbar created using Glade (Python)"
-msgstr "Barra de herramientas creada con Glade (Python)"
-
-#. (itstool) path: page/title
-#: C/toolbar_builder.py.page:36 C/toolbar_builder.vala.page:23
-msgid "Toolbar created using Glade"
-msgstr "Barra de herramientas creada con Glade"
-
-#. (itstool) path: page/p
-#: C/toolbar_builder.py.page:39
-msgid ""
-"This example is similar to <link xref=\"toolbar.py\"/>, except we use Glade "
-"to create the toolbar in an XML .ui file."
-msgstr ""
-"Este ejemplo es similar al de la <link xref=\"toolbar.py\"/>, excepto que se "
-"usa Glade para crear la barra de herramientas en un archivo .ui XML."
-
-#. (itstool) path: section/title
-#: C/toolbar_builder.py.page:44
-msgid "Creating the toolbar with Glade"
-msgstr "Crear la barra de herramientas con Glade"
-
-#. (itstool) path: section/p
-#. (itstool) path: page/p
-#: C/toolbar_builder.py.page:45 C/toolbar_builder.vala.page:28
-msgid ""
-"To create the toolbar using the <link href=\"http://glade.gnome.org/\">Glade "
-"Interface Designer</link>:"
-msgstr ""
-"Para crear la barra de herramientas usando el <link href=\"http://glade."
-"gnome.org/\">diseñador de interfaces Glade</link>:"
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:49 C/toolbar_builder.vala.page:32
-msgid "Open Glade, and save the file as <file>toolbar_builder.ui</file>"
-msgstr "Abra Glade y guarde el archivo como <file>toolbar_builder.ui</file>"
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:50 C/toolbar_builder.vala.page:33
-msgid ""
-"<media type=\"image\" src=\"media/glade_ui.png\" width=\"900\"> Screenshot "
-"of Glade ui </media>"
-msgstr ""
-"<media type=\"image\" src=\"media/glade_ui.png\" width=\"900\"> Captura de "
-"pantalla de la IU de Glade </media>"
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:55 C/toolbar_builder.vala.page:38
-msgid ""
-"Under <gui>Containers</gui> on the left hand side, right click on the "
-"toolbar icon and select <gui>Add widget as toplevel</gui>."
-msgstr ""
-"Bajo <gui>Contenedores</gui> en el lado izquierdo, pulse con el botón "
-"derecho en el icono de la barra de herramientas y seleccione <gui>Añadir "
-"widget como nivel superior</gui>."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:56 C/toolbar_builder.vala.page:39
-msgid ""
-"<media type=\"image\" src=\"media/glade_select_toolbar.png\"> Screenshot of "
-"toolbar icon in Glade ui </media>"
-msgstr ""
-"<media type=\"image\" src=\"media/glade_select_toolbar.png\"> Captura de "
-"pantalla del icono de la barra de herramientas en la IU de Glade </media>"
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:61 C/toolbar_builder.vala.page:44
-msgid ""
-"Under the <gui>General</gui> tab on the bottom right, change the <gui>Name</"
-"gui> to <input>toolbar</input> and <gui>Show Arrow</gui> to <gui>No</gui>."
-msgstr ""
-"Bajo la pestaña <gui>General</gui> en la parte inferior derecha, cambie el "
-"<gui>Nombre</gui> a <input>toolbar</input> y <gui>Mostrar flecha</gui> a "
-"<gui>No</gui>."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:62 C/toolbar_builder.vala.page:45
-msgid ""
-"<media type=\"image\" src=\"media/glade_toolbar_general.png\"> Screenshot of "
-"General tab </media>"
-msgstr ""
-"<media type=\"image\" src=\"media/glade_toolbar_general.png\"> Captura de "
-"pantalla de la pestaña «General» </media>"
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:67 C/toolbar_builder.vala.page:50
-msgid ""
-"Under the <gui>Common</gui> tab, set <gui>Horizontal Expand</gui> to "
-"<gui>Yes</gui>."
-msgstr ""
-"Bajo la pestaña <gui>Comunes</gui>, establezca <gui>Expansión horizontal</"
-"gui> a <gui>Sí</gui>."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:68 C/toolbar_builder.vala.page:51
-msgid ""
-"<media type=\"image\" src=\"media/glade_toolbar_common.png\"> Screenshot of "
-"Common tab </media>"
-msgstr ""
-"<media type=\"image\" src=\"media/glade_toolbar_common.png\"> Captura de "
-"pantalla de la pestaña «Común» </media>"
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:73 C/toolbar_builder.vala.page:56
-msgid ""
-"Right click on the toolbar in the top right and select <gui>Edit</gui>. The "
-"<gui>Tool Bar Editor</gui> window will appear."
-msgstr ""
-"Pulse el botón derecho sobre la barra de herramientas en la parte superior "
-"derecha y seleccione <gui>Editar</gui>. La ventana <gui>Editor de barras de "
-"herramientas</gui> aparecerá."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:74 C/toolbar_builder.vala.page:57
-msgid ""
-"<media type=\"image\" src=\"media/glade_toolbar_edit.png\"> Screenshot of "
-"where to right click to edit toolbar. </media>"
-msgstr ""
-"<media type=\"image\" src=\"media/glade_toolbar_edit.png\"> Captura de "
-"pantalla que muestra dónde pulsar el botón derecho para editar la barra de "
-"herramientas. </media>"
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:79 C/toolbar_builder.vala.page:62
-msgid ""
-"We want to add 5 ToolButtons: New, Open, Undo, Fullscreen and Leave "
-"Fullscreen. First, we will add the New ToolButton."
-msgstr ""
-"Se quieren añadir 5 «ToolButton»: «New», «Open», «Undo», «Fullscreen», y «Leave "
-"Fullscreen». Primero, se añadirá el «ToolButton» «New»."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:82 C/toolbar_builder.vala.page:65
-msgid "Under <gui>Hierarchy</gui> tab, click <gui>Add</gui>."
-msgstr "Bajo la pestaña <gui>Jerarquía</gui>, pulse <gui>Añadir</gui>."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:83 C/toolbar_builder.vala.page:66
-msgid "Change the name of the ToolItem to <input>new_button</input>."
-msgstr "Cambie el nombre del «ToolItem» a <input>new_button</input>."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:84 C/toolbar_builder.vala.page:67
-msgid ""
-"Scroll down and set <gui>Is important</gui> to <gui>Yes</gui>. This will "
-"cause the label of the ToolButton to be shown, when you view the toolbar."
-msgstr ""
-"Deslícese hacia abajo y establezca <gui>Es Importante</gui> a <gui>Sí</gui>. "
-"Esto hará que la etiqueta del «ToolButton» se muestre cuando vea la barra de "
-"herramientas."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:85 C/toolbar_builder.vala.page:68
-msgid "Enter the <gui>action name</gui>: <input>app.new</input>."
-msgstr "Introduzca el <gui>Nombre de la acción</gui>: <input>app.new</input>."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:86 C/toolbar_builder.vala.page:69
-msgid "Change the <gui>Label</gui> to <input>New</input>."
-msgstr "Cambie la <gui>Etiqueta</gui> a <input>New</input>."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:87 C/toolbar_builder.vala.page:70
-msgid ""
-"Select the <gui>New</gui> Stock Id from the drop down menu, or type "
-"<input>gtk-new</input>."
-msgstr ""
-"Seleccione el ID del inventario <gui>Nuevo</gui> desde el menú desplegable, "
-"o escriba <input>gtk-new</input>."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:89 C/toolbar_builder.vala.page:72
-msgid ""
-"Repeat the above steps for the remaining ToolButtons, with the following "
-"properties:"
-msgstr ""
-"Repita los pasos anteriores para los «ToolButton» restantes, con las "
-"siguientes propiedades:"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:96 C/toolbar_builder.vala.page:79
-msgid "Is important"
-msgstr "Es importante"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:97 C/toolbar_builder.vala.page:80
-msgid "Action name"
-msgstr "Nombre de la acción"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:99 C/toolbar_builder.vala.page:82
-msgid "Stock Id"
-msgstr "ID del inventario"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:104 C/toolbar_builder.vala.page:87
-msgid "open_button"
-msgstr "open_button"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:105 C/toolbar_builder.py.page:112
-#: C/toolbar_builder.py.page:119 C/toolbar_builder.py.page:126
-#: C/toolbar_builder.vala.page:88 C/toolbar_builder.vala.page:95
-#: C/toolbar_builder.vala.page:102 C/toolbar_builder.vala.page:109
-msgid "Yes"
-msgstr "Sí"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:106 C/toolbar_builder.vala.page:89
-msgid "app.open"
-msgstr "app.open"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:107 C/toolbar_builder.vala.page:90
-msgid "Open"
-msgstr "Open"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:108 C/toolbar_builder.vala.page:91
-msgid "gtk-open"
-msgstr "gtk-open"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:111 C/toolbar_builder.vala.page:94
-msgid "undo_button"
-msgstr "undo_button"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:113 C/toolbar_builder.vala.page:96
-msgid "win.undo"
-msgstr "win.undo"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:114 C/toolbar_builder.vala.page:97
-msgid "Undo"
-msgstr "Undo"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:115 C/toolbar_builder.vala.page:98
-msgid "gtk-undo"
-msgstr "gtk-undo"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:118 C/toolbar_builder.vala.page:101
-msgid "fullscreen_button"
-msgstr "fullscreen_button"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:120 C/toolbar_builder.py.page:127
-#: C/toolbar_builder.vala.page:103 C/toolbar_builder.vala.page:110
-msgid "win.fullscreen"
-msgstr "win.fullscreen"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:121 C/toolbar_builder.vala.page:104
-msgid "Fullscreen"
-msgstr "Fullscreen"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:122 C/toolbar_builder.vala.page:105
-msgid "gtk-fullscreen"
-msgstr "gtk-fullscreen"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:125 C/toolbar_builder.vala.page:108
-msgid "leave_fullscreen_button"
-msgstr "leave_fullscreen_button"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:128 C/toolbar_builder.vala.page:111
-msgid "Leave Fullscreen"
-msgstr "Leave Fullscreen"
-
-#. (itstool) path: td/p
-#: C/toolbar_builder.py.page:129 C/toolbar_builder.vala.page:112
-msgid "gtk-leave-fullscreen"
-msgstr "gtk-leave-fullscreen"
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:138 C/toolbar_builder.vala.page:121
-msgid "Close the <gui>Tool Bar Editor</gui>."
-msgstr "Cierre el <gui>Editor de la barra de herramientas</gui>."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:141
-msgid ""
-"When our program will first start, we do not want the <gui>Leave Fullscreen</"
-"gui> ToolButton to be visible, since the application will not be in "
-"fullscreen mode. You can set this in the <gui>Common</gui> tab, by clicking "
-"the <gui>Visible</gui> property to <gui>No</gui>. The ToolButton will still "
-"appear in the interface designer, but will behave correctly when the file is "
-"loaded into your program code. Note that the method <code>show_all()</code> "
-"would override this setting - so in the code we have to use <code>show()</"
-"code> separately on all the elements."
-msgstr ""
-"No se quiere que se vea el «ToolButton» <gui>Salir de pantalla completa</gui> "
-"cuando el programa se inicie por primera vez, dado que la aplicación no "
-"estará en modo pantalla completa. Puede establecer esto en la pestaña "
-"<gui>Comunes</gui>, pulsando <gui>No</gui> en la propiedad <gui>Visible</"
-"gui>. El «ToolButton» aparecerá de todos modos en el diseñador de interfaces, "
-"pero se comportará correctamente cuando se cargue el archivo en el código de "
-"su programa. Tenga en cuenta que el método <gui>show_all()</gui> anularía "
-"esta opción, por lo que en el código se tiene que usar <gui>show()</gui> en "
-"todos los elementos por separado."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:142 C/toolbar_builder.vala.page:125
-msgid ""
-"<media type=\"image\" src=\"media/glade_visible_no.png\"> Setting the "
-"visible property to No </media>"
-msgstr ""
-"<media type=\"image\" src=\"media/glade_visible_no.png\"> Establecer la "
-"propiedad «visible» a «No» </media>"
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:147 C/toolbar_builder.vala.page:130
-msgid "Save your work, and close Glade."
-msgstr "Guarde su trabajo y cierre Glade."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:150 C/toolbar_builder.vala.page:133
-msgid ""
-"The XML file created by Glade is shown below. This is the description of the "
-"toolbar. At the time of this writing, the option to add the class Gtk."
-"STYLE_CLASS_PRIMARY_TOOLBAR in the Glade Interface did not exist. We can "
-"manually add this to the XML file. To do this, add the following XML code at "
-"line 9 of <file>toolbar_builder.ui</file>:"
-msgstr ""
-"El archivo XML generado por Glade se muestra debajo. Este es la descripción "
-"de la barra de herramientas. En el momento en el que se escribe esto, la "
-"opción para añadir la clase «Gtk.STYLE_CLASS_PRIMARY_TOOLBAR» en el diseñador "
-"de interfaces Glade no existe. Se puede añadir manualmente al archivo XML. "
-"Para hacer esto, añada el siguiente código XML en la línea 9 de "
-"<file>toolbar_builder.ui</file>:"
-
-#. (itstool) path: item/code
-#: C/toolbar_builder.py.page:151 C/toolbar_builder.vala.page:134
-#, no-wrap
-msgid ""
-"\n"
-" <style>\n"
-" <class name=\"primary-toolbar\"/>\n"
-" </style>\n"
-" "
-msgstr ""
-"\n"
-" <style>\n"
-" <class name=\"primary-toolbar\"/>\n"
-" </style>\n"
-" "
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:156 C/toolbar_builder.vala.page:139
-msgid ""
-"If you do not add this, the program will still work fine. The resulting "
-"toolbar will however look slightly different then the screenshot at the top "
-"of this page."
-msgstr ""
-"Si no añade esto, el programa seguirá funcionando bien. La barra de "
-"herramientas resultante se verá, sin embargo, ligeramente distinta a la de "
-"la captura de pantalla en la parte superior de esta página."
-
-#. (itstool) path: section/code
-#. (itstool) path: page/code
-#: C/toolbar_builder.py.page:159 C/toolbar_builder.vala.page:142
-#, no-wrap
-msgid ""
-"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<interface>\n"
-" <!-- interface-requires gtk+ 3.0 -->\n"
-" <object class=\"GtkToolbar\" id=\"toolbar\">\n"
-" <property name=\"visible\">True</property>\n"
-" <property name=\"can_focus\">False</property>\n"
-" <property name=\"hexpand\">True</property>\n"
-" <property name=\"show_arrow\">False</property>\n"
-" <child>\n"
-" <object class=\"GtkToolButton\" id=\"new_button\">\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"visible\">True</property>\n"
-" <property name=\"can_focus\">False</property>\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"is_important\">True</property>\n"
-" <property name=\"action_name\">app.new</property>\n"
-" <property name=\"label\" translatable=\"yes\">New</property>\n"
-" <property name=\"use_underline\">True</property>\n"
-" <property name=\"stock_id\">gtk-new</property>\n"
-" </object>\n"
-" <packing>\n"
-" <property name=\"expand\">False</property>\n"
-" <property name=\"homogeneous\">True</property>\n"
-" </packing>\n"
-" </child>\n"
-" <child>\n"
-" <object class=\"GtkToolButton\" id=\"open_button\">\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"visible\">True</property>\n"
-" <property name=\"can_focus\">False</property>\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"is_important\">True</property>\n"
-" <property name=\"action_name\">app.open</property>\n"
-" <property name=\"label\" translatable=\"yes\">Open</property>\n"
-" <property name=\"use_underline\">True</property>\n"
-" <property name=\"stock_id\">gtk-open</property>\n"
-" </object>\n"
-" <packing>\n"
-" <property name=\"expand\">False</property>\n"
-" <property name=\"homogeneous\">True</property>\n"
-" </packing>\n"
-" </child>\n"
-" <child>\n"
-" <object class=\"GtkToolButton\" id=\"undo_button\">\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"visible\">True</property>\n"
-" <property name=\"can_focus\">False</property>\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"is_important\">True</property>\n"
-" <property name=\"action_name\">win.undo</property>\n"
-" <property name=\"label\" translatable=\"yes\">Undo</property>\n"
-" <property name=\"use_underline\">True</property>\n"
-" <property name=\"stock_id\">gtk-undo</property>\n"
-" </object>\n"
-" <packing>\n"
-" <property name=\"expand\">False</property>\n"
-" <property name=\"homogeneous\">True</property>\n"
-" </packing>\n"
-" </child>\n"
-" <child>\n"
-" <object class=\"GtkToolButton\" id=\"fullscreen_button\">\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"visible\">True</property>\n"
-" <property name=\"can_focus\">False</property>\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"is_important\">True</property>\n"
-" <property name=\"action_name\">win.fullscreen</property>\n"
-" <property name=\"label\" translatable=\"yes\">Fullscreen</property>\n"
-" <property name=\"use_underline\">True</property>\n"
-" <property name=\"stock_id\">gtk-fullscreen</property>\n"
-" </object>\n"
-" <packing>\n"
-" <property name=\"expand\">False</property>\n"
-" <property name=\"homogeneous\">True</property>\n"
-" </packing>\n"
-" </child>\n"
-" <child>\n"
-" <object class=\"GtkToolButton\" id=\"leave_fullscreen_button\">\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"can_focus\">False</property>\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"is_important\">True</property>\n"
-" <property name=\"action_name\">win.fullscreen</property>\n"
-" <property name=\"label\" translatable=\"yes\">Leave Fullscreen</property>\n"
-" <property name=\"use_underline\">True</property>\n"
-" <property name=\"stock_id\">gtk-leave-fullscreen</property>\n"
-" </object>\n"
-" <packing>\n"
-" <property name=\"expand\">False</property>\n"
-" <property name=\"homogeneous\">True</property>\n"
-" </packing>\n"
-" </child>\n"
-" </object>\n"
-"</interface>\n"
-msgstr ""
-"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<interface>\n"
-" <!-- interface-requires gtk+ 3.0 -->\n"
-" <object class=\"GtkToolbar\" id=\"toolbar\">\n"
-" <property name=\"visible\">True</property>\n"
-" <property name=\"can_focus\">False</property>\n"
-" <property name=\"hexpand\">True</property>\n"
-" <property name=\"show_arrow\">False</property>\n"
-" <child>\n"
-" <object class=\"GtkToolButton\" id=\"new_button\">\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"visible\">True</property>\n"
-" <property name=\"can_focus\">False</property>\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"is_important\">True</property>\n"
-" <property name=\"action_name\">app.new</property>\n"
-" <property name=\"label\" translatable=\"yes\">New</property>\n"
-" <property name=\"use_underline\">True</property>\n"
-" <property name=\"stock_id\">gtk-new</property>\n"
-" </object>\n"
-" <packing>\n"
-" <property name=\"expand\">False</property>\n"
-" <property name=\"homogeneous\">True</property>\n"
-" </packing>\n"
-" </child>\n"
-" <child>\n"
-" <object class=\"GtkToolButton\" id=\"open_button\">\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"visible\">True</property>\n"
-" <property name=\"can_focus\">False</property>\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"is_important\">True</property>\n"
-" <property name=\"action_name\">app.open</property>\n"
-" <property name=\"label\" translatable=\"yes\">Open</property>\n"
-" <property name=\"use_underline\">True</property>\n"
-" <property name=\"stock_id\">gtk-open</property>\n"
-" </object>\n"
-" <packing>\n"
-" <property name=\"expand\">False</property>\n"
-" <property name=\"homogeneous\">True</property>\n"
-" </packing>\n"
-" </child>\n"
-" <child>\n"
-" <object class=\"GtkToolButton\" id=\"undo_button\">\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"visible\">True</property>\n"
-" <property name=\"can_focus\">False</property>\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"is_important\">True</property>\n"
-" <property name=\"action_name\">win.undo</property>\n"
-" <property name=\"label\" translatable=\"yes\">Undo</property>\n"
-" <property name=\"use_underline\">True</property>\n"
-" <property name=\"stock_id\">gtk-undo</property>\n"
-" </object>\n"
-" <packing>\n"
-" <property name=\"expand\">False</property>\n"
-" <property name=\"homogeneous\">True</property>\n"
-" </packing>\n"
-" </child>\n"
-" <child>\n"
-" <object class=\"GtkToolButton\" id=\"fullscreen_button\">\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"visible\">True</property>\n"
-" <property name=\"can_focus\">False</property>\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"is_important\">True</property>\n"
-" <property name=\"action_name\">win.fullscreen</property>\n"
-" <property name=\"label\" translatable=\"yes\">Fullscreen</property>\n"
-" <property name=\"use_underline\">True</property>\n"
-" <property name=\"stock_id\">gtk-fullscreen</property>\n"
-" </object>\n"
-" <packing>\n"
-" <property name=\"expand\">False</property>\n"
-" <property name=\"homogeneous\">True</property>\n"
-" </packing>\n"
-" </child>\n"
-" <child>\n"
-" <object class=\"GtkToolButton\" id=\"leave_fullscreen_button\">\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"can_focus\">False</property>\n"
-" <property name=\"use_action_appearance\">False</property>\n"
-" <property name=\"is_important\">True</property>\n"
-" <property name=\"action_name\">win.fullscreen</property>\n"
-" <property name=\"label\" translatable=\"yes\">Leave Fullscreen</property>\n"
-" <property name=\"use_underline\">True</property>\n"
-" <property name=\"stock_id\">gtk-leave-fullscreen</property>\n"
-" </object>\n"
-" <packing>\n"
-" <property name=\"expand\">False</property>\n"
-" <property name=\"homogeneous\">True</property>\n"
-" </packing>\n"
-" </child>\n"
-" </object>\n"
-"</interface>\n"
-
-#. (itstool) path: section/p
-#. (itstool) path: page/p
-#: C/toolbar_builder.py.page:166 C/toolbar_builder.vala.page:144
-msgid ""
-"We now create the code below, which adds the toolbar from the file we just "
-"created."
-msgstr ""
-"Ahora se crea el código siguiente, que añade la barra de herramientas desde "
-"el archivo que se acaba de crear."
-
-#. (itstool) path: section/code
-#: C/toolbar_builder.py.page:167
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "from gi.repository import Gdk\n"
-#| "from gi.repository import Gio\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"Toolbar Example\", application=app)\n"
-#| " self.set_default_size(400, 200)\n"
-#| "\n"
-#| " # a grid to attach the toolbar (see below)\n"
-#| " grid = Gtk.Grid()\n"
-#| " self.add(grid)\n"
-#| " # we have to show the grid (and therefore the toolbar) with show(),\n"
-#| " # as show_all() would show also the buttons in the toolbar that we want to\n"
-#| " # be hidden (such as the leave_fullscreen button)\n"
-#| " grid.show()\n"
-#| "\n"
-#| " # a builder to add the UI designed with Glade to the grid:\n"
-#| " builder = Gtk.Builder()\n"
-#| " # get the file (if it is there)\n"
-#| " try:\n"
-#| " builder.add_from_file(\"toolbar_builder.ui\")\n"
-#| " except:\n"
-#| " print \"file not found\"\n"
-#| " sys.exit()\n"
-#| " # and attach it to the grid\n"
-#| " grid.attach(builder.get_object(\"toolbar\"), 0, 0, 1, 1)\n"
-#| "\n"
-#| " # two buttons that will be used later in a method\n"
-#| " self.fullscreen_button = builder.get_object(\"fullscreen_button\")\n"
-#| " self.leave_fullscreen_button = builder.get_object(\n"
-#| " \"leave_fullscreen_button\")\n"
-#| "\n"
-#| " # create the actions that control the window, connect their signal to a\n"
-#| " # callback method (see below), add the action to the window:\n"
-#| "\n"
-#| " # undo\n"
-#| " undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
-#| " undo_action.connect(\"activate\", self.undo_callback)\n"
-#| " self.add_action(undo_action)\n"
-#| "\n"
-#| " # and fullscreen\n"
-#| " fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
-#| " fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
-#| " self.add_action(fullscreen_action)\n"
-#| "\n"
-#| " # callback for undo\n"
-#| " def undo_callback(self, action, parameter):\n"
-#| " print \"You clicked \\\"Undo\\\".\"\n"
-#| "\n"
-#| " # callback for fullscreen\n"
-#| " def fullscreen_callback(self, action, parameter):\n"
-#| " # check if the state is the same as Gdk.WindowState.FULLSCREEN, which\n"
-#| " # is a bit flag\n"
-#| " is_fullscreen = self.get_window().get_state(\n"
-#| " ) & Gdk.WindowState.FULLSCREEN != 0\n"
-#| " if is_fullscreen:\n"
-#| " self.unfullscreen()\n"
-#| " self.leave_fullscreen_button.hide()\n"
-#| " self.fullscreen_button.show()\n"
-#| " else:\n"
-#| " self.fullscreen()\n"
-#| " self.fullscreen_button.hide()\n"
-#| " self.leave_fullscreen_button.show()\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " # show the window - with show() not show_all() because that would show also\n"
-#| " # the leave_fullscreen button\n"
-#| " win.show()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| " # actions that control the application: create, connect their signal to a\n"
-#| " # callback method (see below), add the action to the application\n"
-#| "\n"
-#| " # new\n"
-#| " new_action = Gio.SimpleAction.new(\"new\", None)\n"
-#| " new_action.connect(\"activate\", self.new_callback)\n"
-#| " app.add_action(new_action)\n"
-#| "\n"
-#| " # open\n"
-#| " open_action = Gio.SimpleAction.new(\"open\", None)\n"
-#| " open_action.connect(\"activate\", self.open_callback)\n"
-#| " app.add_action(open_action)\n"
-#| "\n"
-#| " # callback for new\n"
-#| " def new_callback(self, action, parameter):\n"
-#| " print \"You clicked \\\"New\\\".\"\n"
-#| "\n"
-#| " # callback for open\n"
-#| " def open_callback(self, action, parameter):\n"
-#| " print \"You clicked \\\"Open\\\".\"\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gdk\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Toolbar Example\", application=app)\n"
-" self.set_default_size(400, 200)\n"
-"\n"
-" # a grid to attach the toolbar (see below)\n"
-" grid = Gtk.Grid()\n"
-" self.add(grid)\n"
-" # we have to show the grid (and therefore the toolbar) with show(),\n"
-" # as show_all() would show also the buttons in the toolbar that we want to\n"
-" # be hidden (such as the leave_fullscreen button)\n"
-" grid.show()\n"
-"\n"
-" # a builder to add the UI designed with Glade to the grid:\n"
-" builder = Gtk.Builder()\n"
-" # get the file (if it is there)\n"
-" try:\n"
-" builder.add_from_file(\"toolbar_builder.ui\")\n"
-" except:\n"
-" print(\"file not found\")\n"
-" sys.exit()\n"
-" # and attach it to the grid\n"
-" grid.attach(builder.get_object(\"toolbar\"), 0, 0, 1, 1)\n"
-"\n"
-" # two buttons that will be used later in a method\n"
-" self.fullscreen_button = builder.get_object(\"fullscreen_button\")\n"
-" self.leave_fullscreen_button = builder.get_object(\n"
-" \"leave_fullscreen_button\")\n"
-"\n"
-" # create the actions that control the window, connect their signal to a\n"
-" # callback method (see below), add the action to the window:\n"
-"\n"
-" # undo\n"
-" undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
-" undo_action.connect(\"activate\", self.undo_callback)\n"
-" self.add_action(undo_action)\n"
-"\n"
-" # and fullscreen\n"
-" fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
-" fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
-" self.add_action(fullscreen_action)\n"
-"\n"
-" # callback for undo\n"
-" def undo_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Undo\\\".\")\n"
-"\n"
-" # callback for fullscreen\n"
-" def fullscreen_callback(self, action, parameter):\n"
-" # check if the state is the same as Gdk.WindowState.FULLSCREEN, which\n"
-" # is a bit flag\n"
-" is_fullscreen = self.get_window().get_state(\n"
-" ) & Gdk.WindowState.FULLSCREEN != 0\n"
-" if is_fullscreen:\n"
-" self.unfullscreen()\n"
-" self.leave_fullscreen_button.hide()\n"
-" self.fullscreen_button.show()\n"
-" else:\n"
-" self.fullscreen()\n"
-" self.fullscreen_button.hide()\n"
-" self.leave_fullscreen_button.show()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" # show the window - with show() not show_all() because that would show also\n"
-" # the leave_fullscreen button\n"
-" win.show()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # actions that control the application: create, connect their signal to a\n"
-" # callback method (see below), add the action to the application\n"
-"\n"
-" # new\n"
-" new_action = Gio.SimpleAction.new(\"new\", None)\n"
-" new_action.connect(\"activate\", self.new_callback)\n"
-" app.add_action(new_action)\n"
-"\n"
-" # open\n"
-" open_action = Gio.SimpleAction.new(\"open\", None)\n"
-" open_action.connect(\"activate\", self.open_callback)\n"
-" app.add_action(open_action)\n"
-"\n"
-" # callback for new\n"
-" def new_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"New\\\".\")\n"
-"\n"
-" # callback for open\n"
-" def open_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Open\\\".\")\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gdk\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Toolbar Example\", application=app)\n"
-" self.set_default_size(400, 200)\n"
-"\n"
-" # a grid to attach the toolbar (see below)\n"
-" grid = Gtk.Grid()\n"
-" self.add(grid)\n"
-" # we have to show the grid (and therefore the toolbar) with show(),\n"
-" # as show_all() would show also the buttons in the toolbar that we want to\n"
-" # be hidden (such as the leave_fullscreen button)\n"
-" grid.show()\n"
-"\n"
-" # a builder to add the UI designed with Glade to the grid:\n"
-" builder = Gtk.Builder()\n"
-" # get the file (if it is there)\n"
-" try:\n"
-" builder.add_from_file(\"toolbar_builder.ui\")\n"
-" except:\n"
-" print(\"file not found\")\n"
-" sys.exit()\n"
-" # and attach it to the grid\n"
-" grid.attach(builder.get_object(\"toolbar\"), 0, 0, 1, 1)\n"
-"\n"
-" # two buttons that will be used later in a method\n"
-" self.fullscreen_button = builder.get_object(\"fullscreen_button\")\n"
-" self.leave_fullscreen_button = builder.get_object(\n"
-" \"leave_fullscreen_button\")\n"
-"\n"
-" # create the actions that control the window, connect their signal to a\n"
-" # callback method (see below), add the action to the window:\n"
-"\n"
-" # undo\n"
-" undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
-" undo_action.connect(\"activate\", self.undo_callback)\n"
-" self.add_action(undo_action)\n"
-"\n"
-" # and fullscreen\n"
-" fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
-" fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
-" self.add_action(fullscreen_action)\n"
-"\n"
-" # callback for undo\n"
-" def undo_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Undo\\\".\")\n"
-"\n"
-" # callback for fullscreen\n"
-" def fullscreen_callback(self, action, parameter):\n"
-" # check if the state is the same as Gdk.WindowState.FULLSCREEN, which\n"
-" # is a bit flag\n"
-" is_fullscreen = self.get_window().get_state(\n"
-" ) & Gdk.WindowState.FULLSCREEN != 0\n"
-" if is_fullscreen:\n"
-" self.unfullscreen()\n"
-" self.leave_fullscreen_button.hide()\n"
-" self.fullscreen_button.show()\n"
-" else:\n"
-" self.fullscreen()\n"
-" self.fullscreen_button.hide()\n"
-" self.leave_fullscreen_button.show()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" # show the window - with show() not show_all() because that would show also\n"
-" # the leave_fullscreen button\n"
-" win.show()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" # actions that control the application: create, connect their signal to a\n"
-" # callback method (see below), add the action to the application\n"
-"\n"
-" # new\n"
-" new_action = Gio.SimpleAction.new(\"new\", None)\n"
-" new_action.connect(\"activate\", self.new_callback)\n"
-" app.add_action(new_action)\n"
-"\n"
-" # open\n"
-" open_action = Gio.SimpleAction.new(\"open\", None)\n"
-" open_action.connect(\"activate\", self.open_callback)\n"
-" app.add_action(open_action)\n"
-"\n"
-" # callback for new\n"
-" def new_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"New\\\".\")\n"
-"\n"
-" # callback for open\n"
-" def open_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Open\\\".\")\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/toolbar_builder.py.page:172
-msgid "Useful methods for Gtk.Builder"
-msgstr "Métodos útiles para Gtk.Builder"
-
-#. (itstool) path: section/p
-#: C/toolbar_builder.py.page:173
-msgid ""
-"For the useful methods for a Toolbar widget, see <link xref=\"toolbar.py\"/>"
-msgstr ""
-"Para ver los métodos útiles de un widget de barra de herramientas, consulte "
-"la <link xref=\"toolbar.py\"/>"
-
-#. (itstool) path: section/p
-#: C/toolbar_builder.py.page:175
-msgid "Gtk.Builder builds an interface from an XML UI definition."
-msgstr "Gtk.Builder construye una interfaz desde una definición UI XML."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:178
-msgid ""
-"<code>add_from_file(filename)</code> loads and parses the given file and "
-"merges it with the current contents of the Gtk.Builder."
-msgstr ""
-"<code>add_from_file(filename)</code> carga y procesa el archivo dado y lo "
-"une con el contenido actual del Gtk.Builder."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:179
-msgid ""
-"<code>add_from_string(string)</code> parses the given string and merges it "
-"with the current contents of the Gtk.Builder."
-msgstr ""
-"<code>add_from_string(string)</code> procesa la cadena dada y la une con el "
-"contenido actual del Gtk.Builder."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:180
-msgid ""
-"<code>add_objects_from_file(filename, object_ids)</code> is the same as "
-"<code>add_from_file()</code>, but it loads only the objects with the ids "
-"given in the <code>object_id</code>s list."
-msgstr ""
-"<code>add_objects_from_file(filename, object_ids)</code> es igual a "
-"<code>add_from_file()</code>, pero solo carga los objetos con los ID dados "
-"en la lista de <code>object_id</code>."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:181
-msgid ""
-"<code>add_objects_from_string(string, object_ids)</code> is the same as "
-"<code>add_from_string()</code>, but it loads only the objects with the ids "
-"given in the <code>object_id</code>s list."
-msgstr ""
-"<code>add_objects_from_string(string, object_ids)</code> es lo mismo que "
-"<code>add_from_string()</code>, pero sólo carga los objetos con los ID dados "
-"en la lista de <code>object_id</code>."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:182
-msgid ""
-"<code>get_object(object_id)</code> retrieves the widget with the id "
-"<code>object_id</code> from the loaded objects in the builder."
-msgstr ""
-"<code>get_object(object_id)</code> obtiene el widget con el ID "
-"<code>object_id</code> de los objetos cargados en el constructor."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:183
-msgid "<code>get_objects()</code> returns all loaded objects."
-msgstr "<code>get_objects()</code> devuelve todos los objetos cargados."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.py.page:184
-msgid ""
-"<code>connect_signals(handler_object)</code> connects the signals to the "
-"methods given in the <code>handler_object</code>. This can be any object "
-"which contains keys or attributes that are called like the signal handler "
-"names given in the interface description, e.g. a class or a dict. In line 39 "
-"the signal <code>\"activate\"</code> from the action <code>undo_action</"
-"code> is connected to the callback function <code>undo_callback()</code> "
-"using <code><var>action</var>.connect(<var>signal</var>, <var>callback "
-"function</var>)</code>. See <link xref=\"signals-callbacks.py\"/> for a more "
-"detailed explanation."
-msgstr ""
-"<code>connect_signals(handler_object)</code> conecta las señales a los "
-"métodos dados en el <code>handler_object</code>. Este puede ser cualquier "
-"objeto que contenga claves o atributos que se llamen como los nombres del "
-"manejador de señales dados en la descripción de la interfaz, por ejemplo una "
-"clase o un diccionario. En la línea 39 la señal <code>\"activate\"</code> de "
-"la acción <code>undo_action</code> se conecta a la función de retorno de "
-"llamada <code>undo_callback()</code> usando <code><var>action</var>.connect"
-"(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
-"detallada."
-
-#. (itstool) path: info/title
-#: C/toolbar_builder.vala.page:8
-msgctxt "text"
-msgid "Toolbar created using Glade (Vala)"
-msgstr "Barra de herramientas creada con Glade (Vala)"
-
-#. (itstool) path: page/p
-#: C/toolbar_builder.vala.page:26
-msgid ""
-"This example is similar to <link xref=\"toolbar.vala\"/>, except we use "
-"Glade to create the toolbar in an XML ui file."
-msgstr ""
-"Este ejemplo es similar a <link xref=\"toolbar.vala\"/>, excepto que se usa "
-"Glade para crear la barra de herramientas en un archivo ui de XML."
-
-#. (itstool) path: item/p
-#: C/toolbar_builder.vala.page:124
-msgid ""
-"When our program will first start, we don't want the <gui>Leave Fullscreen</"
-"gui> ToolButton to be visible, since the application will not be in "
-"fullscreen mode. You can set this in the <gui>Common</gui> tab, by clicking "
-"the <gui>Visible</gui> property to <gui>No</gui>. The ToolButton will still "
-"appear in the interface designer, but will behave correctly when the file is "
-"loaded into your program code."
-msgstr ""
-"No se quiere que se vea el «ToolButton» <gui>Leave Fullscreen</gui> cuando el "
-"programa se inicie por primera vez, dado que la aplicación no estará en modo "
-"a pantalla completa. Puede establecer esto en la pestaña <gui>Comunes</gui>, "
-"pulsando <gui>No</gui> en la propiedad <gui>Visible</gui>. El «ToolButton» "
-"aparecerá de todos modos en el diseñador de interfaces, pero se comportará "
-"correctamente cuando se cargue el archivo en el código de su programa."
-
-#. (itstool) path: page/code
-#: C/toolbar_builder.vala.page:145
-#, no-wrap
-msgid ""
-"/* This is the Window */\n"
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* Declare these two ToolButtons, as we will get them\n"
-"\t * from the ui file (see lines 32 and 33), so we can\n"
-"\t * hide() and show() them as needed.*/\n"
-"\tGtk.ToolButton fullscreen_button;\n"
-"\tGtk.ToolButton leave_fullscreen_button;\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Toolbar Example\");\n"
-"\n"
-"\t\tthis.set_default_size (400, 200);\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tthis.add (grid);\n"
-"\t\tgrid.show ();\n"
-"\n"
-"\t\t/* add the toolbar from the ui file */\n"
-"\t\tvar builder = new Gtk.Builder ();\n"
-"\t\ttry {\n"
-"\t\t\tbuilder.add_from_file (\"toolbar_builder.ui\");\n"
-"\t\t}\n"
-"\t\t/* Handle the exception */\n"
-"\t\tcatch (Error e) {\n"
-"\t\t\terror (\"Unable to load file: %s\", e.message);\n"
-"\t\t}\n"
-"\n"
-"\t\tgrid.attach (builder.get_object (\"toolbar\") as Gtk.Toolbar, 0, 0, 1, 1);\n"
-"\n"
-"\t\t/* get these objects from the ui file so we can toggle between them */\n"
-"\t\tfullscreen_button = builder.get_object (\"fullscreen_button\") as Gtk.ToolButton;\n"
-"\t\tleave_fullscreen_button = builder.get_object (\"leave_fullscreen_button\") as Gtk.ToolButton;\n"
-"\n"
-"\t\t/* create the \"undo\" window action action */\n"
-"\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
-"\t\tundo_action.activate.connect (undo_callback);\n"
-"\t\tthis.add_action (undo_action);\n"
-"\n"
-"\t\t/* create the \"fullscreen\" window action */\n"
-"\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
-"\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
-"\t\tthis.add_action (fullscreen_action);\n"
-"\t}\n"
-"\n"
-"\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
-"\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
-"\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n"
-"\t\t\tthis.unfullscreen ();\n"
-"\t\t\tleave_fullscreen_button.hide ();\n"
-"\t\t\tfullscreen_button.show ();\n"
-"\t\t}\n"
-"\t\telse {\n"
-"\t\t\tthis.fullscreen ();\n"
-"\t\t\tfullscreen_button.hide ();\n"
-"\t\t\tleave_fullscreen_button.show ();\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application */\n"
-"class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\t/* Create the \"new\" action and add it to the app*/\n"
-"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
-"\t\tnew_action.activate.connect (new_callback);\n"
-"\t\tthis.add_action (new_action);\n"
-"\n"
-"\t\t/* Create the \"open\" action, and add it to the app */\n"
-"\t\tvar open_action = new SimpleAction (\"open\", null);\n"
-"\t\topen_action.activate.connect (open_callback);\n"
-"\t\tthis.add_action (open_action);\n"
-"\n"
-"\t\t/* You could also add the action to the app menu\n"
-"\t\t * if you wanted to.\n"
-"\t\t */\n"
-"\t\t//var menu = new Menu ();\n"
-"\t\t//menu.append (\"New\", \"app.new\");\n"
-"\t\t//this.app_menu = menu;\n"
-"\t}\n"
-"\n"
-"\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
-"\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* The main function creates the application and runs it. */\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"/* This is the Window */\n"
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* Declare these two ToolButtons, as we will get them\n"
-"\t * from the ui file (see lines 32 and 33), so we can\n"
-"\t * hide() and show() them as needed.*/\n"
-"\tGtk.ToolButton fullscreen_button;\n"
-"\tGtk.ToolButton leave_fullscreen_button;\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Toolbar Example\");\n"
-"\n"
-"\t\tthis.set_default_size (400, 200);\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tthis.add (grid);\n"
-"\t\tgrid.show ();\n"
-"\n"
-"\t\t/* add the toolbar from the ui file */\n"
-"\t\tvar builder = new Gtk.Builder ();\n"
-"\t\ttry {\n"
-"\t\t\tbuilder.add_from_file (\"toolbar_builder.ui\");\n"
-"\t\t}\n"
-"\t\t/* Handle the exception */\n"
-"\t\tcatch (Error e) {\n"
-"\t\t\terror (\"Unable to load file: %s\", e.message);\n"
-"\t\t}\n"
-"\n"
-"\t\tgrid.attach (builder.get_object (\"toolbar\") as Gtk.Toolbar, 0, 0, 1, 1);\n"
-"\n"
-"\t\t/* get these objects from the ui file so we can toggle between them */\n"
-"\t\tfullscreen_button = builder.get_object (\"fullscreen_button\") as Gtk.ToolButton;\n"
-"\t\tleave_fullscreen_button = builder.get_object (\"leave_fullscreen_button\") as Gtk.ToolButton;\n"
-"\n"
-"\t\t/* create the \"undo\" window action action */\n"
-"\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
-"\t\tundo_action.activate.connect (undo_callback);\n"
-"\t\tthis.add_action (undo_action);\n"
-"\n"
-"\t\t/* create the \"fullscreen\" window action */\n"
-"\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
-"\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
-"\t\tthis.add_action (fullscreen_action);\n"
-"\t}\n"
-"\n"
-"\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
-"\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
-"\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n"
-"\t\t\tthis.unfullscreen ();\n"
-"\t\t\tleave_fullscreen_button.hide ();\n"
-"\t\t\tfullscreen_button.show ();\n"
-"\t\t}\n"
-"\t\telse {\n"
-"\t\t\tthis.fullscreen ();\n"
-"\t\t\tfullscreen_button.hide ();\n"
-"\t\t\tleave_fullscreen_button.show ();\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application */\n"
-"class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\t/* Create the \"new\" action and add it to the app*/\n"
-"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
-"\t\tnew_action.activate.connect (new_callback);\n"
-"\t\tthis.add_action (new_action);\n"
-"\n"
-"\t\t/* Create the \"open\" action, and add it to the app */\n"
-"\t\tvar open_action = new SimpleAction (\"open\", null);\n"
-"\t\topen_action.activate.connect (open_callback);\n"
-"\t\tthis.add_action (open_action);\n"
-"\n"
-"\t\t/* You could also add the action to the app menu\n"
-"\t\t * if you wanted to.\n"
-"\t\t */\n"
-"\t\t//var menu = new Menu ();\n"
-"\t\t//menu.append (\"New\", \"app.new\");\n"
-"\t\t//this.app_menu = menu;\n"
-"\t}\n"
-"\n"
-"\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
-"\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* The main function creates the application and runs it. */\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/tooltip.c.page:23 C/tooltip.js.page:23 C/tooltip.py.page:24
-#: C/tooltip.vala.page:23
-msgctxt "_"
-msgid "external ref='media/tooltip.png' md5='41e35860a51e39cb48c71e57bb8fb1d0'"
-msgstr ""
-"external ref='media/tooltip.png' md5='41e35860a51e39cb48c71e57bb8fb1d0'"
-
-#. (itstool) path: info/title
-#: C/tooltip.c.page:8
-msgctxt "text"
-msgid "Tooltip (C)"
-msgstr "Tooltip (C)"
-
-#. (itstool) path: info/desc
-#: C/tooltip.c.page:19 C/tooltip.js.page:19 C/tooltip.py.page:20
-#: C/tooltip.vala.page:19
-msgid "Add tips to your widgets"
-msgstr "Añadir consejos a sus widgets"
-
-#. (itstool) path: page/title
-#: C/tooltip.c.page:22 C/tooltip.js.page:22 C/tooltip.py.page:23
-#: C/tooltip.vala.page:22
-msgid "Tooltip"
-msgstr "Consejo"
-
-#. (itstool) path: page/p
-#: C/tooltip.c.page:24 C/tooltip.js.page:24 C/tooltip.py.page:25
-#: C/tooltip.vala.page:24
-msgid "A toolbar with a tooltip (with an image) for a button."
-msgstr ""
-"Una barra de herramientas con un consejo (con una imagen) para un botón."
-
-#. (itstool) path: note/p
-#: C/tooltip.c.page:26
-msgid ""
-"This example builds on the <link xref=\"toolbar.c\">Toolbar</link> example."
-msgstr "Esto construye el ejemplo de <link xref=\"toolbar.c\">Toolbar</link>."
-
-#. (itstool) path: section/code
-#: C/tooltip.c.page:31
-#, no-wrap
-msgid ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"static gboolean \n"
-"undo_tooltip_callback (GtkStatusIcon *status_icon,\n"
-" gint x,\n"
-" gint y,\n"
-" gboolean keyboard_mode,\n"
-" GtkTooltip *tooltip,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* set the text for the tooltip */\n"
-" gtk_tooltip_set_text (tooltip, \"Undo your last action\");\n"
-" \n"
-" /* set an icon fot the tooltip */\n"
-" gtk_tooltip_set_icon_from_stock(tooltip, \"gtk-undo\", GTK_ICON_SIZE_MENU);\n"
-"\n"
-" /* show the tooltip */\n"
-" return TRUE;\n"
-"}\n"
-"\n"
-"\n"
-"static void\n"
-"undo_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"Undo\\\".\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *grid;\n"
-" GtkWidget *window;\n"
-" GtkWidget *toolbar;\n"
-"\n"
-" GtkToolItem *new_button;\n"
-" GtkToolItem *open_button;\n"
-" GtkToolItem *undo_button;\n"
-"\n"
-" GtkStyleContext *style_context;\n"
-"\n"
-" GSimpleAction *undo_action;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Toolbar with Tooltips Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n"
-"\n"
-" /* Here we begin to create the toolbar */\n"
-" toolbar = gtk_toolbar_new ();\n"
-"\n"
-" /* Set the toolbar to be the primary toolbar of the application */\n"
-" style_context = gtk_widget_get_style_context (toolbar);\n"
-" gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);\n"
-"\n"
-" /* Create a button for the \"new\" action, with a stock image */\n"
-" new_button = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);\n"
-" gtk_tool_item_set_is_important (new_button, TRUE);\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), new_button, 0);\n"
-" gtk_widget_show (GTK_WIDGET (new_button));\n"
-"\n"
-" /* Set the action name for the \"new\" action. We use \"app.new\" to\n"
-" * indicate that the action controls the application.\n"
-" */\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (new_button), \"app.new\");\n"
-"\n"
-" /*******************************\n"
-" * Tooltip for the New ToolItem:\n"
-" * a tooltip with text\n"
-" *******************************/\n"
-" gtk_tool_item_set_tooltip_text (new_button, \"Create a new file\"); \n"
-"\n"
-" /* \"Open\" */\n"
-" open_button = gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);\n"
-" gtk_tool_item_set_is_important (open_button, TRUE);\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), open_button, 1);\n"
-" gtk_widget_show (GTK_WIDGET (open_button));\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (open_button), \"app.open\");\n"
-"\n"
-" /*******************************\n"
-" * Tooltip for the Open ToolItem:\n"
-" * a tooltip using Pango markup \n"
-" * language\n"
-" *******************************/\n"
-" gtk_tool_item_set_tooltip_text (open_button, \"Open an <i>existing</i> file\");\n"
-"\n"
-" /* \"Undo\" */\n"
-" undo_button = gtk_tool_button_new_from_stock (GTK_STOCK_UNDO);\n"
-" gtk_tool_item_set_is_important (undo_button, TRUE);\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), undo_button, 2);\n"
-" gtk_widget_show (GTK_WIDGET (undo_button));\n"
-"\n"
-" /* In this case, we use \"win.undo\" to indicate that\n"
-" * the action controls only the window\n"
-" */\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (undo_button), \"win.undo\");\n"
-"\n"
-" /*******************************\n"
-" * Tooltip for the Undo ToolItem:\n"
-" * a tooltip with an image\n"
-" *******************************/\n"
-" gtk_widget_set_has_tooltip (GTK_WIDGET (undo_button), TRUE);\n"
-"\n"
-" // Next, we connect the query_tooltip signal\n"
-" g_signal_connect (undo_button, \"query-tooltip\", G_CALLBACK (undo_tooltip_callback), NULL);\n"
-"\n"
-" gtk_widget_set_hexpand (toolbar, TRUE);\n"
-" gtk_widget_show (toolbar);\n"
-"\n"
-" grid = gtk_grid_new ();\n"
-" gtk_grid_attach (GTK_GRID (grid), toolbar, 0, 0, 1, 1);\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
-" gtk_widget_show (GTK_WIDGET (grid));\n"
-"\n"
-" /* Use the action names to create the actions that control the window, and\n"
-" * connect them to the appropriate callbackfunctions.\n"
-" */\n"
-" undo_action = g_simple_action_new (\"undo\", NULL);\n"
-" g_signal_connect (undo_action, \"activate\", G_CALLBACK (undo_callback),\n"
-" GTK_WINDOW (window));\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (undo_action));\n"
-"\n"
-" gtk_widget_show (window);\n"
-"}\n"
-"\n"
-"\n"
-"/* Callback function for the new action */\n"
-"static void\n"
-"new_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"New\\\".\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"/* Callback function for the open action */\n"
-"static void\n"
-"open_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"Open\\\".\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"/* In this function, we create the actions in which control the window, and\n"
-" * connect their signals to the appropriate callback function.\n"
-" */\n"
-"static void\n"
-"startup (GApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GSimpleAction *new_action;\n"
-" GSimpleAction *open_action;\n"
-"\n"
-" new_action = g_simple_action_new (\"new\", NULL);\n"
-" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
-"\n"
-" open_action = g_simple_action_new (\"open\", NULL);\n"
-" g_signal_connect (open_action, \"activate\", G_CALLBACK (open_callback), app);\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (open_action));\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the application */\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"#include <gtk/gtk.h>\n"
-"\n"
-"static gboolean \n"
-"undo_tooltip_callback (GtkStatusIcon *status_icon,\n"
-" gint x,\n"
-" gint y,\n"
-" gboolean keyboard_mode,\n"
-" GtkTooltip *tooltip,\n"
-" gpointer user_data)\n"
-"{\n"
-" /* set the text for the tooltip */\n"
-" gtk_tooltip_set_text (tooltip, \"Undo your last action\");\n"
-" \n"
-" /* set an icon fot the tooltip */\n"
-" gtk_tooltip_set_icon_from_stock(tooltip, \"gtk-undo\", GTK_ICON_SIZE_MENU);\n"
-"\n"
-" /* show the tooltip */\n"
-" return TRUE;\n"
-"}\n"
-"\n"
-"\n"
-"static void\n"
-"undo_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"Undo\\\".\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *grid;\n"
-" GtkWidget *window;\n"
-" GtkWidget *toolbar;\n"
-"\n"
-" GtkToolItem *new_button;\n"
-" GtkToolItem *open_button;\n"
-" GtkToolItem *undo_button;\n"
-"\n"
-" GtkStyleContext *style_context;\n"
-"\n"
-" GSimpleAction *undo_action;\n"
-"\n"
-" window = gtk_application_window_new (app);\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Toolbar with Tooltips Example\");\n"
-" gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n"
-"\n"
-" /* Here we begin to create the toolbar */\n"
-" toolbar = gtk_toolbar_new ();\n"
-"\n"
-" /* Set the toolbar to be the primary toolbar of the application */\n"
-" style_context = gtk_widget_get_style_context (toolbar);\n"
-" gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);\n"
-"\n"
-" /* Create a button for the \"new\" action, with a stock image */\n"
-" new_button = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);\n"
-" gtk_tool_item_set_is_important (new_button, TRUE);\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), new_button, 0);\n"
-" gtk_widget_show (GTK_WIDGET (new_button));\n"
-"\n"
-" /* Set the action name for the \"new\" action. We use \"app.new\" to\n"
-" * indicate that the action controls the application.\n"
-" */\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (new_button), \"app.new\");\n"
-"\n"
-" /*******************************\n"
-" * Tooltip for the New ToolItem:\n"
-" * a tooltip with text\n"
-" *******************************/\n"
-" gtk_tool_item_set_tooltip_text (new_button, \"Create a new file\"); \n"
-"\n"
-" /* \"Open\" */\n"
-" open_button = gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);\n"
-" gtk_tool_item_set_is_important (open_button, TRUE);\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), open_button, 1);\n"
-" gtk_widget_show (GTK_WIDGET (open_button));\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (open_button), \"app.open\");\n"
-"\n"
-" /*******************************\n"
-" * Tooltip for the Open ToolItem:\n"
-" * a tooltip using Pango markup \n"
-" * language\n"
-" *******************************/\n"
-" gtk_tool_item_set_tooltip_text (open_button, \"Open an <i>existing</i> file\");\n"
-"\n"
-" /* \"Undo\" */\n"
-" undo_button = gtk_tool_button_new_from_stock (GTK_STOCK_UNDO);\n"
-" gtk_tool_item_set_is_important (undo_button, TRUE);\n"
-" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), undo_button, 2);\n"
-" gtk_widget_show (GTK_WIDGET (undo_button));\n"
-"\n"
-" /* In this case, we use \"win.undo\" to indicate that\n"
-" * the action controls only the window\n"
-" */\n"
-" gtk_actionable_set_action_name (GTK_ACTIONABLE (undo_button), \"win.undo\");\n"
-"\n"
-" /*******************************\n"
-" * Tooltip for the Undo ToolItem:\n"
-" * a tooltip with an image\n"
-" *******************************/\n"
-" gtk_widget_set_has_tooltip (GTK_WIDGET (undo_button), TRUE);\n"
-"\n"
-" // Next, we connect the query_tooltip signal\n"
-" g_signal_connect (undo_button, \"query-tooltip\", G_CALLBACK (undo_tooltip_callback), NULL);\n"
-"\n"
-" gtk_widget_set_hexpand (toolbar, TRUE);\n"
-" gtk_widget_show (toolbar);\n"
-"\n"
-" grid = gtk_grid_new ();\n"
-" gtk_grid_attach (GTK_GRID (grid), toolbar, 0, 0, 1, 1);\n"
-" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
-" gtk_widget_show (GTK_WIDGET (grid));\n"
-"\n"
-" /* Use the action names to create the actions that control the window, and\n"
-" * connect them to the appropriate callbackfunctions.\n"
-" */\n"
-" undo_action = g_simple_action_new (\"undo\", NULL);\n"
-" g_signal_connect (undo_action, \"activate\", G_CALLBACK (undo_callback),\n"
-" GTK_WINDOW (window));\n"
-" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (undo_action));\n"
-"\n"
-" gtk_widget_show (window);\n"
-"}\n"
-"\n"
-"\n"
-"/* Callback function for the new action */\n"
-"static void\n"
-"new_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"New\\\".\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"/* Callback function for the open action */\n"
-"static void\n"
-"open_callback (GSimpleAction *simple,\n"
-" GVariant *parameter,\n"
-" gpointer user_data)\n"
-"{\n"
-" g_print (\"You clicked \\\"Open\\\".\\n\");\n"
-"}\n"
-"\n"
-"\n"
-"/* In this function, we create the actions in which control the window, and\n"
-" * connect their signals to the appropriate callback function.\n"
-" */\n"
-"static void\n"
-"startup (GApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GSimpleAction *new_action;\n"
-" GSimpleAction *open_action;\n"
-"\n"
-" new_action = g_simple_action_new (\"new\", NULL);\n"
-" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
-"\n"
-" open_action = g_simple_action_new (\"open\", NULL);\n"
-" g_signal_connect (open_action, \"activate\", G_CALLBACK (open_callback), app);\n"
-" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (open_action));\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Startup function for the application */\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-"\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/tooltip.c.page:38 C/tooltip.py.page:59
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkTooltip.html"
-"\">GtkTooltip</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkTooltip.html"
-"\">GtkTooltip</link>"
-
-#. (itstool) path: item/p
-#: C/tooltip.c.page:40 C/tooltip.py.page:61
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkWidget.html"
-"\">GtkWidget</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/GtkWidget.html"
-"\">GtkWidget</link>"
-
-#. (itstool) path: item/p
-#: C/tooltip.c.page:41 C/tooltip.js.page:40 C/tooltip.py.page:62
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Stock-Items.html"
-"\">Stock Items</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Stock-Items.html"
-"\">Elementos del almacén</link>"
-
-#. (itstool) path: info/title
-#: C/tooltip.js.page:8
-msgctxt "text"
-msgid "Tooltip (JavaScript)"
-msgstr "Tooltip (JavaScript)"
-
-#. (itstool) path: note/p
-#: C/tooltip.js.page:25
-msgid ""
-"This example builds on the <link xref=\"toolbar.js\">Toolbar</link> example."
-msgstr "Esto construye el ejemplo de <link xref=\"toolbar.js\">Toolbar</link>."
-
-#. (itstool) path: section/code
-#: C/tooltip.js.page:30
-#, no-wrap
-msgid ""
-"//!/usr/bin/gjs\n"
-"\n"
-"const Gdk = imports.gi.Gdk;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk; \n"
-"const Lang = imports.lang;\n"
-"\n"
-"const TooltipExample = new Lang.Class ({\n"
-" Name: 'Tooltip Example',\n"
-"\n"
-" // Create the application \n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({ application_id: 'org.example.jstooltip' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this.window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Toolbar with Tooltips Example\",\n"
-" default_width: 400,\n"
-" default_height: 200,\n"
-" border_width: 10 });\n"
-"\n"
-" this.grid = new Gtk.Grid();\n"
-"\n"
-" this.toolbar = this._createToolbar();\n"
-" this.toolbar.set_hexpand(true);\n"
-" this.toolbar.show();\n"
-"\n"
-" this.grid.attach(this.toolbar, 0, 0, 1, 1);\n"
-"\n"
-" this.window.add(this.grid);\n"
-"\n"
-" this._newAction = new Gio.SimpleAction({ name: \"new\" });\n"
-" this._newAction.connect(\"activate\", Lang.bind(this, this._newCallback));\n"
-" this.window.add_action(this._newAction);\n"
-"\n"
-" this._openAction = new Gio.SimpleAction({ name: \"open\" });\n"
-" this._openAction.connect(\"activate\", Lang.bind(this, this._openCallback));\n"
-" this.window.add_action(this._openAction);\n"
-"\n"
-" this._undoAction = new Gio.SimpleAction({ name: \"undo\" });\n"
-" this._undoAction.connect(\"activate\", Lang.bind(this, this._undoCallback));\n"
-" this.window.add_action(this._undoAction);\n"
-"\n"
-" this._fullScreenAction = new Gio.SimpleAction({ name: \"fullscreenToggle\" });\n"
-" this._fullScreenAction.connect(\"activate\", Lang.bind(this, this._fullScreenCallback));\n"
-" this.window.add_action(this._fullScreenAction);\n"
-"\n"
-" this.window.show_all();\n"
-" },\n"
-"\n"
-" _createToolbar: function(){\n"
-" this.toolbar = new Gtk.Toolbar();\n"
-" this.toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
-"\n"
-" // button for the \"new\" action\n"
-" this.newButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW);\n"
-" // with a tooltip with a given text \n"
-" this.newButton.set_tooltip_text(\"Create a new file\");\n"
-" this.newButton.set_is_important(true);\n"
-" this.toolbar.insert(this.newButton, 0);\n"
-" this.newButton.show();\n"
-" this.newButton.set_action_name(\"win.new\");\n"
-"\n"
-" // button for the \"open\" action\n"
-" this.openButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN);\n"
-" // with a tooltip with a given text in the Pango markup language \n"
-" this.openButton.set_tooltip_markup(\"Open an <i>existing</i> file\");\n"
-" this.openButton.set_is_important(true);\n"
-" this.toolbar.insert(this.openButton, 1);\n"
-" this.openButton.show();\n"
-" this.openButton.set_action_name(\"win.open\");\n"
-"\n"
-" // button for the \"undo\" action\n"
-" this.undoButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO);\n"
-" // with a tooltip with an image\n"
-" // set true the property \"has-tooltip\" \n"
-" this.undoButton.set_property(\"has-tooltip\", true);\n"
-" // connect to the callback function that for the tooltip\n"
-" // with the signal \"query-tooltip\"\n"
-" this.undoButton.connect(\"query-tooltip\", Lang.bind(this, this._undoTooltipCallback));\n"
-" this.undoButton.set_is_important(true);\n"
-" this.toolbar.insert(this.undoButton, 2);\n"
-" this.undoButton.show();\n"
-" this.undoButton.set_action_name(\"win.undo\");\n"
-"\n"
-" // button for the \"fullscreen/leave fullscreen\" action\n"
-" this.fullscreenButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_FULLSCREEN);\n"
-" this.fullscreenButton.set_is_important(true);\n"
-" this.toolbar.insert(this.fullscreenButton, 3);\n"
-" this.fullscreenButton.set_action_name(\"win.fullscreenToggle\");\n"
-"\n"
-" return this.toolbar;\n"
-" },\n"
-"\n"
-" _newCallback: function(action, parameter) {\n"
-" print(\"You clicked \\\"New\\\".\");\n"
-" },\n"
-"\n"
-" _openCallback: function(action, parameter) {\n"
-" print(\"You clicked \\\"Open\\\".\");\n"
-" },\n"
-"\n"
-" // the callback function for the tooltip of the \"undo\" button\n"
-" _undoTooltipCallback: function(widget, x, y, keyboard_mode, tooltip) {\n"
-" // set the text for the tooltip\n"
-" tooltip.set_text(\"Undo your last action\");\n"
-" // set an icon fot the tooltip\n"
-" tooltip.set_icon_from_stock(Gtk.STOCK_UNDO, Gtk.IconSize.MENU);\n"
-" // show the tooltip\n"
-" return true;\n"
-" },\n"
-"\n"
-" _undoCallback: function(action, parameter) {\n"
-" print(\"You clicked \\\"Undo\\\".\");\n"
-" },\n"
-"\n"
-" _fullScreenCallback: function() {\n"
-" if ((this.window.get_window().get_state() & Gdk.WindowState.FULLSCREEN) != 0 ){\n"
-" this.fullscreenButton.set_stock_id(Gtk.STOCK_FULLSCREEN);\n"
-" this.fullscreenButton.set_tooltip_text(\"Make your window fullscreen\");\n"
-" this.window.unfullscreen();\n"
-" } else {\n"
-" this.fullscreenButton.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN);\n"
-" this.fullscreenButton.set_tooltip_text(\"Leave fullscreen\");\n"
-" this.window.fullscreen();\n"
-" }\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new TooltipExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"//!/usr/bin/gjs\n"
-"\n"
-"const Gdk = imports.gi.Gdk;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gio = imports.gi.Gio;\n"
-"const Gtk = imports.gi.Gtk; \n"
-"const Lang = imports.lang;\n"
-"\n"
-"const TooltipExample = new Lang.Class ({\n"
-" Name: 'Tooltip Example',\n"
-"\n"
-" // Create the application \n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({ application_id: 'org.example.jstooltip' });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents windows when active\n"
-" _onActivate: function() {\n"
-" this.window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function () {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function () {\n"
-"\n"
-" // Create the application window\n"
-" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" title: \"Toolbar with Tooltips Example\",\n"
-" default_width: 400,\n"
-" default_height: 200,\n"
-" border_width: 10 });\n"
-"\n"
-" this.grid = new Gtk.Grid();\n"
-"\n"
-" this.toolbar = this._createToolbar();\n"
-" this.toolbar.set_hexpand(true);\n"
-" this.toolbar.show();\n"
-"\n"
-" this.grid.attach(this.toolbar, 0, 0, 1, 1);\n"
-"\n"
-" this.window.add(this.grid);\n"
-"\n"
-" this._newAction = new Gio.SimpleAction({ name: \"new\" });\n"
-" this._newAction.connect(\"activate\", Lang.bind(this, this._newCallback));\n"
-" this.window.add_action(this._newAction);\n"
-"\n"
-" this._openAction = new Gio.SimpleAction({ name: \"open\" });\n"
-" this._openAction.connect(\"activate\", Lang.bind(this, this._openCallback));\n"
-" this.window.add_action(this._openAction);\n"
-"\n"
-" this._undoAction = new Gio.SimpleAction({ name: \"undo\" });\n"
-" this._undoAction.connect(\"activate\", Lang.bind(this, this._undoCallback));\n"
-" this.window.add_action(this._undoAction);\n"
-"\n"
-" this._fullScreenAction = new Gio.SimpleAction({ name: \"fullscreenToggle\" });\n"
-" this._fullScreenAction.connect(\"activate\", Lang.bind(this, this._fullScreenCallback));\n"
-" this.window.add_action(this._fullScreenAction);\n"
-"\n"
-" this.window.show_all();\n"
-" },\n"
-"\n"
-" _createToolbar: function(){\n"
-" this.toolbar = new Gtk.Toolbar();\n"
-" this.toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
-"\n"
-" // button for the \"new\" action\n"
-" this.newButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW);\n"
-" // with a tooltip with a given text \n"
-" this.newButton.set_tooltip_text(\"Create a new file\");\n"
-" this.newButton.set_is_important(true);\n"
-" this.toolbar.insert(this.newButton, 0);\n"
-" this.newButton.show();\n"
-" this.newButton.set_action_name(\"win.new\");\n"
-"\n"
-" // button for the \"open\" action\n"
-" this.openButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN);\n"
-" // with a tooltip with a given text in the Pango markup language \n"
-" this.openButton.set_tooltip_markup(\"Open an <i>existing</i> file\");\n"
-" this.openButton.set_is_important(true);\n"
-" this.toolbar.insert(this.openButton, 1);\n"
-" this.openButton.show();\n"
-" this.openButton.set_action_name(\"win.open\");\n"
-"\n"
-" // button for the \"undo\" action\n"
-" this.undoButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO);\n"
-" // with a tooltip with an image\n"
-" // set true the property \"has-tooltip\" \n"
-" this.undoButton.set_property(\"has-tooltip\", true);\n"
-" // connect to the callback function that for the tooltip\n"
-" // with the signal \"query-tooltip\"\n"
-" this.undoButton.connect(\"query-tooltip\", Lang.bind(this, this._undoTooltipCallback));\n"
-" this.undoButton.set_is_important(true);\n"
-" this.toolbar.insert(this.undoButton, 2);\n"
-" this.undoButton.show();\n"
-" this.undoButton.set_action_name(\"win.undo\");\n"
-"\n"
-" // button for the \"fullscreen/leave fullscreen\" action\n"
-" this.fullscreenButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_FULLSCREEN);\n"
-" this.fullscreenButton.set_is_important(true);\n"
-" this.toolbar.insert(this.fullscreenButton, 3);\n"
-" this.fullscreenButton.set_action_name(\"win.fullscreenToggle\");\n"
-"\n"
-" return this.toolbar;\n"
-" },\n"
-"\n"
-" _newCallback: function(action, parameter) {\n"
-" print(\"You clicked \\\"New\\\".\");\n"
-" },\n"
-"\n"
-" _openCallback: function(action, parameter) {\n"
-" print(\"You clicked \\\"Open\\\".\");\n"
-" },\n"
-"\n"
-" // the callback function for the tooltip of the \"undo\" button\n"
-" _undoTooltipCallback: function(widget, x, y, keyboard_mode, tooltip) {\n"
-" // set the text for the tooltip\n"
-" tooltip.set_text(\"Undo your last action\");\n"
-" // set an icon fot the tooltip\n"
-" tooltip.set_icon_from_stock(Gtk.STOCK_UNDO, Gtk.IconSize.MENU);\n"
-" // show the tooltip\n"
-" return true;\n"
-" },\n"
-"\n"
-" _undoCallback: function(action, parameter) {\n"
-" print(\"You clicked \\\"Undo\\\".\");\n"
-" },\n"
-"\n"
-" _fullScreenCallback: function() {\n"
-" if ((this.window.get_window().get_state() & Gdk.WindowState.FULLSCREEN) != 0 ){\n"
-" this.fullscreenButton.set_stock_id(Gtk.STOCK_FULLSCREEN);\n"
-" this.fullscreenButton.set_tooltip_text(\"Make your window fullscreen\");\n"
-" this.window.unfullscreen();\n"
-" } else {\n"
-" this.fullscreenButton.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN);\n"
-" this.fullscreenButton.set_tooltip_text(\"Leave fullscreen\");\n"
-" this.window.fullscreen();\n"
-" }\n"
-" }\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new TooltipExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/tooltip.js.page:37
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Tooltip.html"
-"\">GtkTooltip</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Tooltip.html"
-"\">GtkTooltip</link>"
-
-#. (itstool) path: item/p
-#: C/tooltip.js.page:38
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Toolbar.html"
-"\">GtkToolbar</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Toolbar.html"
-"\">GtkToolbar</link>"
-
-#. (itstool) path: item/p
-#: C/tooltip.js.page:39
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Widget.html"
-"\">GtkWidget</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Widget.html"
-"\">GtkWidget</link>"
-
-#. (itstool) path: info/title
-#: C/tooltip.py.page:8
-msgctxt "text"
-msgid "Tooltip (Python)"
-msgstr "Consejo (Python)"
-
-#. (itstool) path: note/p
-#: C/tooltip.py.page:26
-msgid ""
-"This example builds on the <link xref=\"toolbar.py\">Toolbar</link> example."
-msgstr "Esto construye el ejemplo de <link xref=\"toolbar.py\">Toolbar</link>."
-
-#. (itstool) path: section/code
-#: C/tooltip.py.page:32
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "from gi.repository import Gdk\n"
-#| "from gi.repository import Gio\n"
-#| "import sys\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(\n"
-#| " self, title=\"Toolbar with Tooltips Example\", application=app)\n"
-#| " self.set_default_size(400, 200)\n"
-#| "\n"
-#| " grid = Gtk.Grid()\n"
-#| "\n"
-#| " toolbar = self.create_toolbar()\n"
-#| " toolbar.set_hexpand(True)\n"
-#| " toolbar.show()\n"
-#| "\n"
-#| " grid.attach(toolbar, 0, 0, 1, 1)\n"
-#| "\n"
-#| " self.add(grid)\n"
-#| "\n"
-#| " undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
-#| " undo_action.connect(\"activate\", self.undo_callback)\n"
-#| " self.add_action(undo_action)\n"
-#| "\n"
-#| " fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
-#| " fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
-#| " self.add_action(fullscreen_action)\n"
-#| "\n"
-#| " def create_toolbar(self):\n"
-#| " toolbar = Gtk.Toolbar()\n"
-#| " toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)\n"
-#| "\n"
-#| " # button for the \"new\" action\n"
-#| " new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)\n"
-#| " # with a tooltip with a given text\n"
-#| " new_button.set_tooltip_text(\"Create a new file\")\n"
-#| " new_button.set_is_important(True)\n"
-#| " toolbar.insert(new_button, 0)\n"
-#| " new_button.show()\n"
-#| " new_button.set_action_name(\"app.new\")\n"
-#| "\n"
-#| " # button for the \"open\" action\n"
-#| " open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)\n"
-#| " # with a tooltip with a given text in the Pango markup language\n"
-#| " open_button.set_tooltip_markup(\"Open an <i>existing</i> file\")\n"
-#| " open_button.set_is_important(True)\n"
-#| " toolbar.insert(open_button, 1)\n"
-#| " open_button.show()\n"
-#| " open_button.set_action_name(\"app.open\")\n"
-#| "\n"
-#| " # button for the \"undo\" action\n"
-#| " undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO)\n"
-#| " # with a tooltip with an image\n"
-#| " # set True the property \"has-tooltip\"\n"
-#| " undo_button.set_property(\"has-tooltip\", True)\n"
-#| " # connect to the callback function that for the tooltip\n"
-#| " # with the signal \"query-tooltip\"\n"
-#| " undo_button.connect(\"query-tooltip\", self.undo_tooltip_callback)\n"
-#| " undo_button.set_is_important(True)\n"
-#| " toolbar.insert(undo_button, 2)\n"
-#| " undo_button.show()\n"
-#| " undo_button.set_action_name(\"win.undo\")\n"
-#| "\n"
-#| " # button for the \"fullscreen/leave fullscreen\" action\n"
-#| " self.fullscreen_button = Gtk.ToolButton.new_from_stock(\n"
-#| " Gtk.STOCK_FULLSCREEN)\n"
-#| " self.fullscreen_button.set_is_important(True)\n"
-#| " toolbar.insert(self.fullscreen_button, 3)\n"
-#| " self.fullscreen_button.set_action_name(\"win.fullscreen\")\n"
-#| "\n"
-#| " return toolbar\n"
-#| "\n"
-#| " # the callback function for the tooltip of the \"undo\" button\n"
-#| " def undo_tooltip_callback(self, widget, x, y, keyboard_mode, tooltip):\n"
-#| " # set the text for the tooltip\n"
-#| " tooltip.set_text(\"Undo your last action\")\n"
-#| " # set an icon fot the tooltip\n"
-#| " tooltip.set_icon_from_stock(\"gtk-undo\", Gtk.IconSize.MENU)\n"
-#| " # show the tooltip\n"
-#| " return True\n"
-#| "\n"
-#| " def undo_callback(self, action, parameter):\n"
-#| " print \"You clicked \\\"Undo\\\".\"\n"
-#| "\n"
-#| " def fullscreen_callback(self, action, parameter):\n"
-#| " is_fullscreen = self.get_window().get_state(\n"
-#| " ) & Gdk.WindowState.FULLSCREEN != 0\n"
-#| " if not is_fullscreen:\n"
-#| " self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN)\n"
-#| " self.fullscreen()\n"
-#| " else:\n"
-#| " self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN)\n"
-#| " self.unfullscreen()\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| " new_action = Gio.SimpleAction.new(\"new\", None)\n"
-#| " new_action.connect(\"activate\", self.new_callback)\n"
-#| " app.add_action(new_action)\n"
-#| "\n"
-#| " open_action = Gio.SimpleAction.new(\"open\", None)\n"
-#| " open_action.connect(\"activate\", self.open_callback)\n"
-#| " app.add_action(open_action)\n"
-#| "\n"
-#| " def new_callback(self, action, parameter):\n"
-#| " print \"You clicked \\\"New\\\".\"\n"
-#| "\n"
-#| " def open_callback(self, action, parameter):\n"
-#| " print \"You clicked \\\"Open\\\".\"\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gdk\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(\n"
-" self, title=\"Toolbar with Tooltips Example\", application=app)\n"
-" self.set_default_size(400, 200)\n"
-"\n"
-" grid = Gtk.Grid()\n"
-"\n"
-" toolbar = self.create_toolbar()\n"
-" toolbar.set_hexpand(True)\n"
-" toolbar.show()\n"
-"\n"
-" grid.attach(toolbar, 0, 0, 1, 1)\n"
-"\n"
-" self.add(grid)\n"
-"\n"
-" undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
-" undo_action.connect(\"activate\", self.undo_callback)\n"
-" self.add_action(undo_action)\n"
-"\n"
-" fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
-" fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
-" self.add_action(fullscreen_action)\n"
-"\n"
-" def create_toolbar(self):\n"
-" toolbar = Gtk.Toolbar()\n"
-" toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)\n"
-"\n"
-" # button for the \"new\" action\n"
-" new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)\n"
-" # with a tooltip with a given text\n"
-" new_button.set_tooltip_text(\"Create a new file\")\n"
-" new_button.set_is_important(True)\n"
-" toolbar.insert(new_button, 0)\n"
-" new_button.show()\n"
-" new_button.set_action_name(\"app.new\")\n"
-"\n"
-" # button for the \"open\" action\n"
-" open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)\n"
-" # with a tooltip with a given text in the Pango markup language\n"
-" open_button.set_tooltip_markup(\"Open an <i>existing</i> file\")\n"
-" open_button.set_is_important(True)\n"
-" toolbar.insert(open_button, 1)\n"
-" open_button.show()\n"
-" open_button.set_action_name(\"app.open\")\n"
-"\n"
-" # button for the \"undo\" action\n"
-" undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO)\n"
-" # with a tooltip with an image\n"
-" # set True the property \"has-tooltip\"\n"
-" undo_button.set_property(\"has-tooltip\", True)\n"
-" # connect to the callback function that for the tooltip\n"
-" # with the signal \"query-tooltip\"\n"
-" undo_button.connect(\"query-tooltip\", self.undo_tooltip_callback)\n"
-" undo_button.set_is_important(True)\n"
-" toolbar.insert(undo_button, 2)\n"
-" undo_button.show()\n"
-" undo_button.set_action_name(\"win.undo\")\n"
-"\n"
-" # button for the \"fullscreen/leave fullscreen\" action\n"
-" self.fullscreen_button = Gtk.ToolButton.new_from_stock(\n"
-" Gtk.STOCK_FULLSCREEN)\n"
-" self.fullscreen_button.set_is_important(True)\n"
-" toolbar.insert(self.fullscreen_button, 3)\n"
-" self.fullscreen_button.set_action_name(\"win.fullscreen\")\n"
-"\n"
-" return toolbar\n"
-"\n"
-" # the callback function for the tooltip of the \"undo\" button\n"
-" def undo_tooltip_callback(self, widget, x, y, keyboard_mode, tooltip):\n"
-" # set the text for the tooltip\n"
-" tooltip.set_text(\"Undo your last action\")\n"
-" # set an icon fot the tooltip\n"
-" tooltip.set_icon_from_stock(\"gtk-undo\", Gtk.IconSize.MENU)\n"
-" # show the tooltip\n"
-" return True\n"
-"\n"
-" def undo_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Undo\\\".\")\n"
-"\n"
-" def fullscreen_callback(self, action, parameter):\n"
-" is_fullscreen = self.get_window().get_state(\n"
-" ) & Gdk.WindowState.FULLSCREEN != 0\n"
-" if not is_fullscreen:\n"
-" self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN)\n"
-" self.fullscreen()\n"
-" else:\n"
-" self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN)\n"
-" self.unfullscreen()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" new_action = Gio.SimpleAction.new(\"new\", None)\n"
-" new_action.connect(\"activate\", self.new_callback)\n"
-" app.add_action(new_action)\n"
-"\n"
-" open_action = Gio.SimpleAction.new(\"open\", None)\n"
-" open_action.connect(\"activate\", self.open_callback)\n"
-" app.add_action(open_action)\n"
-"\n"
-" def new_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"New\\\".\")\n"
-"\n"
-" def open_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Open\\\".\")\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Gdk\n"
-"from gi.repository import Gio\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(\n"
-" self, title=\"Toolbar with Tooltips Example\", application=app)\n"
-" self.set_default_size(400, 200)\n"
-"\n"
-" grid = Gtk.Grid()\n"
-"\n"
-" toolbar = self.create_toolbar()\n"
-" toolbar.set_hexpand(True)\n"
-" toolbar.show()\n"
-"\n"
-" grid.attach(toolbar, 0, 0, 1, 1)\n"
-"\n"
-" self.add(grid)\n"
-"\n"
-" undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
-" undo_action.connect(\"activate\", self.undo_callback)\n"
-" self.add_action(undo_action)\n"
-"\n"
-" fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
-" fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
-" self.add_action(fullscreen_action)\n"
-"\n"
-" def create_toolbar(self):\n"
-" toolbar = Gtk.Toolbar()\n"
-" toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)\n"
-"\n"
-" # button for the \"new\" action\n"
-" new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)\n"
-" # with a tooltip with a given text\n"
-" new_button.set_tooltip_text(\"Create a new file\")\n"
-" new_button.set_is_important(True)\n"
-" toolbar.insert(new_button, 0)\n"
-" new_button.show()\n"
-" new_button.set_action_name(\"app.new\")\n"
-"\n"
-" # button for the \"open\" action\n"
-" open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)\n"
-" # with a tooltip with a given text in the Pango markup language\n"
-" open_button.set_tooltip_markup(\"Open an <i>existing</i> file\")\n"
-" open_button.set_is_important(True)\n"
-" toolbar.insert(open_button, 1)\n"
-" open_button.show()\n"
-" open_button.set_action_name(\"app.open\")\n"
-"\n"
-" # button for the \"undo\" action\n"
-" undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO)\n"
-" # with a tooltip with an image\n"
-" # set True the property \"has-tooltip\"\n"
-" undo_button.set_property(\"has-tooltip\", True)\n"
-" # connect to the callback function that for the tooltip\n"
-" # with the signal \"query-tooltip\"\n"
-" undo_button.connect(\"query-tooltip\", self.undo_tooltip_callback)\n"
-" undo_button.set_is_important(True)\n"
-" toolbar.insert(undo_button, 2)\n"
-" undo_button.show()\n"
-" undo_button.set_action_name(\"win.undo\")\n"
-"\n"
-" # button for the \"fullscreen/leave fullscreen\" action\n"
-" self.fullscreen_button = Gtk.ToolButton.new_from_stock(\n"
-" Gtk.STOCK_FULLSCREEN)\n"
-" self.fullscreen_button.set_is_important(True)\n"
-" toolbar.insert(self.fullscreen_button, 3)\n"
-" self.fullscreen_button.set_action_name(\"win.fullscreen\")\n"
-"\n"
-" return toolbar\n"
-"\n"
-" # the callback function for the tooltip of the \"undo\" button\n"
-" def undo_tooltip_callback(self, widget, x, y, keyboard_mode, tooltip):\n"
-" # set the text for the tooltip\n"
-" tooltip.set_text(\"Undo your last action\")\n"
-" # set an icon fot the tooltip\n"
-" tooltip.set_icon_from_stock(\"gtk-undo\", Gtk.IconSize.MENU)\n"
-" # show the tooltip\n"
-" return True\n"
-"\n"
-" def undo_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Undo\\\".\")\n"
-"\n"
-" def fullscreen_callback(self, action, parameter):\n"
-" is_fullscreen = self.get_window().get_state(\n"
-" ) & Gdk.WindowState.FULLSCREEN != 0\n"
-" if not is_fullscreen:\n"
-" self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN)\n"
-" self.fullscreen()\n"
-" else:\n"
-" self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN)\n"
-" self.unfullscreen()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-" new_action = Gio.SimpleAction.new(\"new\", None)\n"
-" new_action.connect(\"activate\", self.new_callback)\n"
-" app.add_action(new_action)\n"
-"\n"
-" open_action = Gio.SimpleAction.new(\"open\", None)\n"
-" open_action.connect(\"activate\", self.open_callback)\n"
-" app.add_action(open_action)\n"
-"\n"
-" def new_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"New\\\".\")\n"
-"\n"
-" def open_callback(self, action, parameter):\n"
-" print(\"You clicked \\\"Open\\\".\")\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/tooltip.py.page:36
-msgid "Useful methods for a Tooltip widget"
-msgstr "Métodos útiles para un widget de consejo"
-
-#. (itstool) path: section/p
-#: C/tooltip.py.page:38
-msgid ""
-"<code>set_tooltip_text(text)</code> and <code>set_tooltip_markup(text)</"
-"code> can be used to add a tooltip of plain text (or text in the Pango "
-"Markup Language) to a widget."
-msgstr ""
-"<code>set_tooltip_text(text)</code> y <code>set_tooltip_markup(text)</code> "
-"pueden usarse para añadir un consejo o texto plano (o texto en el lenguaje "
-"de marcado de Pango) a un widget."
-
-#. (itstool) path: section/p
-#: C/tooltip.py.page:39
-msgid "For more complex tooltips, for instance for a tooltip with an image:"
-msgstr ""
-"Para consejos más complejos, por ejemplo para un consejo con una imagen:"
-
-#. (itstool) path: item/p
-#: C/tooltip.py.page:41
-msgid ""
-"Set the <code>\"has-tooltip\"</code> property of the widget to <code>True</"
-"code>; this will make GTK+ monitor the widget for motion and related events "
-"which are needed to determine when and where to show a tooltip."
-msgstr ""
-"Establezca la propiedad <code>\"has-tooltip\"</code> del widget a "
-"<code>True</code>; esto hará que GTK+ monitorice el widget en busca de "
-"movimiento y eventos relacionados que se necesitan para determinar cuándo y "
-"dónde mostrar un consejo."
-
-#. (itstool) path: item/p
-#: C/tooltip.py.page:42
-msgid ""
-"Connect to the <code>\"query-tooltip\"</code> signal. This signal will be "
-"emitted when a tooltip is supposed to be shown. One of the arguments passed "
-"to the signal handler is a GtkTooltip object. This is the object that we are "
-"about to display as a tooltip, and can be manipulated in your callback using "
-"functions like <code>set_icon()</code>. There are functions for setting the "
-"tooltip's markup (<code>set_markup(text)</code>), setting an image from a "
-"stock icon (<code>set_icon_from_stock(stock_id, size)</code>), or even "
-"putting in a custom widget (<code>set_custom(widget)</code>)."
-msgstr ""
-"Conecte a la señal <code>\"query-tooltip\"</code>. Esta señal se emitirá "
-"cuando se deba mostrar un widget. Uno de los argumentos que se le pasan al "
-"manejador de señales es un objeto GtkTooltip. Este es el objeto que se va a "
-"mostrar como un consejo, y puede manipularse en su retorno de llamada usando "
-"funciones como <code>set_icon()</code>. Hay funciones para establecer el "
-"texto marcado del consejo (<code>set_markup(text)</code>), una imagen desde "
-"un icono del almacén (<code>set_icon_from_stock(stock_id, size)</code>), o "
-"incluso poner un widget personalizado (<code>set_custom(widget)</code>)."
-
-#. (itstool) path: item/p
-#: C/tooltip.py.page:43
-msgid ""
-"Return <code>True</code> from your query-tooltip handler. This causes the "
-"tooltip to be show. If you return <code>False</code>, it will not be shown."
-msgstr ""
-"Devuelva <code>True</code> de su manejador de «query-tooltip». Esto hace que "
-"el consejo se muestre. Si devuelve <code>False</code>, no se mostrará."
-
-#. (itstool) path: section/p
-#: C/tooltip.py.page:46
-msgid ""
-"In the probably rare case where you want to have even more control over the "
-"tooltip that is about to be shown, you can set your own GtkWindow which will "
-"be used as tooltip window. This works as follows:"
-msgstr ""
-"En el probablemente raro caso en el que quiera tener aún más control sobre "
-"el consejo que se va a mostrar, puede establecer su propia GtkWindow que se "
-"usará como ventana del consejo. Esto funciona así:"
-
-#. (itstool) path: item/p
-#: C/tooltip.py.page:48
-msgid ""
-"Set <code>\"has-tooltip\"</code> and connect to <code>\"query-tooltip\"</"
-"code> as before."
-msgstr ""
-"Establezca <code>\"has-tooltip\"</code> y conecte con <code>\"query-tooltip"
-"\"</code> como antes."
-
-#. (itstool) path: item/p
-#: C/tooltip.py.page:49
-msgid ""
-"Use <code>set_tooltip_window()</code> on the widget to set a GtkWindow "
-"created by you as tooltip window."
-msgstr ""
-"Use <code>set_tooltip_window()</code> en el widget para establecer una "
-"GtkWindow creada como ventana del consejo."
-
-#. (itstool) path: item/p
-#: C/tooltip.py.page:50
-msgid ""
-"In the <code>\"query-tooltip\"</code> callback you can access your window "
-"using <code>get_tooltip_window()</code> and manipulate as you wish. The "
-"semantics of the return value are exactly as before, return <code>True</"
-"code> to show the window, <code>False</code> to not show it."
-msgstr ""
-"En la devolución de llamada <code>\"query-tooltip\"</code> puede acceder a "
-"su ventana usando <code>get_tooltip_window()</code> y manipularla como "
-"quiera. La semántica del valor de retorno es exactamente la misma que antes, "
-"devuelva <code>True</code> para mostrar el widget o <code>False</code> para "
-"no hacerlo."
-
-#. (itstool) path: info/title
-#: C/tooltip.vala.page:8
-msgctxt "text"
-msgid "Tooltip (Vala)"
-msgstr "Tooltip (Vala)"
-
-#. (itstool) path: note/p
-#: C/tooltip.vala.page:25
-msgid ""
-"This example builds on the <link xref=\"toolbar.vala\">Toolbar</link> "
-"example."
-msgstr ""
-"Esto construye el ejemplo de <link xref=\"toolbar.vala\">Toolbar</link>."
-
-#. (itstool) path: section/code
-#: C/tooltip.vala.page:31
-#, no-wrap
-msgid ""
-"/* This is the Window */\n"
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* Instance variables belonging to the window */\n"
-"\tGtk.Toolbar toolbar;\n"
-"\tGtk.ToolButton new_button;\n"
-"\tGtk.ToolButton open_button;\n"
-"\tGtk.ToolButton undo_button;\n"
-"\tGtk.ToolButton fullscreen_button;\n"
-"\tGtk.ToolButton leave_fullscreen_button;\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Toolbar with Tooltips Example\");\n"
-"\n"
-"\t\tthis.set_default_size (400, 200);\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tthis.add (grid);\n"
-"\t\tgrid.show ();\n"
-"\n"
-"\t\tcreate_toolbar ();\n"
-"\t\ttoolbar.set_hexpand (true);\n"
-"\t\tgrid.attach (toolbar, 0, 0, 1, 1);\n"
-"\t\ttoolbar.show ();\n"
-"\n"
-"\t\t/* create the \"undo\" window action action */\n"
-"\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
-"\t\tundo_action.activate.connect (undo_callback);\n"
-"\t\tthis.add_action (undo_action);\n"
-"\n"
-"\t\t/* create the \"fullscreen\" window action */\n"
-"\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
-"\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
-"\t\tthis.add_action (fullscreen_action);\n"
-"\t}\n"
-"\n"
-"\t/* Callback for query_tooltip signal */\n"
-"\tbool undo_tooltip_callback (int x, int y, bool keyboard_tooltip, Gtk.Tooltip tooltip) {\n"
-"\n"
-"\t\t/* set the text for the tooltip */\n"
-" \ttooltip.set_text (\"Undo your last action\");\n"
-"\t\t\n"
-"\t\t/* set an icon fot the tooltip */\n"
-"\t\ttooltip.set_icon_from_stock(\"gtk-undo\", Gtk.IconSize.MENU);\n"
-"\n"
-" \t/* show the tooltip */\n"
-" \treturn true;\n"
-"\t}\n"
-"\n"
-"\t/* This function creates the toolbar, its ToolButtons,\n"
-"\t * and assigns the actions names to the ToolButtons.*/\n"
-"\tvoid create_toolbar () {\n"
-"\t\ttoolbar = new Gtk.Toolbar ();\n"
-"\t\ttoolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
-"\n"
-"\t\tnew_button = new Gtk.ToolButton.from_stock (Gtk.Stock.NEW);\n"
-"\n"
-"\t\t/* tooltip with text */\n"
-"\t\tnew_button.set_tooltip_text (\"Create a new file\");\n"
-"\n"
-"\t\tnew_button.is_important = true; //decides whether to show the label\n"
-"\t\ttoolbar.add (new_button);\n"
-"\t\tnew_button.show ();\n"
-"\t\tnew_button.action_name = \"app.new\";\n"
-"\n"
-"\t\topen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.OPEN);\n"
-"\n"
-"\t\t/* a tooltip using Pango markup language */\n"
-"\t\topen_button.set_tooltip_markup (\"Open an <i>existing</i> file\");\n"
-"\n"
-"\t\topen_button.is_important = true;\n"
-"\t\ttoolbar.add (open_button);\n"
-"\t\topen_button.show ();\n"
-"\t\topen_button.action_name = \"app.open\";\n"
-"\n"
-"\t\tundo_button = new Gtk.ToolButton.from_stock (Gtk.Stock.UNDO);\n"
-"\t\n"
-"\t\t/* For a tooltip to have an image, first we must set_has_tooltip to be 'true' */\t\n"
-"\t\t(undo_button as Gtk.Widget).set_has_tooltip (true);\n"
-"\n"
-"\t\t/* Connect the query_tooltip signal to the callback */\n"
-"\t\tundo_button.query_tooltip.connect (undo_tooltip_callback);\n"
-"\t\n"
-"\t\tundo_button.is_important = true;\n"
-"\t\ttoolbar.add (undo_button);\n"
-"\t\tundo_button.show ();\n"
-"\t\tundo_button.action_name = \"win.undo\";\n"
-"\n"
-"\t\tfullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.FULLSCREEN);\n"
-"\t\tfullscreen_button.is_important = true;\n"
-"\t\ttoolbar.add (fullscreen_button);\n"
-"\t\tfullscreen_button.show ();\n"
-"\t\tfullscreen_button.action_name = \"win.fullscreen\";\n"
-"\n"
-"\t\tleave_fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.LEAVE_FULLSCREEN)\n"
-";\n"
-"\t\tleave_fullscreen_button.is_important = true;\n"
-"\t\ttoolbar.add (leave_fullscreen_button);\n"
-"\n"
-"\t\tleave_fullscreen_button.action_name = \"win.fullscreen\";\n"
-"\t}\n"
-"\n"
-"\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
-"\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
-"\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n"
-"\t\t\tthis.unfullscreen ();\n"
-"\t\t\tleave_fullscreen_button.hide ();\n"
-"\t\t\tfullscreen_button.show ();\n"
-"\t\t}\n"
-"\t\telse {\n"
-"\t\t\tthis.fullscreen ();\n"
-"\t\t\tfullscreen_button.hide ();\n"
-"\t\t\tleave_fullscreen_button.show ();\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application */\n"
-"class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\t/* Create the \"new\" action and add it to the app*/\n"
-"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
-"\t\tnew_action.activate.connect (new_callback);\n"
-"\t\tthis.add_action (new_action);\n"
-"\n"
-"\t\t/* Create the \"open\" action, and add it to the app */\n"
-"\t\tvar open_action = new SimpleAction (\"open\", null);\n"
-"\t\topen_action.activate.connect (open_callback);\n"
-"\t\tthis.add_action (open_action);\n"
-"\n"
-"\t\t/* You could also add the action to the app menu\n"
-"\t\t * if you wanted to.\n"
-"\t\t */\n"
-"\t\t//var menu = new Menu ();\n"
-"\t\t//menu.append (\"New\", \"app.new\");\n"
-"\t\t//this.app_menu = menu;\n"
-"\t}\n"
-"\n"
-"\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
-"\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* The main function creates the application and runs it. */\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"/* This is the Window */\n"
-"class MyWindow : Gtk.ApplicationWindow {\n"
-"\n"
-"\t/* Instance variables belonging to the window */\n"
-"\tGtk.Toolbar toolbar;\n"
-"\tGtk.ToolButton new_button;\n"
-"\tGtk.ToolButton open_button;\n"
-"\tGtk.ToolButton undo_button;\n"
-"\tGtk.ToolButton fullscreen_button;\n"
-"\tGtk.ToolButton leave_fullscreen_button;\n"
-"\n"
-"\t/* Constructor */\n"
-"\tinternal MyWindow (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"Toolbar with Tooltips Example\");\n"
-"\n"
-"\t\tthis.set_default_size (400, 200);\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\t\tthis.add (grid);\n"
-"\t\tgrid.show ();\n"
-"\n"
-"\t\tcreate_toolbar ();\n"
-"\t\ttoolbar.set_hexpand (true);\n"
-"\t\tgrid.attach (toolbar, 0, 0, 1, 1);\n"
-"\t\ttoolbar.show ();\n"
-"\n"
-"\t\t/* create the \"undo\" window action action */\n"
-"\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
-"\t\tundo_action.activate.connect (undo_callback);\n"
-"\t\tthis.add_action (undo_action);\n"
-"\n"
-"\t\t/* create the \"fullscreen\" window action */\n"
-"\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
-"\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
-"\t\tthis.add_action (fullscreen_action);\n"
-"\t}\n"
-"\n"
-"\t/* Callback for query_tooltip signal */\n"
-"\tbool undo_tooltip_callback (int x, int y, bool keyboard_tooltip, Gtk.Tooltip tooltip) {\n"
-"\n"
-"\t\t/* set the text for the tooltip */\n"
-" \ttooltip.set_text (\"Undo your last action\");\n"
-"\t\t\n"
-"\t\t/* set an icon fot the tooltip */\n"
-"\t\ttooltip.set_icon_from_stock(\"gtk-undo\", Gtk.IconSize.MENU);\n"
-"\n"
-" \t/* show the tooltip */\n"
-" \treturn true;\n"
-"\t}\n"
-"\n"
-"\t/* This function creates the toolbar, its ToolButtons,\n"
-"\t * and assigns the actions names to the ToolButtons.*/\n"
-"\tvoid create_toolbar () {\n"
-"\t\ttoolbar = new Gtk.Toolbar ();\n"
-"\t\ttoolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
-"\n"
-"\t\tnew_button = new Gtk.ToolButton.from_stock (Gtk.Stock.NEW);\n"
-"\n"
-"\t\t/* tooltip with text */\n"
-"\t\tnew_button.set_tooltip_text (\"Create a new file\");\n"
-"\n"
-"\t\tnew_button.is_important = true; //decides whether to show the label\n"
-"\t\ttoolbar.add (new_button);\n"
-"\t\tnew_button.show ();\n"
-"\t\tnew_button.action_name = \"app.new\";\n"
-"\n"
-"\t\topen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.OPEN);\n"
-"\n"
-"\t\t/* a tooltip using Pango markup language */\n"
-"\t\topen_button.set_tooltip_markup (\"Open an <i>existing</i> file\");\n"
-"\n"
-"\t\topen_button.is_important = true;\n"
-"\t\ttoolbar.add (open_button);\n"
-"\t\topen_button.show ();\n"
-"\t\topen_button.action_name = \"app.open\";\n"
-"\n"
-"\t\tundo_button = new Gtk.ToolButton.from_stock (Gtk.Stock.UNDO);\n"
-"\t\n"
-"\t\t/* For a tooltip to have an image, first we must set_has_tooltip to be 'true' */\t\n"
-"\t\t(undo_button as Gtk.Widget).set_has_tooltip (true);\n"
-"\n"
-"\t\t/* Connect the query_tooltip signal to the callback */\n"
-"\t\tundo_button.query_tooltip.connect (undo_tooltip_callback);\n"
-"\t\n"
-"\t\tundo_button.is_important = true;\n"
-"\t\ttoolbar.add (undo_button);\n"
-"\t\tundo_button.show ();\n"
-"\t\tundo_button.action_name = \"win.undo\";\n"
-"\n"
-"\t\tfullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.FULLSCREEN);\n"
-"\t\tfullscreen_button.is_important = true;\n"
-"\t\ttoolbar.add (fullscreen_button);\n"
-"\t\tfullscreen_button.show ();\n"
-"\t\tfullscreen_button.action_name = \"win.fullscreen\";\n"
-"\n"
-"\t\tleave_fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.LEAVE_FULLSCREEN)\n"
-";\n"
-"\t\tleave_fullscreen_button.is_important = true;\n"
-"\t\ttoolbar.add (leave_fullscreen_button);\n"
-"\n"
-"\t\tleave_fullscreen_button.action_name = \"win.fullscreen\";\n"
-"\t}\n"
-"\n"
-"\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
-"\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
-"\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n"
-"\t\t\tthis.unfullscreen ();\n"
-"\t\t\tleave_fullscreen_button.hide ();\n"
-"\t\t\tfullscreen_button.show ();\n"
-"\t\t}\n"
-"\t\telse {\n"
-"\t\t\tthis.fullscreen ();\n"
-"\t\t\tfullscreen_button.hide ();\n"
-"\t\t\tleave_fullscreen_button.show ();\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* This is the application */\n"
-"class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\t\tnew MyWindow (this).show ();\n"
-"\t}\n"
-"\n"
-"\tprotected override void startup () {\n"
-"\t\tbase.startup ();\n"
-"\n"
-"\t\t/* Create the \"new\" action and add it to the app*/\n"
-"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
-"\t\tnew_action.activate.connect (new_callback);\n"
-"\t\tthis.add_action (new_action);\n"
-"\n"
-"\t\t/* Create the \"open\" action, and add it to the app */\n"
-"\t\tvar open_action = new SimpleAction (\"open\", null);\n"
-"\t\topen_action.activate.connect (open_callback);\n"
-"\t\tthis.add_action (open_action);\n"
-"\n"
-"\t\t/* You could also add the action to the app menu\n"
-"\t\t * if you wanted to.\n"
-"\t\t */\n"
-"\t\t//var menu = new Menu ();\n"
-"\t\t//menu.append (\"New\", \"app.new\");\n"
-"\t\t//this.app_menu = menu;\n"
-"\t}\n"
-"\n"
-"\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
-"\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
-"\t}\n"
-"\n"
-"\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
-"\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* The main function creates the application and runs it. */\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/tooltip.vala.page:39
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Tooltip.html\">Gtk.Tooltip</"
-"link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Tooltip.html\">Gtk.Tooltip</"
-"link>"
-
-#. (itstool) path: item/p
-#: C/tooltip.vala.page:41
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Widget.query_tooltip.html"
-"\">Gtk.Widget.query_tooltip</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Widget.query_tooltip.html"
-"\">Gtk.Widget.query_tooltip</link>"
-
-#. (itstool) path: item/p
-#: C/tooltip.vala.page:42
-msgid ""
-"<link href=\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html#GTK-"
-"STOCK-UNDO:CAPS\">Stock Items</link>"
-msgstr ""
-"<link href=\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html#GTK-"
-"STOCK-UNDO:CAPS\">Stock Items</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/treeview_advanced_liststore.py.page:23
-msgctxt "_"
-msgid ""
-"external ref='media/treeview_advanced_liststore.png' "
-"md5='102b512197fb9aa4ed9a16462f6af911'"
-msgstr ""
-"external ref='media/treeview_advanced_liststore.png' "
-"md5='102b512197fb9aa4ed9a16462f6af911'"
-
-#. (itstool) path: info/title
-#: C/treeview_advanced_liststore.py.page:8
-msgctxt "text"
-msgid "Simple Treeview with ListStore (Python)"
-msgstr "Treeview sencillo con ListStore (Python)"
-
-#. (itstool) path: info/desc
-#: C/treeview_advanced_liststore.py.page:19
-msgid "A TreeView displaying a ListStore (more complex example)"
-msgstr "Un TreeView mostrando un ListStore (ejemplo más complejo)"
-
-#. (itstool) path: page/title
-#: C/treeview_advanced_liststore.py.page:22
-msgid "More Complex Treeview with ListStore"
-msgstr "Treeview más complejo con ListStore"
-
-#. (itstool) path: page/p
-#: C/treeview_advanced_liststore.py.page:24
-#: C/treeview_simple_liststore.py.page:25
-msgid ""
-"This TreeView displays a simple ListStore with the selection \"changed\" "
-"signal connected."
-msgstr ""
-"Este TreeView muestra un ListStore sencillo con la señal de selección "
-"«changed» conectada."
-
-#. (itstool) path: section/code
-#: C/treeview_advanced_liststore.py.page:31
-#, no-wrap
-#| msgid ""
-#| "from gi.repository import Gtk\n"
-#| "from gi.repository import Pango\n"
-#| "import sys\n"
-#| "\n"
-#| "list_of_dvd = [[\"The Usual Suspects\"],\n"
-#| " [\"Gilda\"],\n"
-#| " [\"The Godfather\"],\n"
-#| " [\"Pulp Fiction\"],\n"
-#| " [\"Once Upon a Time in the West\"],\n"
-#| " [\"Rear Window\"]]\n"
-#| "\n"
-#| "\n"
-#| "class MyWindow(Gtk.ApplicationWindow):\n"
-#| "\n"
-#| " def __init__(self, app):\n"
-#| " Gtk.Window.__init__(self, title=\"My DVDs\", application=app)\n"
-#| " self.set_default_size(250, 100)\n"
-#| " self.set_border_width(10)\n"
-#| "\n"
-#| " # the data are stored in the model\n"
-#| " # create a liststore with one column\n"
-#| " self.listmodel = Gtk.ListStore(str)\n"
-#| " for i in range(len(list_of_dvd)):\n"
-#| " self.listmodel.append(list_of_dvd[i])\n"
-#| "\n"
-#| " # a treeview to see the data stored in the model\n"
-#| " view = Gtk.TreeView(model=self.listmodel)\n"
-#| "\n"
-#| " # cellrenderer for the first column\n"
-#| " cell = Gtk.CellRendererText()\n"
-#| " # the first column is created\n"
-#| " col = Gtk.TreeViewColumn(\"Title\", cell, text=0)\n"
-#| " # and it is appended to the treeview\n"
-#| " view.append_column(col)\n"
-#| "\n"
-#| " # when a row of the treeview is selected, it emits a signal\n"
-#| " self.selection = view.get_selection()\n"
-#| " self.selection.connect(\"changed\", self.on_changed)\n"
-#| "\n"
-#| " # the label we use to show the selection\n"
-#| " self.label = Gtk.Label()\n"
-#| " self.label.set_text(\"\")\n"
-#| "\n"
-#| " # a button to add new titles, connected to a callback function\n"
-#| " self.button_add = Gtk.Button(label=\"Add\")\n"
-#| " self.button_add.connect(\"clicked\", self.add_cb)\n"
-#| "\n"
-#| " # an entry to enter titles\n"
-#| " self.entry = Gtk.Entry()\n"
-#| "\n"
-#| " # a button to remove titles, connected to a callback function\n"
-#| " self.button_remove = Gtk.Button(label=\"Remove\")\n"
-#| " self.button_remove.connect(\"clicked\", self.remove_cb)\n"
-#| "\n"
-#| " # a button to remove all titles, connected to a callback function\n"
-#| " self.button_remove_all = Gtk.Button(label=\"Remove All\")\n"
-#| " self.button_remove_all.connect(\"clicked\", self.remove_all_cb)\n"
-#| "\n"
-#| " # a grid to attach the widgets\n"
-#| " grid = Gtk.Grid()\n"
-#| " grid.attach(view, 0, 0, 4, 1)\n"
-#| " grid.attach(self.label, 0, 1, 4, 1)\n"
-#| " grid.attach(self.button_add, 0, 2, 1, 1)\n"
-#| " grid.attach_next_to(\n"
-#| " self.entry, self.button_add, Gtk.PositionType.RIGHT, 1, 1)\n"
-#| " grid.attach_next_to(\n"
-#| " self.button_remove, self.entry, Gtk.PositionType.RIGHT, 1, 1)\n"
-#| " grid.attach_next_to(\n"
-#| " self.button_remove_all, self.button_remove, Gtk.PositionType.RIGHT, 1, 1)\n"
-#| "\n"
-#| " # add the grid to the window\n"
-#| " self.add(grid)\n"
-#| "\n"
-#| " def on_changed(self, selection):\n"
-#| " # get the model and the iterator that points at the data in the model\n"
-#| " (model, iter) = selection.get_selected()\n"
-#| " # set the label to a new value depending on the selection, if there is\n"
-#| " # one\n"
-#| " if iter is not None:\n"
-#| " self.label.set_text(\"\\n %s\" % (model[iter][0]))\n"
-#| " else:\n"
-#| " self.label.set_text(\"\")\n"
-#| " return True\n"
-#| "\n"
-#| " # callback function for the \"Add\" button\n"
-#| " def add_cb(self, button):\n"
-#| " # append to the model the title that is in the entry\n"
-#| " title = self.entry.get_text()\n"
-#| " self.listmodel.append([title])\n"
-#| " # and print a message in the terminal\n"
-#| " print \"%s has been added\" % (title)\n"
-#| "\n"
-#| " def remove_cb(self, button):\n"
-#| " # if there is still an entry in the model\n"
-#| " if len(self.listmodel) != 0:\n"
-#| " # get the selection\n"
-#| " (model, iter) = self.selection.get_selected()\n"
-#| " # if there is a selection, print a message in the terminal\n"
-#| " # and remove it from the model\n"
-#| " if iter is not None:\n"
-#| " print \"%s has been removed\" % (model[iter][0])\n"
-#| " self.listmodel.remove(iter)\n"
-#| " # otherwise, ask the user to select something to remove\n"
-#| " else:\n"
-#| " print \"Select a title to remove\"\n"
-#| " # else, if there are no entries in the model, print \"Empty list\"\n"
-#| " # in the terminal\n"
-#| " else:\n"
-#| " print \"Empty list\"\n"
-#| "\n"
-#| " def remove_all_cb(self, button):\n"
-#| " # if there is still an entry in the model\n"
-#| " if len(self.listmodel) != 0:\n"
-#| " # remove all the entries in the model\n"
-#| " for i in range(len(self.listmodel)):\n"
-#| " iter = self.listmodel.get_iter(0)\n"
-#| " self.listmodel.remove(iter)\n"
-#| " # print a message in the terminal alerting that the model is empty\n"
-#| " print \"Empty list\"\n"
-#| "\n"
-#| "\n"
-#| "class MyApplication(Gtk.Application):\n"
-#| "\n"
-#| " def __init__(self):\n"
-#| " Gtk.Application.__init__(self)\n"
-#| "\n"
-#| " def do_activate(self):\n"
-#| " win = MyWindow(self)\n"
-#| " win.show_all()\n"
-#| "\n"
-#| " def do_startup(self):\n"
-#| " Gtk.Application.do_startup(self)\n"
-#| "\n"
-#| "app = MyApplication()\n"
-#| "exit_status = app.run(sys.argv)\n"
-#| "sys.exit(exit_status)\n"
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Pango\n"
-"import sys\n"
-"\n"
-"list_of_dvd = [[\"The Usual Suspects\"],\n"
-" [\"Gilda\"],\n"
-" [\"The Godfather\"],\n"
-" [\"Pulp Fiction\"],\n"
-" [\"Once Upon a Time in the West\"],\n"
-" [\"Rear Window\"]]\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"My DVDs\", application=app)\n"
-" self.set_default_size(250, 100)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # the data are stored in the model\n"
-" # create a liststore with one column\n"
-" self.listmodel = Gtk.ListStore(str)\n"
-" for i in range(len(list_of_dvd)):\n"
-" self.listmodel.append(list_of_dvd[i])\n"
-"\n"
-" # a treeview to see the data stored in the model\n"
-" view = Gtk.TreeView(model=self.listmodel)\n"
-"\n"
-" # cellrenderer for the first column\n"
-" cell = Gtk.CellRendererText()\n"
-" # the first column is created\n"
-" col = Gtk.TreeViewColumn(\"Title\", cell, text=0)\n"
-" # and it is appended to the treeview\n"
-" view.append_column(col)\n"
-"\n"
-" # when a row of the treeview is selected, it emits a signal\n"
-" self.selection = view.get_selection()\n"
-" self.selection.connect(\"changed\", self.on_changed)\n"
-"\n"
-" # the label we use to show the selection\n"
-" self.label = Gtk.Label()\n"
-" self.label.set_text(\"\")\n"
-"\n"
-" # a button to add new titles, connected to a callback function\n"
-" self.button_add = Gtk.Button(label=\"Add\")\n"
-" self.button_add.connect(\"clicked\", self.add_cb)\n"
-"\n"
-" # an entry to enter titles\n"
-" self.entry = Gtk.Entry()\n"
-"\n"
-" # a button to remove titles, connected to a callback function\n"
-" self.button_remove = Gtk.Button(label=\"Remove\")\n"
-" self.button_remove.connect(\"clicked\", self.remove_cb)\n"
-"\n"
-" # a button to remove all titles, connected to a callback function\n"
-" self.button_remove_all = Gtk.Button(label=\"Remove All\")\n"
-" self.button_remove_all.connect(\"clicked\", self.remove_all_cb)\n"
-"\n"
-" # a grid to attach the widgets\n"
-" grid = Gtk.Grid()\n"
-" grid.attach(view, 0, 0, 4, 1)\n"
-" grid.attach(self.label, 0, 1, 4, 1)\n"
-" grid.attach(self.button_add, 0, 2, 1, 1)\n"
-" grid.attach_next_to(\n"
-" self.entry, self.button_add, Gtk.PositionType.RIGHT, 1, 1)\n"
-" grid.attach_next_to(\n"
-" self.button_remove, self.entry, Gtk.PositionType.RIGHT, 1, 1)\n"
-" grid.attach_next_to(\n"
-" self.button_remove_all, self.button_remove, Gtk.PositionType.RIGHT, 1, 1)\n"
-"\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" def on_changed(self, selection):\n"
-" # get the model and the iterator that points at the data in the model\n"
-" (model, iter) = selection.get_selected()\n"
-" # set the label to a new value depending on the selection, if there is\n"
-" # one\n"
-" if iter is not None:\n"
-" self.label.set_text(\"\\n %s\" % (model[iter][0]))\n"
-" else:\n"
-" self.label.set_text(\"\")\n"
-" return True\n"
-"\n"
-" # callback function for the \"Add\" button\n"
-" def add_cb(self, button):\n"
-" # append to the model the title that is in the entry\n"
-" title = self.entry.get_text()\n"
-" self.listmodel.append([title])\n"
-" # and print a message in the terminal\n"
-" print(\"%s has been added\" % (title))\n"
-"\n"
-" def remove_cb(self, button):\n"
-" # if there is still an entry in the model\n"
-" if len(self.listmodel) != 0:\n"
-" # get the selection\n"
-" (model, iter) = self.selection.get_selected()\n"
-" # if there is a selection, print a message in the terminal\n"
-" # and remove it from the model\n"
-" if iter is not None:\n"
-" print(\"%s has been removed\" % (model[iter][0]))\n"
-" self.listmodel.remove(iter)\n"
-" # otherwise, ask the user to select something to remove\n"
-" else:\n"
-" print(\"Select a title to remove\")\n"
-" # else, if there are no entries in the model, print \"Empty list\"\n"
-" # in the terminal\n"
-" else:\n"
-" print(\"Empty list\")\n"
-"\n"
-" def remove_all_cb(self, button):\n"
-" # if there is still an entry in the model\n"
-" if len(self.listmodel) != 0:\n"
-" # remove all the entries in the model\n"
-" for i in range(len(self.listmodel)):\n"
-" iter = self.listmodel.get_iter(0)\n"
-" self.listmodel.remove(iter)\n"
-" # print a message in the terminal alerting that the model is empty\n"
-" print(\"Empty list\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Pango\n"
-"import sys\n"
-"\n"
-"list_of_dvd = [[\"The Usual Suspects\"],\n"
-" [\"Gilda\"],\n"
-" [\"The Godfather\"],\n"
-" [\"Pulp Fiction\"],\n"
-" [\"Once Upon a Time in the West\"],\n"
-" [\"Rear Window\"]]\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"My DVDs\", application=app)\n"
-" self.set_default_size(250, 100)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # the data are stored in the model\n"
-" # create a liststore with one column\n"
-" self.listmodel = Gtk.ListStore(str)\n"
-" for i in range(len(list_of_dvd)):\n"
-" self.listmodel.append(list_of_dvd[i])\n"
-"\n"
-" # a treeview to see the data stored in the model\n"
-" view = Gtk.TreeView(model=self.listmodel)\n"
-"\n"
-" # cellrenderer for the first column\n"
-" cell = Gtk.CellRendererText()\n"
-" # the first column is created\n"
-" col = Gtk.TreeViewColumn(\"Title\", cell, text=0)\n"
-" # and it is appended to the treeview\n"
-" view.append_column(col)\n"
-"\n"
-" # when a row of the treeview is selected, it emits a signal\n"
-" self.selection = view.get_selection()\n"
-" self.selection.connect(\"changed\", self.on_changed)\n"
-"\n"
-" # the label we use to show the selection\n"
-" self.label = Gtk.Label()\n"
-" self.label.set_text(\"\")\n"
-"\n"
-" # a button to add new titles, connected to a callback function\n"
-" self.button_add = Gtk.Button(label=\"Add\")\n"
-" self.button_add.connect(\"clicked\", self.add_cb)\n"
-"\n"
-" # an entry to enter titles\n"
-" self.entry = Gtk.Entry()\n"
-"\n"
-" # a button to remove titles, connected to a callback function\n"
-" self.button_remove = Gtk.Button(label=\"Remove\")\n"
-" self.button_remove.connect(\"clicked\", self.remove_cb)\n"
-"\n"
-" # a button to remove all titles, connected to a callback function\n"
-" self.button_remove_all = Gtk.Button(label=\"Remove All\")\n"
-" self.button_remove_all.connect(\"clicked\", self.remove_all_cb)\n"
-"\n"
-" # a grid to attach the widgets\n"
-" grid = Gtk.Grid()\n"
-" grid.attach(view, 0, 0, 4, 1)\n"
-" grid.attach(self.label, 0, 1, 4, 1)\n"
-" grid.attach(self.button_add, 0, 2, 1, 1)\n"
-" grid.attach_next_to(\n"
-" self.entry, self.button_add, Gtk.PositionType.RIGHT, 1, 1)\n"
-" grid.attach_next_to(\n"
-" self.button_remove, self.entry, Gtk.PositionType.RIGHT, 1, 1)\n"
-" grid.attach_next_to(\n"
-" self.button_remove_all, self.button_remove, Gtk.PositionType.RIGHT, 1, 1)\n"
-"\n"
-" # add the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" def on_changed(self, selection):\n"
-" # get the model and the iterator that points at the data in the model\n"
-" (model, iter) = selection.get_selected()\n"
-" # set the label to a new value depending on the selection, if there is\n"
-" # one\n"
-" if iter is not None:\n"
-" self.label.set_text(\"\\n %s\" % (model[iter][0]))\n"
-" else:\n"
-" self.label.set_text(\"\")\n"
-" return True\n"
-"\n"
-" # callback function for the \"Add\" button\n"
-" def add_cb(self, button):\n"
-" # append to the model the title that is in the entry\n"
-" title = self.entry.get_text()\n"
-" self.listmodel.append([title])\n"
-" # and print a message in the terminal\n"
-" print(\"%s has been added\" % (title))\n"
-"\n"
-" def remove_cb(self, button):\n"
-" # if there is still an entry in the model\n"
-" if len(self.listmodel) != 0:\n"
-" # get the selection\n"
-" (model, iter) = self.selection.get_selected()\n"
-" # if there is a selection, print a message in the terminal\n"
-" # and remove it from the model\n"
-" if iter is not None:\n"
-" print(\"%s has been removed\" % (model[iter][0]))\n"
-" self.listmodel.remove(iter)\n"
-" # otherwise, ask the user to select something to remove\n"
-" else:\n"
-" print(\"Select a title to remove\")\n"
-" # else, if there are no entries in the model, print \"Empty list\"\n"
-" # in the terminal\n"
-" else:\n"
-" print(\"Empty list\")\n"
-"\n"
-" def remove_all_cb(self, button):\n"
-" # if there is still an entry in the model\n"
-" if len(self.listmodel) != 0:\n"
-" # remove all the entries in the model\n"
-" for i in range(len(self.listmodel)):\n"
-" iter = self.listmodel.get_iter(0)\n"
-" self.listmodel.remove(iter)\n"
-" # print a message in the terminal alerting that the model is empty\n"
-" print(\"Empty list\")\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/treeview_advanced_liststore.py.page:35
-#: C/treeview_cellrenderertoggle.py.page:35
-#: C/treeview_simple_liststore.py.page:36 C/treeview_treestore.py.page:36
-msgid "Useful methods for a TreeView widget"
-msgstr "Métodos útiles para un widget TreeView"
-
-#. (itstool) path: section/p
-#: C/treeview_advanced_liststore.py.page:36
-#: C/treeview_cellrenderertoggle.py.page:36 C/treeview_treestore.py.page:37
-msgid ""
-"The TreeView widget is designed around a <em>Model/View/Controller</em> "
-"design: the <em>Model</em> stores the data; the <em>View</em> gets change "
-"notifications and displays the content of the model; the <em>Controller</"
-"em>, finally, changes the state of the model and notifies the view of these "
-"changes. For more information and for a list of useful methods for TreeModel "
-"see <link xref=\"model-view-controller.py\"/>."
-msgstr ""
-"El widget «TreeView» está construido alrededor del diseño <em>Modelo/Vista/"
-"Controlador</em>: el <em>Modelo</em> almacena los datos; la <em>Vista</em> "
-"obtiene las notificaciones de cambio y muestra el contenido del modelo; el "
-"<em>Controlador</em>, finalmente, cambia el estado del modelo y le notifica "
-"a la vista de los cambios. Para más información y para una lista de métodos "
-"útiles para el «TreeModel» consulte la <link xref=\"model-view-controller.py"
-"\"/>."
-
-#. (itstool) path: section/p
-#: C/treeview_advanced_liststore.py.page:37
-msgid ""
-"In line 36 the <code>\"changed\"</code> signal is connected to the callback "
-"function <code>on_changed()</code> using <code><var>widget</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 36, la señal <code>\"changed\"</code> se conecta a la función de "
-"retorno de llamada <code>on_changed()</code> usando <code><var>widget</var>."
-"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
-"detallada."
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/treeview_cellrenderertoggle.py.page:23
-msgctxt "_"
-msgid ""
-"external ref='media/treeview_cellrenderertoggle.png' "
-"md5='ade9b9437f8f83150acf37610dab834d'"
-msgstr ""
-"external ref='media/treeview_cellrenderertoggle.png' "
-"md5='ade9b9437f8f83150acf37610dab834d'"
-
-#. (itstool) path: info/title
-#: C/treeview_cellrenderertoggle.py.page:8 C/treeview_treestore.py.page:8
-msgctxt "text"
-msgid "TreeView with TreeStore (Python)"
-msgstr "TreeView con TreeStore (Python)"
-
-#. (itstool) path: info/desc
-#: C/treeview_cellrenderertoggle.py.page:19
-msgid ""
-"A TreeView displaying a TreeStore (more complex example, with "
-"CellRendererToggle)"
-msgstr ""
-"Un TreeView mostrando un TreeStore (ejemplo más complejo, con "
-"CellRendererToggle)"
-
-#. (itstool) path: page/title
-#: C/treeview_cellrenderertoggle.py.page:22
-msgid "More Complex TreeView with TreeStore"
-msgstr "TreeView más complejo con TreeStore"
-
-#. (itstool) path: page/p
-#: C/treeview_cellrenderertoggle.py.page:24
-msgid ""
-"This TreeView displays a TreeStore with two columns, one of which is "
-"rendered as a toggle."
-msgstr ""
-"Este TreeView muestra un ListStore con dos columnas, una de las cuales se "
-"procesa como un interruptor."
-
-#. (itstool) path: section/code
-#: C/treeview_cellrenderertoggle.py.page:31
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Pango\n"
-"import sys\n"
-"\n"
-"books = [[\"Tolstoy, Leo\", [\"War and Peace\", True], [\"Anna Karenina\", False]],\n"
-" [\"Shakespeare, William\", [\"Hamlet\", False],\n"
-" [\"Macbeth\", True], [\"Othello\", False]],\n"
-" [\"Tolkien, J.R.R.\", [\"The Lord of the Rings\", False]]]\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Library\", application=app)\n"
-" self.set_default_size(250, 100)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # the data are stored in the model\n"
-" # create a treestore with two columns\n"
-" self.store = Gtk.TreeStore(str, bool)\n"
-" # fill in the model\n"
-" for i in range(len(books)):\n"
-" # the iter piter is returned when appending the author in the first column\n"
-" # and False in the second\n"
-" piter = self.store.append(None, [books[i][0], False])\n"
-" # append the books and the associated boolean value as children of\n"
-" # the author\n"
-" j = 1\n"
-" while j < len(books[i]):\n"
-" self.store.append(piter, books[i][j])\n"
-" j += 1\n"
-"\n"
-" # the treeview shows the model\n"
-" # create a treeview on the model self.store\n"
-" view = Gtk.TreeView()\n"
-" view.set_model(self.store)\n"
-"\n"
-" # the cellrenderer for the first column - text\n"
-" renderer_books = Gtk.CellRendererText()\n"
-" # the first column is created\n"
-" column_books = Gtk.TreeViewColumn(\"Books\", renderer_books, text=0)\n"
-" # and it is appended to the treeview\n"
-" view.append_column(column_books)\n"
-"\n"
-" # the cellrenderer for the second column - boolean rendered as a toggle\n"
-" renderer_in_out = Gtk.CellRendererToggle()\n"
-" # the second column is created\n"
-" column_in_out = Gtk.TreeViewColumn(\"Out?\", renderer_in_out, active=1)\n"
-" # and it is appended to the treeview\n"
-" view.append_column(column_in_out)\n"
-" # connect the cellrenderertoggle with a callback function\n"
-" renderer_in_out.connect(\"toggled\", self.on_toggled)\n"
-"\n"
-" # add the treeview to the window\n"
-" self.add(view)\n"
-"\n"
-" # callback function for the signal emitted by the cellrenderertoggle\n"
-" def on_toggled(self, widget, path):\n"
-" # the boolean value of the selected row\n"
-" current_value = self.store[path][1]\n"
-" # change the boolean value of the selected row in the model\n"
-" self.store[path][1] = not current_value\n"
-" # new current value!\n"
-" current_value = not current_value\n"
-" # if length of the path is 1 (that is, if we are selecting an author)\n"
-" if len(path) == 1:\n"
-" # get the iter associated with the path\n"
-" piter = self.store.get_iter(path)\n"
-" # get the iter associated with its first child\n"
-" citer = self.store.iter_children(piter)\n"
-" # while there are children, change the state of their boolean value\n"
-" # to the value of the author\n"
-" while citer is not None:\n"
-" self.store[citer][1] = current_value\n"
-" citer = self.store.iter_next(citer)\n"
-" # if the length of the path is not 1 (that is, if we are selecting a\n"
-" # book)\n"
-" elif len(path) != 1:\n"
-" # get the first child of the parent of the book (the first book of\n"
-" # the author)\n"
-" citer = self.store.get_iter(path)\n"
-" piter = self.store.iter_parent(citer)\n"
-" citer = self.store.iter_children(piter)\n"
-" # check if all the children are selected\n"
-" all_selected = True\n"
-" while citer is not None:\n"
-" if self.store[citer][1] == False:\n"
-" all_selected = False\n"
-" break\n"
-" citer = self.store.iter_next(citer)\n"
-" # if they do, the author as well is selected; otherwise it is not\n"
-" self.store[piter][1] = all_selected\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Pango\n"
-"import sys\n"
-"\n"
-"books = [[\"Tolstoy, Leo\", [\"War and Peace\", True], [\"Anna Karenina\", False]],\n"
-" [\"Shakespeare, William\", [\"Hamlet\", False],\n"
-" [\"Macbeth\", True], [\"Othello\", False]],\n"
-" [\"Tolkien, J.R.R.\", [\"The Lord of the Rings\", False]]]\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Library\", application=app)\n"
-" self.set_default_size(250, 100)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # the data are stored in the model\n"
-" # create a treestore with two columns\n"
-" self.store = Gtk.TreeStore(str, bool)\n"
-" # fill in the model\n"
-" for i in range(len(books)):\n"
-" # the iter piter is returned when appending the author in the first column\n"
-" # and False in the second\n"
-" piter = self.store.append(None, [books[i][0], False])\n"
-" # append the books and the associated boolean value as children of\n"
-" # the author\n"
-" j = 1\n"
-" while j < len(books[i]):\n"
-" self.store.append(piter, books[i][j])\n"
-" j += 1\n"
-"\n"
-" # the treeview shows the model\n"
-" # create a treeview on the model self.store\n"
-" view = Gtk.TreeView()\n"
-" view.set_model(self.store)\n"
-"\n"
-" # the cellrenderer for the first column - text\n"
-" renderer_books = Gtk.CellRendererText()\n"
-" # the first column is created\n"
-" column_books = Gtk.TreeViewColumn(\"Books\", renderer_books, text=0)\n"
-" # and it is appended to the treeview\n"
-" view.append_column(column_books)\n"
-"\n"
-" # the cellrenderer for the second column - boolean rendered as a toggle\n"
-" renderer_in_out = Gtk.CellRendererToggle()\n"
-" # the second column is created\n"
-" column_in_out = Gtk.TreeViewColumn(\"Out?\", renderer_in_out, active=1)\n"
-" # and it is appended to the treeview\n"
-" view.append_column(column_in_out)\n"
-" # connect the cellrenderertoggle with a callback function\n"
-" renderer_in_out.connect(\"toggled\", self.on_toggled)\n"
-"\n"
-" # add the treeview to the window\n"
-" self.add(view)\n"
-"\n"
-" # callback function for the signal emitted by the cellrenderertoggle\n"
-" def on_toggled(self, widget, path):\n"
-" # the boolean value of the selected row\n"
-" current_value = self.store[path][1]\n"
-" # change the boolean value of the selected row in the model\n"
-" self.store[path][1] = not current_value\n"
-" # new current value!\n"
-" current_value = not current_value\n"
-" # if length of the path is 1 (that is, if we are selecting an author)\n"
-" if len(path) == 1:\n"
-" # get the iter associated with the path\n"
-" piter = self.store.get_iter(path)\n"
-" # get the iter associated with its first child\n"
-" citer = self.store.iter_children(piter)\n"
-" # while there are children, change the state of their boolean value\n"
-" # to the value of the author\n"
-" while citer is not None:\n"
-" self.store[citer][1] = current_value\n"
-" citer = self.store.iter_next(citer)\n"
-" # if the length of the path is not 1 (that is, if we are selecting a\n"
-" # book)\n"
-" elif len(path) != 1:\n"
-" # get the first child of the parent of the book (the first book of\n"
-" # the author)\n"
-" citer = self.store.get_iter(path)\n"
-" piter = self.store.iter_parent(citer)\n"
-" citer = self.store.iter_children(piter)\n"
-" # check if all the children are selected\n"
-" all_selected = True\n"
-" while citer is not None:\n"
-" if self.store[citer][1] == False:\n"
-" all_selected = False\n"
-" break\n"
-" citer = self.store.iter_next(citer)\n"
-" # if they do, the author as well is selected; otherwise it is not\n"
-" self.store[piter][1] = all_selected\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/p
-#: C/treeview_cellrenderertoggle.py.page:37
-msgid ""
-"In line 48 the <code>\"toggled\"</code> signal is connected to the callback "
-"function <code>on_toggled()</code> using <code><var>widget</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 48 la señal <code>«toggled»</code> se conecta a una función de "
-"retorno de llamada <code>on_toggled()</code> usando <code><var>widget</var>."
-"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
-"detallada."
-
-#. (itstool) path: item/p
-#: C/treeview_cellrenderertoggle.py.page:46 C/treeview_treestore.py.page:46
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeStore.html"
-"\">GtkTreeStore</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeStore.html"
-"\">GtkTreeStore</link>"
-
-#. (itstool) path: item/p
-#: C/treeview_cellrenderertoggle.py.page:48
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererToggle."
-"html\">GtkCellRendererToggle</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererToggle."
-"html\">GtkCellRendererToggle</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/treeview_simple_liststore.js.page:25
-msgctxt "_"
-msgid ""
-"external ref='media/treeview_simple_liststore_penguins.png' "
-"md5='d750a0b9fddf8e508753cc639839871d'"
-msgstr ""
-"external ref='media/treeview_simple_liststore_penguins.png' "
-"md5='d750a0b9fddf8e508753cc639839871d'"
-
-#. (itstool) path: info/title
-#: C/treeview_simple_liststore.js.page:8
-msgctxt "text"
-msgid "TreeView with ListStore (JavaScript)"
-msgstr "TreeView con ListStore (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/treeview_simple_liststore.js.page:21
-msgid "A widget that shows a separate list of items"
-msgstr "Un widget que muestra una lista separada de elementos"
-
-#. (itstool) path: page/title
-#: C/treeview_simple_liststore.js.page:24
-msgid "TreeView with ListStore"
-msgstr "TreeView con ListStore"
-
-#. (itstool) path: page/p
-#: C/treeview_simple_liststore.js.page:26
-msgid ""
-"A TreeView is like a window onto the contents of either a ListStore or a "
-"TreeStore. A ListStore is like a spreadsheet: a \"flat\", two-dimensional "
-"list of things broken up into rows and columns. A TreeStore, meanwhile, can "
-"branch out in different directions like a tree can. In this example, we "
-"create a TreeView that shows the contents of a ListStore with (fictitious) "
-"names and phone numbers in it, and set it so that the <link xref=\"label.js"
-"\">Label</link> at the bottom of the window shows more information about "
-"whichever name you click on."
-msgstr ""
-"Un TreeView es como una ventana sobre los contenidos de un ListStore o un "
-"TreeStore. Un ListStore es como una hoja de cálculo: una lista de cosas "
-"«plana», de dos dimensiones, dividida en filas y columnas. Un TreeStore, en "
-"cambio, puede bifurcarse en distintas direcciones como un árbol. En este "
-"ejemplo, se crea un TreeView que muestra el contenido de un ListStore con "
-"nombres y números de teléfono (ficticios), y se configura para que la <link "
-"xref=\"label.js\">Etiqueta</link> en la parte inferior de la ventana muestre "
-"más información acerca de cualquier nombre en el que pulse."
-
-#. (itstool) path: page/p
-#: C/treeview_simple_liststore.js.page:27
-msgid ""
-"The TreeView is not just a single widget, but contains a number of smaller "
-"ones:"
-msgstr ""
-"Un TreeView no es solamente un widget individual, sino que contiene varios "
-"más pequeños."
-
-#. (itstool) path: item/p
-#: C/treeview_simple_liststore.js.page:29
-msgid ""
-"TreeViewColumn widgets show each (vertical) column of information from the "
-"ListStore. Each one has a title which can be shown at the top of the column, "
-"like in the screenshot."
-msgstr ""
-"Los widgets TreeViewColumn muestran cada columna (vertical) de información "
-"del ListStore. Cada uno tiene un título que puede mostrarse en la parte "
-"superior de la columna, como en la captura de pantalla."
-
-#. (itstool) path: item/p
-#: C/treeview_simple_liststore.js.page:30
-msgid ""
-"CellRenderer widgets are \"packed\" into each TreeViewColumn, and contain "
-"the instructions for how to display each individual \"cell\", or item from "
-"the ListStore. There are multiple different types, including the "
-"CellRendererText used here and the CellRendererPixbuf, which displays a "
-"picture (\"pixel buffer\")."
-msgstr ""
-"Los widgets CellRenderer se «empaquetan» en cada TreeViewColumn, y contienen "
-"las instrucciones de cómo mostrar cada «celda» individual, o elemento del "
-"ListStore. Hay varios tipos diferentes, incluyendo el CellRendererText que "
-"se usa aquí y el CellRendererPixbuf, que muestra una imagen («búfer de "
-"píxeles»)."
-
-#. (itstool) path: page/p
-#: C/treeview_simple_liststore.js.page:32
-msgid ""
-"Finally, we're going to use an object called a TreeIter, which isn't a "
-"widget so much as an invisible cursor which points to a (horizontal) row in "
-"the ListStore. Whenever you click on a name in the phonebook, for instance, "
-"we create a TreeIter pointing to the row that's selected, and then use that "
-"to tell the ListStore which entry we want the Label to show more information "
-"about."
-msgstr ""
-"Finalmente, se usará un objeto llamado TreeIter, que no es un widget sino un "
-"cursor invisible que apunta a una fila (horizontal) en el ListStore. Cada "
-"vez que pulsa en un nombre en la libreta de direcciones, por ejemplo, se "
-"crea un TreeIter apuntando a la fila seleccionada, y después se usa para "
-"decirle al ListStore el elemento del que tiene que mostrar más información."
-
-#. (itstool) path: note/p
-#: C/treeview_simple_liststore.js.page:33
-msgid ""
-"The TreeView is probably the most complicated Gtk widget, because of how "
-"many parts it has and how they all have to work together. Give yourself time "
-"to learn how it works and experiment with it, or try something easier first "
-"if you're having trouble."
-msgstr ""
-"El TreeView es probablemente el widget de GTK más complicado, por la "
-"cantidad de partes que tiene y por cómo tienen que trabajar juntas. Tómese "
-"un tiempo para aprender cómo funciona y experimentar con él, o intente algo "
-"más fácil primero si encuentra problemas."
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:38
-#, no-wrap
-msgid ""
-"\n"
-"#!/usr/bin/gjs\n"
-"\n"
-"const GObject = imports.gi.GObject;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"const Pango = imports.gi.Pango;\n"
-msgstr ""
-"\n"
-"#!/usr/bin/gjs\n"
-"\n"
-"const GObject = imports.gi.GObject;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"const Pango = imports.gi.Pango;\n"
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:51
-#, no-wrap
-msgid ""
-"\n"
-"const TreeViewExample = new Lang.Class({\n"
-" Name: 'TreeView Example with Simple ListStore',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jstreeviewsimpleliststore'\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-msgstr ""
-"\n"
-"const TreeViewExample = new Lang.Class({\n"
-" Name: 'TreeView Example with Simple ListStore',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jstreeviewsimpleliststore'\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:76
-msgid ""
-"All the code for this sample goes in the TreeViewExample class. The above "
-"code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> for our widgets and window to "
-"go in."
-msgstr ""
-"Todo el código de este ejemplo va en la clase TreeViewExample. El código "
-"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
-"Gtk.Application.html\">Gtk.Application</link> en la que van los widgets y la "
-"ventana."
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:77
-#, no-wrap
-msgid ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 250,\n"
-" default_width: 100,\n"
-" border_width: 20,\n"
-" title: \"My Phone Book\"});\n"
-msgstr ""
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 250,\n"
-" default_width: 100,\n"
-" border_width: 20,\n"
-" title: \"My Phone Book\"});\n"
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:95
-#, no-wrap
-msgid ""
-"\n"
-" // Create the underlying liststore for the phonebook\n"
-" this._listStore = new Gtk.ListStore ();\n"
-" this._listStore.set_column_types ([\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING]);\n"
-msgstr ""
-"\n"
-" // Create the underlying liststore for the phonebook\n"
-" this._listStore = new Gtk.ListStore ();\n"
-" this._listStore.set_column_types ([\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING]);\n"
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:104
-msgid ""
-"We first create the ListStore like we would any widget. Then we call its "
-"set_column_types method, and pass it an array of GObject data types. (We "
-"could have put the types all on one line, but here we are breaking them up "
-"to make it easier to read.)"
-msgstr ""
-"Primero se crea el ListStore como cualquier otro widget. Después se llama a "
-"su método set_column_types, y se le pasa una matriz de tipos de datos "
-"GObject (se podrían haber puesto todos los tipos en una sola línea, pero "
-"aquí se separan para hacerlo más fácil de leer)."
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:105
-msgid "The GObject data types you can use include:"
-msgstr "Los tipos de datos GObject que puede usar incluyen:"
-
-#. (itstool) path: item/p
-#: C/treeview_simple_liststore.js.page:110
-msgid "<file>gtk.gdk.Pixbuf</file> -- A picture"
-msgstr "<file>gtk.gdk.Pixbuf</file>: una imagen"
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:112
-msgid ""
-"In this case, we're making a ListStore of four columns, each one containing "
-"string values."
-msgstr ""
-"En este caso, se está haciendo un ListStore de cuatro columnas, cada una "
-"conteniendo valores de cadenas."
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:115
-#, no-wrap
-msgid ""
-"\n"
-" // Data to go in the phonebook\n"
-" this.phonebook =\n"
-" let phonebook =\n"
-" [{ name: \"Jurg\", surname: \"Billeter\", phone: \"555-0123\",\n"
-" description: \"A friendly person.\"},\n"
-" { name: \"Johannes\", surname: \"Schmid\", phone: \"555-1234\",\n"
-" description: \"Easy phone number to remember.\"},\n"
-" { name: \"Julita\", surname: \"Inca\", phone: \"555-2345\",\n"
-" description: \"Another friendly person.\"},\n"
-" { name: \"Javier\", surname: \"Jardon\", phone: \"555-3456\",\n"
-" description: \"Bring fish for his penguins.\"},\n"
-" { name: \"Jason\", surname: \"Clinton\", phone: \"555-4567\",\n"
-" description: \"His cake's not a lie.\"},\n"
-" { name: \"Random J.\", surname: \"Hacker\", phone: \"555-5678\",\n"
-" description: \"Very random!\"}];\n"
-msgstr ""
-"\n"
-" // Data to go in the phonebook\n"
-" this.phonebook =\n"
-" let phonebook =\n"
-" [{ name: \"Jurg\", surname: \"Billeter\", phone: \"555-0123\",\n"
-" description: \"A friendly person.\"},\n"
-" { name: \"Johannes\", surname: \"Schmid\", phone: \"555-1234\",\n"
-" description: \"Easy phone number to remember.\"},\n"
-" { name: \"Julita\", surname: \"Inca\", phone: \"555-2345\",\n"
-" description: \"Another friendly person.\"},\n"
-" { name: \"Javier\", surname: \"Jardon\", phone: \"555-3456\",\n"
-" description: \"Bring fish for his penguins.\"},\n"
-" { name: \"Jason\", surname: \"Clinton\", phone: \"555-4567\",\n"
-" description: \"His cake's not a lie.\"},\n"
-" { name: \"Random J.\", surname: \"Hacker\", phone: \"555-5678\",\n"
-" description: \"Very random!\"}];\n"
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:132
-msgid ""
-"Here we have the information to go in the ListStore. It's an array of "
-"objects, each one corresponding to a single entry in our phone book."
-msgstr ""
-"Aquí se tiene la información que va en el ListStore. Es una matriz de "
-"objetos, cada uno correspondiente a una única entrada en la libreta de "
-"direcciones."
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:133
-msgid ""
-"Note that the TreeView in the screenshot doesn't actually show the data from "
-"the \"description\" properties. Instead, that information's shown in the "
-"Label beneath it, for whichever row that you click on. That's because the "
-"TreeView and ListStore are two separate things, and a TreeView can show all "
-"or part of a ListStore, and display what's in it in different ways. You can "
-"even have multiple widgets show things from the same ListStore, like the "
-"Label in our example or even a second TreeView."
-msgstr ""
-"Tenga en cuenta que el TreeView en la captura de pantalla no muestra en "
-"realidad los datos de las propiedades «description». En su lugar, esa "
-"información se muestra en la etiqueta debajo, para cada fila en la que "
-"pulse. Eso es así porque el TreeView y el ListStore son dos cosas separadas, "
-"y un TreeView puede mostrar todo o parte de un ListStore, y mostrar su "
-"información de maneras diferentes. Puede hacer que varios widgets muestren "
-"cosas del mismo ListStore, como la etiqueta del ejemplo, o incluso un "
-"segundo TreeView."
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:135
-#, no-wrap
-msgid ""
-"\n"
-" for (i = 0; i < phonebook.length; i++ ) {\n"
-" let contact = phonebook [i];\n"
-" this._listStore.set (this._listStore.append(), [0, 1, 2, 3],\n"
-" [contact.name, contact.surname, contact.phone, contact.description]);\n"
-" }\n"
-msgstr ""
-"\n"
-" for (i = 0; i < phonebook.length; i++ ) {\n"
-" let contact = phonebook [i];\n"
-" this._listStore.set (this._listStore.append(), [0, 1, 2, 3],\n"
-" [contact.name, contact.surname, contact.phone, contact.description]);\n"
-" }\n"
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:142
-msgid ""
-"This <file>for</file> loop puts the strings from our phonebook into our "
-"ListStore in order. In order, we pass the ListStore's set method the iter "
-"that points to the correct row, an array which says which columns we want to "
-"set, and an array which contains the data we want to put into those columns."
-msgstr ""
-"Este bucle <file>for</file> pone las cadenas de la libreta de direcciones en "
-"el ListStore ordenadas. En orden, se le pasa al método «set» del ListStore el "
-"iter que apunta a la fila correcta, una matriz que dice qué columnas se "
-"quieren establecer, y una matriz que contiene los datos que se quieren poner "
-"en esas columnas."
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:143
-msgid ""
-"A ListStore's <file>append</file> method adds a horizontal row onto it (it "
-"starts out with none), and returns a TreeIter pointing to that row like a "
-"cursor. So by passing <file>this._listStore.append()</file> to the ListStore "
-"as a property, we're creating a new row and telling the <file>set</file> "
-"method which row to set data for at the same time."
-msgstr ""
-"Un método <file>append</file> del ListStore le añade una fila horizontal "
-"(empieza sin ninguna), y devuelve un TreeIter apuntando a esa fila como un "
-"cursor. Entonces, pasándole <file>this._listStore.append()</file> al "
-"ListStore como una propiedad, se está creando una fila nueva y diciéndole al "
-"método <file>set</file> en qué fila tiene que establecer los datos al mismo "
-"tiempo."
-
-#. (itstool) path: section/title
-#: C/treeview_simple_liststore.js.page:148
-msgid "Creating the TreeView"
-msgstr "Crear el TreeView"
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:149
-#, no-wrap
-msgid ""
-"\n"
-" // Create the treeview\n"
-" this._treeView = new Gtk.TreeView ({\n"
-" expand: true,\n"
-" model: this._listStore });\n"
-msgstr ""
-"\n"
-" // Create the treeview\n"
-" this._treeView = new Gtk.TreeView ({\n"
-" expand: true,\n"
-" model: this._listStore });\n"
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:155
-msgid ""
-"Here we create a basic TreeView widget, that expands both horizontally and "
-"vertically to use as much space as needed. We set it to use the ListStore we "
-"created as its \"model\", or the thing it'll show us stuff from."
-msgstr ""
-"Aquí se crea un widget TreeView básico, que se expande tanto horizontal como "
-"verticalmente para usar tanto espacio como se necesite. Se configura para "
-"usar el ListStore que se creó como su «modelo», o aquello desde donde "
-"mostrará datos."
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:157
-#, no-wrap
-msgid ""
-"\n"
-" // Create the columns for the address book\n"
-" let firstName = new Gtk.TreeViewColumn ({ title: \"First Name\" });\n"
-" let lastName = new Gtk.TreeViewColumn ({ title: \"Last Name\" });\n"
-" let phone = new Gtk.TreeViewColumn ({ title: \"Phone Number\" });\n"
-msgstr ""
-"\n"
-" // Create the columns for the address book\n"
-" let firstName = new Gtk.TreeViewColumn ({ title: \"First Name\" });\n"
-" let lastName = new Gtk.TreeViewColumn ({ title: \"Last Name\" });\n"
-" let phone = new Gtk.TreeViewColumn ({ title: \"Phone Number\" });\n"
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:163
-msgid ""
-"Now we create each of the vertical TreeViewColumns we'll see in the "
-"TreeView. The title for each one goes at the top, as you can see in the "
-"screenshot."
-msgstr ""
-"Ahora se crean todas las TreeViewColumns verticales que se verán en el "
-"TreeView. El título de cada una va en la parte superior, como puede ver en "
-"la captura de pantalla."
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:165
-#, no-wrap
-msgid ""
-"\n"
-" // Create a cell renderer for when bold text is needed\n"
-" let bold = new Gtk.CellRendererText ({\n"
-" weight: Pango.Weight.BOLD });\n"
-"\n"
-" // Create a cell renderer for normal text\n"
-" let normal = new Gtk.CellRendererText ();\n"
-"\n"
-" // Pack the cell renderers into the columns\n"
-" firstName.pack_start (bold, true);\n"
-" lastName.pack_start (normal, true);\n"
-" phone.pack_start (normal, true);\n"
-msgstr ""
-"\n"
-" // Create a cell renderer for when bold text is needed\n"
-" let bold = new Gtk.CellRendererText ({\n"
-" weight: Pango.Weight.BOLD });\n"
-"\n"
-" // Create a cell renderer for normal text\n"
-" let normal = new Gtk.CellRendererText ();\n"
-"\n"
-" // Pack the cell renderers into the columns\n"
-" firstName.pack_start (bold, true);\n"
-" lastName.pack_start (normal, true);\n"
-" phone.pack_start (normal, true);\n"
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:178
-msgid ""
-"Here we create the CellRenderers that we'll use to display the text from our "
-"ListStore, and pack them into the TreeViewColumns. Each CellRendererText is "
-"used for all the entries in that column. Our normal CellRendererText just "
-"creates plain text, while our bold one uses heavier-weight text. We put it "
-"into the first name column, and tell the other two to use copies of the "
-"normal one. The \"true\" used as the second parameter for the "
-"<file>pack_start</file> method tells it to expand the cells when possible, "
-"instead of keeping them compact."
-msgstr ""
-"Aquí se crean los CellRenderer que se usarán para mostrar el texto del "
-"ListStore, y se empaquetan en las TreeViewColumn. Cada CellRendererText se "
-"usa para todas las entradas en esa columna. El CellRendererText normal sólo "
-"crea texto plano, mientras que el «bold» usa texto en negrita. Se pone en la "
-"primera columna de nombre, y se le dice a las otras dos que usen copias de "
-"la normal. El «true» usado como segundo parámetro para el método "
-"<file>pack_start</file> le dice que expanda las celdas cuando sea posible, "
-"en lugar de mantenerlas compactas."
-
-#. (itstool) path: note/p
-#: C/treeview_simple_liststore.js.page:179
-msgid ""
-"<link href=\"http://www.pygtk.org/docs/pygtk/pango-constants.html\">Here is "
-"a list</link> of other text properties you can use. In order to use these "
-"Pango constants, make sure to put the line <file>const Pango = imports.gi."
-"Pango;</file> at the beginning of your code like we did."
-msgstr ""
-"<link href=\"http://www.pygtk.org/docs/pygtk/pango-constants.html\">Aquí hay "
-"una lista</link> de otras propiedades de texto que puede usar. Para usar "
-"estas constantes de Pango, asegúrese de poner la línea <file>const Pango = "
-"imports.gi.Pango;</file> al principio del código como se hizo."
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:181
-#, no-wrap
-msgid ""
-"\n"
-" firstName.add_attribute (bold, \"text\", 0);\n"
-" lastName.add_attribute (normal, \"text\", 1);\n"
-" phone.add_attribute (normal, \"text\", 2);\n"
-"\n"
-" // Insert the columns into the treeview\n"
-" this._treeView.insert_column (firstName, 0);\n"
-" this._treeView.insert_column (lastName, 1);\n"
-" this._treeView.insert_column (phone, 2);\n"
-msgstr ""
-"\n"
-" firstName.add_attribute (bold, \"text\", 0);\n"
-" lastName.add_attribute (normal, \"text\", 1);\n"
-" phone.add_attribute (normal, \"text\", 2);\n"
-"\n"
-" // Insert the columns into the treeview\n"
-" this._treeView.insert_column (firstName, 0);\n"
-" this._treeView.insert_column (lastName, 1);\n"
-" this._treeView.insert_column (phone, 2);\n"
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:191
-msgid ""
-"Now that we've put the CellRenderers into the TreeViewColumns, we use the "
-"<file>add_attribute</file> method to tell each column to pull in text from "
-"the model our TreeView is set to use; in this case, the ListStore with the "
-"phonebook."
-msgstr ""
-"Ahora que se han puesto los CellRenderer en las TreeViewColumn, se usa el "
-"método <file>add_attribute</file> para decirle a cada columna que obtenga "
-"texto del modelo que el TreeView está configurado para usar; en este caso, "
-"el ListStore con la libreta de direcciones."
-
-#. (itstool) path: item/p
-#: C/treeview_simple_liststore.js.page:193
-msgid ""
-"The first parameter is which CellRenderer we're going to use to render what "
-"we're pulling in."
-msgstr ""
-"El primer parámetro es qué CellRenderer se usará para procesar lo que se "
-"está obteniendo."
-
-#. (itstool) path: item/p
-#: C/treeview_simple_liststore.js.page:194
-msgid ""
-"The second parameter is what kind of information we're going to pull in. In "
-"this case, we're letting it know that we're rendering text."
-msgstr ""
-"El segundo parámetro es qué tipo de información se obtendrá. En este caso, "
-"se le está haciendo saber que se procesa texto."
-
-#. (itstool) path: item/p
-#: C/treeview_simple_liststore.js.page:195
-msgid ""
-"The third parameter is which of the ListStore's columns we're pulling that "
-"information in from."
-msgstr ""
-"El tercer parámetro es de cuál de las columnas del ListStore se está "
-"obteniendo la información."
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:197
-msgid ""
-"After we've set that up, we use the TreeView's <file>insert_column</file> "
-"method to put our TreeViewColumns inside it in order. Our TreeView is now "
-"complete."
-msgstr ""
-"Después de haber preparado eso, se usa el método <file>insert_column</file> "
-"del TreeView para poner dentro las TreeViewColumn en orden. El TreeView "
-"ahora está terminado."
-
-#. (itstool) path: note/p
-#: C/treeview_simple_liststore.js.page:198
-msgid ""
-"Normally, you might want to use a loop to initialize your TreeView, but in "
-"this example we're spelling things out step by step for the sake of making "
-"it easier to understand."
-msgstr ""
-"Normalmente, usaría un bucle para inicializar su TreeView, pero en este "
-"ejemplo se hacen las cosas paso a paso para hacerlo más fácil de entender."
-
-#. (itstool) path: section/title
-#: C/treeview_simple_liststore.js.page:202
-msgid "Building the rest of the UI"
-msgstr "Crear el resto de la IU"
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:203
-#, no-wrap
-msgid ""
-"\n"
-" // Create the label that shows details for the name you select\n"
-" this._label = new Gtk.Label ({ label: \"\" });\n"
-"\n"
-" // Get which item is selected\n"
-" this.selection = this._treeView.get_selection();\n"
-"\n"
-" // When something new is selected, call _on_changed\n"
-" this.selection.connect ('changed', Lang.bind (this, this._onSelectionChanged));\n"
-msgstr ""
-"\n"
-" // Create the label that shows details for the name you select\n"
-" this._label = new Gtk.Label ({ label: \"\" });\n"
-"\n"
-" // Get which item is selected\n"
-" this.selection = this._treeView.get_selection();\n"
-"\n"
-" // When something new is selected, call _on_changed\n"
-" this.selection.connect ('changed', Lang.bind (this, this._onSelectionChanged));\n"
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:213
-msgid ""
-"The TreeView's <file>get_selection</file> method returns an object called a "
-"TreeSelection. A TreeSelection is like a TreeIter in that it's basically a "
-"cursor that points at a particular row, except that the one it points to is "
-"the one that's visibly highlighted as selected."
-msgstr ""
-"El método <file>get_selection</file> del TreeView devuelve un objeto llamado "
-"TreeSelection. Una TreeSelection es como un TreeIter en el sentido de que es "
-"básicamente un cursor que apunta a una fila particular, excepto que apunta a "
-"la que está resaltada visiblemente como seleccionada."
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:214
-msgid ""
-"After we get the TreeSelection that goes with our TreeView, we ask it to "
-"tell us when it changes which row it's pointing to. We do this by connecting "
-"its <file>changed</file> signal to the _onSelectionChanged function we "
-"wrote. This function changes the text displayed by the Label we just made."
-msgstr ""
-"Después de obtener la TreeSelection que va con el TreeView, le pedimos que "
-"nos diga cuándo cambia la fila a la que está apuntando. Esto se hace "
-"conectando la señal <file>changed</file> a la función «_onSelectionChanged» "
-"que se escribió. Esta función cambia el texto que muestra la etiqueta que se "
-"acaba de hacer."
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:216
-#, no-wrap
-msgid ""
-"\n"
-" // Create a grid to organize everything in\n"
-" this._grid = new Gtk.Grid;\n"
-"\n"
-" // Attach the treeview and label to the grid\n"
-" this._grid.attach (this._treeView, 0, 0, 1, 1);\n"
-" this._grid.attach (this._label, 0, 1, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-msgstr ""
-"\n"
-" // Create a grid to organize everything in\n"
-" this._grid = new Gtk.Grid;\n"
-"\n"
-" // Attach the treeview and label to the grid\n"
-" this._grid.attach (this._treeView, 0, 0, 1, 1);\n"
-" this._grid.attach (this._label, 0, 1, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:231
-msgid ""
-"After we've gotten that out of the way, we create a <link xref=\"grid.js"
-"\">Grid</link> to put everything in, then add it to our window and tell the "
-"window to show itself and its contents."
-msgstr ""
-"Después de haber terminado eso, se crea una <link xref=\"grid.js\">Rejilla</"
-"link> para poner todo dentro, se añade a la ventana y se le dice a esta que "
-"se muestre y revele su contenido."
-
-#. (itstool) path: section/title
-#: C/treeview_simple_liststore.js.page:235
-msgid "Function which handles a changed selection"
-msgstr "Función que maneja una selección cambiada"
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:237
-#, no-wrap
-msgid ""
-"\n"
-" _onSelectionChanged: function () {\n"
-"\n"
-" // Grab a treeiter pointing to the current selection\n"
-" let [ isSelected, model, iter ] = this.selection.get_selected();\n"
-"\n"
-" // Set the label to read off the values stored in the current selection\n"
-" this._label.set_label (\"\\n\" +\n"
-" this._listStore.get_value (iter, 0) + \" \" +\n"
-" this._listStore.get_value (iter, 1) + \" \" +\n"
-" this._listStore.get_value (iter, 2) + \"\\n\" +\n"
-" this._listStore.get_value (iter, 3));\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-msgstr ""
-"\n"
-" _onSelectionChanged: function () {\n"
-"\n"
-" // Grab a treeiter pointing to the current selection\n"
-" let [ isSelected, model, iter ] = this.selection.get_selected();\n"
-"\n"
-" // Set the label to read off the values stored in the current selection\n"
-" this._label.set_label (\"\\n\" +\n"
-" this._listStore.get_value (iter, 0) + \" \" +\n"
-" this._listStore.get_value (iter, 1) + \" \" +\n"
-" this._listStore.get_value (iter, 2) + \"\\n\" +\n"
-" this._listStore.get_value (iter, 3));\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:254
-msgid ""
-"The line of code with the let statement is a little convoluted, but it's "
-"nonetheless the best way to get a TreeIter pointing to the same row as our "
-"TreeSelection. It has to create a couple of other object references, but "
-"<file>iter</file> is the only one we need."
-msgstr ""
-"La línea de código con la declaración let es un poco compleja, pero sin "
-"embargo es la mejor manera de hacer que un TreeIter apunte a la misma fila "
-"que la TreeSelection. Tiene que crear un par de referencias a otros objetos, "
-"pero <file>iter</file> es la única que se necesita."
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:255
-msgid ""
-"After we've done that, we call the Label's <file>set_label</file> function, "
-"and use the ListStore's <file>get_value</file> function a handful of times "
-"to fill in the data we want to put in it. Its parameters are a TreeIter "
-"pointing to the row we want to get data from, and the column."
-msgstr ""
-"Después de haber hecho eso, se llama a la función <file>set_label</file> de "
-"la etiqueta, y se usa la función <file>get_value</file> del ListStore "
-"algunas veces para llenar los datos que queremos poner en ella. Sus "
-"parámetros son un TreeIter apuntando a la fila de la que queremos obtener "
-"los datos, y la columna."
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:256
-msgid ""
-"Here, we want to get data from all four columns, including the \"hidden\" "
-"one that's not part of the TreeView. This way, we can use our Label to show "
-"strings that are too large to fit in the TreeView, and that we don't need to "
-"see at a glance."
-msgstr ""
-"Aquí, se quieren obtener datos de todas las cuatro columnas, incluyendo la "
-"«escondida» que no es parte del TreeView. De esta manera, se puede usar la "
-"etiqueta para mostrar cadenas que son demasiado largas para entrar en el "
-"TreeView, y que no necesitamos ver de un vistazo."
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:258
-#, no-wrap
-msgid ""
-"\n"
-"// Run the application\n"
-"let app = new TreeViewExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"// Run the application\n"
-"let app = new TreeViewExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.js.page:263
-msgid ""
-"Finally, we create a new instance of the finished TreeViewExample class, and "
-"set the application running."
-msgstr ""
-"Finalmente, se crea una instancia nueva de la clase TreeViewExample "
-"terminada, y se ejecuta la aplicación."
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.js.page:268
-#, no-wrap
-msgid ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const GObject = imports.gi.GObject;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"const Pango = imports.gi.Pango;\n"
-"\n"
-"const TreeViewExample = new Lang.Class({\n"
-" Name: 'TreeView Example with Simple ListStore',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jstreeviewsimpleliststore'\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 250,\n"
-" default_width: 100,\n"
-" border_width: 20,\n"
-" title: \"My Phone Book\"});\n"
-"\n"
-" // Create the underlying liststore for the phonebook\n"
-" this._listStore = new Gtk.ListStore ();\n"
-" this._listStore.set_column_types ([\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING]);\n"
-"\n"
-" // Data to go in the phonebook\n"
-" let phonebook =\n"
-" [{ name: \"Jurg\", surname: \"Billeter\", phone: \"555-0123\",\n"
-" description: \"A friendly person.\"},\n"
-" { name: \"Johannes\", surname: \"Schmid\", phone: \"555-1234\",\n"
-" description: \"Easy phone number to remember.\"},\n"
-" { name: \"Julita\", surname: \"Inca\", phone: \"555-2345\",\n"
-" description: \"Another friendly person.\"},\n"
-" { name: \"Javier\", surname: \"Jardon\", phone: \"555-3456\",\n"
-" description: \"Bring fish for his penguins.\"},\n"
-" { name: \"Jason\", surname: \"Clinton\", phone: \"555-4567\",\n"
-" description: \"His cake's not a lie.\"},\n"
-" { name: \"Random J.\", surname: \"Hacker\", phone: \"555-5678\",\n"
-" description: \"Very random!\"}];\n"
-"\n"
-" // Put the data in the phonebook\n"
-" for (let i = 0; i < phonebook.length; i++ ) {\n"
-" let contact = phonebook [i];\n"
-" this._listStore.set (this._listStore.append(), [0, 1, 2, 3],\n"
-" [contact.name, contact.surname, contact.phone, contact.description]);\n"
-" }\n"
-"\n"
-" // Create the treeview\n"
-" this._treeView = new Gtk.TreeView ({\n"
-" expand: true,\n"
-" model: this._listStore });\n"
-"\n"
-" // Create the columns for the address book\n"
-" let firstName = new Gtk.TreeViewColumn ({ title: \"First Name\" });\n"
-" let lastName = new Gtk.TreeViewColumn ({ title: \"Last Name\" });\n"
-" let phone = new Gtk.TreeViewColumn ({ title: \"Phone Number\" });\n"
-"\n"
-" // Create a cell renderer for when bold text is needed\n"
-" let bold = new Gtk.CellRendererText ({\n"
-" weight: Pango.Weight.BOLD });\n"
-"\n"
-" // Create a cell renderer for normal text\n"
-" let normal = new Gtk.CellRendererText ();\n"
-"\n"
-" // Pack the cell renderers into the columns\n"
-" firstName.pack_start (bold, true);\n"
-" lastName.pack_start (normal, true);\n"
-" phone.pack_start (normal, true);\n"
-"\n"
-" // Set each column to pull text from the TreeView's model\n"
-" firstName.add_attribute (bold, \"text\", 0);\n"
-" lastName.add_attribute (normal, \"text\", 1);\n"
-" phone.add_attribute (normal, \"text\", 2);\n"
-"\n"
-" // Insert the columns into the treeview\n"
-" this._treeView.insert_column (firstName, 0);\n"
-" this._treeView.insert_column (lastName, 1);\n"
-" this._treeView.insert_column (phone, 2);\n"
-"\n"
-" // Create the label that shows details for the name you select\n"
-" this._label = new Gtk.Label ({ label: \"\" });\n"
-"\n"
-" // Get which item is selected\n"
-" this.selection = this._treeView.get_selection();\n"
-"\n"
-" // When something new is selected, call _on_changed\n"
-" this.selection.connect ('changed', Lang.bind (this, this._onSelectionChanged));\n"
-"\n"
-" // Create a grid to organize everything in\n"
-" this._grid = new Gtk.Grid;\n"
-"\n"
-" // Attach the treeview and label to the grid\n"
-" this._grid.attach (this._treeView, 0, 0, 1, 1);\n"
-" this._grid.attach (this._label, 0, 1, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _onSelectionChanged: function () {\n"
-"\n"
-" // Grab a treeiter pointing to the current selection\n"
-" let [ isSelected, model, iter ] = this.selection.get_selected();\n"
-"\n"
-" // Set the label to read off the values stored in the current selection\n"
-" this._label.set_label (\"\\n\" +\n"
-" this._listStore.get_value (iter, 0) + \" \" +\n"
-" this._listStore.get_value (iter, 1) + \" \" +\n"
-" this._listStore.get_value (iter, 2) + \"\\n\" +\n"
-" this._listStore.get_value (iter, 3));\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new TreeViewExample ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"#!/usr/bin/gjs\n"
-"\n"
-"const GObject = imports.gi.GObject;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"const Pango = imports.gi.Pango;\n"
-"\n"
-"const TreeViewExample = new Lang.Class({\n"
-" Name: 'TreeView Example with Simple ListStore',\n"
-"\n"
-" // Create the application itself\n"
-" _init: function() {\n"
-" this.application = new Gtk.Application({\n"
-" application_id: 'org.example.jstreeviewsimpleliststore'\n"
-" });\n"
-"\n"
-" // Connect 'activate' and 'startup' signals to the callback functions\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
-" },\n"
-"\n"
-" // Callback function for 'activate' signal presents window when active\n"
-" _onActivate: function() {\n"
-" this._window.present();\n"
-" },\n"
-"\n"
-" // Callback function for 'startup' signal builds the UI\n"
-" _onStartup: function() {\n"
-" this._buildUI ();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" // Build the application's UI\n"
-" _buildUI: function() {\n"
-"\n"
-" // Create the application window\n"
-" this._window = new Gtk.ApplicationWindow({\n"
-" application: this.application,\n"
-" window_position: Gtk.WindowPosition.CENTER,\n"
-" default_height: 250,\n"
-" default_width: 100,\n"
-" border_width: 20,\n"
-" title: \"My Phone Book\"});\n"
-"\n"
-" // Create the underlying liststore for the phonebook\n"
-" this._listStore = new Gtk.ListStore ();\n"
-" this._listStore.set_column_types ([\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING,\n"
-" GObject.TYPE_STRING]);\n"
-"\n"
-" // Data to go in the phonebook\n"
-" let phonebook =\n"
-" [{ name: \"Jurg\", surname: \"Billeter\", phone: \"555-0123\",\n"
-" description: \"A friendly person.\"},\n"
-" { name: \"Johannes\", surname: \"Schmid\", phone: \"555-1234\",\n"
-" description: \"Easy phone number to remember.\"},\n"
-" { name: \"Julita\", surname: \"Inca\", phone: \"555-2345\",\n"
-" description: \"Another friendly person.\"},\n"
-" { name: \"Javier\", surname: \"Jardon\", phone: \"555-3456\",\n"
-" description: \"Bring fish for his penguins.\"},\n"
-" { name: \"Jason\", surname: \"Clinton\", phone: \"555-4567\",\n"
-" description: \"His cake's not a lie.\"},\n"
-" { name: \"Random J.\", surname: \"Hacker\", phone: \"555-5678\",\n"
-" description: \"Very random!\"}];\n"
-"\n"
-" // Put the data in the phonebook\n"
-" for (let i = 0; i < phonebook.length; i++ ) {\n"
-" let contact = phonebook [i];\n"
-" this._listStore.set (this._listStore.append(), [0, 1, 2, 3],\n"
-" [contact.name, contact.surname, contact.phone, contact.description]);\n"
-" }\n"
-"\n"
-" // Create the treeview\n"
-" this._treeView = new Gtk.TreeView ({\n"
-" expand: true,\n"
-" model: this._listStore });\n"
-"\n"
-" // Create the columns for the address book\n"
-" let firstName = new Gtk.TreeViewColumn ({ title: \"First Name\" });\n"
-" let lastName = new Gtk.TreeViewColumn ({ title: \"Last Name\" });\n"
-" let phone = new Gtk.TreeViewColumn ({ title: \"Phone Number\" });\n"
-"\n"
-" // Create a cell renderer for when bold text is needed\n"
-" let bold = new Gtk.CellRendererText ({\n"
-" weight: Pango.Weight.BOLD });\n"
-"\n"
-" // Create a cell renderer for normal text\n"
-" let normal = new Gtk.CellRendererText ();\n"
-"\n"
-" // Pack the cell renderers into the columns\n"
-" firstName.pack_start (bold, true);\n"
-" lastName.pack_start (normal, true);\n"
-" phone.pack_start (normal, true);\n"
-"\n"
-" // Set each column to pull text from the TreeView's model\n"
-" firstName.add_attribute (bold, \"text\", 0);\n"
-" lastName.add_attribute (normal, \"text\", 1);\n"
-" phone.add_attribute (normal, \"text\", 2);\n"
-"\n"
-" // Insert the columns into the treeview\n"
-" this._treeView.insert_column (firstName, 0);\n"
-" this._treeView.insert_column (lastName, 1);\n"
-" this._treeView.insert_column (phone, 2);\n"
-"\n"
-" // Create the label that shows details for the name you select\n"
-" this._label = new Gtk.Label ({ label: \"\" });\n"
-"\n"
-" // Get which item is selected\n"
-" this.selection = this._treeView.get_selection();\n"
-"\n"
-" // When something new is selected, call _on_changed\n"
-" this.selection.connect ('changed', Lang.bind (this, this._onSelectionChanged));\n"
-"\n"
-" // Create a grid to organize everything in\n"
-" this._grid = new Gtk.Grid;\n"
-"\n"
-" // Attach the treeview and label to the grid\n"
-" this._grid.attach (this._treeView, 0, 0, 1, 1);\n"
-" this._grid.attach (this._label, 0, 1, 1, 1);\n"
-"\n"
-" // Add the grid to the window\n"
-" this._window.add (this._grid);\n"
-"\n"
-" // Show the window and all child widgets\n"
-" this._window.show_all();\n"
-" },\n"
-"\n"
-"\n"
-"\n"
-" _onSelectionChanged: function () {\n"
-"\n"
-" // Grab a treeiter pointing to the current selection\n"
-" let [ isSelected, model, iter ] = this.selection.get_selected();\n"
-"\n"
-" // Set the label to read off the values stored in the current selection\n"
-" this._label.set_label (\"\\n\" +\n"
-" this._listStore.get_value (iter, 0) + \" \" +\n"
-" this._listStore.get_value (iter, 1) + \" \" +\n"
-" this._listStore.get_value (iter, 2) + \"\\n\" +\n"
-" this._listStore.get_value (iter, 3));\n"
-"\n"
-" }\n"
-"\n"
-"});\n"
-"\n"
-"// Run the application\n"
-"let app = new TreeViewExample ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: item/p
-#: C/treeview_simple_liststore.js.page:282
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TreeSelection."
-"html\">Gtk.TreeSelection</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TreeSelection."
-"html\">Gtk.TreeSelection</link>"
-
-#. (itstool) path: item/p
-#: C/treeview_simple_liststore.js.page:283
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TreeView.html"
-"\">Gtk.TreeView</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TreeView.html"
-"\">Gtk.TreeView</link>"
-
-#. (itstool) path: item/p
-#: C/treeview_simple_liststore.js.page:284
-msgid ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
-"TreeViewColumn.html\">Gtk.TreeViewColumn</link>"
-msgstr ""
-"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
-"TreeViewColumn.html\">Gtk.TreeViewColumn</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/treeview_simple_liststore.py.page:24
-#: C/treeview_simple_liststore.vala.page:24
-msgctxt "_"
-msgid ""
-"external ref='media/treeview_simple_liststore.png' "
-"md5='2dc501a2b95b094da985d37b66aee90c'"
-msgstr ""
-"external ref='media/treeview_simple_liststore.png' "
-"md5='2dc501a2b95b094da985d37b66aee90c'"
-
-#. (itstool) path: info/title
-#: C/treeview_simple_liststore.py.page:8
-msgctxt "text"
-msgid "Simple TreeView with ListStore (Python)"
-msgstr "TreeView sencillo con ListStore (Python)"
-
-#. (itstool) path: info/desc
-#: C/treeview_simple_liststore.py.page:20
-msgid "A TreeView displaying a ListStore (simpler example)"
-msgstr "Un TreeView mostrando un ListStore (ejemplo más simple)"
-
-#. (itstool) path: page/title
-#: C/treeview_simple_liststore.py.page:23
-msgid "Simple TreeView with ListStore"
-msgstr "TreeView sencillo con ListStore"
-
-#. (itstool) path: section/code
-#: C/treeview_simple_liststore.py.page:32
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Pango\n"
-"import sys\n"
-"\n"
-"columns = [\"First Name\",\n"
-" \"Last Name\",\n"
-" \"Phone Number\"]\n"
-"\n"
-"phonebook = [[\"Jurg\", \"Billeter\", \"555-0123\"],\n"
-" [\"Johannes\", \"Schmid\", \"555-1234\"],\n"
-" [\"Julita\", \"Inca\", \"555-2345\"],\n"
-" [\"Javier\", \"Jardon\", \"555-3456\"],\n"
-" [\"Jason\", \"Clinton\", \"555-4567\"],\n"
-" [\"Random J.\", \"Hacker\", \"555-5678\"]]\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"My Phone Book\", application=app)\n"
-" self.set_default_size(250, 100)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # the data in the model (three strings for each row, one for each\n"
-" # column)\n"
-" listmodel = Gtk.ListStore(str, str, str)\n"
-" # append the values in the model\n"
-" for i in range(len(phonebook)):\n"
-" listmodel.append(phonebook[i])\n"
-"\n"
-" # a treeview to see the data stored in the model\n"
-" view = Gtk.TreeView(model=listmodel)\n"
-" # for each column\n"
-" for i in range(len(columns)):\n"
-" # cellrenderer to render the text\n"
-" cell = Gtk.CellRendererText()\n"
-" # the text in the first column should be in boldface\n"
-" if i == 0:\n"
-" cell.props.weight_set = True\n"
-" cell.props.weight = Pango.Weight.BOLD\n"
-" # the column is created\n"
-" col = Gtk.TreeViewColumn(columns[i], cell, text=i)\n"
-" # and it is appended to the treeview\n"
-" view.append_column(col)\n"
-"\n"
-" # when a row is selected, it emits a signal\n"
-" view.get_selection().connect(\"changed\", self.on_changed)\n"
-"\n"
-" # the label we use to show the selection\n"
-" self.label = Gtk.Label()\n"
-" self.label.set_text(\"\")\n"
-"\n"
-" # a grid to attach the widgets\n"
-" grid = Gtk.Grid()\n"
-" grid.attach(view, 0, 0, 1, 1)\n"
-" grid.attach(self.label, 0, 1, 1, 1)\n"
-"\n"
-" # attach the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" def on_changed(self, selection):\n"
-" # get the model and the iterator that points at the data in the model\n"
-" (model, iter) = selection.get_selected()\n"
-" # set the label to a new value depending on the selection\n"
-" self.label.set_text(\"\\n %s %s %s\" %\n"
-" (model[iter][0], model[iter][1], model[iter][2]))\n"
-" return True\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Pango\n"
-"import sys\n"
-"\n"
-"columns = [\"First Name\",\n"
-" \"Last Name\",\n"
-" \"Phone Number\"]\n"
-"\n"
-"phonebook = [[\"Jurg\", \"Billeter\", \"555-0123\"],\n"
-" [\"Johannes\", \"Schmid\", \"555-1234\"],\n"
-" [\"Julita\", \"Inca\", \"555-2345\"],\n"
-" [\"Javier\", \"Jardon\", \"555-3456\"],\n"
-" [\"Jason\", \"Clinton\", \"555-4567\"],\n"
-" [\"Random J.\", \"Hacker\", \"555-5678\"]]\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"My Phone Book\", application=app)\n"
-" self.set_default_size(250, 100)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # the data in the model (three strings for each row, one for each\n"
-" # column)\n"
-" listmodel = Gtk.ListStore(str, str, str)\n"
-" # append the values in the model\n"
-" for i in range(len(phonebook)):\n"
-" listmodel.append(phonebook[i])\n"
-"\n"
-" # a treeview to see the data stored in the model\n"
-" view = Gtk.TreeView(model=listmodel)\n"
-" # for each column\n"
-" for i in range(len(columns)):\n"
-" # cellrenderer to render the text\n"
-" cell = Gtk.CellRendererText()\n"
-" # the text in the first column should be in boldface\n"
-" if i == 0:\n"
-" cell.props.weight_set = True\n"
-" cell.props.weight = Pango.Weight.BOLD\n"
-" # the column is created\n"
-" col = Gtk.TreeViewColumn(columns[i], cell, text=i)\n"
-" # and it is appended to the treeview\n"
-" view.append_column(col)\n"
-"\n"
-" # when a row is selected, it emits a signal\n"
-" view.get_selection().connect(\"changed\", self.on_changed)\n"
-"\n"
-" # the label we use to show the selection\n"
-" self.label = Gtk.Label()\n"
-" self.label.set_text(\"\")\n"
-"\n"
-" # a grid to attach the widgets\n"
-" grid = Gtk.Grid()\n"
-" grid.attach(view, 0, 0, 1, 1)\n"
-" grid.attach(self.label, 0, 1, 1, 1)\n"
-"\n"
-" # attach the grid to the window\n"
-" self.add(grid)\n"
-"\n"
-" def on_changed(self, selection):\n"
-" # get the model and the iterator that points at the data in the model\n"
-" (model, iter) = selection.get_selected()\n"
-" # set the label to a new value depending on the selection\n"
-" self.label.set_text(\"\\n %s %s %s\" %\n"
-" (model[iter][0], model[iter][1], model[iter][2]))\n"
-" return True\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.py.page:37
-msgid ""
-"The TreeView widget is designed around a <em>Model/View/Controller</em> "
-"design: the <em>Model</em> stores the data; the <em>View</em> gets change "
-"notifications and displays the content of the model; the <em>Controller</"
-"em>, finally, changes the state of the model and notifies the view of these "
-"changes. For more information, and for a list of useful methods for "
-"TreeModel, see <link xref=\"model-view-controller.py\"/>."
-msgstr ""
-"El widget «TreeView» está construido alrededor de un diseño <em>Modelo/Vista/"
-"Controlador</em>: el <em>Modelo</em> almacena los datos; la <em>Vista</em> "
-"obtiene las notificaciones de cambio y muestra el contenido del modelo; El "
-"<em>Controlador</em>; finalmente, cambia el estado del modelo y le notifica "
-"a la vista de estos cambios. Para más información, y para una lista de "
-"métodos útiles del «TreeModel», consulte la <link xref=\"model-view-"
-"controller.py\"/>."
-
-#. (itstool) path: section/p
-#: C/treeview_simple_liststore.py.page:38
-msgid ""
-"In line 44 the <code>\"changed\"</code> signal is connected to the callback "
-"function <code>on_changed()</code> using <code><var>widget</var>.connect"
-"(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="
-"\"signals-callbacks.py\"/> for a more detailed explanation."
-msgstr ""
-"En la línea 44, la señal <code>\"changed\"</code> se conecta a la función de "
-"retorno de llamada <code>on_changed()</code> usando <code><var>widget</var>."
-"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
-"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
-"detallada."
-
-#. (itstool) path: item/p
-#: C/treeview_simple_liststore.py.page:51
-msgid ""
-"<link href=\"http://developer.gnome.org/pango/stable/pango-Fonts.html"
-"\">Fonts</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/pango/stable/pango-Fonts.html"
-"\">Tipografías</link>"
-
-#. (itstool) path: info/title
-#: C/treeview_simple_liststore.vala.page:8
-msgctxt "text"
-msgid "Simple Treeview with ListStore (Vala)"
-msgstr "Treeview sencillo con ListStore (Vala)"
-
-#. (itstool) path: info/desc
-#: C/treeview_simple_liststore.vala.page:20
-msgid "A widget can display any TreeModel implementation (lists and trees)"
-msgstr ""
-"Un widget puede mostrar cualquier implementación de TreeModel (listas y "
-"árboles)"
-
-#. (itstool) path: page/title
-#: C/treeview_simple_liststore.vala.page:23
-msgid "Simple Treeview with ListStore"
-msgstr "Treeview sencillo con ListStore"
-
-#. (itstool) path: page/p
-#: C/treeview_simple_liststore.vala.page:25
-msgid ""
-"This TreeView displays a simple ListStore with the Selection \"changed\" "
-"signal connected."
-msgstr ""
-"Este TreeView muestra un ListStore sencillo con la señal de selección "
-"«changed» conectada."
-
-#. (itstool) path: page/code
-#: C/treeview_simple_liststore.vala.page:27
-#, no-wrap
-msgid ""
-"public class PhoneBookEntry {\n"
-"\tpublic string firstname;\n"
-"\tpublic string lastname;\n"
-"\tpublic string phone;\n"
-"\n"
-"\tpublic PhoneBookEntry (string f, string l, string p) {\n"
-"\t\tthis.firstname = f;\n"
-"\t\tthis.lastname = l;\n"
-"\t\tthis.phone = p;\n"
-"\t}\n"
-"}\n"
-"\n"
-"class TreeViewSimpleListStore : Gtk.ApplicationWindow {\n"
-"\n"
-"\tGtk.Label label;\n"
-"\n"
-"\tPhoneBookEntry[] phonebook = {\n"
-"\t\tnew PhoneBookEntry (\"Jurg\", \"Billeter\", \"555-0123\"),\n"
-"\t\tnew PhoneBookEntry (\"Johannes\", \"Schmid\", \"555-1234\"),\n"
-"\t\tnew PhoneBookEntry (\"Julita\", \"Inca\", \"555-2345\"),\n"
-"\t\tnew PhoneBookEntry (\"Javier\", \"Jardon\", \"555-3456\"),\n"
-"\t\tnew PhoneBookEntry (\"Jason\", \"Clinton\", \"555-4567\"),\n"
-"\t\tnew PhoneBookEntry (\"Random J.\", \"Hacker\", \"555-5678\")\n"
-"\t};\n"
-"\n"
-"\tenum Column {\n"
-"\t\tFIRSTNAME,\n"
-"\t\tLASTNAME,\n"
-"\t\tPHONE\n"
-"\t}\n"
-"\n"
-"\tinternal TreeViewSimpleListStore (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"My Phone Book\");\n"
-"\n"
-"\t\tthis.set_default_size (250, 100);\n"
-"\t\tthis.border_width = 10;\n"
-"\n"
-"\t\tvar view = new Gtk.TreeView ();\n"
-"\t\tthis.setup_treeview (view);\n"
-"\t\tview.expand = true;\n"
-"\n"
-"\t\tlabel = new Gtk.Label (\"\");\n"
-"\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\n"
-"\t\tgrid.attach (view, 0, 0, 1, 1);\n"
-"\t\tgrid.attach (label, 0, 1, 1, 1);\n"
-"\t\tthis.add (grid);\n"
-"\n"
-"\t\tvar selection = view.get_selection ();\n"
-"\t\tselection.changed.connect (this.on_changed);\n"
-"\t}\n"
-"\n"
-"\tvoid setup_treeview (Gtk.TreeView view) {\n"
-"\t\tvar listmodel = new Gtk.ListStore (3, typeof (string),\n"
-" typeof (string),\n"
-" typeof (string));\n"
-"\t\tview.set_model (listmodel);\n"
-"\n"
-"\t\tvar cell = new Gtk.CellRendererText ();\n"
-"\n"
-"\t\t/* 'weight' refers to font boldness.\n"
-"\t\t * 400 is normal.\n"
-"\t\t * 700 is bold.\n"
-"\t\t */\n"
-"\t\tcell.set (\"weight_set\", true);\n"
-"\t\tcell.set (\"weight\", 700);\n"
-"\n"
-"\t\t/*columns*/\n"
-"\t\tview.insert_column_with_attributes (-1, \"First Name\",\n"
-" cell, \"text\",\n"
-" Column.FIRSTNAME);\n"
-"\n"
-"\t\tview.insert_column_with_attributes (-1, \"Last Name\",\n"
-" new Gtk.CellRendererText (),\n"
-" \"text\", Column.LASTNAME);\n"
-"\n"
-"\t\tview.insert_column_with_attributes (-1, \"Phone Number\",\n"
-" new Gtk.CellRendererText (),\n"
-" \"text\", Column.PHONE);\n"
-"\n"
-"\t\t/* Insert the phonebook into the ListStore */\n"
-"\t\tGtk.TreeIter iter;\n"
-"\t\tfor (int i = 0; i < phonebook.length; i++) {\n"
-"\t\t\tlistmodel.append (out iter);\n"
-"\t\t\tlistmodel.set (iter, Column.FIRSTNAME,\n"
-" phonebook[i].firstname,\n"
-" Column.LASTNAME, phonebook[i].lastname,\n"
-" Column.PHONE, phonebook[i].phone);\n"
-"\t\t}\n"
-"\t}\n"
-"\n"
-"\tvoid on_changed (Gtk.TreeSelection selection) {\n"
-"\t\tGtk.TreeModel model;\n"
-"\t\tGtk.TreeIter iter;\n"
-"\t\tstring name;\n"
-"\t\tstring lastname;\n"
-"\t\tstring phone;\n"
-"\n"
-"\t\tif (selection.get_selected (out model, out iter)) {\n"
-"\t\t\tmodel.get (iter,\n"
-" Column.FIRSTNAME, out name,\n"
-" Column.LASTNAME, out lastname,\n"
-" Column.PHONE, out phone);\n"
-"\n"
-"\t\t\tlabel.set_text (\"\\n\" + name + \" \" + lastname + \" \" + phone);\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t/* Create new Window and show all the things. */\n"
-"\t\tnew TreeViewSimpleListStore (this).show_all ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"example.liststore.simple.treeview\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-msgstr ""
-"public class PhoneBookEntry {\n"
-"\tpublic string firstname;\n"
-"\tpublic string lastname;\n"
-"\tpublic string phone;\n"
-"\n"
-"\tpublic PhoneBookEntry (string f, string l, string p) {\n"
-"\t\tthis.firstname = f;\n"
-"\t\tthis.lastname = l;\n"
-"\t\tthis.phone = p;\n"
-"\t}\n"
-"}\n"
-"\n"
-"class TreeViewSimpleListStore : Gtk.ApplicationWindow {\n"
-"\n"
-"\tGtk.Label label;\n"
-"\n"
-"\tPhoneBookEntry[] phonebook = {\n"
-"\t\tnew PhoneBookEntry (\"Jurg\", \"Billeter\", \"555-0123\"),\n"
-"\t\tnew PhoneBookEntry (\"Johannes\", \"Schmid\", \"555-1234\"),\n"
-"\t\tnew PhoneBookEntry (\"Julita\", \"Inca\", \"555-2345\"),\n"
-"\t\tnew PhoneBookEntry (\"Javier\", \"Jardon\", \"555-3456\"),\n"
-"\t\tnew PhoneBookEntry (\"Jason\", \"Clinton\", \"555-4567\"),\n"
-"\t\tnew PhoneBookEntry (\"Random J.\", \"Hacker\", \"555-5678\")\n"
-"\t};\n"
-"\n"
-"\tenum Column {\n"
-"\t\tFIRSTNAME,\n"
-"\t\tLASTNAME,\n"
-"\t\tPHONE\n"
-"\t}\n"
-"\n"
-"\tinternal TreeViewSimpleListStore (MyApplication app) {\n"
-"\t\tObject (application: app, title: \"My Phone Book\");\n"
-"\n"
-"\t\tthis.set_default_size (250, 100);\n"
-"\t\tthis.border_width = 10;\n"
-"\n"
-"\t\tvar view = new Gtk.TreeView ();\n"
-"\t\tthis.setup_treeview (view);\n"
-"\t\tview.expand = true;\n"
-"\n"
-"\t\tlabel = new Gtk.Label (\"\");\n"
-"\n"
-"\t\tvar grid = new Gtk.Grid ();\n"
-"\n"
-"\t\tgrid.attach (view, 0, 0, 1, 1);\n"
-"\t\tgrid.attach (label, 0, 1, 1, 1);\n"
-"\t\tthis.add (grid);\n"
-"\n"
-"\t\tvar selection = view.get_selection ();\n"
-"\t\tselection.changed.connect (this.on_changed);\n"
-"\t}\n"
-"\n"
-"\tvoid setup_treeview (Gtk.TreeView view) {\n"
-"\t\tvar listmodel = new Gtk.ListStore (3, typeof (string),\n"
-" typeof (string),\n"
-" typeof (string));\n"
-"\t\tview.set_model (listmodel);\n"
-"\n"
-"\t\tvar cell = new Gtk.CellRendererText ();\n"
-"\n"
-"\t\t/* 'weight' refers to font boldness.\n"
-"\t\t * 400 is normal.\n"
-"\t\t * 700 is bold.\n"
-"\t\t */\n"
-"\t\tcell.set (\"weight_set\", true);\n"
-"\t\tcell.set (\"weight\", 700);\n"
-"\n"
-"\t\t/*columns*/\n"
-"\t\tview.insert_column_with_attributes (-1, \"First Name\",\n"
-" cell, \"text\",\n"
-" Column.FIRSTNAME);\n"
-"\n"
-"\t\tview.insert_column_with_attributes (-1, \"Last Name\",\n"
-" new Gtk.CellRendererText (),\n"
-" \"text\", Column.LASTNAME);\n"
-"\n"
-"\t\tview.insert_column_with_attributes (-1, \"Phone Number\",\n"
-" new Gtk.CellRendererText (),\n"
-" \"text\", Column.PHONE);\n"
-"\n"
-"\t\t/* Insert the phonebook into the ListStore */\n"
-"\t\tGtk.TreeIter iter;\n"
-"\t\tfor (int i = 0; i < phonebook.length; i++) {\n"
-"\t\t\tlistmodel.append (out iter);\n"
-"\t\t\tlistmodel.set (iter, Column.FIRSTNAME,\n"
-" phonebook[i].firstname,\n"
-" Column.LASTNAME, phonebook[i].lastname,\n"
-" Column.PHONE, phonebook[i].phone);\n"
-"\t\t}\n"
-"\t}\n"
-"\n"
-"\tvoid on_changed (Gtk.TreeSelection selection) {\n"
-"\t\tGtk.TreeModel model;\n"
-"\t\tGtk.TreeIter iter;\n"
-"\t\tstring name;\n"
-"\t\tstring lastname;\n"
-"\t\tstring phone;\n"
-"\n"
-"\t\tif (selection.get_selected (out model, out iter)) {\n"
-"\t\t\tmodel.get (iter,\n"
-" Column.FIRSTNAME, out name,\n"
-" Column.LASTNAME, out lastname,\n"
-" Column.PHONE, out phone);\n"
-"\n"
-"\t\t\tlabel.set_text (\"\\n\" + name + \" \" + lastname + \" \" + phone);\n"
-"\t\t}\n"
-"\t}\n"
-"}\n"
-"\n"
-"class MyApplication : Gtk.Application {\n"
-"\tprotected override void activate () {\n"
-"\n"
-"\t\t/* Create new Window and show all the things. */\n"
-"\t\tnew TreeViewSimpleListStore (this).show_all ();\n"
-"\t}\n"
-"\n"
-"\tinternal MyApplication () {\n"
-"\t\tObject (application_id: \"example.liststore.simple.treeview\");\n"
-"\t}\n"
-"}\n"
-"\n"
-"int main (string[] args) {\n"
-"\treturn new MyApplication ().run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/treeview_simple_liststore.vala.page:32
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TreeView.html\">Gtk."
-"TreeView</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TreeView.html\">Gtk."
-"TreeView</link>"
-
-#. (itstool) path: item/p
-#: C/treeview_simple_liststore.vala.page:34
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TreeSelection.html\">Gtk."
-"TreeSelection</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TreeSelection.html\">Gtk."
-"TreeSelection</link>"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/treeview_treestore.py.page:24
-msgctxt "_"
-msgid ""
-"external ref='media/treeview_treestore.png' "
-"md5='5ca87bc4acd55c527b3fb5fd46779d85'"
-msgstr ""
-"external ref='media/treeview_treestore.png' "
-"md5='5ca87bc4acd55c527b3fb5fd46779d85'"
-
-#. (itstool) path: info/desc
-#: C/treeview_treestore.py.page:20
-msgid "A TreeView displaying a TreeStore (simpler example)"
-msgstr "Un TreeView mostrando un TreeStore (ejemplo más simple)"
-
-#. (itstool) path: page/title
-#: C/treeview_treestore.py.page:23
-msgid "Simpler TreeView with TreeStore"
-msgstr "TreeView más sencillo con ListStore"
-
-#. (itstool) path: page/p
-#: C/treeview_treestore.py.page:25
-msgid "This TreeView displays a TreeStore."
-msgstr "Este TreeView muestra un TreeStore"
-
-#. (itstool) path: section/code
-#: C/treeview_treestore.py.page:32
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Pango\n"
-"import sys\n"
-"\n"
-"books = [[\"Tolstoy, Leo\", \"War and Peace\", \"Anna Karenina\"],\n"
-" [\"Shakespeare, William\", \"Hamlet\", \"Macbeth\", \"Othello\"],\n"
-" [\"Tolkien, J.R.R.\", \"The Lord of the Rings\"]]\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Library\", application=app)\n"
-" self.set_default_size(250, 100)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # the data are stored in the model\n"
-" # create a treestore with one column\n"
-" store = Gtk.TreeStore(str)\n"
-" for i in range(len(books)):\n"
-" # the iter piter is returned when appending the author\n"
-" piter = store.append(None, [books[i][0]])\n"
-" # append the books as children of the author\n"
-" j = 1\n"
-" while j < len(books[i]):\n"
-" store.append(piter, [books[i][j]])\n"
-" j += 1\n"
-"\n"
-" # the treeview shows the model\n"
-" # create a treeview on the model store\n"
-" view = Gtk.TreeView()\n"
-" view.set_model(store)\n"
-"\n"
-" # the cellrenderer for the column - text\n"
-" renderer_books = Gtk.CellRendererText()\n"
-" # the column is created\n"
-" column_books = Gtk.TreeViewColumn(\n"
-" \"Books by Author\", renderer_books, text=0)\n"
-" # and it is appended to the treeview\n"
-" view.append_column(column_books)\n"
-"\n"
-" # the books are sortable by author\n"
-" column_books.set_sort_column_id(0)\n"
-"\n"
-" # add the treeview to the window\n"
-" self.add(view)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import Pango\n"
-"import sys\n"
-"\n"
-"books = [[\"Tolstoy, Leo\", \"War and Peace\", \"Anna Karenina\"],\n"
-" [\"Shakespeare, William\", \"Hamlet\", \"Macbeth\", \"Othello\"],\n"
-" [\"Tolkien, J.R.R.\", \"The Lord of the Rings\"]]\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Library\", application=app)\n"
-" self.set_default_size(250, 100)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # the data are stored in the model\n"
-" # create a treestore with one column\n"
-" store = Gtk.TreeStore(str)\n"
-" for i in range(len(books)):\n"
-" # the iter piter is returned when appending the author\n"
-" piter = store.append(None, [books[i][0]])\n"
-" # append the books as children of the author\n"
-" j = 1\n"
-" while j < len(books[i]):\n"
-" store.append(piter, [books[i][j]])\n"
-" j += 1\n"
-"\n"
-" # the treeview shows the model\n"
-" # create a treeview on the model store\n"
-" view = Gtk.TreeView()\n"
-" view.set_model(store)\n"
-"\n"
-" # the cellrenderer for the column - text\n"
-" renderer_books = Gtk.CellRendererText()\n"
-" # the column is created\n"
-" column_books = Gtk.TreeViewColumn(\n"
-" \"Books by Author\", renderer_books, text=0)\n"
-" # and it is appended to the treeview\n"
-" view.append_column(column_books)\n"
-"\n"
-" # the books are sortable by author\n"
-" column_books.set_sort_column_id(0)\n"
-"\n"
-" # add the treeview to the window\n"
-" self.add(view)\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: info/title
-#: C/tutorial.py.page:9
-msgctxt "text"
-msgid "Tutorial for beginners (Python)"
-msgstr "Tutorial para principiantes (Python)"
-
-#. (itstool) path: info/desc
-#: C/tutorial.py.page:13
-msgid ""
-"A tutorial for beginners who want to learn how to program GUIs using GTK+ in "
-"Python."
-msgstr ""
-"Un tutorial para principiantes que quieran aprender cómo programar IGU "
-"usando GTK+ en Python."
-
-#. (itstool) path: credit/years
-#: C/tutorial.py.page:22
-msgid "2012 2013"
-msgstr "2012 2013"
-
-#. (itstool) path: credit/name
-#: C/tutorial.py.page:25
-msgid "Jim Campbell"
-msgstr "Jim Campbell"
-
-#. (itstool) path: synopsis/p
-#: C/tutorial.py.page:34
-msgid ""
-"By following these tutorials you will learn the basics of GUI programming "
-"using GTK+ in Python."
-msgstr ""
-"Siguiendo estos tutoriales, aprenderá los conceptos básicos de la "
-"programación de interfaces de usuario usando GTK+ en Python."
-
-#. (itstool) path: synopsis/p
-#: C/tutorial.py.page:36
-msgid ""
-"If you have never programmed before, or are not familiar with the concepts "
-"of object oriented programming, you may need to learn a few basics first. "
-"The book <link href=\"http://learnpythonthehardway.org/book/\">Learn Python "
-"the Hard Way</link> or <link href=\"http://docs.python.org/tutorial/index."
-"html\">The Python Tutorial</link> may be a better place for you to start. "
-"You may also be interested in <link href=\"http://python-gtk-3-tutorial."
-"readthedocs.org/en/latest/index.html\">The Python GTK+ 3 Tutorial</link>. "
-"Once you master the basics, be sure to come back and check out these "
-"tutorials."
-msgstr ""
-"Si nunca antes ha programado, o no está familiarizado con los conceptos de "
-"la programación orientada a objetos, puede necesitar aprender primero unos "
-"conceptos básicos. El libro <link href=\"http://learnpythonthehardway.org/"
-"book/\">Learn Python the Hard Way</link> o <link href=\"http://docs.python."
-"org/tutorial/index.html\">The Python Tutorial</link> pueden ser un buen "
-"comienzo. Tal vez también esté interesado en <link href=\"http://python-gtk-"
-"3-tutorial.readthedocs.org/en/latest/index.html\">The Python GTK+ 3 "
-"Tutorial</link>. Una vez que domine los conceptos básicos, vuelva y revise "
-"estos tutoriales."
-
-#. (itstool) path: section/title
-#: C/tutorial.py.page:42
-msgid "To run the code samples"
-msgstr "Para ejecutar los ejemplos de código"
-
-#. (itstool) path: section/p
-#: C/tutorial.py.page:44
-msgid "To run the code samples in the tutorial:"
-msgstr "Para ejecutar los ejemplos de código en el tutorial:"
-
-#. (itstool) path: item/p
-#: C/tutorial.py.page:46
-msgid ""
-"Type or copy and paste the code into a file, and save the file with a name "
-"like <var>filename</var>.py"
-msgstr ""
-"Escriba o copie y pegue el código en un archivo, y guárdelo con un nombre "
-"como <var>nombre_archivo</var>.py"
-
-#. (itstool) path: item/p
-#: C/tutorial.py.page:47
-msgid "To execute the code, type in the terminal:"
-msgstr "Para ejecutar el código, escriba en la terminal:"
-
-#. (itstool) path: item/screen
-#: C/tutorial.py.page:48
-#, no-wrap
-msgid "python <var>filename</var>.py"
-msgstr "python <var>nombre_archivo</var>.py"
-
-#. (itstool) path: section/p
-#: C/tutorial.py.page:51
-msgid ""
-"After executing the code, you will either see the widget on your screen, or "
-"(if you have mistyped some of the code) you will see an error message that "
-"will help you identify the problem."
-msgstr ""
-"Después de ejecutar el código, verá un widget en su pantalla, o (si ha "
-"escrito mal algo) un mensaje de error que le ayudará a identificar el "
-"problema."
-
-#. (itstool) path: section/title
-#: C/tutorial.py.page:55
-msgid "A path through the widgets (with some theory)"
-msgstr "Un camino a través de los widgets (con algo de teoría)"
-
-#. (itstool) path: section/p
-#: C/tutorial.py.page:56
-msgid ""
-"The tutorial will walk you through increasingly complex examples and "
-"programming theory, but you can also feel free to just go directly to the "
-"tutorial that is most helpful to you."
-msgstr ""
-"El tutorial le llevará a través de ejemplos cada vez más complejos y teoría "
-"de programación, pero también puede ir directamente el tutorial que crea que "
-"le ayudará más."
-
-#. (itstool) path: steps/title
-#: C/tutorial.py.page:58
-msgid "Tutorial"
-msgstr "Tutorial"
-
-#. (itstool) path: steps/title
-#: C/tutorial.py.page:60
-msgid "Basic windows"
-msgstr "Ventanas básicas"
-
-#. (itstool) path: steps/title
-#: C/tutorial.py.page:65
-msgid "Images and labels"
-msgstr "Imágenes y etiquetas"
-
-#. (itstool) path: steps/title
-#: C/tutorial.py.page:71
-msgid "Introduction to properties"
-msgstr "Introducción a las propiedades"
-
-#. (itstool) path: steps/title
-#: C/tutorial.py.page:75
-msgid "Grid, separator and scrolling"
-msgstr "Rejilla, separador y deslizamiento"
-
-#. (itstool) path: steps/title
-#: C/tutorial.py.page:82
-msgid "Signals, callbacks and buttons"
-msgstr "Señales, retornos de llamada y botones"
-
-#. (itstool) path: steps/title
-#: C/tutorial.py.page:96
-msgid "Other display widgets"
-msgstr "Otros widgets de visualización"
-
-#. (itstool) path: steps/title
-#: C/tutorial.py.page:102
-msgid "Entry widgets"
-msgstr "Widgets de entrada"
-
-#. (itstool) path: steps/title
-#: C/tutorial.py.page:108
-msgid "A widget to write and display text"
-msgstr "Un widget para escribir y mostrar texto"
-
-#. (itstool) path: steps/title
-#: C/tutorial.py.page:112
-msgid "Dialogs"
-msgstr "Diálogos"
-
-#. (itstool) path: steps/title
-#: C/tutorial.py.page:118
-msgid "Menus, Toolbars and Tooltips (also: using Glade and GtkBuilder)"
-msgstr ""
-"Menús, barras de herramientas y consejos (también: usar Glade y GtkBuilder)"
-
-#. (itstool) path: steps/title
-#: C/tutorial.py.page:133
-msgid "TreeViews and ComboBoxes (using the M/V/C design)"
-msgstr "TreeViews y ComboBoxes (usando el diseño M/V/C)"
-
-#. (itstool) path: steps/title
-#: C/tutorial.py.page:143
-msgid "Custom widget"
-msgstr "Widget personalizado"
-
-#. (itstool) path: info/title
-#: C/vala.page:7
-msgctxt "link"
-msgid "Vala"
-msgstr "Vala"
-
-#. (itstool) path: page/title
-#: C/vala.page:21
-msgid "Tutorials, code samples and platform demos in Vala"
-msgstr ""
-"Tutoriales, ejemplos de código y demostraciones de la plataforma en Vala"
-
-#. (itstool) path: section/title
-#: C/vala.page:26
-msgid "Code samples and tutorial"
-msgstr "Ejemplos de código y tutorial"
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/weatherApp.js.page:41
-msgctxt "_"
-msgid ""
-"external ref='media/weatherAppJs.png' md5='1fe859ac4854273d72ea8fc9203639b2'"
-msgstr ""
-"external ref='media/weatherAppJs.png' md5='1fe859ac4854273d72ea8fc9203639b2'"
-
-#. (itstool) path: info/title
-#: C/weatherApp.js.page:7
-msgctxt "text"
-msgid "Weather application (JavaScript)"
-msgstr "Aplicación del clima (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/weatherApp.js.page:22
-msgid ""
-"How to plan an application that uses asynchronous calls. Asynchronous calls "
-"will be presented through a weather application."
-msgstr ""
-"Cómo plantear una aplicación que usa llamadas asíncronas. Las llamadas "
-"asíncronas se presentarán mediante una aplicación de información "
-"meteorológica."
-
-#. (itstool) path: page/title
-#: C/weatherApp.js.page:27
-msgid "Weather application"
-msgstr "Aplicación del clima"
-
-#. (itstool) path: synopsis/p
-#: C/weatherApp.js.page:29
-msgid ""
-"In this guide well construct a weather application using asynchronous calls. "
-"Weather information in this example is fetched from geonames.org and the "
-"application is using the <link href=\"http://en.wikipedia.org/wiki/"
-"List_of_airports_by_ICAO_code:_E\">ICAO codes </link> to place your weather "
-"request. To write and run all the code examples yourself, you need an editor "
-"to write code in, Terminal and GNOME 3 or higher installed into your "
-"computer. In this guide we we'll go through the following parts:"
-msgstr ""
-"En esta parte de la guía se construirá una aplicación del clima usando "
-"llamadas asíncronas. En este ejemplo, la información del clima se obtiene de "
-"geonames.org y la aplicación usa los <link href=\"http://en.wikipedia.org/"
-"wiki/List_of_airports_by_ICAO_code:_E\">códigos ICAO</link> para responder a "
-"las peticiones. Para escribir y ejecutar todos los ejemplos de código "
-"necesita un editor de texto en el que escribir el código, una terminal y "
-"GNOME 3 o superior instalado en su equipo. En esta guía se verán las "
-"siguientes partes:"
-
-#. (itstool) path: item/p
-#: C/weatherApp.js.page:32
-msgid "<link xref=\"#planningUi\">Planning the graphical user interface</link>"
-msgstr ""
-"<link xref=\"#planningUi\">Planificar la interfaz gráfica de usuario</link>"
-
-#. (itstool) path: item/p
-#: C/weatherApp.js.page:33
-msgid "<link xref=\"#asynchronous\">Asynchronous calls</link>"
-msgstr "<link xref=\"#asynchronous\">Llamadas asíncronas</link>"
-
-#. (itstool) path: item/p
-#: C/weatherApp.js.page:34
-msgid "<link xref=\"#main\">The main program file</link>"
-msgstr "<link xref=\"#main\">El archivo del programa principal</link>"
-
-#. (itstool) path: item/p
-#: C/weatherApp.js.page:35
-msgid "<link xref=\"#main\">Local library GeoNames</link>"
-msgstr "<link xref=\"#main\">Biblioteca local GeoNames</link>"
-
-#. (itstool) path: item/p
-#: C/weatherApp.js.page:36
-msgid "<link xref=\"#main\">Autotools and Icons</link>"
-msgstr "<link xref=\"#main\">«Autotools» e iconos</link>"
-
-#. (itstool) path: section/title
-#: C/weatherApp.js.page:44
-msgid "Planning the graphical user interface"
-msgstr "Planificar la interfaz gráfica de usuario"
-
-#. (itstool) path: section/p
-#: C/weatherApp.js.page:45
-msgid ""
-"Structuring an application for GNOME 3 means you will be using <link href="
-"\"http://developer.gnome.org/platform-overview/stable/gtk\">GTK+</link>. The "
-"most important thing is to remember that the main window will only accept "
-"one widget. You must plan your structure accordingly (this example is using "
-"Gtk.Grid). A useful method is to draw out the main window and place every "
-"widget needed inside that box. By looking at an image of your future "
-"application it is easier to tell what are the relations between widgets. For "
-"example Gtk.Grid places your widgets in relation to other widgets, so after "
-"the first widget is in place, placing widgets can be done in relation to any "
-"widget on the grid."
-msgstr ""
-"Estructurar una aplicación GNOME 3 significa que usará <link href=\"http://"
-"developer.gnome.org/platform-overview/stable/gtk\">GTK+</link>. Lo más "
-"importante es recordar que la ventana principal sólo aceptará un widget. "
-"Debe planificar su estructura de acuerdo a esto (este ejemplo usa una Gtk."
-"Grid). Un método útil es dibujar la ventana principal y colocar dentro cada "
-"widget que necesite. Mirando la imagen de su futura aplicación es fácil "
-"definir las relaciones entre los widgets. Por ejemplo, Gtk.Grid coloca sus "
-"widgets en relación a otros widgets, por lo que después de colocar el "
-"primero, los demás se pueden colocar en relación al primero en la rejilla."
-
-#. (itstool) path: section/title
-#: C/weatherApp.js.page:48
-msgid "Asynchronous calls"
-msgstr "Llamadas asíncronas"
-
-#. (itstool) path: section/p
-#: C/weatherApp.js.page:49
-msgid ""
-"With many programming languages, all operations are run synchronously - you "
-"tell the program to do something, and it will wait until that action "
-"completes before proceeding. This is however bad for graphical user "
-"interfaces, as then the whole application will be frozen while the program "
-"waits for the operation. Going asynchronous (async) helps here. With async "
-"calls, your UI won't be blocked with any requests. Async calls make your "
-"application more flexible and better equipped to handle situations when "
-"calls take more time than expected or for some reason get jammed. Async "
-"calls can be used for example file system I/O and for slower calculations in "
-"the background."
-msgstr ""
-"En muchos lenguajes de programación, todas las operaciones se ejecutan "
-"síncronamente: le ordena al programa que haga algo, y esperará hasta que esa "
-"acción se complete antes de seguir. Esto, sin embargo, es malo para "
-"interfaces gráficas de usuario, ya que la aplicación entera se detendrá "
-"mientras el programa espera a la operación. Ser asíncrono (async) ayuda en "
-"este caso. Con llamadas async, su IU no se bloqueará con ninguna petición. "
-"Las llamadas async hacen su aplicación más flexible y mejor equipada para "
-"manejar situaciones en las que las llamadas toman más tiempo de lo esperado "
-"o por alguna razón se bloquean. Las llamadas async pueden usarse, por "
-"ejemplo, para E/S del sistema de archivos y para cálculos lentos en segundo "
-"plano."
-
-#. (itstool) path: section/p
-#: C/weatherApp.js.page:52
-msgid ""
-"In this example we have to get data from geonames.org. While we do that we "
-"want the rest of our program to continue. If we wouldn't get any information "
-"from geonames.org for the lack of internet connection and this would be a "
-"synchronous application we would never get to the point where our main_quit"
-"() is processed correctly and the application would have to killed from "
-"Terminal."
-msgstr ""
-"En este ejemplo, se deben obtener datos de geonames.org. Mientras se hace "
-"esto, se quiere que el resto del programa continúe. Si no obtuviéramos "
-"ninguna información de geonames.org por la falta de conexión a internet y "
-"esta fuera una aplicación síncrona, nunca se llegaría al punto en el que el "
-"main_quit() se procesa correctamente y habría que matar la aplicación desde "
-"una terminal."
-
-#. (itstool) path: section/title
-#: C/weatherApp.js.page:55
-msgid "The different parts of the program"
-msgstr "Las diferentes partes del programa"
-
-#. (itstool) path: page/title
-#: C/weatherAppMain.js.page:19
-msgid "The main program file"
-msgstr "El archivo del programa principal"
-
-#. (itstool) path: synopsis/p
-#: C/weatherAppMain.js.page:21
-msgid ""
-"In this part of the guide well construct the main program file of the "
-"weather application. To write and run all the code examples yourself, you "
-"need an editor to write code in, Terminal and GNOME 3 or higher installed "
-"into your computer. In this part we we'll go through the following parts:"
-msgstr ""
-"En esta parte de la guía se construirá el archivo del programa principal de "
-"la aplicación del clima. Para escribir y ejecutar todos los ejemplos de "
-"código necesita un editor de texto en el que escribir el código, una "
-"terminal y GNOME 3 o superior instalado en su equipo. En esta guía se verán "
-"las siguientes partes:"
-
-#. (itstool) path: item/p
-#: C/weatherAppMain.js.page:26
-msgid ""
-"<link xref=\"#widgets\">Adding a grid and all the necessary widgets to it</"
-"link>"
-msgstr ""
-"<link xref=\"#widgets\">Añadir una rejilla y todos los widgets necesarios en "
-"ella</link>"
-
-#. (itstool) path: item/p
-#: C/weatherAppMain.js.page:27
-msgid ""
-"<link xref=\"#asynccall\">Requesting the weather information asynchronously</"
-"link>"
-msgstr ""
-"<link xref=\"#asynccall\">Solicitar la información meteorológica de manera "
-"asíncrona</link>"
-
-#. (itstool) path: item/p
-#: C/weatherAppMain.js.page:28
-msgid ""
-"<link xref=\"#connectingbuttons\">Connecting signals to button and entry</"
-"link>."
-msgstr ""
-"<link xref=\"#connectingbuttons\">Conectar las señales a un botón y a una "
-"entrada</link>"
-
-#. (itstool) path: item/p
-#: C/weatherAppMain.js.page:29
-msgid "<link xref=\"#weatherapp.js\">weatherapp.js</link>"
-msgstr "<link xref=\"#weatherapp.js\">weatherapp.js</link>"
-
-#. (itstool) path: section/p
-#: C/weatherAppMain.js.page:36
-msgid ""
-"This line tells how to run the script. It needs to be the first line of the "
-"code and it needs to be executable. To get the execution rights go to "
-"Terminal and run in right folder: chmod +x scriptname. Or you can use the "
-"graphical filemanager. Just go to the right folder where your code is, right "
-"click you code file, choose properties, click the permissions tab and check "
-"the box for allow executing file as a program"
-msgstr ""
-"Esta línea indica cómo ejecutar el script. Debe ser la primera línea del "
-"código y debe ser ejecutable. Para obtener permisos de ejecución vaya a la "
-"terminal y ejecute lo siguiente en la carpeta adecuada: chmod +x "
-"nombrescript. También puede usar el gestor de archivo. Simplemente vaya a la "
-"carpeta donde está el código, pulse con el botón derecho sobre el archivo de "
-"código y elija «Propiedades», pulse en la pestaña «Permisos» y marque la "
-"casilla para permitir ejecutar el archivo como un programa."
-
-#. (itstool) path: section/code
-#: C/weatherAppMain.js.page:42
-#, no-wrap
-msgid ""
-"\n"
-"var Gtk = imports.gi.Gtk;\n"
-"const WeatherService = imports.geonames;"
-msgstr ""
-"\n"
-"var Gtk = imports.gi.Gtk;\n"
-"const WeatherService = imports.geonames;"
-
-#. (itstool) path: section/p
-#: C/weatherAppMain.js.page:45
-msgid ""
-"In order to have a working program we need to import a GObject Introspection "
-"-library to our use. For working UI, we need Gtk. Gtk is imported in the "
-"beginning so we have it in our use everywhere. We also import our own local "
-"JavaScript library geonames to our use here."
-msgstr ""
-"Para que el programa funcione se debe importar una biblioteca de "
-"introspección de GObject. Para que funcione la IU se necesita GTK+, que se "
-"importa al inicio, por lo que está en uso en todos los sitios. También se "
-"importa la biblioteca local en JavaScript geonames para usarla aquí."
-
-#. (itstool) path: section/code
-#: C/weatherAppMain.js.page:50
-#, no-wrap
-msgid ""
-"\n"
-"// Initialize the gtk\n"
-"Gtk.init(null, 0);\n"
-"//create your window, name it and connect the x to quit function. Remember that window is a taken word\n"
-"var weatherwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n"
-"weatherwindow.title = \"Todays weather\";\n"
-"//Window only accepts one widget and a title. Further structure with Gtk.boxes of similar\n"
-"weatherwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
-"\n"
-"weatherwindow.show_all();\n"
-"//and run it\n"
-"Gtk.main();"
-msgstr ""
-"\n"
-"// Initialize the gtk\n"
-"Gtk.init(null, 0);\n"
-"//create your window, name it and connect the x to quit function. Remember that window is a taken word\n"
-"var weatherwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n"
-"weatherwindow.title = \"Todays weather\";\n"
-"//Window only accepts one widget and a title. Further structure with Gtk.boxes of similar\n"
-"weatherwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
-"\n"
-"weatherwindow.show_all();\n"
-"//and run it\n"
-"Gtk.main();"
-
-#. (itstool) path: section/title
-#: C/weatherAppMain.js.page:64
-msgid "Adding a grid and all the necessary widgets to it"
-msgstr "Añadir una rejilla y todos los widgets necesarios en ella"
-
-#. (itstool) path: section/code
-#: C/weatherAppMain.js.page:65
-#, no-wrap
-msgid ""
-"\n"
-"var grid = new Gtk.Grid();\n"
-"weatherwindow.add(grid);\n"
-"\n"
-"//We initialize the icon here, but deside the file later in geonames.js.\n"
-"var weatherIcon = new Gtk.Image();\n"
-"\n"
-"//Set some labels to your window\n"
-"var label1 = new Gtk.Label({label: \"\"});\n"
-"var label2 = new Gtk.Label({label: \"Looking in the sky...\"});\n"
-"var label3 = new Gtk.Label({label: \"\"});\n"
-"\n"
-"var entry = new Gtk.Entry();\n"
-"entry.set_width_chars(4);\n"
-"entry.set_max_length(4);\n"
-"var label4 = new Gtk.Label({label: \"Enter ICAO station for weather: \"});\n"
-"var button1 = new Gtk.Button({label: \"search!\"});\n"
-"\n"
-"grid.attach(label4, 2, 1, 1, 1);\n"
-"grid.attach_next_to(label1,label4,3,1,1);\n"
-"grid.attach_next_to(label2,label1,3,1,1);\n"
-"grid.attach_next_to(label3,label2,3,1,1);\n"
-"grid.attach_next_to(entry,label4,1,1,1);\n"
-"grid.attach_next_to(button1,entry,1,1,1);\n"
-"grid.attach_next_to(weatherIcon,label2,1,1,1)\n"
-msgstr ""
-"\n"
-"var grid = new Gtk.Grid();\n"
-"weatherwindow.add(grid);\n"
-"\n"
-"//We initialize the icon here, but deside the file later in geonames.js.\n"
-"var weatherIcon = new Gtk.Image();\n"
-"\n"
-"//Set some labels to your window\n"
-"var label1 = new Gtk.Label({label: \"\"});\n"
-"var label2 = new Gtk.Label({label: \"Looking in the sky...\"});\n"
-"var label3 = new Gtk.Label({label: \"\"});\n"
-"\n"
-"var entry = new Gtk.Entry();\n"
-"entry.set_width_chars(4);\n"
-"entry.set_max_length(4);\n"
-"var label4 = new Gtk.Label({label: \"Enter ICAO station for weather: \"});\n"
-"var button1 = new Gtk.Button({label: \"search!\"});\n"
-"\n"
-"grid.attach(label4, 2, 1, 1, 1);\n"
-"grid.attach_next_to(label1,label4,3,1,1);\n"
-"grid.attach_next_to(label2,label1,3,1,1);\n"
-"grid.attach_next_to(label3,label2,3,1,1);\n"
-"grid.attach_next_to(entry,label4,1,1,1);\n"
-"grid.attach_next_to(button1,entry,1,1,1);\n"
-"grid.attach_next_to(weatherIcon,label2,1,1,1)\n"
-
-#. (itstool) path: section/p
-#: C/weatherAppMain.js.page:91
-msgid ""
-"In this section we create the grid we are going to use for positioning the "
-"widgets. All the buttons, labels and entrys are initialized and placed on "
-"the grid. As seen from the placing of the different widgets, they don't need "
-"to be related only to one widget. At this point some of the labels don't "
-"have any content. The content for those widgets is applied later. If you run "
-"the application at this stage, you have the UI ready, but the widgets are "
-"not connected to anything. For this we need to first build the weather "
-"searching local library, and then get the information we need "
-"asynchronously. When we have our local library ready we can connect it to "
-"the necessary widgets."
-msgstr ""
-"En esta sección se crea la rejilla que se usará para posicionar los widgets. "
-"Todos los botones, etiquetas y entradas se inicializan y colocan en la "
-"rejilla. Como se puede ver en la colocación de los diferentes widgets, no es "
-"necesario relacionarlo con un único widget. En este punto, algunas de las "
-"etiquetas no tienen contenido. El contenido para esos widgets se aplica más "
-"tarde. Si ejecuta la aplicación en este punto, tendrá lista la IU, pero los "
-"widgets no estarán conectados con nada. Para esto, se necesita construir "
-"primero la biblioteca de búsqueda de tiempo local, y obtener la información "
-"que se necesita de manera asíncrona. Cuando la biblioteca local esté lista, "
-"se podrá conectar a los widgets necesarios."
-
-#. (itstool) path: section/title
-#: C/weatherAppMain.js.page:95
-msgid "Requesting the weather information asynchronously"
-msgstr "Solicitar la información meteorológica de manera asíncrona"
-
-#. (itstool) path: section/code
-#: C/weatherAppMain.js.page:96
-#, no-wrap
-msgid ""
-"\n"
-"function getWeatherForStation() {\n"
-" var station = entry.get_text();\n"
-"\n"
-" var GeoNames = new WeatherService.GeoNames(station); //\"EFHF\";\n"
-"\n"
-" GeoNames.getWeather(function(error, weather) {\n"
-" //this here works bit like signals. This code will be run when we have weather.\n"
-" if (error) {\n"
-" label2.set_text(\"Suggested ICAO station does not exist Try EFHF\");\n"
-" return; }\n"
-" weatherIcon.file = GeoNames.getIcon(weather);\n"
-"\n"
-" label1.set_text(\"Temperature is \" + weather.weatherObservation.temperature + \" degrees.\");\n"
-" if (weather.weatherObservation.weatherCondition !== \"n/a\"){\n"
-" label2.set_text(\"Looks like there is \" + weather.weatherObservation.weatherCondition + \" in the
sky.\");\n"
-" }\n"
-" else {\n"
-" label2.set_text(\"Looks like there is \" + weather.weatherObservation.clouds + \" in the sky.\");\n"
-" }\n"
-" label3.set_text(\"Windspeed is \" + weather.weatherObservation.windSpeed + \" m/s\")\n"
-" // ...\n"
-" });\n"
-"}\n"
-msgstr ""
-"\n"
-"function getWeatherForStation() {\n"
-" var station = entry.get_text();\n"
-"\n"
-" var GeoNames = new WeatherService.GeoNames(station); //\"EFHF\";\n"
-"\n"
-" GeoNames.getWeather(function(error, weather) {\n"
-" //this here works bit like signals. This code will be run when we have weather.\n"
-" if (error) {\n"
-" label2.set_text(\"Suggested ICAO station does not exist Try EFHF\");\n"
-" return; }\n"
-" weatherIcon.file = GeoNames.getIcon(weather);\n"
-"\n"
-" label1.set_text(\"Temperature is \" + weather.weatherObservation.temperature + \" degrees.\");\n"
-" if (weather.weatherObservation.weatherCondition !== \"n/a\"){\n"
-" label2.set_text(\"Looks like there is \" + weather.weatherObservation.weatherCondition + \" in the
sky.\");\n"
-" }\n"
-" else {\n"
-" label2.set_text(\"Looks like there is \" + weather.weatherObservation.clouds + \" in the sky.\");\n"
-" }\n"
-" label3.set_text(\"Windspeed is \" + weather.weatherObservation.windSpeed + \" m/s\")\n"
-" // ...\n"
-" });\n"
-"}\n"
-
-#. (itstool) path: section/p
-#: C/weatherAppMain.js.page:121
-msgid ""
-"This function is dedicated for calling for the weather information and "
-"updating labels and icons accordingly. In the beginning of the function we "
-"get the user input for the search. So here for the first time we use our own "
-"library and assign it to variable GeoNames. While assigning WeatherService "
-"we give it the station. The firs thing we do with GeoNames is to request "
-"weather. Everything after GeoNames.getWeather(function(error, weather) "
-"happens only if we either get an error message or weather information. If "
-"either doesn't come, the rest of the program works as normal, so main_Quit "
-"works."
-msgstr ""
-"Esta función se dedica a llamar a la información meteorológica y a "
-"actualizar las etiquetas y los iconos correctamente. Al principio de la "
-"función, se obtiene la entrada del usuario para la búsqueda. Por lo tanto, "
-"la primera vez se usa la biblioteca propia y se asigna a la variable "
-"GeoNames. Al asignar WeatherService se da la estación. Lo primero que se "
-"hace con GeoNames es solicitar el tiempo. Todo lo que sucede después de "
-"GeoNames.getWeather(function(error, weather) ocurre sólo si se obtiene un "
-"mensaje de error o información del tiempo incorrecta. Si no pasa nada de "
-"esto, el resto del programa funciona de manera normal, por lo que «main_Quit» "
-"funciona."
-
-#. (itstool) path: section/title
-#: C/weatherAppMain.js.page:125
-msgid "Connecting signals to button and entry."
-msgstr "Conectar señales a un botón y a una entrada"
-
-#. (itstool) path: section/code
-#: C/weatherAppMain.js.page:126
-#, no-wrap
-msgid ""
-"\n"
-"entry.connect(\"key_press_event\", function(widget, event) {\n"
-" if (entry.get_text().length === 4) {\n"
-" // Enough is enough\n"
-" getWeatherForStation();\n"
-" }\n"
-" return false;\n"
-"});\n"
-"\n"
-"button1.connect(\"clicked\", function(){\n"
-" getWeatherForStation();\n"
-"});"
-msgstr ""
-"\n"
-"entry.connect(\"key_press_event\", function(widget, event) {\n"
-" if (entry.get_text().length === 4) {\n"
-" // Enough is enough\n"
-" getWeatherForStation();\n"
-" }\n"
-" return false;\n"
-"});\n"
-"\n"
-"button1.connect(\"clicked\", function(){\n"
-" getWeatherForStation();\n"
-"});"
-
-#. (itstool) path: section/p
-#: C/weatherAppMain.js.page:138
-msgid ""
-"And finally we have the connections that make the whole application run as "
-"it should. We connect both the entry and the button to do the same thing, "
-"getting the weather. So it doesn't matter weather you press enter of click "
-"the search button."
-msgstr ""
-"Finalmente se tienen las conexiones que hacen que la aplicación completa "
-"funcione como debería. Se han conectado la entrada y el botón para que hagan "
-"la misma cosa, obtener el tiempo. Por lo tanto, no importa si pulsa el botón "
-"o si pulsa «Intro»."
-
-#. (itstool) path: section/title
-#: C/weatherAppMain.js.page:142
-msgid "Weatherapp.js"
-msgstr "Weatherapp.js"
-
-#. (itstool) path: section/p
-#: C/weatherAppMain.js.page:143
-msgid "Weatherapp.js file looks like this:"
-msgstr "El archivo Weatherapp.js se parece a esto:"
-
-#. (itstool) path: section/code
-#: C/weatherAppMain.js.page:144
-#, no-wrap
-msgid ""
-"\n"
-"#!/usr/bin/gjs\n"
-"//The previous line is a hash bang tells how to run the script.\n"
-"// Note that the script has to be executable (run in terminal in the right folder: chmod +x scriptname)\n"
-"\n"
-"var Gtk = imports.gi.Gtk;\n"
-"\n"
-"const WeatherService = imports.geonames;\n"
-"//Bring your own library from same folder (as set in GJS_PATH). If using autotools .desktop will take care
of this\n"
-"\n"
-"// Initialize the gtk\n"
-"Gtk.init(null, 0);\n"
-"//create your window, name it and connect the x to quit function. Remember that window is a taken word\n"
-"var weatherwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n"
-"weatherwindow.title = \"Todays weather\";\n"
-"//Window only accepts one widget and a title. Further structure with Gtk.boxes of similar\n"
-"weatherwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
-"//We initialize the icon here, but deside the file later in geonames.js.\n"
-"\n"
-"var weatherIcon = new Gtk.Image();\n"
-"\n"
-"//Set some labels to your window\n"
-"var label1 = new Gtk.Label({label: \"\"});\n"
-"var label2 = new Gtk.Label({label: \"Looking in the sky...\"});\n"
-"var label3 = new Gtk.Label({label: \"\"});\n"
-"\n"
-"var grid = new Gtk.Grid();\n"
-"weatherwindow.add(grid);\n"
-"\n"
-"var entry = new Gtk.Entry();\n"
-"entry.set_width_chars(4);\n"
-"entry.set_max_length(4);\n"
-"var label4 = new Gtk.Label({label: \"Enter ICAO station for weather: \"});\n"
-"var button1 = new Gtk.Button({label: \"search!\"});\n"
-"\n"
-"//some weather\n"
-"\n"
-"entry.connect(\"key_press_event\", function(widget, event) {\n"
-" // FIXME: Get weather on enter (key 13)\n"
-" if (entry.get_text().length === 4) {\n"
-" // Enough is enough\n"
-" getWeatherForStation();\n"
-" }\n"
-" return false;\n"
-"});\n"
-"\n"
-"button1.connect(\"clicked\", function(){\n"
-" getWeatherForStation();\n"
-"});\n"
-"\n"
-"function getWeatherForStation() {\n"
-" var station = entry.get_text();\n"
-"\n"
-" var GeoNames = new WeatherService.GeoNames(station); //\"EFHF\";\n"
-"\n"
-" GeoNames.getWeather(function(error, weather) {\n"
-" //this here works bit like signals. This code will be run when we have weather.\n"
-" if (error) {\n"
-" label2.set_text(\"Suggested ICAO station does not exist Try EFHF\");\n"
-" return; }\n"
-" weatherIcon.file = GeoNames.getIcon(weather);\n"
-"\n"
-" label1.set_text(\"Temperature is \" + weather.weatherObservation.temperature + \" degrees.\");\n"
-" if (weather.weatherObservation.weatherCondition !== \"n/a\"){\n"
-" label2.set_text(\"Looks like there is \" + weather.weatherObservation.weatherCondition + \" in the
sky.\");\n"
-" }\n"
-" else {\n"
-" label2.set_text(\"Looks like there is \" + weather.weatherObservation.clouds + \" in the sky.\");\n"
-" }\n"
-" label3.set_text(\"Windspeed is \" + weather.weatherObservation.windSpeed + \" m/s\")\n"
-" // ...\n"
-" });\n"
-"}\n"
-"\n"
-"grid.attach(label4, 2, 1, 1, 1);\n"
-"grid.attach_next_to(label1,label4,3,1,1);\n"
-"grid.attach_next_to(label2,label1,3,1,1);\n"
-"grid.attach_next_to(label3,label2,3,1,1);\n"
-"grid.attach_next_to(entry,label4,1,1,1);\n"
-"grid.attach_next_to(button1,entry,1,1,1);\n"
-"grid.attach_next_to(weatherIcon,label2,1,1,1)\n"
-"weatherwindow.show_all();\n"
-"//and run it\n"
-"Gtk.main();\n"
-msgstr ""
-"\n"
-"#!/usr/bin/gjs\n"
-"//The previous line is a hash bang tells how to run the script.\n"
-"// Note that the script has to be executable (run in terminal in the right folder: chmod +x scriptname)\n"
-"\n"
-"var Gtk = imports.gi.Gtk;\n"
-"\n"
-"const WeatherService = imports.geonames;\n"
-"//Bring your own library from same folder (as set in GJS_PATH). If using autotools .desktop will take care
of this\n"
-"\n"
-"// Initialize the gtk\n"
-"Gtk.init(null, 0);\n"
-"//create your window, name it and connect the x to quit function. Remember that window is a taken word\n"
-"var weatherwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n"
-"weatherwindow.title = \"Todays weather\";\n"
-"//Window only accepts one widget and a title. Further structure with Gtk.boxes of similar\n"
-"weatherwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
-"//We initialize the icon here, but deside the file later in geonames.js.\n"
-"\n"
-"var weatherIcon = new Gtk.Image();\n"
-"\n"
-"//Set some labels to your window\n"
-"var label1 = new Gtk.Label({label: \"\"});\n"
-"var label2 = new Gtk.Label({label: \"Looking in the sky...\"});\n"
-"var label3 = new Gtk.Label({label: \"\"});\n"
-"\n"
-"var grid = new Gtk.Grid();\n"
-"weatherwindow.add(grid);\n"
-"\n"
-"var entry = new Gtk.Entry();\n"
-"entry.set_width_chars(4);\n"
-"entry.set_max_length(4);\n"
-"var label4 = new Gtk.Label({label: \"Enter ICAO station for weather: \"});\n"
-"var button1 = new Gtk.Button({label: \"search!\"});\n"
-"\n"
-"//some weather\n"
-"\n"
-"entry.connect(\"key_press_event\", function(widget, event) {\n"
-" // FIXME: Get weather on enter (key 13)\n"
-" if (entry.get_text().length === 4) {\n"
-" // Enough is enough\n"
-" getWeatherForStation();\n"
-" }\n"
-" return false;\n"
-"});\n"
-"\n"
-"button1.connect(\"clicked\", function(){\n"
-" getWeatherForStation();\n"
-"});\n"
-"\n"
-"function getWeatherForStation() {\n"
-" var station = entry.get_text();\n"
-"\n"
-" var GeoNames = new WeatherService.GeoNames(station); //\"EFHF\";\n"
-"\n"
-" GeoNames.getWeather(function(error, weather) {\n"
-" //this here works bit like signals. This code will be run when we have weather.\n"
-" if (error) {\n"
-" label2.set_text(\"Suggested ICAO station does not exist Try EFHF\");\n"
-" return; }\n"
-" weatherIcon.file = GeoNames.getIcon(weather);\n"
-"\n"
-" label1.set_text(\"Temperature is \" + weather.weatherObservation.temperature + \" degrees.\");\n"
-" if (weather.weatherObservation.weatherCondition !== \"n/a\"){\n"
-" label2.set_text(\"Looks like there is \" + weather.weatherObservation.weatherCondition + \" in the
sky.\");\n"
-" }\n"
-" else {\n"
-" label2.set_text(\"Looks like there is \" + weather.weatherObservation.clouds + \" in the sky.\");\n"
-" }\n"
-" label3.set_text(\"Windspeed is \" + weather.weatherObservation.windSpeed + \" m/s\")\n"
-" // ...\n"
-" });\n"
-"}\n"
-"\n"
-"grid.attach(label4, 2, 1, 1, 1);\n"
-"grid.attach_next_to(label1,label4,3,1,1);\n"
-"grid.attach_next_to(label2,label1,3,1,1);\n"
-"grid.attach_next_to(label3,label2,3,1,1);\n"
-"grid.attach_next_to(entry,label4,1,1,1);\n"
-"grid.attach_next_to(button1,entry,1,1,1);\n"
-"grid.attach_next_to(weatherIcon,label2,1,1,1)\n"
-"weatherwindow.show_all();\n"
-"//and run it\n"
-"Gtk.main();\n"
-
-#. (itstool) path: section/p
-#: C/weatherAppMain.js.page:229
-msgid "Running until you have all the autotools files ready. :"
-msgstr "Ejecútela hasta que tenga listos todos los archivos de autotools:"
-
-#. (itstool) path: section/screen
-#: C/weatherAppMain.js.page:231
-#, no-wrap
-msgid " <output style=\"prompt\">$ </output><input> GJS_PATH=`pwd` gjs weatherapp.js</input>"
-msgstr " <output style=\"prompt\">$ </output><input> GJS_PATH=`pwd` gjs weatherapp.js</input>"
-
-#. (itstool) path: section/p
-#: C/weatherAppMain.js.page:232
-msgid ""
-"Use this command on terminal while developing your modules. When calling "
-"your program in this manner it knows where to find your custom JSlibraries, "
-"in this case geonames.js."
-msgstr ""
-"Use este comando en la terminal cuando desarrolle sus módulos. Al llamar a "
-"su programa de este modo, sabe dónde encontrar las bibliotecas de JavaScript "
-"personalizadas, (geonames.js en este caso)."
-
-#. (itstool) path: page/title
-#: C/weatherAutotools.js.page:19
-msgid "Autotools and Icons"
-msgstr "Autotools e iconos"
-
-#. (itstool) path: synopsis/p
-#: C/weatherAutotools.js.page:21
-msgid ""
-"In this part of the guide well construct the autotools and custom icons "
-"needed for weather application to be a seamless part of your desktop. To "
-"write and run all the code examples yourself, you need an editor to write "
-"code in, Terminal and GNOME 3 or higher installed into your computer. In "
-"this guide we we'll go through the following parts:"
-msgstr ""
-"En esta parte de la guía se construirán las «autotools» y los iconos "
-"necesarios para la aplicación del clima para que sea una parte integral de "
-"su escritorio. Para escribir y ejecutar todos los ejemplos de código "
-"necesita un editor de texto en el que escribir el código, una terminal y "
-"GNOME 3 o superior instalado en su equipo. En esta guía se verán las "
-"siguientes partes:"
-
-#. (itstool) path: item/p
-#: C/weatherAutotools.js.page:24
-msgid "<link xref=\"#autotools\"> Autotools</link>"
-msgstr "<link xref=\"#autotools\"> Autotools</link>"
-
-#. (itstool) path: item/p
-#: C/weatherAutotools.js.page:25
-msgid "<link xref=\"#icons\">Custom icons for your application</link>"
-msgstr "<link xref=\"#icons\">Iconos personalizados para su aplicación</link>"
-
-#. (itstool) path: section/title
-#: C/weatherAutotools.js.page:32
-msgid "Autotools and necessary files"
-msgstr "Autotools y archivos necesarios"
-
-#. (itstool) path: section/p
-#: C/weatherAutotools.js.page:33
-msgid ""
-"Having more than one file in your folder makes using autotools a bit tricky. "
-"You need the .desktop file, autogen.sh, Makefile.am, configure.ac and as a "
-"new file: myapp.sh.in file. Hacking the autotools file is a complicated "
-"field. More information can be found in many different sources, <link href="
-"\"http://en.wikipedia.org/wiki/GNU_build_system\">the wikipedia article</"
-"link> provides a good overview on the subject."
-msgstr ""
-"Tener más de un archivo en la carpeta complica un poco el uso de autotools. "
-"Necesita los archivos .desktop, autogen.sh, Makefile.am, configure.ac y un "
-"archivo nuevo: myapp.sh.in. Hackear el archivo de autotools es complicado. "
-"Puede encontrar más información en diferentes fuentes; <link href=\"http://"
-"en.wikipedia.org/wiki/GNU_build_system\">este artículo de la wikipedia</"
-"link> proporciona una visión general de este tema."
-
-#. (itstool) path: item/p
-#. (itstool) path: section/p
-#: C/weatherAutotools.js.page:36 C/weatherAutotools.js.page:42
-msgid "weatherapp.desktop"
-msgstr "weatherapp.desktop"
-
-#. (itstool) path: item/p
-#. (itstool) path: section/p
-#: C/weatherAutotools.js.page:37 C/weatherAutotools.js.page:57
-msgid "weatherapp.sh.in"
-msgstr "weatherapp.sh.in"
-
-#. (itstool) path: section/code
-#: C/weatherAutotools.js.page:43
-#, no-wrap
-msgid ""
-"\n"
-"[Desktop Entry]\n"
-"Version=1.0\n"
-"Encoding=UTF-8\n"
-"Name=Weather app\n"
-"Comment=Weather showing application\n"
-"Exec=weatherapp.sh\n"
-"Icon=application-default-icon\n"
-"Terminal=false\n"
-"Type=Application\n"
-"StartupNotify=true\n"
-"Categories=GNOME;GTK;Utility;"
-msgstr ""
-"\n"
-"[Desktop Entry]\n"
-"Version=1.0\n"
-"Encoding=UTF-8\n"
-"Name=Weather app\n"
-"Comment=Weather showing application\n"
-"Exec=weatherapp.sh\n"
-"Icon=application-default-icon\n"
-"Terminal=false\n"
-"Type=Application\n"
-"StartupNotify=true\n"
-"Categories=GNOME;GTK;Utility;"
-
-#. (itstool) path: section/p
-#: C/weatherAutotools.js.page:55
-msgid ""
-"The thing to notice in this file is that the Exec line will make this ."
-"desktop file work only after running all the other makefiles. Weatherapp.sh "
-"is a small shell script created with the weatherapp.sh.in."
-msgstr ""
-"Lo importante de este archivo es que la línea Exec hará que el archivo ."
-"desktop funcione sólo después de ejecutar el resto de makefiles. Weatherapp."
-"sh es un pequeño script creado a partir de weatherapp.sh.in."
-
-#. (itstool) path: section/code
-#: C/weatherAutotools.js.page:58
-#, no-wrap
-msgid ""
-"\n"
-"#!/bin/sh\n"
-"export GJS_PATH= bindir@\n"
-"gjs @bindir@/weatherapp.js"
-msgstr ""
-"\n"
-"#!/bin/sh\n"
-"export GJS_PATH= bindir@\n"
-"gjs @bindir@/weatherapp.js"
-
-#. (itstool) path: section/p
-#: C/weatherAutotools.js.page:62
-msgid ""
-"This file is a template to the file Makefile will do to be run from .desktop."
-msgstr ""
-"Este archivo es una plantilla que el Makefile creará para ejecutarlo desde "
-"el .desktop."
-
-#. (itstool) path: section/code
-#: C/weatherAutotools.js.page:65
-#, no-wrap
-msgid ""
-"\n"
-"# The actual runnable program is set to the SCRIPTS primitive. Prefix bin_ tells where to copy this\n"
-"bin_SCRIPTS = weatherapp.js geonames.js weatherapp.sh\n"
-"# List of files to be distributed\n"
-"EXTRA_DIST= \\\n"
-" $(bin_SCRIPTS) \\\n"
-" $(private_icons)\t\\\n"
-"\t $(NULL)\n"
-"\n"
-"CLEANFILES =\n"
-"\n"
-"# The desktop files\n"
-"desktopdir = $(datadir)/applications\n"
-"desktop_DATA =weatherapp.desktop\n"
-"\n"
-"# convenience command for doing Makefile variable substitutions in non-Makefile\n"
-"# files (scripts, service files, etc.)\n"
-"do_subst = sed -e 's|@abs_top_srcdir[ ]|$(abs_top_srcdir)|g' \\\n"
-" -e 's|@abs_top_builddir[ ]|$(abs_top_builddir)|g' \\\n"
-" -e 's|@localedir[ ]|$(localedir)|g' \\\n"
-" -e 's|@bindir[ ]|$(bindir)|g' \\\n"
-" -e 's|@libexecdir[ ]|$(libexecdir)|g' \\\n"
-"\t -e 's|@pkglibdir[ ]|$(pkglibdir)|g' \\\n"
-"\t -e 's|@pkgdatadir[ ]|$(pkgdatadir)|g' \\\n"
-"\t -e 's|@have_libnotify[ ]|$(HAVE_LIBNOTIFY)|g' \\\n"
-"\t -e 's|@have_libsoup[ ]|$(HAVE_LIBSOUP)|g' \\\n"
-"\t -e 's|@have_cheese[ ]|$(HAVE_CHEESE)|g'\n"
-"\n"
-"weatherapp.sh: weatherapp.sh.in\n"
-"\t$(AM_V_GEN) $(do_subst) $< > $ \n"
-"\tchmod +x $ \n"
-"\n"
-"CLEANFILES += weatherapp.sh\n"
-"EXTRA_DIST += weatherapp.sh.in\n"
-"\n"
-"#the application icon\n"
-"appicondir=$(datadir)/icons/hicolor/scalable/apps\n"
-"appicon_DATA=weather-icon.svg\n"
-"\n"
-"#icons in the application\n"
-"NULL =\n"
-"\n"
-"private_icons = \\\n"
-"\tweather-clear.svg \\\n"
-" weather-few-clouds.svg \\\n"
-" weather-fog.svg \\\n"
-" weather-icon.svg \\\n"
-" weather-overcast.svg \\\n"
-" weather-showers.svg \\\n"
-" weather-showers-scattered.svg \\\n"
-" weather-snow.svg \\\n"
-" $(NULL)\n"
-"\n"
-"install-icons:\n"
-"\tfor icon in $(private_icons); do \\\n"
-"\t\tmkdir -p $(DESTDIR)$(pkgdatadir)/icons/; \\\n"
-"\t\t$(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(pkgdatadir)/icons/; \\\n"
-"\tdone\n"
-"\n"
-"install-data-local: install-icons"
-msgstr ""
-"\n"
-"# The actual runnable program is set to the SCRIPTS primitive. Prefix bin_ tells where to copy this\n"
-"bin_SCRIPTS = weatherapp.js geonames.js weatherapp.sh\n"
-"# List of files to be distributed\n"
-"EXTRA_DIST= \\\n"
-" $(bin_SCRIPTS) \\\n"
-" $(private_icons)\t\\\n"
-"\t $(NULL)\n"
-"\n"
-"CLEANFILES =\n"
-"\n"
-"# The desktop files\n"
-"desktopdir = $(datadir)/applications\n"
-"desktop_DATA =weatherapp.desktop\n"
-"\n"
-"# convenience command for doing Makefile variable substitutions in non-Makefile\n"
-"# files (scripts, service files, etc.)\n"
-"do_subst = sed -e 's|@abs_top_srcdir[ ]|$(abs_top_srcdir)|g' \\\n"
-" -e 's|@abs_top_builddir[ ]|$(abs_top_builddir)|g' \\\n"
-" -e 's|@localedir[ ]|$(localedir)|g' \\\n"
-" -e 's|@bindir[ ]|$(bindir)|g' \\\n"
-" -e 's|@libexecdir[ ]|$(libexecdir)|g' \\\n"
-"\t -e 's|@pkglibdir[ ]|$(pkglibdir)|g' \\\n"
-"\t -e 's|@pkgdatadir[ ]|$(pkgdatadir)|g' \\\n"
-"\t -e 's|@have_libnotify[ ]|$(HAVE_LIBNOTIFY)|g' \\\n"
-"\t -e 's|@have_libsoup[ ]|$(HAVE_LIBSOUP)|g' \\\n"
-"\t -e 's|@have_cheese[ ]|$(HAVE_CHEESE)|g'\n"
-"\n"
-"weatherapp.sh: weatherapp.sh.in\n"
-"\t$(AM_V_GEN) $(do_subst) $< > $ \n"
-"\tchmod +x $ \n"
-"\n"
-"CLEANFILES += weatherapp.sh\n"
-"EXTRA_DIST += weatherapp.sh.in\n"
-"\n"
-"#the application icon\n"
-"appicondir=$(datadir)/icons/hicolor/scalable/apps\n"
-"appicon_DATA=weather-icon.svg\n"
-"\n"
-"#icons in the application\n"
-"NULL =\n"
-"\n"
-"private_icons = \\\n"
-"\tweather-clear.svg \\\n"
-" weather-few-clouds.svg \\\n"
-" weather-fog.svg \\\n"
-" weather-icon.svg \\\n"
-" weather-overcast.svg \\\n"
-" weather-showers.svg \\\n"
-" weather-showers-scattered.svg \\\n"
-" weather-snow.svg \\\n"
-" $(NULL)\n"
-"\n"
-"install-icons:\n"
-"\tfor icon in $(private_icons); do \\\n"
-"\t\tmkdir -p $(DESTDIR)$(pkgdatadir)/icons/; \\\n"
-"\t\t$(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(pkgdatadir)/icons/; \\\n"
-"\tdone\n"
-"\n"
-"install-data-local: install-icons"
-
-#. (itstool) path: section/p
-#: C/weatherAutotools.js.page:125
-msgid ""
-"This needs a bit more explaining. Compared to the HelloWorld Makefile.am "
-"this has changed quite a bit. Lets go through all the new blocks:"
-msgstr ""
-"Esto necesita más explicación. Comparado con el Makefile.am de HelloWorld, "
-"esto ha cambiado un poco. Eche un vistazo a los bloques nuevos."
-
-#. (itstool) path: section/p
-#: C/weatherAutotools.js.page:126
-msgid ""
-"bin_scripts are the files that are needed to run your application. In thin "
-"case they are the first two files are the program itself and the third is "
-"the script that launches the application."
-msgstr ""
-"bin_scripts son los archivos necesarios para ejecutar la aplicación. En este "
-"caso, los dos primeros archivos son el programa en sí y el tercero es el "
-"script que lanza la aplicación."
-
-#. (itstool) path: section/p
-#: C/weatherAutotools.js.page:127
-msgid "EXTRA_DIST are the files that are to be distributed"
-msgstr "EXTRA_DIST son los archivos que se deben distribuir"
-
-#. (itstool) path: section/p
-#: C/weatherAutotools.js.page:128
-msgid "do_subst block is bits and pieces that need to be where they are"
-msgstr "El bloque do_subst son partes que deben estar donde están"
-
-#. (itstool) path: section/p
-#: C/weatherAutotools.js.page:129
-msgid ""
-"after the comment #icons in the application there are all the icons that are "
-"used by the program. For them to be useful you need to install the icons in "
-"correct places and that is done byt the install-icons: bit"
-msgstr ""
-"después del comentario «#icons» en la aplicación, están todos los iconos "
-"usados por el programa. Para que sean útiles, debe instalar los iconos en "
-"los lugares correctos, y esto se hace con el bit «install-icons:»"
-
-#. (itstool) path: section/code
-#: C/weatherAutotools.js.page:132
-#, no-wrap
-msgid ""
-"\n"
-"dnl This file is processed by autoconf to create a configure script\n"
-"AC_INIT([Weather App], 1.0)\n"
-"AM_INIT_AUTOMAKE([1.10 no-define foreign])\n"
-"AC_CONFIG_FILES(Makefile)\n"
-"AC_OUTPUT"
-msgstr ""
-"\n"
-"dnl This file is processed by autoconf to create a configure script\n"
-"AC_INIT([Weather App], 1.0)\n"
-"AM_INIT_AUTOMAKE([1.10 no-define foreign])\n"
-"AC_CONFIG_FILES(Makefile)\n"
-"AC_OUTPUT"
-
-#. (itstool) path: section/code
-#: C/weatherAutotools.js.page:139
-#, no-wrap
-msgid ""
-"\n"
-"#!/bin/sh\n"
-"# This will run autoconf, automake, etc. for us\n"
-"autoreconf --force --install"
-msgstr ""
-"\n"
-"#!/bin/sh\n"
-"# This will run autoconf, automake, etc. for us\n"
-"autoreconf --force --install"
-
-#. (itstool) path: section/title
-#: C/weatherAutotools.js.page:145
-msgid "Custom icons for your application"
-msgstr "Iconos personalizados para su aplicación"
-
-#. (itstool) path: section/p
-#: C/weatherAutotools.js.page:146
-msgid ""
-"When thinking about custom icons a good rule of thumb is: do you expect to "
-"see that icon used elsewhere or is it private to your app? If the first (e."
-"g. the icons in the desktop file that are shown by the shell) then you need /"
-"usr/share/hicolor, otherwise (e.g. the weather icons of your app) /usr/share/"
-"$application/bla/bla"
-msgstr ""
-"Cuando piense en iconos personalizados, una buena regla es: ¿espera ver un "
-"este icono en cualquier parte o es privado para su aplicación? En el primer "
-"caso (ej. iconos en el archivo .desktop que se muestran en GNOME Shell) "
-"necesita /usr/share/hicolor; si no, (ej. iconos del tiempo en su "
-"aplicación), necesita /usr/share/$application/bla/bla."
-
-#. (itstool) path: section/p
-#: C/weatherAutotools.js.page:147
-msgid ""
-"Using autotools you have to make some changes to your .desktop and Makefile."
-"am files. In the desktop file you change the Icon's name Icon=weather-icon. "
-"In the Makefile.am file you add these two lines to the end of your "
-"application #the application icon"
-msgstr ""
-"Usando autotools debe hacer algunos cambios en sus archivos .desktop y "
-"Makefile.am. En el archivo .desktop, debe cambiar el nombre del icono a "
-"Icon=weather-icon. En el Makefile.am, debe añadir estas líneas al final del "
-"archivo"
-
-#. (itstool) path: section/p
-#: C/weatherAutotools.js.page:148
-msgid "appicondir=$(datadir)/icons/hicolor/scalable/apps"
-msgstr ""
-"#the application icon\n"
-"appicondir=$(datadir)/icons/hicolor/scalable/apps"
-
-#. (itstool) path: section/p
-#: C/weatherAutotools.js.page:149
-msgid "appicon_DATA=weather-icon.svg"
-msgstr "appicon_DATA=weather-icon.svg"
-
-#. (itstool) path: page/title
-#: C/weatherGeonames.js.page:19
-msgid "Local library geoNames"
-msgstr "Biblioteca local geoNames"
-
-#. (itstool) path: synopsis/p
-#: C/weatherGeonames.js.page:21
-msgid ""
-"In this part of the guide we'll construct the local library geoNames using "
-"asynchronous calls. Weather information in this example is fetched from "
-"geonames.org and the application is using the <link href=\"http://en."
-"wikipedia.org/wiki/List_of_airports_by_ICAO_code:_E\">ICAO codes </link> to "
-"place your weather request. To write and run all the code examples yourself, "
-"you need an editor to write code in, Terminal and GNOME 3 or higher "
-"installed into your computer. In this guide we'll go through the following "
-"parts:"
-msgstr ""
-"En esta parte de la guía se construirá la biblioteca local geoNames usando "
-"llamadas asíncronas. En este ejemplo, la información del clima se obtiene de "
-"geonames.org y la aplicación usa los <link href=\"http://en.wikipedia.org/"
-"wiki/List_of_airports_by_ICAO_code:_E\">códigos ICAO</link> para responder a "
-"las peticiones. Para escribir y ejecutar todos los ejemplos de código "
-"necesita un editor de texto en el que escribir el código, una terminal y "
-"GNOME 3 o superior instalado en su equipo. En esta guía se verán las "
-"siguientes partes:"
-
-#. (itstool) path: item/p
-#: C/weatherGeonames.js.page:24
-msgid ""
-"<link xref=\"#geonamesimports\">Local library for getting the weather</link>"
-msgstr ""
-"<link xref=\"#geonamesimports\">Biblioteca local para obtener el clima</link>"
-
-#. (itstool) path: item/p
-#: C/weatherGeonames.js.page:25
-msgid "<link xref=\"#geonamesfunction\">Creating function geoNames</link>"
-msgstr "<link xref=\"#geonamesfunction\">Crear la función «geoNames»</link>"
-
-#. (itstool) path: item/p
-#: C/weatherGeonames.js.page:26
-msgid "<link xref=\"#geonamesmethods\">Methods for geoNames</link>"
-msgstr "<link xref=\"#geonamesmethods\">Métodos para «geoNames»</link>"
-
-#. (itstool) path: item/p
-#: C/weatherGeonames.js.page:27
-msgid "<link xref=\"#geonames.js\">geonames.js </link>"
-msgstr "<link xref=\"#geonames.js\">geonames.js </link>"
-
-#. (itstool) path: section/title
-#: C/weatherGeonames.js.page:32
-msgid "Local library for getting the weather"
-msgstr "Biblioteca local para obtener el clima"
-
-#. (itstool) path: section/p
-#: C/weatherGeonames.js.page:33
-msgid "For this we need a new file that will be our local library."
-msgstr ""
-"Para esto se necesita un archivo nueva que será nuestra biblioteca local."
-
-#. (itstool) path: section/code
-#: C/weatherGeonames.js.page:34
-#, no-wrap
-msgid ""
-"\n"
-"const Soup = imports.gi.Soup;\n"
-"const _httpSession = new Soup.SessionAsync();\n"
-"Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());\n"
-msgstr ""
-"\n"
-"const Soup = imports.gi.Soup;\n"
-"const _httpSession = new Soup.SessionAsync();\n"
-"Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());\n"
-
-#. (itstool) path: section/p
-#: C/weatherGeonames.js.page:39
-msgid ""
-"In the first lines we'll import and initialize the libraries we need to use "
-"in this local library. Soup handles all the requests we have to make with "
-"http."
-msgstr ""
-"En las primeras líneas se importan y se inicializan las bibliotecas que "
-"necesitamos usar en esta biblioteca local. Soup maneja todas las peticiones "
-"que se hagan con http."
-
-#. (itstool) path: section/title
-#: C/weatherGeonames.js.page:43
-msgid "Creating function GeoNames"
-msgstr "Crear la función geoNames"
-
-#. (itstool) path: section/code
-#: C/weatherGeonames.js.page:44
-#, no-wrap
-msgid ""
-"\n"
-"function GeoNames(station) {\n"
-" this.station = station;\n"
-"}\n"
-"\n"
-"GeoNames.prototype = {\n"
-"\n"
-"}\n"
-msgstr ""
-"\n"
-"function GeoNames(station) {\n"
-" this.station = station;\n"
-"}\n"
-"\n"
-"GeoNames.prototype = {\n"
-"\n"
-"}\n"
-
-#. (itstool) path: section/p
-#: C/weatherGeonames.js.page:53
-msgid ""
-"Here we create the function GeoNames that will handle getting weather for "
-"us. JavaScript allows us to create functions that have little inside at "
-"first and later expand them. This will be done inside the GeoNames.prototype "
-"curly braces{}"
-msgstr ""
-"Aquí se crea la función GeoNames, que manejará la obtención del clima. "
-"JavaScript permite crear funciones sencillas al principio para ampliarlas "
-"más tarde. Esto se hará dentro de las llaves de GeoNames.prototype."
-
-#. (itstool) path: section/title
-#: C/weatherGeonames.js.page:57
-msgid "Methods for GeoNames"
-msgstr "Métodos para geoNames"
-
-#. (itstool) path: section/code
-#: C/weatherGeonames.js.page:58
-#, no-wrap
-msgid ""
-"\n"
-"getWeather: function(callback) {\n"
-" var request = Soup.Message.new('GET', 'http://api.geonames.org/weatherIcaoJSON?ICAO=' + this.station +
'&username=demo');\n"
-" _httpSession.queue_message(request, function(_httpSession, message) {\n"
-" if (message.status_code !== 200) {\n"
-" callback(message.status_code, null);\n"
-" return;\n"
-" }\n"
-" var weatherJSON = request.response_body.data;\n"
-" var weather = JSON.parse(weatherJSON);\n"
-" callback(null, weather);\n"
-" });\n"
-"},\n"
-"\n"
-"getIcon: function(weather){\n"
-" switch (weather.weatherObservation.weatherCondition){\n"
-" case \"drizzle\":\n"
-" case \"light showers rain\":\n"
-" case \"light rain\":\n"
-" return \"weather-showers-scattered.svg\";\n"
-" case \"rain\":\n"
-" return \"weather-showers.svg\";\n"
-" case \"light snow\":\n"
-" case \"snow grains\":\n"
-" return \"weather-snow.svg\";\n"
-" }\n"
-" switch (weather.weatherObservation.clouds){\n"
-" case \"few clouds\":\n"
-" case \"scattered clouds\":\n"
-" return \"weather-few-clouds.svg\";\n"
-" case \"clear sky\":\n"
-" return \"weather-clear.svg\"\n"
-" case \"broken clouds\":\n"
-" case \"overcast\":\n"
-" return \"weather-overcast.svg\";\n"
-" }\n"
-" return \"weather-fog.svg\";\n"
-"}\n"
-msgstr ""
-"\n"
-"getWeather: function(callback) {\n"
-" var request = Soup.Message.new('GET', 'http://api.geonames.org/weatherIcaoJSON?ICAO=' + this.station +
'&username=demo');\n"
-" _httpSession.queue_message(request, function(_httpSession, message) {\n"
-" if (message.status_code !== 200) {\n"
-" callback(message.status_code, null);\n"
-" return;\n"
-" }\n"
-" var weatherJSON = request.response_body.data;\n"
-" var weather = JSON.parse(weatherJSON);\n"
-" callback(null, weather);\n"
-" });\n"
-"},\n"
-"\n"
-"getIcon: function(weather){\n"
-" switch (weather.weatherObservation.weatherCondition){\n"
-" case \"drizzle\":\n"
-" case \"light showers rain\":\n"
-" case \"light rain\":\n"
-" return \"weather-showers-scattered.svg\";\n"
-" case \"rain\":\n"
-" return \"weather-showers.svg\";\n"
-" case \"light snow\":\n"
-" case \"snow grains\":\n"
-" return \"weather-snow.svg\";\n"
-" }\n"
-" switch (weather.weatherObservation.clouds){\n"
-" case \"few clouds\":\n"
-" case \"scattered clouds\":\n"
-" return \"weather-few-clouds.svg\";\n"
-" case \"clear sky\":\n"
-" return \"weather-clear.svg\"\n"
-" case \"broken clouds\":\n"
-" case \"overcast\":\n"
-" return \"weather-overcast.svg\";\n"
-" }\n"
-" return \"weather-fog.svg\";\n"
-"}\n"
-
-#. (itstool) path: section/p
-#: C/weatherGeonames.js.page:97
-msgid ""
-"The first method for GeoNames is getWeather and the second getIcon. In "
-"getWeather we make a http request with soup, handle errors and then parse "
-"the information from the request to form we can use it. In getIcon we simply "
-"compare the results we got from getWeather to the switch we have in order to "
-"get the icon matching current weather. Now that we have our local library "
-"ready, it's time to make use of it."
-msgstr ""
-"El primer método de GeoNames es getWeather, y el segundo es getIcon. En "
-"getWeather se realiza una solicitud http con soup, se gestionan los errores "
-"y se analiza la información de la solicitud para saber que se puede usar. En "
-"getIcon simplemente se comparan los resultados obtenidos en getWeather con "
-"el selector para obtener el icono que representa el clima actual. Ahora que "
-"la biblioteca local está lista, es el momento de usarla."
-
-#. (itstool) path: section/title
-#: C/weatherGeonames.js.page:102
-msgid "geonames.js"
-msgstr "geonames.js"
-
-#. (itstool) path: section/p
-#: C/weatherGeonames.js.page:103
-msgid ""
-"Here is the entire code for our local library. The main program file calls "
-"this asynchronously."
-msgstr ""
-"Aquí está el código completo de la biblioteca. El archivo de programa "
-"principal la llama de manera asíncrona."
-
-#. (itstool) path: section/code
-#: C/weatherGeonames.js.page:104
-#, no-wrap
-msgid ""
-"\n"
-"const Soup = imports.gi.Soup;\n"
-"const _httpSession = new Soup.SessionAsync();\n"
-"Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());\n"
-"\n"
-"function GeoNames(station) {\n"
-" this.station = station;\n"
-"}\n"
-"\n"
-"GeoNames.prototype = {\n"
-" getWeather: function(callback) {\n"
-" var request = Soup.Message.new('GET', 'http://api.geonames.org/weatherIcaoJSON?ICAO=' + this.station +
'&username=demo');\n"
-" _httpSession.queue_message(request, function(_httpSession, message) {\n"
-" if (message.status_code !== 200) {\n"
-" callback(message.status_code, null);\n"
-" return;\n"
-" }\n"
-" var weatherJSON = request.response_body.data;\n"
-" var weather = JSON.parse(weatherJSON);\n"
-" callback(null, weather);\n"
-" });\n"
-" },\n"
-"\n"
-" getIcon: function(weather){\n"
-" switch (weather.weatherObservation.weatherCondition){\n"
-" case \"drizzle\":\n"
-" case \"light showers rain\":\n"
-" case \"light rain\":\n"
-" return \"weather-showers-scattered.svg\";\n"
-" case \"rain\":\n"
-" return \"weather-showers.svg\";\n"
-" case \"light snow\":\n"
-" case \"snow grains\":\n"
-" return \"weather-snow.svg\";\n"
-" }\n"
-" switch (weather.weatherObservation.clouds){\n"
-" case \"few clouds\":\n"
-" case \"scattered clouds\":\n"
-" return \"weather-few-clouds.svg\";\n"
-" case \"clear sky\":\n"
-" return \"weather-clear.svg\"\n"
-" case \"broken clouds\":\n"
-" case \"overcast\":\n"
-" return \"weather-overcast.svg\";\n"
-" }\n"
-" return \"weather-fog.svg\";\n"
-" }\n"
-"}\n"
-"} "
-msgstr ""
-"\n"
-"const Soup = imports.gi.Soup;\n"
-"const _httpSession = new Soup.SessionAsync();\n"
-"Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());\n"
-"\n"
-"function GeoNames(station) {\n"
-" this.station = station;\n"
-"}\n"
-"\n"
-"GeoNames.prototype = {\n"
-" getWeather: function(callback) {\n"
-" var request = Soup.Message.new('GET', 'http://api.geonames.org/weatherIcaoJSON?ICAO=' + this.station +
'&username=demo');\n"
-" _httpSession.queue_message(request, function(_httpSession, message) {\n"
-" if (message.status_code !== 200) {\n"
-" callback(message.status_code, null);\n"
-" return;\n"
-" }\n"
-" var weatherJSON = request.response_body.data;\n"
-" var weather = JSON.parse(weatherJSON);\n"
-" callback(null, weather);\n"
-" });\n"
-" },\n"
-"\n"
-" getIcon: function(weather){\n"
-" switch (weather.weatherObservation.weatherCondition){\n"
-" case \"drizzle\":\n"
-" case \"light showers rain\":\n"
-" case \"light rain\":\n"
-" return \"weather-showers-scattered.svg\";\n"
-" case \"rain\":\n"
-" return \"weather-showers.svg\";\n"
-" case \"light snow\":\n"
-" case \"snow grains\":\n"
-" return \"weather-snow.svg\";\n"
-" }\n"
-" switch (weather.weatherObservation.clouds){\n"
-" case \"few clouds\":\n"
-" case \"scattered clouds\":\n"
-" return \"weather-few-clouds.svg\";\n"
-" case \"clear sky\":\n"
-" return \"weather-clear.svg\"\n"
-" case \"broken clouds\":\n"
-" case \"overcast\":\n"
-" return \"weather-overcast.svg\";\n"
-" }\n"
-" return \"weather-fog.svg\";\n"
-" }\n"
-"}\n"
-"} "
-
-#. (itstool) path: media
-#. This is a reference to an external file such as an image or video. When
-#. the file changes, the md5 hash will change to let you know you need to
-#. update your localized copy. The msgstr is not used at all. Set it to
-#. whatever you like once you have updated your copy of the file.
-#: C/widget_drawing.py.page:22
-msgctxt "_"
-msgid ""
-"external ref='media/widget_drawing.png' "
-"md5='d00abd8cb9e158018c57fd75b81dfe58'"
-msgstr ""
-"external ref='media/widget_drawing.png' "
-"md5='d00abd8cb9e158018c57fd75b81dfe58'"
-
-#. (itstool) path: info/title
-#: C/widget_drawing.py.page:8
-msgctxt "text"
-msgid "Widget (Python)"
-msgstr "Widget (Python)"
-
-#. (itstool) path: info/desc
-#: C/widget_drawing.py.page:18
-msgid "A widget that uses the Cairo library to draw"
-msgstr "Un widget que usa la biblioteca Cairo para dibujar"
-
-#. (itstool) path: page/title
-#: C/widget_drawing.py.page:21
-msgid "Widget"
-msgstr "Widget"
-
-#. (itstool) path: page/p
-#: C/widget_drawing.py.page:23
-msgid "Enter an angle, visualize it."
-msgstr "Introduzca un ángulo, visualícelo."
-
-#. (itstool) path: section/code
-#: C/widget_drawing.py.page:30
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"from gi.repository import cairo\n"
-"import sys\n"
-"import math\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Choose an angle\", application=app)\n"
-" self.set_default_size(400, 400)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # a default angle\n"
-" self.angle = 360\n"
-"\n"
-" grid = Gtk.Grid()\n"
-"\n"
-" # a spinbutton that takes the value of an angle\n"
-" ad = Gtk.Adjustment(360, 0, 360, 1, 0, 0)\n"
-" self.spin = Gtk.SpinButton(adjustment=ad, climb_rate=1, digits=0)\n"
-" self.spin.connect(\"value-changed\", self.get_angle)\n"
-"\n"
-" # a drawing area for drawing whatever we want\n"
-" self.darea = Gtk.DrawingArea()\n"
-" # that we describe in the method draw(), connected to the signal \"draw\"\n"
-" self.darea.connect(\"draw\", self.draw)\n"
-" # we have to request a minimum size of the drawing area, or it will\n"
-" # disappear\n"
-" self.darea.set_size_request(300, 300)\n"
-"\n"
-" grid.attach(self.spin, 0, 0, 1, 1)\n"
-" grid.attach(self.darea, 0, 1, 1, 1)\n"
-"\n"
-" self.add(grid)\n"
-"\n"
-" # whenever we get a new angle in the spinbutton\n"
-" def get_angle(self, event):\n"
-" self.angle = self.spin.get_value_as_int()\n"
-" # redraw what is in the drawing area\n"
-" self.darea.queue_draw()\n"
-"\n"
-" def draw(self, darea, cr):\n"
-" # a 10-pixels-wide line\n"
-" cr.set_line_width(10)\n"
-" # red\n"
-" cr.set_source_rgba(0.5, 0.0, 0.0, 1.0)\n"
-"\n"
-" # get the width and height of the drawing area\n"
-" w = self.darea.get_allocated_width()\n"
-" h = self.darea.get_allocated_height()\n"
-"\n"
-" # move to the center of the drawing area\n"
-" # (translate from the top left corner to w/2, h/2)\n"
-" cr.translate(w / 2, h / 2)\n"
-" # draw a line to (55, 0)\n"
-" cr.line_to(55, 0)\n"
-" # and get back to (0, 0)\n"
-" cr.line_to(0, 0)\n"
-" # draw an arc centered in the origin, 50 pixels wide, from the angle 0\n"
-" # (in radians) to the angle given by the spinbutton (in degrees)\n"
-" cr.arc(0, 0, 50, 0, self.angle * (math.pi / 180))\n"
-" # draw a line back to the origin\n"
-" cr.line_to(0, 0)\n"
-" # drawing the path, and keeping the path for future use\n"
-" cr.stroke_preserve()\n"
-"\n"
-" # set a colour\n"
-" cr.set_source_rgba(0.0, 0.5, 0.5, 1.0)\n"
-" # and use it to fill the path (that we had kept)\n"
-" cr.fill()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"from gi.repository import cairo\n"
-"import sys\n"
-"import math\n"
-"\n"
-"\n"
-"class MyWindow(Gtk.ApplicationWindow):\n"
-"\n"
-" def __init__(self, app):\n"
-" Gtk.Window.__init__(self, title=\"Choose an angle\", application=app)\n"
-" self.set_default_size(400, 400)\n"
-" self.set_border_width(10)\n"
-"\n"
-" # a default angle\n"
-" self.angle = 360\n"
-"\n"
-" grid = Gtk.Grid()\n"
-"\n"
-" # a spinbutton that takes the value of an angle\n"
-" ad = Gtk.Adjustment(360, 0, 360, 1, 0, 0)\n"
-" self.spin = Gtk.SpinButton(adjustment=ad, climb_rate=1, digits=0)\n"
-" self.spin.connect(\"value-changed\", self.get_angle)\n"
-"\n"
-" # a drawing area for drawing whatever we want\n"
-" self.darea = Gtk.DrawingArea()\n"
-" # that we describe in the method draw(), connected to the signal \"draw\"\n"
-" self.darea.connect(\"draw\", self.draw)\n"
-" # we have to request a minimum size of the drawing area, or it will\n"
-" # disappear\n"
-" self.darea.set_size_request(300, 300)\n"
-"\n"
-" grid.attach(self.spin, 0, 0, 1, 1)\n"
-" grid.attach(self.darea, 0, 1, 1, 1)\n"
-"\n"
-" self.add(grid)\n"
-"\n"
-" # whenever we get a new angle in the spinbutton\n"
-" def get_angle(self, event):\n"
-" self.angle = self.spin.get_value_as_int()\n"
-" # redraw what is in the drawing area\n"
-" self.darea.queue_draw()\n"
-"\n"
-" def draw(self, darea, cr):\n"
-" # a 10-pixels-wide line\n"
-" cr.set_line_width(10)\n"
-" # red\n"
-" cr.set_source_rgba(0.5, 0.0, 0.0, 1.0)\n"
-"\n"
-" # get the width and height of the drawing area\n"
-" w = self.darea.get_allocated_width()\n"
-" h = self.darea.get_allocated_height()\n"
-"\n"
-" # move to the center of the drawing area\n"
-" # (translate from the top left corner to w/2, h/2)\n"
-" cr.translate(w / 2, h / 2)\n"
-" # draw a line to (55, 0)\n"
-" cr.line_to(55, 0)\n"
-" # and get back to (0, 0)\n"
-" cr.line_to(0, 0)\n"
-" # draw an arc centered in the origin, 50 pixels wide, from the angle 0\n"
-" # (in radians) to the angle given by the spinbutton (in degrees)\n"
-" cr.arc(0, 0, 50, 0, self.angle * (math.pi / 180))\n"
-" # draw a line back to the origin\n"
-" cr.line_to(0, 0)\n"
-" # drawing the path, and keeping the path for future use\n"
-" cr.stroke_preserve()\n"
-"\n"
-" # set a colour\n"
-" cr.set_source_rgba(0.0, 0.5, 0.5, 1.0)\n"
-" # and use it to fill the path (that we had kept)\n"
-" cr.fill()\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def __init__(self):\n"
-" Gtk.Application.__init__(self)\n"
-"\n"
-" def do_activate(self):\n"
-" win = MyWindow(self)\n"
-" win.show_all()\n"
-"\n"
-" def do_startup(self):\n"
-" Gtk.Application.do_startup(self)\n"
-"\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: item/p
-#: C/widget_drawing.py.page:39
-msgid ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkDrawingArea.html"
-"\">GtkDrawingArea</link>"
-msgstr ""
-"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkDrawingArea.html"
-"\">GtkDrawingArea</link>"
-
-#. (itstool) path: item/p
-#: C/widget_drawing.py.page:40
-msgid ""
-"<link href=\"http://www.tortall.net/mu/wiki/CairoTutorial\">The Cairo "
-"Tutorial for Python Programmers</link>"
-msgstr ""
-"<link href=\"http://www.tortall.net/mu/wiki/CairoTutorial\">El tutorial de "
-"Cairo para programadores en Python</link>"
-
-#. (itstool) path: info/title
-#: C/window.c.page:8
-msgctxt "text"
-msgid "Window (C)"
-msgstr "Ventana (C)"
-
-#. (itstool) path: info/desc
-#: C/window.c.page:18 C/window.py.page:25 C/window.vala.page:18
-msgid "A toplevel window which can contain other widgets"
-msgstr "Una ventana de nivel superior que puede contener otros widgets"
-
-#. (itstool) path: page/title
-#: C/window.c.page:21 C/window.js.page:21 C/window.py.page:28
-#: C/window.vala.page:21
-msgid "Window"
-msgstr "Ventana"
-
-#. (itstool) path: page/p
-#: C/window.c.page:24
-msgid ""
-"A minimal GtkApplication. Use <link xref=\"GtkApplicationWindow.c"
-"\">Application Window</link> if you need GMenu support."
-msgstr ""
-"Una GtkAplication mínima. Use una <link href=\"GtkApplicationWindow.c"
-"\">ventana de aplicación</link> si necesita soporte para GMenu."
-
-#. (itstool) path: page/code
-#: C/window.c.page:28
-#, no-wrap
-msgid ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-"\n"
-" window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n"
-"\n"
-" gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n"
-"\n"
-" gtk_widget_show_all (GTK_WIDGET (window));\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-msgstr ""
-"\n"
-"#include <gtk/gtk.h>\n"
-"\n"
-"static void\n"
-"activate (GtkApplication *app,\n"
-" gpointer user_data)\n"
-"{\n"
-" GtkWidget *window;\n"
-"\n"
-" window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n"
-"\n"
-" gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n"
-" gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n"
-"\n"
-" gtk_widget_show_all (GTK_WIDGET (window));\n"
-"}\n"
-"\n"
-"int\n"
-"main (int argc, char **argv)\n"
-"{\n"
-" GtkApplication *app;\n"
-" int status;\n"
-"\n"
-" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
-" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-" g_object_unref (app);\n"
-" return status;\n"
-"}\n"
-
-#. (itstool) path: info/title
-#: C/window.js.page:8
-msgctxt "text"
-msgid "Window (JavaScript)"
-msgstr "Ventana (JavaScript)"
-
-#. (itstool) path: info/desc
-#: C/window.js.page:18
-msgid "A basic window which can contain other widgets"
-msgstr "Una ventana básica que puede contener otros widgets."
-
-#. (itstool) path: td/p
-#: C/window.js.page:26
-msgid "A minimal GtkApplication"
-msgstr "Una GtkApplication mínima"
-
-#. (itstool) path: td/p
-#: C/window.js.page:29
-msgid ""
-"Use <link xref=\"GtkApplicationWindow.js\">ApplicationWindow</link> if you "
-"need GMenu support."
-msgstr ""
-"Use una <link href=\"GtkApplicationWindow.js\">ventana de aplicación</link> "
-"si necesita soporte para GMenu."
-
-#. (itstool) path: page/code
-#: C/window.js.page:33
-#, no-wrap
-msgid ""
-"\n"
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const Application = new Lang.Class ({\n"
-" Name: 'Application',\n"
-"\n"
-" //create the application\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.myapp',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" },\n"
-"\n"
-" //callback function for 'activate' signal\n"
-" _onActivate: function () {\n"
-"\n"
-" MyWindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n"
-" MyWindow.title = \"Welcome to GNOME\";\n"
-"\n"
-" /* Here are a few ways we can customize our window.\n"
-" Try uncommenting them or changing their values! */\n"
-" //MyWindow.set_default_size (400,200);\n"
-" //MyWindow.set_has_resize_grip (false);\n"
-" //MyWindow.set_opacity (0.5);\n"
-" //MyWindow.maximize ();\n"
-"\n"
-" //show the window and all child widgets (none in this case)\n"
-" MyWindow.show_all();\n"
-" this.application.add_window(MyWindow);\n"
-" }\n"
-"});\n"
-"\n"
-"//run the application\n"
-"let app = new Application ();\n"
-"app.application.run (ARGV);\n"
-msgstr ""
-"\n"
-"#!/usr/bin/gjs\n"
-"\n"
-"const Gio = imports.gi.Gio;\n"
-"const GLib = imports.gi.GLib;\n"
-"const Gtk = imports.gi.Gtk;\n"
-"const Lang = imports.lang;\n"
-"\n"
-"const Application = new Lang.Class ({\n"
-" Name: 'Application',\n"
-"\n"
-" //create the application\n"
-" _init: function () {\n"
-" this.application = new Gtk.Application ({\n"
-" application_id: 'org.example.myapp',\n"
-" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
-" });\n"
-"\n"
-" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
-" },\n"
-"\n"
-" //callback function for 'activate' signal\n"
-" _onActivate: function () {\n"
-"\n"
-" MyWindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n"
-" MyWindow.title = \"Welcome to GNOME\";\n"
-"\n"
-" /* Here are a few ways we can customize our window.\n"
-" Try uncommenting them or changing their values! */\n"
-" //MyWindow.set_default_size (400,200);\n"
-" //MyWindow.set_has_resize_grip (false);\n"
-" //MyWindow.set_opacity (0.5);\n"
-" //MyWindow.maximize ();\n"
-"\n"
-" //show the window and all child widgets (none in this case)\n"
-" MyWindow.show_all();\n"
-" this.application.add_window(MyWindow);\n"
-" }\n"
-"});\n"
-"\n"
-"//run the application\n"
-"let app = new Application ();\n"
-"app.application.run (ARGV);\n"
-
-#. (itstool) path: page/p
-#: C/window.js.page:35
-msgid "In this example we used the following:"
-msgstr "En este ejemplo se usa lo siguiente:"
-
-#. (itstool) path: item/p
-#: C/window.js.page:40
-msgid ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Window.html"
-"\">Gtk.Window</link>"
-msgstr ""
-"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Window.html"
-"\">Gtk.Window</link>"
-
-#. (itstool) path: info/title
-#: C/window.py.page:8
-msgctxt "text"
-msgid "Window (Python)"
-msgstr "Ventana (Python)"
-
-#. (itstool) path: td/p
-#: C/window.py.page:34
-msgid "A minimal GTK+ Application: a window with a title."
-msgstr "Una aplicación mínima en GTK+: una ventana con un título."
-
-#. (itstool) path: td/p
-#: C/window.py.page:37
-msgid ""
-"Use <link xref=\"GtkApplicationWindow.py\"/> if you need <link xref=\"gmenu."
-"py\"/> support."
-msgstr ""
-"Use una <link xref=\"GtkApplicationWindow.py\"/> si necesita soporte de "
-"<link xref=\"gmenu.py\"/>."
-
-#. (itstool) path: section/code
-#: C/window.py.page:47
-#, no-wrap
-msgid ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def do_activate(self):\n"
-" # create a Gtk Window belonging to the application itself\n"
-" window = Gtk.Window(application=self)\n"
-" # set the title\n"
-" window.set_title(\"Welcome to GNOME\")\n"
-" # show the window\n"
-" window.show_all()\n"
-"\n"
-"# create and run the application, exit with the value returned by\n"
-"# running the program\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-msgstr ""
-"from gi.repository import Gtk\n"
-"import sys\n"
-"\n"
-"\n"
-"class MyApplication(Gtk.Application):\n"
-"\n"
-" def do_activate(self):\n"
-" # create a Gtk Window belonging to the application itself\n"
-" window = Gtk.Window(application=self)\n"
-" # set the title\n"
-" window.set_title(\"Welcome to GNOME\")\n"
-" # show the window\n"
-" window.show_all()\n"
-"\n"
-"# create and run the application, exit with the value returned by\n"
-"# running the program\n"
-"app = MyApplication()\n"
-"exit_status = app.run(sys.argv)\n"
-"sys.exit(exit_status)\n"
-
-#. (itstool) path: section/title
-#: C/window.py.page:52
-msgid "Useful methods for a Window widget"
-msgstr "Métodos útiles para un widget «Window»"
-
-#. (itstool) path: info/title
-#: C/window.vala.page:8
-msgctxt "text"
-msgid "Window (Vala)"
-msgstr "Ventana (Vala)"
-
-#. (itstool) path: td/p
-#: C/window.vala.page:26
-msgid "The simplest Gtk.Application"
-msgstr "La Gtk.Application más sencilla"
-
-#. (itstool) path: td/p
-#: C/window.vala.page:29
-msgid ""
-"Use <link xref=\"GtkApplicationWindow.vala\">Application Window</link> if "
-"you need GMenu support."
-msgstr ""
-"Use una <link href=\"GtkApplicationWindow.vala\">ventana de aplicación</"
-"link> si necesita soporte para GMenu."
-
-#. (itstool) path: page/code
-#: C/window.vala.page:33
-#, no-wrap
-msgid ""
-"/* This is the application. */\n"
-"public class Application : Gtk.Application {\n"
-"\n"
-"\t/* Constructor */\n"
-"\tpublic Application () {\n"
-"\t\tObject (application_id: \"org.example.window\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application,\n"
-"\t * which is inherited by Gtk.Application. */\n"
-"\tpublic override void activate () {\n"
-"\n"
-"\t\tvar window = new Gtk.Window ();\n"
-"\t\twindow.title = \"Welcome to GNOME\";\n"
-"\n"
-"\t\t/* The following 3 lines are included here to introduce\n"
-"\t\t * you to ways you can adjust the toplevel window to suit\n"
-"\t\t * your needs. Uncomment them to see what they do.\n"
-"\t\t */\n"
-"\n"
-"\t\t//window.border_width = 10;\n"
-"\t\t//window.set_default_size (350, 70);\n"
-"\t\t//window.window_position = Gtk.WindowPosition.CENTER;\n"
-"\n"
-"\t\t/* Add the window to this application. */\n"
-"\t\tthis.add_window (window);\n"
-"\n"
-"\t\t/* Show the window. */\n"
-"\t\twindow.show ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* The main function creates the application and runs it.*/\n"
-"int main (string[] args) {\n"
-"\tvar app = new Application ();\n"
-"\treturn app.run (args);\n"
-"}\n"
-msgstr ""
-"/* This is the application. */\n"
-"public class Application : Gtk.Application {\n"
-"\n"
-"\t/* Constructor */\n"
-"\tpublic Application () {\n"
-"\t\tObject (application_id: \"org.example.window\");\n"
-"\t}\n"
-"\n"
-"\t/* Override the 'activate' signal of GLib.Application,\n"
-"\t * which is inherited by Gtk.Application. */\n"
-"\tpublic override void activate () {\n"
-"\n"
-"\t\tvar window = new Gtk.Window ();\n"
-"\t\twindow.title = \"Welcome to GNOME\";\n"
-"\n"
-"\t\t/* The following 3 lines are included here to introduce\n"
-"\t\t * you to ways you can adjust the toplevel window to suit\n"
-"\t\t * your needs. Uncomment them to see what they do.\n"
-"\t\t */\n"
-"\n"
-"\t\t//window.border_width = 10;\n"
-"\t\t//window.set_default_size (350, 70);\n"
-"\t\t//window.window_position = Gtk.WindowPosition.CENTER;\n"
-"\n"
-"\t\t/* Add the window to this application. */\n"
-"\t\tthis.add_window (window);\n"
-"\n"
-"\t\t/* Show the window. */\n"
-"\t\twindow.show ();\n"
-"\t}\n"
-"}\n"
-"\n"
-"/* The main function creates the application and runs it.*/\n"
-"int main (string[] args) {\n"
-"\tvar app = new Application ();\n"
-"\treturn app.run (args);\n"
-"}\n"
-
-#. (itstool) path: item/p
-#: C/window.vala.page:39
-msgid ""
-"The widget <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.html"
-"\">Gtk.Window</link>"
-msgstr ""
-"El widget <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.html\">Gtk."
-"Window</link>"
-
-#. (itstool) path: item/p
-#: C/window.vala.page:41
-msgid ""
-"The enum <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.WindowPosition.html"
-"\">Gtk.WindowPosition</link>"
-msgstr ""
-"El enumerado <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.WindowPosition."
-"html\">Gtk.WindowPosition</link>"
-
-#. (itstool) path: item/p
-#: C/window.vala.page:43
-msgid ""
-"The method <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window."
-"set_default_size.html\">set_default_size</link>"
-msgstr ""
-"El método <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window."
-"set_default_size.html\">set_default_size</link>"
-
-#. (itstool) path: item/p
-#: C/window.vala.page:45
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Container.border_width.html"
-"\">border_width</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Container.border_width.html"
-"\">border_width</link>"
-
-#. (itstool) path: item/p
-#: C/window.vala.page:47
-msgid ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.window_position.html"
-"\">window_position</link>"
-msgstr ""
-"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.window_position.html"
-"\">window_position</link>"
-
-#. (itstool) path: credit/name
-#: C/custom-gsource.c.page:11
-msgid "Philip Withnall"
-msgstr "Philip Withnall"
-
-#. (itstool) path: credit/years
-#: C/custom-gsource.c.page:13
-msgid "2015"
-msgstr "2015"
-
-#. (itstool) path: info/desc
-#: C/custom-gsource.c.page:18
-msgid "Tutorial for writing a custom <code>GSource</code> implementation"
-msgstr ""
-"Tutorial para escribir una implementación de <code>GSource</code> "
-"personalizada"
-
-#. (itstool) path: page/title
-#: C/custom-gsource.c.page:23
-msgid "Custom GSources"
-msgstr "GSources personalizadas"
-
-#. (itstool) path: synopsis/title
-#: C/custom-gsource.c.page:26
-msgid "Summary"
-msgstr "Resumen"
-
-#. (itstool) path: synopsis/p
-#: C/custom-gsource.c.page:28
-msgid ""
-"This article is a tutorial on creating a custom <code>GSource</code>. For "
-"the reference documentation, see the <link href=\"https://developer.gnome."
-"org/glib/stable/glib-The-Main-Event-Loop.html#GSource\">GLib API reference</"
-"link>."
-msgstr ""
-"Este artículo es un tutorial para escribir una <code>GSource</code> "
-"personalizada. Para ver la documentación de referencia, consulte la <link "
-"href=\"https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop."
-"html#GSource\"> referencia de la API de GLib</link>."
-
-#. (itstool) path: section/title
-#: C/custom-gsource.c.page:37
-msgid "What is <code>GSource</code>?"
-msgstr "¿qué es <code>GSource</code>?"
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:39
-msgid ""
-"A <link href=\"https://developer.gnome.org/glib/stable/glib-The-Main-Event-"
-"Loop.html#GSource\"><code>GSource</code></link> is an expected event with an "
-"associated callback function which will be invoked when that event is "
-"received. An event could be a timeout or data being received on a socket, "
-"for example."
-msgstr ""
-"Una <link href=\"https://developer.gnome.org/glib/stable/glib-The-Main-Event-"
-"Loop.html#GSource\"><code>GSource</code></link> es un evento esperado con "
-"una función de retorno de llamada asociada que se invocará cuando se reciba "
-"un evento. Un evento puede ser una expiración de tiempo o datos que se "
-"reciben en un socket, por ejemplo."
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:46
-msgid ""
-"GLib contains various types of <code>GSource</code>, but also allows "
-"applications to define their own, allowing custom events to be integrated "
-"into the main loop."
-msgstr ""
-"GLib contiene varios tipos de <code>GSource</code>, pero también permite que "
-"las aplicaciones definan las suyas propias, permitiendo integrar eventos "
-"personalizados en el bucle principal."
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:52
-msgid ""
-"The structure of a <code>GSource</code> and its virtual functions are "
-"documented in detail in the <link href=\"https://developer.gnome.org/glib/"
-"stable/glib-The-Main-Event-Loop.html#GSourceFuncs\">GLib API reference</"
-"link>."
-msgstr ""
-"La estructura de una <code>GSource</code> y sus funciones virtuales están "
-"documentadas detalladamente en la <link href=\"https://developer.gnome.org/"
-"glib/stable/glib-The-Main-Event-Loop.html#GSourceFuncs\">referencia de la "
-"API GLib</link>."
-
-#. (itstool) path: section/title
-#: C/custom-gsource.c.page:61
-msgid "A Message Queue Source"
-msgstr "Una fuente de cola de mensajes"
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:63
-msgid ""
-"As a running example, a message queue source will be used which dispatches "
-"its callback whenever a message is enqueued to a queue internal to the "
-"source (potentially from another thread)."
-msgstr ""
-"Como ejemplo de ejecución, se usará una cola de fuentes de mensajes que "
-"ejecuta su función de retorno de llamada cuando se mete en la cola un "
-"mensaje en la cola interna de la fuente (potencialmente de otro hilo)."
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:69
-msgid ""
-"This type of source is useful for efficiently transferring large numbers of "
-"messages between main contexts. The alternative is transferring each message "
-"as a separate idle <code>GSource</code> using <code>g_source_attach()</"
-"code>. For large numbers of messages, this means a lot of allocations and "
-"frees of <code>GSource</code>s."
-msgstr ""
-"Este tipo de fuente es útil para transferir de manera eficiente un gran "
-"número de mensajes entre contextos principales. LA alternativa es transferir "
-"cada mensaje en una <code>GSource</code> libre separada, usando "
-"<code>g_source_attach()</code>. Para un gran número de mensajes esto implica "
-"reservar y liberar muchas <code>GSource</code>."
-
-#. (itstool) path: section/title
-#: C/custom-gsource.c.page:78
-msgid "Structure"
-msgstr "Estructura"
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:80
-msgid ""
-"Firstly, a structure for the source needs to be declared. This must contain "
-"a <code>GSource</code> as its parent, followed by the private fields for the "
-"source: the queue and a function to call to free each message once finished "
-"with."
-msgstr ""
-"Primero se debe declarar una estructura para la fuente. Esta debe contener "
-"una <code>GSource</code> como su padre, seguida de los campos privados para "
-"la fuente: la cola y una función para llamar a cada mensaje libre cuando "
-"termine con él."
-
-#. (itstool) path: section/code
-#: C/custom-gsource.c.page:86
-#, no-wrap
-msgid ""
-"\n"
-"typedef struct {\n"
-" GSource parent;\n"
-" GAsyncQueue *queue; /* owned */\n"
-" GDestroyNotify destroy_message;\n"
-"} MessageQueueSource;"
-msgstr ""
-"\n"
-"typedef struct {\n"
-" GSource parent;\n"
-" GAsyncQueue *queue; /* owned */\n"
-" GDestroyNotify destroy_message;\n"
-"} MessageQueueSource;"
-
-#. (itstool) path: section/title
-#: C/custom-gsource.c.page:95
-msgid "Prepare Function"
-msgstr "Función de preparación"
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:97
-msgid ""
-"Next, the prepare function for the source must be defined. This determines "
-"whether the source is ready to be dispatched. As this source is using an in-"
-"memory queue, this can be determined by checking the queue’s length: if "
-"there are elements in the queue, the source can be dispatched to handle them."
-msgstr ""
-"Lo siguiente es definir la función de preparación para la fuente. Esto "
-"determina si la fuente está lista para servirse. Dado que esta fuente usa "
-"una cola en memoria, se puede determinar comprobando la longitud de la cola: "
-"si hay elementos en la cola, se puede usar la fuente para gestionarlos."
-
-#. (itstool) path: section/code
-#: C/custom-gsource.c.page:104
-#, no-wrap
-msgid ""
-"\n"
-"return (g_async_queue_length (message_queue_source->queue) > 0);"
-msgstr ""
-"\n"
-"return (g_async_queue_length (message_queue_source->queue) > 0);"
-
-#. (itstool) path: section/title
-#: C/custom-gsource.c.page:109
-msgid "Check Function"
-msgstr "Función de comprobación"
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:111
-msgid ""
-"As this source has no file descriptors, the prepare and check functions "
-"essentially have the same job, so a check function is not needed. Setting "
-"the field to <code>NULL</code> in <code>GSourceFuncs</code> bypasses the "
-"check function for this source type."
-msgstr ""
-"Como esta fuente no tiene descriptores de archivos, las funciones de "
-"preparación y comprobación tienen esencialmente el mismo trabajo, por lo que "
-"no se necesita la función de comprobación. Establecer el campo a <code>NULL</"
-"code> en <code>GSourceFuncs</code> evita la función de comprobación para "
-"este tipo de fuente."
-
-#. (itstool) path: section/title
-#: C/custom-gsource.c.page:120
-msgid "Dispatch Function"
-msgstr "Función de gestión"
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:122
-msgid ""
-"For this source, the dispatch function is where the complexity lies. It "
-"needs to dequeue a message from the queue, then pass that message to the "
-"<code>GSource</code>’s callback function. No messages may be queued: even "
-"through the prepare function returned true, another source wrapping the same "
-"queue may have been dispatched in the mean time and taken the final message "
-"from the queue. Further, if no callback has been set for the <code>GSource</"
-"code> (which is allowed), the message must be destroyed and silently dropped."
-msgstr ""
-"Para esta fuente, es en la función de gestión donde reside la complejidad. "
-"Debe sacar de la cola un mensaje y pasarlo a la función de retorno de "
-"llamada de la <code>GSource</code>. No se deben quedar mensajes en la cola: "
-"aunque la función devuelva verdadero, otra fuente que abstraiga la misma "
-"cola se puede haber gestionado en este tiempo y haber tomado el mensaje "
-"final de la cola. Además, si no se ha establecido una función de retorno de "
-"llamada para la <code>GSource</code> (algo que está permitido), el mensaje "
-"puede destruirse y descartarse silenciosamente."
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:133
-msgid ""
-"If both a message and callback are set, the callback can be invoked on the "
-"message and its return value propagated as the return value of the dispatch "
-"function. This is <code>FALSE</code> to destroy the <code>GSource</code> and "
-"<code>TRUE</code> to keep it alive, just as for <code>GSourceFunc</code> — "
-"these semantics are the same for all dispatch function implementations."
-msgstr ""
-"Si se han definido el mensaje y la función de retorno de llamada, se puede "
-"llamar a esta última sobre el mensaje y devolverá el valor propagado como "
-"valor de retorno de la función de gestión. Este es <code>FALSE</code> para "
-"destruir la <code>GSource</code> y <code>TRUE</code> para mantenerla, igual "
-"que para <code>GSourceFunc</code>: estas consideraciones semánticas son las "
-"mismas para todas las implementaciones de las funciones de gestión."
-
-#. (itstool) path: section/code
-#: C/custom-gsource.c.page:141
-#, no-wrap
-msgid ""
-"\n"
-"/* Pop a message off the queue. */\n"
-"message = g_async_queue_try_pop (message_queue_source->queue);\n"
-"\n"
-"/* If there was no message, bail. */\n"
-"if (message == NULL)\n"
-" {\n"
-" /* Keep the source around to handle the next message. */\n"
-" return TRUE;\n"
-" }\n"
-"\n"
-"/* @func may be %NULL if no callback was specified.\n"
-" * If so, drop the message. */\n"
-"if (func == NULL)\n"
-" {\n"
-" if (message_queue_source->destroy_message != NULL)\n"
-" {\n"
-" message_queue_source->destroy_message (message);\n"
-" }\n"
-"\n"
-" /* Keep the source around to consume the next message. */\n"
-" return TRUE;\n"
-" }\n"
-"\n"
-"return func (message, user_data);"
-msgstr ""
-"\n"
-"/* Pop a message off the queue. */\n"
-"message = g_async_queue_try_pop (message_queue_source->queue);\n"
-"\n"
-"/* If there was no message, bail. */\n"
-"if (message == NULL)\n"
-" {\n"
-" /* Keep the source around to handle the next message. */\n"
-" return TRUE;\n"
-" }\n"
-"\n"
-"/* @func may be %NULL if no callback was specified.\n"
-" * If so, drop the message. */\n"
-"if (func == NULL)\n"
-" {\n"
-" if (message_queue_source->destroy_message != NULL)\n"
-" {\n"
-" message_queue_source->destroy_message (message);\n"
-" }\n"
-"\n"
-" /* Keep the source around to consume the next message. */\n"
-" return TRUE;\n"
-" }\n"
-"\n"
-"return func (message, user_data);"
-
-#. (itstool) path: section/title
-#: C/custom-gsource.c.page:169
-msgid "Callback Functions"
-msgstr "Funciones de retorno de llamada"
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:171
-msgid ""
-"The callback from a <code>GSource</code> does not have to have type "
-"<code>GSourceFunc</code>. It can be whatever function type is called in the "
-"source’s dispatch function, as long as that type is sufficiently documented."
-msgstr ""
-"La función de retorno de llamada de una <code>GSource</code> no tiene que "
-"tener un tipo <code>GSourceFunc</code>. Puede ser una función de cualquier "
-"tipo a la que se llame en la función de gestión de la fuente, ya que este "
-"tipo está suficientemente documentado."
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:178
-msgid ""
-"Normally, <code>g_source_set_callback()</code> is used to set the callback "
-"function for a source instance. With its <code>GDestroyNotify</code>, a "
-"strong reference can be held to keep an object alive while the source is "
-"still alive:"
-msgstr ""
-"Normalmente se usa <code>g_source_set_callback()</code> para configurar la "
-"función de retorno de llamada para una instancia de una fuente. Cuando es "
-"<code>GDestroyNotify</code> se hace una referencia fuerte para mantener vivo "
-"un objeto mientras la fuente sigue viva:"
-
-#. (itstool) path: section/code
-#: C/custom-gsource.c.page:184
-#, no-wrap
-msgid ""
-"\n"
-"g_source_set_callback (source, callback_func,\n"
-" g_object_ref (object_to_strong_ref),\n"
-" (GDestroyNotify) g_object_unref);"
-msgstr ""
-"\n"
-"g_source_set_callback (source, callback_func,\n"
-" g_object_ref (object_to_strong_ref),\n"
-" (GDestroyNotify) g_object_unref);"
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:189
-msgid ""
-"However, <code>GSource</code> has a layer of indirection for retrieving this "
-"callback, exposed as <code>g_source_set_callback_indirect()</code>. This "
-"allows GObject to set a <code>GClosure</code> as the callback for a source, "
-"which allows for sources which are automatically destroyed when an object is "
-"finalized — a <em>weak</em> reference, in contrast to the <em>strong</em> "
-"reference above:"
-msgstr ""
-"Sin embargo, <code>GSource</code> tiene una capa de indirección para obtener "
-"esta función de retorno de llamada, disponible mediante "
-"<code>g_source_set_callback_indirect()</code>. Esto permite a GObject "
-"establecer una <code>GClosure</code> como función de retorno de llamada de "
-"una fuente, lo que permite que las fuentes se destruyan automáticamente "
-"cuando un objeto termina: una referencia <em>débil</em>, en contraste con la "
-"referencia <em>fuerte</em> mencionada anteriormente:"
-
-#. (itstool) path: section/code
-#: C/custom-gsource.c.page:197
-#, no-wrap
-msgid ""
-"\n"
-"g_source_set_closure (source,\n"
-" g_cclosure_new_object (callback_func,\n"
-" object_to_weak_ref));"
-msgstr ""
-"\n"
-"g_source_set_closure (source,\n"
-" g_cclosure_new_object (callback_func,\n"
-" object_to_weak_ref));"
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:202
-msgid ""
-"It also allows for a generic, closure-based ‘dummy’ callback, which can be "
-"used when a source needs to exist but no action needs to be performed in its "
-"callback:"
-msgstr ""
-"También permite una función de retorno de llamada «tonta» basada en el "
-"cierre, que se puede usar cuando una fuente debe existir pero no se necesita "
-"realizar ninguna acción en su retorno:"
-
-#. (itstool) path: section/code
-#: C/custom-gsource.c.page:207
-#, no-wrap
-msgid ""
-"\n"
-"g_source_set_dummy_callback (source);"
-msgstr ""
-"\n"
-"g_source_set_dummy_callback (source);"
-
-#. (itstool) path: section/title
-#: C/custom-gsource.c.page:212
-msgid "Constructor"
-msgstr "Constructor"
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:214
-msgid ""
-"Finally, the <code>GSourceFuncs</code> definition of the <code>GSource</"
-"code> can be written, alongside a construction function. It is typical "
-"practice to expose new source types simply as <code>GSource</code>s, not as "
-"the subtype structure; so the constructor returns a <code>GSource*</code>."
-msgstr ""
-"Finalmente se puede escribir la definición de las <code>GSourceFuncs</code> "
-"de la <code>GSource</code> junto con la función de construcción de las "
-"<code>GSource</code>. Normalmente es práctico exponer los nuevos tipos de "
-"fuentes como <code>GSource</code> y no como el subtipo de la estructura; de "
-"este modo, el constructor devuelve un <code>GSource*</code>."
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:222
-msgid ""
-"The example constructor here also demonstrates use of a child source to "
-"support cancellation conveniently. If the <code>GCancellable</code> is "
-"cancelled, the application’s callback will be dispatched and can check for "
-"cancellation. (The application code will need to make a pointer to the "
-"<code>GCancellable</code> available to its callback, as a field of the "
-"callback’s user data set in <code>g_source_set_callback()</code>)."
-msgstr ""
-"Aquí el constructor de ejemplo también muestra el uso de una fuente hija "
-"para soportar la cancelación adecuadamente. Si se cancela la "
-"<code>GCancellable</code> se gestiona el retorno de la aplicación y se puede "
-"comprobar la cancelación. (El código de la aplicación deberá crear un "
-"puntero a la <code>GCancellable</code> disponible para la función de "
-"retorno, como un campo de los datos de usuario de la función de retorno "
-"configurada en <code>g_source_set_callback()</code>)."
-
-#. (itstool) path: section/code
-#: C/custom-gsource.c.page:230
-#, no-wrap
-msgid ""
-"\n"
-"GSource *\n"
-"message_queue_source_new (GAsyncQueue *queue,\n"
-" GDestroyNotify destroy_message,\n"
-" GCancellable *cancellable)\n"
-"{\n"
-" GSource *source; /* alias of @message_queue_source */\n"
-" MessageQueueSource *message_queue_source; /* alias of @source */\n"
-"\n"
-" g_return_val_if_fail (queue != NULL, NULL);\n"
-" g_return_val_if_fail (cancellable == NULL ||\n"
-" G_IS_CANCELLABLE (cancellable), NULL);\n"
-"\n"
-" source = g_source_new (&message_queue_source_funcs,\n"
-" sizeof (MessageQueueSource));\n"
-" message_queue_source = (MessageQueueSource *) source;\n"
-"\n"
-" /* The caller can overwrite this name with something more useful later. */\n"
-" g_source_set_name (source, \"MessageQueueSource\");\n"
-"\n"
-" message_queue_source->queue = g_async_queue_ref (queue);\n"
-" message_queue_source->destroy_message = destroy_message;\n"
-"\n"
-" /* Add a cancellable source. */\n"
-" if (cancellable != NULL)\n"
-" {\n"
-" GSource *cancellable_source;\n"
-"\n"
-" cancellable_source = g_cancellable_source_new (cancellable);\n"
-" g_source_set_dummy_callback (cancellable_source);\n"
-" g_source_add_child_source (source, cancellable_source);\n"
-" g_source_unref (cancellable_source);\n"
-" }\n"
-"\n"
-" return source;\n"
-"}"
-msgstr ""
-"\n"
-"GSource *\n"
-"message_queue_source_new (GAsyncQueue *queue,\n"
-" GDestroyNotify destroy_message,\n"
-" GCancellable *cancellable)\n"
-"{\n"
-" GSource *source; /* alias of @message_queue_source */\n"
-" MessageQueueSource *message_queue_source; /* alias of @source */\n"
-"\n"
-" g_return_val_if_fail (queue != NULL, NULL);\n"
-" g_return_val_if_fail (cancellable == NULL ||\n"
-" G_IS_CANCELLABLE (cancellable), NULL);\n"
-"\n"
-" source = g_source_new (&message_queue_source_funcs,\n"
-" sizeof (MessageQueueSource));\n"
-" message_queue_source = (MessageQueueSource *) source;\n"
-"\n"
-" /* The caller can overwrite this name with something more useful later. */\n"
-" g_source_set_name (source, \"MessageQueueSource\");\n"
-"\n"
-" message_queue_source->queue = g_async_queue_ref (queue);\n"
-" message_queue_source->destroy_message = destroy_message;\n"
-"\n"
-" /* Add a cancellable source. */\n"
-" if (cancellable != NULL)\n"
-" {\n"
-" GSource *cancellable_source;\n"
-"\n"
-" cancellable_source = g_cancellable_source_new (cancellable);\n"
-" g_source_set_dummy_callback (cancellable_source);\n"
-" g_source_add_child_source (source, cancellable_source);\n"
-" g_source_unref (cancellable_source);\n"
-" }\n"
-"\n"
-" return source;\n"
-"}"
-
-#. (itstool) path: section/title
-#: C/custom-gsource.c.page:270
-msgid "Complete Example"
-msgstr "Ejemplo completo"
-
-#. (itstool) path: listing/title
-#: C/custom-gsource.c.page:273
-msgid "Complete Example Code"
-msgstr "Código de ejemplo completo"
-
-#. (itstool) path: listing/code
-#: C/custom-gsource.c.page:275
-#, no-wrap
-msgid ""
-"/**\n"
-" * MessageQueueSource:\n"
-" *\n"
-" * This is a #GSource which wraps a #GAsyncQueue and is dispatched whenever a\n"
-" * message can be pulled off the queue. Messages can be enqueued from any\n"
-" * thread.\n"
-" *\n"
-" * The callbacks dispatched by a #MessageQueueSource have type\n"
-" * #MessageQueueSourceFunc.\n"
-" *\n"
-" * #MessageQueueSource supports adding a #GCancellable child source which will\n"
-" * additionally dispatch if a provided #GCancellable is cancelled.\n"
-" */\n"
-"typedef struct {\n"
-" GSource parent;\n"
-" GAsyncQueue *queue; /* owned */\n"
-" GDestroyNotify destroy_message;\n"
-"} MessageQueueSource;\n"
-"\n"
-"/**\n"
-" * MessageQueueSourceFunc:\n"
-" * @message: (transfer full) (nullable): message pulled off the queue\n"
-" * @user_data: user data provided to g_source_set_callback()\n"
-" *\n"
-" * Callback function type for #MessageQueueSource.\n"
-" */\n"
-"typedef gboolean (*MessageQueueSourceFunc) (gpointer message,\n"
-" gpointer user_data);\n"
-"\n"
-"static gboolean\n"
-"message_queue_source_prepare (GSource *source,\n"
-" gint *timeout_)\n"
-"{\n"
-" MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n"
-"\n"
-" return (g_async_queue_length (message_queue_source->queue) > 0);\n"
-"}\n"
-"\n"
-"static gboolean\n"
-"message_queue_source_dispatch (GSource *source,\n"
-" GSourceFunc callback,\n"
-" gpointer user_data)\n"
-"{\n"
-" MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n"
-" gpointer message;\n"
-" MessageQueueSourceFunc func = (MessageQueueSourceFunc) callback;\n"
-"\n"
-" /* Pop a message off the queue. */\n"
-" message = g_async_queue_try_pop (message_queue_source->queue);\n"
-"\n"
-" /* If there was no message, bail. */\n"
-" if (message == NULL)\n"
-" {\n"
-" /* Keep the source around to handle the next message. */\n"
-" return TRUE;\n"
-" }\n"
-"\n"
-" /* @func may be %NULL if no callback was specified.\n"
-" * If so, drop the message. */\n"
-" if (func == NULL)\n"
-" {\n"
-" if (message_queue_source->destroy_message != NULL)\n"
-" {\n"
-" message_queue_source->destroy_message (message);\n"
-" }\n"
-"\n"
-" /* Keep the source around to consume the next message. */\n"
-" return TRUE;\n"
-" }\n"
-"\n"
-" return func (message, user_data);\n"
-"}\n"
-"\n"
-"static void\n"
-"message_queue_source_finalize (GSource *source)\n"
-"{\n"
-" MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n"
-"\n"
-" g_async_queue_unref (message_queue_source->queue);\n"
-"}\n"
-"\n"
-"static gboolean\n"
-"message_queue_source_closure_callback (gpointer message,\n"
-" gpointer user_data)\n"
-"{\n"
-" GClosure *closure = user_data;\n"
-" GValue param_value = G_VALUE_INIT;\n"
-" GValue result_value = G_VALUE_INIT;\n"
-" gboolean retval;\n"
-"\n"
-" /* The invoked function is responsible for freeing @message. */\n"
-" g_value_init (&result_value, G_TYPE_BOOLEAN);\n"
-" g_value_init (&param_value, G_TYPE_POINTER);\n"
-" g_value_set_pointer (&param_value, message);\n"
-"\n"
-" g_closure_invoke (closure, &result_value, 1, &param_value, NULL);\n"
-" retval = g_value_get_boolean (&result_value);\n"
-"\n"
-" g_value_unset (&param_value);\n"
-" g_value_unset (&result_value);\n"
-"\n"
-" return retval;\n"
-"}\n"
-"\n"
-"static GSourceFuncs message_queue_source_funcs =\n"
-" {\n"
-" message_queue_source_prepare,\n"
-" NULL, /* check */\n"
-" message_queue_source_dispatch,\n"
-" message_queue_source_finalize,\n"
-" (GSourceFunc) message_queue_source_closure_callback,\n"
-" NULL,\n"
-" };\n"
-"\n"
-"/**\n"
-" * message_queue_source_new:\n"
-" * @queue: the queue to check\n"
-" * @destroy_message: (nullable): function to free a message, or %NULL\n"
-" * @cancellable: (nullable): a #GCancellable, or %NULL\n"
-" *\n"
-" * Create a new #MessageQueueSource, a type of #GSource which dispatches for\n"
-" * each message queued to it.\n"
-" *\n"
-" * If a callback function of type #MessageQueueSourceFunc is connected to the\n"
-" * returned #GSource using g_source_set_callback(), it will be invoked for each\n"
-" * message, with the message passed as its first argument. It is responsible for\n"
-" * freeing the message. If no callback is set, messages are automatically freed\n"
-" * as they are queued.\n"
-" *\n"
-" * Returns: (transfer full): a new #MessageQueueSource\n"
-" */\n"
-"GSource *\n"
-"message_queue_source_new (GAsyncQueue *queue,\n"
-" GDestroyNotify destroy_message,\n"
-" GCancellable *cancellable)\n"
-"{\n"
-" GSource *source; /* alias of @message_queue_source */\n"
-" MessageQueueSource *message_queue_source; /* alias of @source */\n"
-"\n"
-" g_return_val_if_fail (queue != NULL, NULL);\n"
-" g_return_val_if_fail (cancellable == NULL ||\n"
-" G_IS_CANCELLABLE (cancellable), NULL);\n"
-"\n"
-" source = g_source_new (&message_queue_source_funcs,\n"
-" sizeof (MessageQueueSource));\n"
-" message_queue_source = (MessageQueueSource *) source;\n"
-"\n"
-" /* The caller can overwrite this name with something more useful later. */\n"
-" g_source_set_name (source, \"MessageQueueSource\");\n"
-"\n"
-" message_queue_source->queue = g_async_queue_ref (queue);\n"
-" message_queue_source->destroy_message = destroy_message;\n"
-"\n"
-" /* Add a cancellable source. */\n"
-" if (cancellable != NULL)\n"
-" {\n"
-" GSource *cancellable_source;\n"
-"\n"
-" cancellable_source = g_cancellable_source_new (cancellable);\n"
-" g_source_set_dummy_callback (cancellable_source);\n"
-" g_source_add_child_source (source, cancellable_source);\n"
-" g_source_unref (cancellable_source);\n"
-" }\n"
-"\n"
-" return source;\n"
-"}\n"
-msgstr ""
-"/**\n"
-" * MessageQueueSource:\n"
-" *\n"
-" * This is a #GSource which wraps a #GAsyncQueue and is dispatched whenever a\n"
-" * message can be pulled off the queue. Messages can be enqueued from any\n"
-" * thread.\n"
-" *\n"
-" * The callbacks dispatched by a #MessageQueueSource have type\n"
-" * #MessageQueueSourceFunc.\n"
-" *\n"
-" * #MessageQueueSource supports adding a #GCancellable child source which will\n"
-" * additionally dispatch if a provided #GCancellable is cancelled.\n"
-" */\n"
-"typedef struct {\n"
-" GSource parent;\n"
-" GAsyncQueue *queue; /* owned */\n"
-" GDestroyNotify destroy_message;\n"
-"} MessageQueueSource;\n"
-"\n"
-"/**\n"
-" * MessageQueueSourceFunc:\n"
-" * @message: (transfer full) (nullable): message pulled off the queue\n"
-" * @user_data: user data provided to g_source_set_callback()\n"
-" *\n"
-" * Callback function type for #MessageQueueSource.\n"
-" */\n"
-"typedef gboolean (*MessageQueueSourceFunc) (gpointer message,\n"
-" gpointer user_data);\n"
-"\n"
-"static gboolean\n"
-"message_queue_source_prepare (GSource *source,\n"
-" gint *timeout_)\n"
-"{\n"
-" MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n"
-"\n"
-" return (g_async_queue_length (message_queue_source->queue) > 0);\n"
-"}\n"
-"\n"
-"static gboolean\n"
-"message_queue_source_dispatch (GSource *source,\n"
-" GSourceFunc callback,\n"
-" gpointer user_data)\n"
-"{\n"
-" MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n"
-" gpointer message;\n"
-" MessageQueueSourceFunc func = (MessageQueueSourceFunc) callback;\n"
-"\n"
-" /* Pop a message off the queue. */\n"
-" message = g_async_queue_try_pop (message_queue_source->queue);\n"
-"\n"
-" /* If there was no message, bail. */\n"
-" if (message == NULL)\n"
-" {\n"
-" /* Keep the source around to handle the next message. */\n"
-" return TRUE;\n"
-" }\n"
-"\n"
-" /* @func may be %NULL if no callback was specified.\n"
-" * If so, drop the message. */\n"
-" if (func == NULL)\n"
-" {\n"
-" if (message_queue_source->destroy_message != NULL)\n"
-" {\n"
-" message_queue_source->destroy_message (message);\n"
-" }\n"
-"\n"
-" /* Keep the source around to consume the next message. */\n"
-" return TRUE;\n"
-" }\n"
-"\n"
-" return func (message, user_data);\n"
-"}\n"
-"\n"
-"static void\n"
-"message_queue_source_finalize (GSource *source)\n"
-"{\n"
-" MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n"
-"\n"
-" g_async_queue_unref (message_queue_source->queue);\n"
-"}\n"
-"\n"
-"static gboolean\n"
-"message_queue_source_closure_callback (gpointer message,\n"
-" gpointer user_data)\n"
-"{\n"
-" GClosure *closure = user_data;\n"
-" GValue param_value = G_VALUE_INIT;\n"
-" GValue result_value = G_VALUE_INIT;\n"
-" gboolean retval;\n"
-"\n"
-" /* The invoked function is responsible for freeing @message. */\n"
-" g_value_init (&result_value, G_TYPE_BOOLEAN);\n"
-" g_value_init (&param_value, G_TYPE_POINTER);\n"
-" g_value_set_pointer (&param_value, message);\n"
-"\n"
-" g_closure_invoke (closure, &result_value, 1, &param_value, NULL);\n"
-" retval = g_value_get_boolean (&result_value);\n"
-"\n"
-" g_value_unset (&param_value);\n"
-" g_value_unset (&result_value);\n"
-"\n"
-" return retval;\n"
-"}\n"
-"\n"
-"static GSourceFuncs message_queue_source_funcs =\n"
-" {\n"
-" message_queue_source_prepare,\n"
-" NULL, /* check */\n"
-" message_queue_source_dispatch,\n"
-" message_queue_source_finalize,\n"
-" (GSourceFunc) message_queue_source_closure_callback,\n"
-" NULL,\n"
-" };\n"
-"\n"
-"/**\n"
-" * message_queue_source_new:\n"
-" * @queue: the queue to check\n"
-" * @destroy_message: (nullable): function to free a message, or %NULL\n"
-" * @cancellable: (nullable): a #GCancellable, or %NULL\n"
-" *\n"
-" * Create a new #MessageQueueSource, a type of #GSource which dispatches for\n"
-" * each message queued to it.\n"
-" *\n"
-" * If a callback function of type #MessageQueueSourceFunc is connected to the\n"
-" * returned #GSource using g_source_set_callback(), it will be invoked for each\n"
-" * message, with the message passed as its first argument. It is responsible for\n"
-" * freeing the message. If no callback is set, messages are automatically freed\n"
-" * as they are queued.\n"
-" *\n"
-" * Returns: (transfer full): a new #MessageQueueSource\n"
-" */\n"
-"GSource *\n"
-"message_queue_source_new (GAsyncQueue *queue,\n"
-" GDestroyNotify destroy_message,\n"
-" GCancellable *cancellable)\n"
-"{\n"
-" GSource *source; /* alias of @message_queue_source */\n"
-" MessageQueueSource *message_queue_source; /* alias of @source */\n"
-"\n"
-" g_return_val_if_fail (queue != NULL, NULL);\n"
-" g_return_val_if_fail (cancellable == NULL ||\n"
-" G_IS_CANCELLABLE (cancellable), NULL);\n"
-"\n"
-" source = g_source_new (&message_queue_source_funcs,\n"
-" sizeof (MessageQueueSource));\n"
-" message_queue_source = (MessageQueueSource *) source;\n"
-"\n"
-" /* The caller can overwrite this name with something more useful later. */\n"
-" g_source_set_name (source, \"MessageQueueSource\");\n"
-"\n"
-" message_queue_source->queue = g_async_queue_ref (queue);\n"
-" message_queue_source->destroy_message = destroy_message;\n"
-"\n"
-" /* Add a cancellable source. */\n"
-" if (cancellable != NULL)\n"
-" {\n"
-" GSource *cancellable_source;\n"
-"\n"
-" cancellable_source = g_cancellable_source_new (cancellable);\n"
-" g_source_set_dummy_callback (cancellable_source);\n"
-" g_source_add_child_source (source, cancellable_source);\n"
-" g_source_unref (cancellable_source);\n"
-" }\n"
-"\n"
-" return source;\n"
-"}\n"
-
-#. (itstool) path: section/title
-#: C/custom-gsource.c.page:282
-msgid "Further Examples"
-msgstr "Ejemplos adicionales"
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:284
-msgid ""
-"Sources can be more complex than the example given above. In <link href="
-"\"http://nice.freedesktop.org/\">libnice</link>, a custom <code>GSource</"
-"code> is needed to poll a set of sockets which changes dynamically. The "
-"implementation is given as <code>ComponentSource</code> in <link href="
-"\"http://cgit.freedesktop.org/libnice/libnice/tree/agent/component.c#n941"
-"\">component.c</link> and demonstrates a more complex use of the prepare "
-"function."
-msgstr ""
-"Las fuentes pueden ser más complejas que las dadas en el ejemplo anterior. "
-"En <link href=\"http://nice.freedesktop.org/\">libnice</link>, se necesita "
-"una <code>GSource</code> personalizada para sondear un conjunto de sockets "
-"que cambia dinámicamente. La implementación se da como "
-"<code>ComponentSource</code> en <link href=\"http://cgit.freedesktop.org/"
-"libnice/libnice/tree/agent/component.c#n941\">component.c</link> y muestra "
-"un uso más complejo de la función de preparación."
-
-#. (itstool) path: section/p
-#: C/custom-gsource.c.page:293
-msgid ""
-"Another example is a custom source to interface GnuTLS with GLib in its "
-"<code>GTlsConnection</code> implementation. <link href=\"https://git.gnome."
-"org/browse/glib-networking/tree/tls/gnutls/gtlsconnection-gnutls.c#n871"
-"\"><code>GTlsConnectionGnutlsSource</code></link> synchronizes the main "
-"thread and a TLS worker thread which performs the blocking TLS operations."
-msgstr ""
-"Otro ejemplo es una fuente personalizada para que sirva de interfaz de "
-"GnuTLS con GLib en su implementación de <code>GTlsConnection</code>. <link "
-"href=\"https://git.gnome.org/browse/glib-networking/tree/tls/gnutls/"
-"gtlsconnection-gnutls.c#n871\"><code>GTlsConnectionGnutlsSource</code></"
-"link> sincroniza el hilo principal y un hilo trabajador TLS que realiza las "
-"operaciones de bloqueo de TLS."
-
-#~ msgid "autohen.sh"
-#~ msgstr "autohen.sh"
-
-#~ msgctxt "text"
-#~ msgid "Tutorial for beginners (C)"
-#~ msgstr "Tutorial para principiantes (C)"
-
-#~ msgid "The C programming language"
-#~ msgstr "El lenguaje de programación C:"
-
-#~ msgid "Tutorials, code samples and plaform demos in C"
-#~ msgstr ""
-#~ "Tutoriales, ejemplos de código y demostraciones de la plataforma en C"
-
-#~| msgid "create a small \"Hello, World\" application using GTK+"
-#~ msgid "Writing a Hello World application in C with GTK+ 3."
-#~ msgstr "Escribir una pequeña aplicación «Hola, mundo» en C con GTK+"
-
-#~ msgid "#include <gtk/gtk.h>\n"
-#~ msgstr "#include <gtk/gtk.h>\n"
-
-#~ msgid ""
-#~ "static void\n"
-#~ "activate (GtkApplication* app,\n"
-#~ " gpointer user_data)\n"
-#~ "{\n"
-#~ " GtkWidget *window;\n"
-#~ "\n"
-#~ " window = gtk_application_window_new (app);\n"
-#~ " gtk_window_set_title (GTK_WINDOW (window), \"Hello World\");\n"
-#~ " gtk_window_set_default_size (GTK_WINDOW (window), 200, 100);\n"
-#~ " gtk_widget_show_all (window);\n"
-#~ "}\n"
-#~ msgstr ""
-#~ "static void\n"
-#~ "activate (GtkApplication* app,\n"
-#~ " gpointer user_data)\n"
-#~ "{\n"
-#~ " GtkWidget *window;\n"
-#~ "\n"
-#~ " window = gtk_application_window_new (app);\n"
-#~ " gtk_window_set_title (GTK_WINDOW (window), \"Hello World\");\n"
-#~ " gtk_window_set_default_size (GTK_WINDOW (window), 200, 100);\n"
-#~ " gtk_widget_show_all (window);\n"
-#~ "}\n"
-
-#~ msgid ""
-#~ "We can start building our first window. We do this by creating a variable "
-#~ "called <var>window</var> and assigning it a gtk_application_window_new"
-#~ msgstr ""
-#~ "Se puede empezar a construir la primera ventana. Esto se hace creando una "
-#~ "variable llamada <var>window</var> y asignándole una "
-#~ "gtk_application_window_new"
-
-#~ msgid ""
-#~ "The window title can be any string you want it to be. To be on the safe "
-#~ "side, it's best to stick to UTF-8 encoding."
-#~ msgstr ""
-#~ "El título de la ventana puede ser la cadena que quiera pero, para estar "
-#~ "seguro, es conveniente que tenga una codificación UTF-8."
-
-#~ msgid ""
-#~ "GtkWidget *label;\n"
-#~ "\n"
-#~ " label = gtk_label_new (\"Hello World!\");\n"
-#~ " gtk_container_add (GTK_CONTAINER (window), label);\n"
-#~ msgstr ""
-#~ "GtkWidget *label;\n"
-#~ "\n"
-#~ " label = gtk_label_new (\"Hello World!\");\n"
-#~ " gtk_container_add (GTK_CONTAINER (window), label);\n"
-
-#~ msgid ""
-#~ "int\n"
-#~ "main (int argc,\n"
-#~ " char **argv)\n"
-#~ "{\n"
-#~ " GtkApplication *app;\n"
-#~ " int status;\n"
-#~ "\n"
-#~ " app = gtk_application_new (NULL, G_APPLICATION_FLAGS_NONE);\n"
-#~ " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-#~ " status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-#~ " g_object_unref (app);\n"
-#~ "\n"
-#~ " return status;\n"
-#~ "}"
-#~ msgstr ""
-#~ "int\n"
-#~ "main (int argc,\n"
-#~ " char **argv)\n"
-#~ "{\n"
-#~ " GtkApplication *app;\n"
-#~ " int status;\n"
-#~ "\n"
-#~ " app = gtk_application_new (NULL, G_APPLICATION_FLAGS_NONE);\n"
-#~ " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
-#~ " status = g_application_run (G_APPLICATION (app), argc, argv);\n"
-#~ " g_object_unref (app);\n"
-#~ "\n"
-#~ " return status;\n"
-#~ "}"
-
-#~ msgid ""
-#~ "GtkApplicationWindow can only hold one widget at a time. To construct "
-#~ "more elaborate programs you need to create a holder widget like GtkGrid "
-#~ "inside the window, and then add all the other widgets to it."
-#~ msgstr ""
-#~ "«GtkApplicationWindow» sólo puede contener un widget a la vez. Para "
-#~ "construir programas más elaborados necesita crear un widget contenedor "
-#~ "como «GtkGrid» dentro de la ventana, y después añadirle los otros."
-
-#~ msgid "hello-world.c"
-#~ msgstr "hello-world.c"
-
-#~ msgid ""
-#~ "To run this application, first save it as hello-world.c. Then open "
-#~ "Terminal, go to the folder where your application is stored."
-#~ msgstr ""
-#~ "Para ejecutar esta aplicación, primero guárdela como «hello-world.c». "
-#~ "Luego, vaya a la carpeta donde está la aplicación."
-
-#~ msgid ""
-#~ "gcc <var>hello-world</var>.c `pkg-config --cflags --libs gtk+-3.0` -o "
-#~ "<var>hello-world</var>"
-#~ msgstr ""
-#~ "gcc <var>hello-world</var>.c `pkg-config --cflags --libs gtk+-3.0` -o "
-#~ "<var>hello-world</var>"
-
-#~ msgid ""
-#~ "# The actual runnable program is set to the SCRIPTS primitive.\n"
-#~ "# # Prefix bin_ tells where to copy this\n"
-#~ "bin_PROGRAMS = hello-world\n"
-#~ "hello_world_CFLAGS = $(gtk_CFLAGS)\n"
-#~ "hello_world_LDADD = $(gtk_LIBS)\n"
-#~ "hello_world_SOURCES = hello-world.c\n"
-#~ "\n"
-#~ "desktopdir = $(datadir)/applications\n"
-#~ "desktop_DATA = \\\n"
-#~ "\thello-world.desktop\n"
-#~ msgstr ""
-#~ "# The actual runnable program is set to the SCRIPTS primitive.\n"
-#~ "# # Prefix bin_ tells where to copy this\n"
-#~ "bin_PROGRAMS = hello-world\n"
-#~ "hello_world_CFLAGS = $(gtk_CFLAGS)\n"
-#~ "hello_world_LDADD = $(gtk_LIBS)\n"
-#~ "hello_world_SOURCES = hello-world.c\n"
-#~ "\n"
-#~ "desktopdir = $(datadir)/applications\n"
-#~ "desktop_DATA = \\\n"
-#~ "\thello-world.desktop\n"
-
-#~ msgid ""
-#~ "To build and install this program:\n"
-#~ "\n"
-#~ "./autogen.sh --prefix=/home/your_username/.local\n"
-#~ "make\n"
-#~ "make install\n"
-#~ "\n"
-#~ "-------------\n"
-#~ "Running the first line above creates the following files:\n"
-#~ "\n"
-#~ "aclocal.m4\n"
-#~ "autom4te.cache\n"
-#~ "config.log\n"
-#~ "config.status\n"
-#~ "configure\n"
-#~ "depcomp\n"
-#~ "hello-world\n"
-#~ "hello-world.desktop\n"
-#~ "hello_world-hello-world.o\n"
-#~ "install-sh\n"
-#~ "missing\n"
-#~ "Makefile.in\n"
-#~ "Makefile\n"
-#~ "\n"
-#~ "Running \"make\" links all the appropriate libraries.\n"
-#~ "\n"
-#~ "Running \"make install\", installs the application in /home/"
-#~ "your_username/.local/bin\n"
-#~ "and installs the hello-world.desktop file in /home/your_username/.local/"
-#~ "share/applications\n"
-#~ "\n"
-#~ "You can now run the application by typing \"Hello World\" in the "
-#~ "Overview.\n"
-#~ "\n"
-#~ "----------------\n"
-#~ "To uninstall, type:\n"
-#~ "\n"
-#~ "make uninstall\n"
-#~ "\n"
-#~ "----------------\n"
-#~ "To create a tarball type:\n"
-#~ "\n"
-#~ "make distcheck\n"
-#~ "\n"
-#~ "This will create hello-world-1.0.tar.xz\n"
-#~ msgstr ""
-#~ "Para construir y ejecutar este programa:\n"
-#~ "\n"
-#~ "./autogen.sh --prefix=/home/usuario/.local\n"
-#~ "make\n"
-#~ "make install\n"
-#~ "\n"
-#~ "-------------\n"
-#~ "Al ejecutar la primera línea se crean los siguientes archivos:\n"
-#~ "\n"
-#~ "aclocal.m4\n"
-#~ "autom4te.cache\n"
-#~ "config.log\n"
-#~ "config.status\n"
-#~ "configure\n"
-#~ "depcomp\n"
-#~ "hello-world\n"
-#~ "hello-world.desktop\n"
-#~ "hello_world-hello-world.o\n"
-#~ "install-sh\n"
-#~ "missing\n"
-#~ "Makefile.in\n"
-#~ "Makefile\n"
-#~ "\n"
-#~ "Al ejecutar «make» se enlazan todas las bibliotecas necesarias.\n"
-#~ "\n"
-#~ "Al ejecutar «make install», la aplicación se instala en /home/usuario/."
-#~ "local/bin\n"
-#~ "y se crear un archivo hello-world.desktop en /home/usuario/.local/share/"
-#~ "applications\n"
-#~ "\n"
-#~ "Ahora puede ejecutar la aplicación escribiendo «Hello World» en la vista "
-#~ "general.\n"
-#~ "\n"
-#~ "----------------\n"
-#~ "Para desinstalarla, escriba:\n"
-#~ "\n"
-#~ "make uninstall\n"
-#~ "\n"
-#~ "----------------\n"
-#~ "Para crear un archivador tar escriba:\n"
-#~ "\n"
-#~ "make distcheck\n"
-#~ "\n"
-#~ "Esto creará el archivo hello-world-1.0.tar.xz\n"
-
-#~ msgid "You can also use the Vala compiler to compile these samples:"
-#~ msgstr ""
-#~ "También puede usar el compilador de Vala para compilar estos ejemplos:"
-
-#~ msgid "valac --pkg gtk+-3.0 <var>filename</var>.c"
-#~ msgstr "valac --pkg gtk+-3.0 <var>nombre_archivo</var>.c"
-
-#~ msgid "To run:"
-#~ msgstr "Para ejecutarlos:"
-
-#~ msgid "Creative Commons Share Alike 3.0"
-#~ msgstr "Creative Commons Compartir Igual 3.0"
-
-#~ msgid "Help make <app>GNOME Developer Tutorials</app> better"
-#~ msgstr ""
-#~ "Ayudar a mejorar los <app>Tutoriales del desarrollador de GNOME</app>"
-
-#~ msgid "Report a bug or suggest an improvement"
-#~ msgstr "Informar de un error o proponer una mejora"
-
-#~ msgid ""
-#~ "<app>GNOME Developer Tutorials</app> are maintained by a volunteer "
-#~ "community. You are welcome to participate. If you notice a problem you "
-#~ "can file a <em>bug report</em>. To file a bug, go to <link href=\"https://"
-#~ "bugzilla.gnome.org/\"/>."
-#~ msgstr ""
-#~ "Los <app>Tutoriales del desarrollador de GNOME</app> los mantiene la "
-#~ "comunidad de manera voluntaria. Si quiere participar, es bienvenido. Si "
-#~ "encuentra un error, puede rellenar un <em>informe de error</em>. Para "
-#~ "informar de un error, vaya a <link href=\"https://bugzilla.gnome.org/\"/>."
-
-#~ msgid ""
-#~ "This is a bug tracking system where users and developers can file details "
-#~ "about bugs, crashes and request enhancements."
-#~ msgstr ""
-#~ "Este es el sistema de seguimiento de errores en el que los usuarios y los "
-#~ "desarrolladores pueden archivar detalles sobre los errores, fallos y "
-#~ "solicitudes de mejoras."
-
-#~ msgid ""
-#~ "To participate you need an account which will give you the ability to "
-#~ "gain access, file bugs, and make comments. Also, you need to register so "
-#~ "you can receive updates by e-mail about the status of your bug. If you "
-#~ "don't already have an account, just click on the <gui>New Account</gui> "
-#~ "link to create one."
-#~ msgstr ""
-#~ "Para participar necesita una cuenta, que le permitirá obtener acceso, "
-#~ "informar de errores y hacer comentarios. También debe registrarte para "
-#~ "poder recibir actualizaciones por correo-e sobre el estado de su informe "
-#~ "de error. Si todavía no tiene una cuenta, simplemente pulse en el enlace "
-#~ "<gui>New Account</gui> para crear una."
-
-#~ msgid ""
-#~ "Once you have an account, log in, click on <guiseq><gui>File a Bug</"
-#~ "gui><gui>All</gui><gui>gnome-devel-docs</gui></guiseq>. Before reporting "
-#~ "a bug, please read the <link href=\"https://bugzilla.gnome.org/page.cgi?"
-#~ "id=bug-writing.html\">bug writing guidelines</link>, and please <link "
-#~ "href=\"https://bugzilla.gnome.org/browse.cgi?product=gnome-games"
-#~ "\">browse</link> for the bug to see if it already exists."
-#~ msgstr ""
-#~ "Una vez que tenga su cuenta, inicie sesión y pulse en "
-#~ "<guiseq><gui>Informar de un error</gui><gui>Todas</gui><gui>gnome-devel-"
-#~ "docs</gui></guiseq>. Antes de informar de un error, lea las <link href="
-#~ "\"https://bugzilla.gnome.org/page.cgi?id=bug-writing.html\">guías para "
-#~ "informar de un error</link> y <link href=\"https://bugzilla.gnome.org/"
-#~ "browse.cgi?product=evince\">busque</link> el error para ver si ya existe."
-
-#~ msgid ""
-#~ "To file your bug, choose the component <gui>platform-demos</gui> in the "
-#~ "<gui>Component</gui> menu."
-#~ msgstr ""
-#~ "Para informar de un error, elija el componente <gui>platform-demos</gui> "
-#~ "en el menú <gui>Component</gui>."
-
-#~ msgid ""
-#~ "If you are requesting a new feature, choose <gui>enhancement</gui> in the "
-#~ "<gui>Severity</gui> menu. Fill in the Summary and Description sections "
-#~ "and click <gui>Commit</gui>."
-#~ msgstr ""
-#~ "Si quiere solicitar una característica nueva, elija <gui>enhancement</"
-#~ "gui> en el menú <gui>Severity</gui>. Rellene las secciones «Summary» y "
-#~ "«Description» y pulse <gui>Commit</gui>."
-
-#~ msgid ""
-#~ "Your report will be given an ID number, and its status will be updated as "
-#~ "it is being dealt with. Thanks for helping make <app>GNOME Developer "
-#~ "Tutorials</app> better!"
-#~ msgstr ""
-#~ "Se le asignará un número de ID a su informe y su estado se actualizará a "
-#~ "medida que se trate. Gracias por ayudar a mejorar los <app>Tutoriales del "
-#~ "desarrollador de GNOME</app>."
-
-#~ msgid "Help develop"
-#~ msgstr "Ayudar al desarrollo"
-
-#~ msgid ""
-#~ "The <app>GNOME Developer Tutorials</app> are developed and maintained by "
-#~ "a volunteer community. You are welcome to participate."
-#~ msgstr ""
-#~ "Los <app>Tutoriales del desarrollador de GNOME</app> los desarrolla y los "
-#~ "mantiene una comunidad de voluntarios. Si quiere participar es bienvenido."
-
-#~ msgid ""
-#~ "If you would like to <link href=\"https://live.gnome.org/"
-#~ "DocumentationProject/Tasks/DeveloperDocs\">help develop <app>GNOME "
-#~ "Developer Tutorials</app></link>, you can get in touch with the "
-#~ "developers using <link href=\"https://cbe005.chat.mibbit.com/?url=irc%3A%"
-#~ "2F%2Firc.gnome.org%2Fdocs\">irc</link>, or via our <link href=\"http://"
-#~ "mail.gnome.org/mailman/listinfo/gnome-doc-devel-list\">mailing list</"
-#~ "link>."
-#~ msgstr ""
-#~ "Si quiere <link href=\"https://live.gnome.org/DocumentationProject/Tasks/"
-#~ "DeveloperDocs\">contribuir al desarrollo de los <app>Tutoriales del "
-#~ "desarrollador de GNOME</app></link>, puede ponerse en contacto con los "
-#~ "desarrolladores usando <link href=\"https://cbe005.chat.mibbit.com/?"
-#~ "url=irc%3A%2F%2Firc.gnome.org%2Fdocs\">irc</link>, o mediante la <link "
-#~ "href=\"http://mail.gnome.org/mailman/listinfo/gnome-doc-devel-list"
-#~ "\">lista decorreo</link>."
-
-#~ msgctxt "_"
-#~ msgid ""
-#~ "external ref='media/ubuntu.png' md5='40845e4a40b335b1958da1403f01c13f'"
-#~ msgstr ""
-#~ "external ref='media/ubuntu.png' md5='40845e4a40b335b1958da1403f01c13f'"
-
-#~ msgctxt "_"
-#~ msgid ""
-#~ "external ref='media/fedora.png' md5='19add55f4349fd9e90f3a50b344ba626'"
-#~ msgstr ""
-#~ "external ref='media/fedora.png' md5='19add55f4349fd9e90f3a50b344ba626'"
-
-#~ msgctxt "_"
-#~ msgid ""
-#~ "external ref='media/opensuse.png' md5='a852a94199328e2f978c7f6a55bf8b54'"
-#~ msgstr ""
-#~ "external ref='media/opensuse.png' md5='a852a94199328e2f978c7f6a55bf8b54'"
-
-#~ msgctxt "link"
-#~ msgid "Install GNOME development tools"
-#~ msgstr "Instalar las herramientas de desarrollo de GNOME"
-
-#~ msgid "Getting ready for GNOME development"
-#~ msgstr "Prepárese para desarrollar en GNOME"
-
-#~ msgid "Install the required tools"
-#~ msgstr "Instalar las herramientas necesarias"
-
-#~ msgid ""
-#~ "Before you can start coding you will have to install the required tools "
-#~ "for GNOME development on your computer. This shouldn't take you more than "
-#~ "ten minutes."
-#~ msgstr ""
-#~ "Antes de empezar a programar, deberá instalar las herramientas de "
-#~ "desarrollo de GNOME requeridas en su equipo. Esto no debería llevarle más "
-#~ "de 10 minutos."
-
-#~ msgid "Manual installation"
-#~ msgstr "Instalación manual"
-
-#~ msgid ""
-#~ "If you prefer manual installation you can find the instructions for the "
-#~ "various distributions in the <link href=\"https://wiki.gnome.org/Apps/"
-#~ "DeveloperTools/Installation\">GNOME wiki</link>. Click on the image to go "
-#~ "directly to the installation page for your distribution:"
-#~ msgstr ""
-#~ "Si prefiere la instalación manual, puede encontrar instrucciones para las "
-#~ "diversas distribuciones en el <link href=\"https://wiki.gnome.org/Apps/"
-#~ "DeveloperTools/Installation\">wiki de GNOME</link>. Pulse sobre la imagen "
-#~ "para ir directamente a la página de instalación de su distribución."
-
-#~ msgid ""
-#~ "<link href=\"https://wiki.gnome.org/Apps/DeveloperTools/Installation/"
-#~ "Ubuntu\"> <media type=\"image\" mime=\"image/png\" src=\"media/ubuntu.png"
-#~ "\">Ubuntu</media> </link>"
-#~ msgstr ""
-#~ "<link href=\"https://wiki.gnome.org/Apps/DeveloperTools/Installation/"
-#~ "Ubuntu\"> <media type=\"image\" mime=\"image/png\" src=\"media/ubuntu.png"
-#~ "\">Ubuntu</media> </link>"
-
-#~ msgid ""
-#~ "<link href=\"https://wiki.gnome.org/Apps/DeveloperTools/Installation/"
-#~ "Fedora\"> <media type=\"image\" mime=\"image/png\" src=\"media/fedora.png"
-#~ "\">Fedora</media> </link>"
-#~ msgstr ""
-#~ "<link href=\"https://wiki.gnome.org/Apps/DeveloperTools/Installation/"
-#~ "Fedora\"> <media type=\"image\" mime=\"image/png\" src=\"media/fedora.png"
-#~ "\">Fedora</media> </link>"
-
-#~ msgid ""
-#~ "<link href=\"https://wiki.gnome.org/Apps/DeveloperTools/Installation/"
-#~ "OpenSuSE\"> <media type=\"image\" mime=\"image/png\" src=\"media/opensuse."
-#~ "png\">OpenSuSE</media> </link>"
-#~ msgstr ""
-#~ "<link href=\"https://wiki.gnome.org/Apps/DeveloperTools/Installation/"
-#~ "OpenSuSE\"> <media type=\"image\" mime=\"image/png\" src=\"media/opensuse."
-#~ "png\">OpenSuSE</media> </link>"
-
-#~ msgid "Required versions"
-#~ msgstr "Versiones necesarias"
-
-#~ msgid ""
-#~ "The guides assume that you have at least the following versions of the "
-#~ "tools installed:"
-#~ msgstr ""
-#~ "Las guías asumen que tiene instaladas, al menos, las siguientes versiones "
-#~ "de las herramientas."
-
-#~ msgid "Anjuta - 3.0"
-#~ msgstr "Anjuta - 3.0"
-
-#~ msgid "Devhelp - 3.0"
-#~ msgstr "Devhelp - 3.0"
-
-#~ msgid "Glade - 3.10"
-#~ msgstr "Glade - 3.10"
-
-#~ msgid ""
-#~ "Of course, any newer version will also work. Now, we wish you a lot of "
-#~ "fun with the <link xref=\"index\">Demos</link>."
-#~ msgstr ""
-#~ "Por supuesto, cualquier versión más moderna también funcionará. Ahora, le "
-#~ "deseamos que disfrute con las <link xref=\"index\">demostraciones</link>."
-
-#~ msgid "<_:title-1/> <_:p-2/> <_:list-3/> q"
-#~ msgstr "<_:title-1/> <_:p-2/> <_:list-3/> q"
-
-#~ msgid "How to set up your development environment"
-#~ msgstr "Cómo configurar el entorno de desarrollo"
-
-#~ msgid "Tutorials, code samples, platform demos and more"
-#~ msgstr ""
-#~ "Tutoriales, ejemplos de código, demostraciones de la plataforma y más "
-#~ "cosas"
-
-#~ msgid "Get Involved"
-#~ msgstr "Involucrarse"
-
-#~ msgid "Michael Hill"
-#~ msgstr "Michael Hill"
-
-#~ msgid "Help translate"
-#~ msgstr "Ayudar a traducir"
-
-#~ msgid ""
-#~ "The <app>Tutorial Demos</app> are being translated by a world-wide "
-#~ "volunteer community. You are welcome to participate."
-#~ msgstr ""
-#~ "Los <app>Tutoriales de demostración</app> los traduce una comunidad de "
-#~ "voluntarios de todo el mundo. Si quiere participar, es bienvenido."
-
-#~ msgid ""
-#~ "There are <link href=\"http://l10n.gnome.org/module/gnome-devel-docs/"
-#~ "\">many languages</link> for which translations are still needed."
-#~ msgstr ""
-#~ "Hay <link href=\"http://l10n.gnome.org/module/gnome-devel-docs/\">muchos "
-#~ "idiomas</link> para los que se siguen necesitando traducciones."
-
-#~ msgid ""
-#~ "To start translating you will need to <link href=\"http://l10n.gnome.org"
-#~ "\">create an account</link> and join the <link href=\"http://l10n.gnome."
-#~ "org/teams/\">translation team</link> for your language. This will give "
-#~ "you the ability to upload new translations."
-#~ msgstr ""
-#~ "Para empezar a traducir necesitará <link href=\"http:l10n.gnome.org"
-#~ "\">crear una cuenta</link> y unirse al <link href=\"http://l10n.gnome.org/"
-#~ "teams/\">equipo de traducción</link> de su idioma. Esto le dará la "
-#~ "posibilidad de subir traducciones nuevas."
-
-#~ msgid ""
-#~ "You can chat with GNOME translators using <link href=\"https://cbe003."
-#~ "chat.mibbit.com/?url=irc%3A%2F%2Firc.gnome.org%2Fi18n\">irc</link>. "
-#~ "People on the channel are located worldwide, so you may not get an "
-#~ "immediate response as a result of timezone differences."
-#~ msgstr ""
-#~ "Puede chatear con los traductores de GNOME usando <link href=\"https://"
-#~ "cbe003.chat.mibbit.com/?url=irc%3A%2F%2Firc.gnome.org%2Fi18n\">irc</"
-#~ "link>. La gente de los canales se encuentra en cualquier parte del mundo, "
-#~ "por lo que puede que no obtenga una respuesta inmediata debido a las "
-#~ "diferencias horarias."
-
-#~ msgid ""
-#~ "Alternatively, you can contact the Internationalization Team using their "
-#~ "<link href=\"http://mail.gnome.org/mailman/listinfo/gnome-i18n\">mailing "
-#~ "list</link>."
-#~ msgstr ""
-#~ "Alternativamente, puede contactar con el equipo de internacionalización "
-#~ "usando su <link href=\"http://mail.gnome.org/mailman/listinfo/gnome-i18n"
-#~ "\">lista de correo</link>."
-
-#~ msgid ""
-#~ "This program will not compile with the quit action connected until <link "
-#~ "href=\"https://bugzilla.gnome.org/show_bug.cgi?id=674090\">Bug #674090</"
-#~ "link> is fixed. Therefore, the problematic line has been commented out."
-#~ msgstr ""
-#~ "Este programa no compilará con la opción de «salir» conectada hasta que se "
-#~ "resuelva el <link href=\"https://bugzilla.gnome.org/show_bug.cgi?id=674090"
-#~ "\">error nº 674090</link>. Por lo tanto, esa línea se ha comentado"
-
-#~ msgid ""
-#~ "To set a stock icon as image, you can use <code>set_from_stock(stock_id, "
-#~ "size)</code> where <code>stock_id</code> is a stock icon such as "
-#~ "<code>Gtk.STOCK_ABOUT</code> (more can be found at <link href=\"http://"
-#~ "developer.gnome.org/gtk3/unstable/gtk3-Stock-Items\">Stock Items</link>, "
-#~ "with the caveat that they should be modified as above) and <code>size</"
-#~ "code> is a stock icon size to be chosen from <code>Gtk.IconSize.INVALID, "
-#~ "Gtk.IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk.IconSize."
-#~ "LARGE_TOOLBAR, Gtk.IconSize.BUTTON, Gtk.IconSize.DND, Gtk.IconSize."
-#~ "DIALOG</code>."
-#~ msgstr ""
-#~ "Para establecer un icono del almacén como imagen, puede usar "
-#~ "<code>set_from_stock(id_almacén, tamaño)</code> donde <code>id_almacén</"
-#~ "code> es un icono del almacén como <code>Gtk.STOCK_ABOUT</code> (puede "
-#~ "encontrar más en <link href=\"http://developer.gnome.org/gtk3/unstable/"
-#~ "gtk3-Stock-Items\">Elementos del almacén</link>, teniendo en cuenta que "
-#~ "deben modificarse como anteriormente) y un <code>tamaño</code> de icono "
-#~ "del almacén, que puede ser <code>Gtk.IconSize.INVALID, Gtk.IconSize.MENU, "
-#~ "Gtk.IconSize.SMALL_TOOLBAR, Gtk.IconSize.LARGE_TOOLBAR, Gtk.IconSize."
-#~ "BUTTON, Gtk.IconSize.DND, Gtk.IconSize.DIALOG</code>."
-
-#~ msgid ""
-#~ "You can also use <code>set_from_icon_name(icon_name, size)</code>, where "
-#~ "<code>icon_name</code> is a stock icon name such as <code>\"gtk-about\"</"
-#~ "code> (more can be found as above) and <code>size</code> is as above."
-#~ msgstr ""
-#~ "También puede usar <code>set_from_icon_name(nombre_icono, tamaño)</code> "
-#~ "donde <code>nombre_icono</code> es un nombre de icono del almacén como "
-#~ "<code>«gtk-about»</code> (puede encontrar más como se mencionó) y "
-#~ "<code>tamaño</code> es igual que con «set_from_stock»."
-
-#~ msgid "which is equivalent to using:"
-#~ msgstr "que es equivalente a usar:"
-
-#~ msgid "Automatic installation"
-#~ msgstr "Instalación automática"
-
-#~ msgid ""
-#~ "On an up-to-date distribution you should be able to simply install the "
-#~ "required packages by clicking on <link href=\"media/gnome-devtools.catalog"
-#~ "\">Install now</link>."
-#~ msgstr ""
-#~ "Un una distribución actualizada, debería ser capaz de instalar los "
-#~ "paquetes simplemente pulsando en <link href=\"media/gnome-devtools.catalog"
-#~ "\">Instalar ahora</link>."
-
-#~ msgctxt "_"
-#~ msgid "external ref='media/03_jssignal_02b.png' md5='__failed__'"
-#~ msgstr "external ref='media/03_jssignal_02b.png' md5='__failed__'"
-
-#~ msgctxt "_"
-#~ msgid ""
-#~ "external ref='media/menubutton.png' md5='1feb7b836a522c3007079d4420621d9d'"
-#~ msgstr ""
-#~ "external ref='media/menubutton.png' md5='1feb7b836a522c3007079d4420621d9d'"
-
-#~ msgid ""
-#~ "For an explanation of signals and callback functions, see <link xref="
-#~ "\"signals-callbacks.py\">this page</link>."
-#~ msgstr ""
-#~ "Para una explicación de señales y funciones de retorno de llamada, "
-#~ "consulte <link xref=\"signals-callbacks.py\">esta página</link>."
-
-#~ msgctxt "text"
-#~ msgid "Beginner's Tutorials (C)"
-#~ msgstr "Tutoriales para principiantes (C)"
-
-#~ msgid "0 Beginner's Tutorials"
-#~ msgstr "0. Tutoriales para principiantes"
-
-#~ msgid "0 Beginner's tutorials and samples"
-#~ msgstr "0. Tutoriales para principiantes y ejemplos"
-
-#~ msgctxt "text"
-#~ msgid "Beginner Tutorials (Vala)"
-#~ msgstr "Tutoriales para principiantes (Vala)"
-
-#~ msgid ""
-#~ "<code>button = Gtk.Button(label=\"Click me\")</code> could also be used "
-#~ "to create a button and set the text directly. For a general discussion of "
-#~ "this, see <link xref=\"properties.py\">here</link>."
-#~ msgstr ""
-#~ "<code>button = Gtk.Button(label=\"Click me\")</code> también podría "
-#~ "usarse para crear un botón y establecer el texto directamente. Para una "
-#~ "discusión general sobre esto, consulte <link xref=\"properties.py\">aquí</"
-#~ "link>."
-
-#~ msgid ""
-#~ "We could also create the CheckButton with <code>button = Gtk.CheckButton."
-#~ "new_with_label(\"Show Title\")</code>."
-#~ msgstr ""
-#~ "También se podría crear la casilla de verificación con <code>button = Gtk."
-#~ "CheckButton.new_with_label(\"Show Title\")</code>."
-
-#~ msgid ""
-#~ "For a discussion on signals and callback functions, see <link xref="
-#~ "\"signals-callbacks.py\">this page</link>."
-#~ msgstr ""
-#~ "Para ver una discusión sobre señales y funciones de retorno de llamada, "
-#~ "consulte <link xref=\"signals-callbacks.py\">esta página</link>."
-
-#~ msgid "2 Guitar Tuner"
-#~ msgstr "2. Afinador de guitarra"
-
-#~ msgid "1 Image Viewer"
-#~ msgstr "1. Visor de imágenes"
-
-#~ msgid ""
-#~ "<code>label = Gtk.Label(label=\"Hello GNOME!\")</code> could also be used "
-#~ "to create a label and set the text directly. For a general discussion of "
-#~ "this, see <link xref=\"properties.py\">here</link>."
-#~ msgstr ""
-#~ "<code>label = Gtk.Label(label=\"Hello GNOME!\")</code> también podría "
-#~ "usarse para crear una etiqueta y establecer el texto directamente. Para "
-#~ "más información general sobre esto, consulte <link xref=\"properties.py"
-#~ "\">aquí</link>."
-
-#~ msgid ""
-#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
-#~ "treeview.html\">The Python Gtk+ 3 Tutorial - Tree and List Widgets</link>"
-#~ msgstr ""
-#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
-#~ "treeview.html\">El tutorial de GTK+ 3 en Python: widgets de árbol y "
-#~ "lista</link>"
-
-#~ msgid ""
-#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
-#~ "cellrenderers.html\">The Python Gtk+ 3 Tutorial - CellRenderers</link>"
-#~ msgstr ""
-#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
-#~ "cellrenderers.html\">El tutorial de GTK+ 3 en Python: «CellRenderer»</link>"
-
-#~ msgid ""
-#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
-#~ "combobox.html\">The Python Gtk+ 3 Tutorial - ComboBox</link>"
-#~ msgstr ""
-#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
-#~ "combobox.html\">El tutorial de GTK+ 3 en Python: «ComboBox»</link>"
-
-#~ msgid ""
-#~ "\n"
-#~ "int\n"
-#~ "main(int argc, char *argv[])\n"
-#~ "{\n"
-#~ " ClutterColor stage_color = { 16, 16, 16, 255 };\n"
-#~ " ClutterActor *stage = NULL;\n"
-#~ "\n"
-#~ " clutter_init(&argc, &argv);\n"
-#~ "\n"
-#~ " stage = clutter_stage_get_default();\n"
-#~ " clutter_actor_set_size(stage, STAGE_WIDTH, STAGE_HEIGHT);\n"
-#~ " clutter_stage_set_color(CLUTTER_STAGE (stage), &stage_color);\n"
-#~ "\n"
-#~ " load_image_path_names();\n"
-#~ "\n"
-#~ " guint row = 0;\n"
-#~ " guint col = 0;\n"
-#~ " for(row=0; row < ROW_COUNT; ++row)\n"
-#~ " {\n"
-#~ " for(col=0; col < COL_COUNT; ++col)\n"
-#~ " {\n"
-#~ " GSList *img_path_node = g_slist_nth(img_path_list, (row * "
-#~ "COL_COUNT) + col);\n"
-#~ " ClutterActor *actor = clutter_texture_new_from_file((gchar *)"
-#~ "(img_path_node->data), NULL);\n"
-#~ " initialize_actor(actor, row, col);\n"
-#~ " clutter_container_add_actor(CLUTTER_CONTAINER(stage), "
-#~ "actor);\n"
-#~ " actor_list = g_slist_prepend(actor_list, actor);\n"
-#~ " }\n"
-#~ " }\n"
-#~ "\n"
-#~ " /* Show the stage. */\n"
-#~ " clutter_actor_show(stage);\n"
-#~ "\n"
-#~ " /* Start the clutter main loop. */\n"
-#~ " clutter_main();\n"
-#~ "\n"
-#~ " return 0;\n"
-#~ "}"
-#~ msgstr ""
-#~ "\n"
-#~ "int\n"
-#~ "main(int argc, char *argv[])\n"
-#~ "{\n"
-#~ " ClutterColor stage_color = { 16, 16, 16, 255 };\n"
-#~ " ClutterActor *stage = NULL;\n"
-#~ "\n"
-#~ " clutter_init(&argc, &argv);\n"
-#~ "\n"
-#~ " stage = clutter_stage_get_default();\n"
-#~ " clutter_actor_set_size(stage, STAGE_WIDTH, STAGE_HEIGHT);\n"
-#~ " clutter_stage_set_color(CLUTTER_STAGE (stage), &stage_color);\n"
-#~ "\n"
-#~ " load_image_path_names();\n"
-#~ "\n"
-#~ " guint row = 0;\n"
-#~ " guint col = 0;\n"
-#~ " for(row=0; row < ROW_COUNT; ++row)\n"
-#~ " {\n"
-#~ " for(col=0; col < COL_COUNT; ++col)\n"
-#~ " {\n"
-#~ " GSList *img_path_node = g_slist_nth(img_path_list, (row * "
-#~ "COL_COUNT) + col);\n"
-#~ " ClutterActor *actor = clutter_texture_new_from_file((gchar *)"
-#~ "(img_path_node->data), NULL);\n"
-#~ " initialize_actor(actor, row, col);\n"
-#~ " clutter_container_add_actor(CLUTTER_CONTAINER(stage), "
-#~ "actor);\n"
-#~ " actor_list = g_slist_prepend(actor_list, actor);\n"
-#~ " }\n"
-#~ " }\n"
-#~ "\n"
-#~ " /* Show the stage. */\n"
-#~ " clutter_actor_show(stage);\n"
-#~ "\n"
-#~ " /* Start the clutter main loop. */\n"
-#~ " clutter_main();\n"
-#~ "\n"
-#~ " return 0;\n"
-#~ "}"
-
-#~ msgid ""
-#~ "\n"
-#~ "for(row=0; row < ROW_COUNT; ++row)\n"
-#~ "{\n"
-#~ " for(col=0; col < COL_COUNT; ++col)\n"
-#~ " {\n"
-#~ " GSList *img_path_node = g_slist_nth(img_path_list, (row * "
-#~ "COL_COUNT) + col);\n"
-#~ " ClutterActor *actor = clutter_texture_new_from_file((gchar *)"
-#~ "(img_path_node->data), NULL);\n"
-#~ " initialize_actor(actor, row, col);\n"
-#~ " clutter_container_add_actor(CLUTTER_CONTAINER(stage), actor);\n"
-#~ " actor_list = g_slist_prepend(actor_list, actor);\n"
-#~ " }\n"
-#~ "}\n"
-#~ "\n"
-#~ msgstr ""
-#~ "\n"
-#~ "for(row=0; row < ROW_COUNT; ++row)\n"
-#~ "{\n"
-#~ " for(col=0; col < COL_COUNT; ++col)\n"
-#~ " {\n"
-#~ " GSList *img_path_node = g_slist_nth(img_path_list, (row * "
-#~ "COL_COUNT) + col);\n"
-#~ " ClutterActor *actor = clutter_texture_new_from_file((gchar *)"
-#~ "(img_path_node->data), NULL);\n"
-#~ " initialize_actor(actor, row, col);\n"
-#~ " clutter_container_add_actor(CLUTTER_CONTAINER(stage), actor);\n"
-#~ " actor_list = g_slist_prepend(actor_list, actor);\n"
-#~ " }\n"
-#~ "}\n"
-#~ "\n"
-
-#~ msgid "Line 7: We'll look at this function in a later section."
-#~ msgstr "Línea 7: está función se verá en una sección posterior."
-
-#~ msgid ""
-#~ "Line 9: This adds our <code>ClutterActor</code> to a <code>GSList</code> "
-#~ "so that we can later iterate over the <code>ClutterActor</code>s."
-#~ msgstr ""
-#~ "Línea 9: esto añade el <code>ClutterActor</code> a una <code>GSList</"
-#~ "code> por lo que luego se podrá iterar sobre los <code>ClutterActor</"
-#~ "code>."
-
-#~ msgid ""
-#~ "Interesting to note is that we want to prepend the <code>ClutterActor</"
-#~ "code>s rather than append so that we avoid traversing the list upon each "
-#~ "insertion. You will often see <code>g_slist_prepend</code> followed by "
-#~ "<code>g_slist_reverse</code> because it faster than inserting many "
-#~ "objects at the end of the list."
-#~ msgstr ""
-#~ "Es interesante tener en cuenta que se prefiere anteponer los "
-#~ "<code>ClutterActor</code> en lugar de adjuntarlos, lo que evita atravesar "
-#~ "la lista en cada inserción. A menudo vera <code>g_slist_prepend</code> "
-#~ "seguido de <code>g_slist_reverse</code>, ya que es más rápido que "
-#~ "insertar varios objetos al final de la lista."
-
-#~ msgid ""
-#~ "\n"
-#~ "static gboolean\n"
-#~ "actor_clicked_cb(ClutterActor *actor,\n"
-#~ " ClutterEvent *event,\n"
-#~ " gpointer user_data)\n"
-#~ "{\n"
-#~ " /* Flag to keep track of our state. */\n"
-#~ " static gboolean is_focused = FALSE;\n"
-#~ "\n"
-#~ " g_slist_foreach(actor_list, foreach_set_focus_state, &"
-#~ "is_focused);\n"
-#~ "\n"
-#~ " if(is_focused)\n"
-#~ " {\n"
-#~ " clutter_actor_animate(actor, CLUTTER_LINEAR, "
-#~ "ANIMATION_DURATION_MS,\n"
-#~ " \"x\", origin.x,\n"
-#~ " \"y\", origin.y,\n"
-#~ " \"depth\", UNFOCUS_DEPTH,\n"
-#~ " \"width\", (float) THUMBNAIL_SIZE,\n"
-#~ " \"height\", (float) THUMBNAIL_SIZE,\n"
-#~ " NULL);\n"
-#~ " }\n"
-#~ " else\n"
-#~ " {\n"
-#~ " /*Save the current location before animating. */\n"
-#~ " clutter_actor_get_position(actor, &origin.x, &origin.y);\n"
-#~ " clutter_actor_set_reactive(actor, TRUE);\n"
-#~ " clutter_actor_animate(actor, CLUTTER_LINEAR, "
-#~ "ANIMATION_DURATION_MS,\n"
-#~ " \"x\", (STAGE_WIDTH - STAGE_HEIGHT) / "
-#~ "2.0,\n"
-#~ " \"y\", 0.0,\n"
-#~ " \"depth\", FOCUS_DEPTH,\n"
-#~ " \"width\", (float) STAGE_HEIGHT,\n"
-#~ " \"height\", (float) STAGE_HEIGHT,\n"
-#~ " NULL);\n"
-#~ " }\n"
-#~ "\n"
-#~ " /* Toggle our flag. */\n"
-#~ " is_focused = !is_focused;\n"
-#~ "\n"
-#~ " return TRUE;\n"
-#~ "}"
-#~ msgstr ""
-#~ "\n"
-#~ "static gboolean\n"
-#~ "actor_clicked_cb(ClutterActor *actor,\n"
-#~ " ClutterEvent *event,\n"
-#~ " gpointer user_data)\n"
-#~ "{\n"
-#~ " /* Flag to keep track of our state. */\n"
-#~ " static gboolean is_focused = FALSE;\n"
-#~ "\n"
-#~ " g_slist_foreach(actor_list, foreach_set_focus_state, &"
-#~ "is_focused);\n"
-#~ "\n"
-#~ " if(is_focused)\n"
-#~ " {\n"
-#~ " clutter_actor_animate(actor, CLUTTER_LINEAR, "
-#~ "ANIMATION_DURATION_MS,\n"
-#~ " \"x\", origin.x,\n"
-#~ " \"y\", origin.y,\n"
-#~ " \"depth\", UNFOCUS_DEPTH,\n"
-#~ " \"width\", (float) THUMBNAIL_SIZE,\n"
-#~ " \"height\", (float) THUMBNAIL_SIZE,\n"
-#~ " NULL);\n"
-#~ " }\n"
-#~ " else\n"
-#~ " {\n"
-#~ " /*Save the current location before animating. */\n"
-#~ " clutter_actor_get_position(actor, &origin.x, &origin.y);\n"
-#~ " clutter_actor_set_reactive(actor, TRUE);\n"
-#~ " clutter_actor_animate(actor, CLUTTER_LINEAR, "
-#~ "ANIMATION_DURATION_MS,\n"
-#~ " \"x\", (STAGE_WIDTH - STAGE_HEIGHT) / "
-#~ "2.0,\n"
-#~ " \"y\", 0.0,\n"
-#~ " \"depth\", FOCUS_DEPTH,\n"
-#~ " \"width\", (float) STAGE_HEIGHT,\n"
-#~ " \"height\", (float) STAGE_HEIGHT,\n"
-#~ " NULL);\n"
-#~ " }\n"
-#~ "\n"
-#~ " /* Toggle our flag. */\n"
-#~ " is_focused = !is_focused;\n"
-#~ "\n"
-#~ " return TRUE;\n"
-#~ "}"
-
-#~ msgid ""
-#~ "Line 9: This line of code runs a custom function, "
-#~ "<code>foreach_set_focus_state</code>, for each element in our "
-#~ "<code>actor_list</code>, passing it the address to the <code>is_focused</"
-#~ "code> flag. We'll see the definition of the "
-#~ "<code>foreach_set_focus_state</code> function in the next section."
-#~ msgstr ""
-#~ "Línea 9: esta línea de código ejecuta una función personalizada, "
-#~ "<code>foreach_set_focus_state</code>, para cada elemento de la "
-#~ "<code>actor_list</code>, pasando la dirección al indicador "
-#~ "<code>is_focused</code>. La definición de la función "
-#~ "<code>foreach_set_focus_state</code> se verá en la siguiente sección."
-
-#~ msgid "The address of the <code>ClutterActor</code> to animate"
-#~ msgstr "La dirección del <code>ClutterActor</code> que animar"
-
-#~ msgid ""
-#~ "The animation mode to use. Here we use <code>CLUTTER_LINEAR</code> so "
-#~ "that we have a constant speed for animation."
-#~ msgstr ""
-#~ "El modo de animación que usar. Aquí se ha usado <code>CLUTTER_LINEAR</"
-#~ "code> por lo que se tiene una velocidad constante en la animación."
-
-#~ msgid ""
-#~ "The duration of the animation in milliseconds. I've chosen 500 ms for "
-#~ "this example."
-#~ msgstr ""
-#~ "La duración de la animación, en milisegundos. Se ha escogido 500 ms para "
-#~ "este ejemplo."
-
-#~ msgid ""
-#~ "The remaining arguments are property/value pairs. Here we want to set the "
-#~ "<code>x</code> value to the starting <code>x</code> value this "
-#~ "<code>ClutterActor</code> was at before being brought into focus."
-#~ msgstr ""
-#~ "El resto de argumentos son parejas propiedad/valor. Aquí se quiere "
-#~ "establecer el valor <code>x</code> al valor <code>x</code> inicial en el "
-#~ "que estaba el <code>ClutterActor</code> antes de darle el foco."
-
-#~ msgid ""
-#~ "The last argument must always be <code>NULL</code> to indicate that there "
-#~ "are no more properties to be set."
-#~ msgstr ""
-#~ "El último argumento debe ser siempre <code>NULL</code> para indicar que "
-#~ "no hay más propiedades que configurar."
-
-#~ msgid ""
-#~ "The <code>depth</code> property needs a little more explaining. We need "
-#~ "to raise the focused image so that it doesn't slide behind other "
-#~ "<code>ClutterActor</code>s. In this section we are returning it to the "
-#~ "same depth as the others on the wall."
-#~ msgstr ""
-#~ "La propiedad <code>depth</code> necesita un poco más de explicación. Se "
-#~ "debe elevar la imagen que tiene el foco para que no se deslice por debajo "
-#~ "de otros <code>ClutterActor</code>. En esta sección se está devolviendo a "
-#~ "la misma profundidad que las otras en el mural."
-
-#~ msgid ""
-#~ "Depth also determines which <code>ClutterActor</code>s receive events. A "
-#~ "<code>ClutterActor</code> with a higher depth value receives the click "
-#~ "events and can choose whether the event gets sent to <code>ClutterActor</"
-#~ "code>s under it. We'll see how that works in a few steps."
-#~ msgstr ""
-#~ "La profundidad también determina qué <code>ClutterActor</code> recibe "
-#~ "eventos. Un <code>ClutterActor</code> con una profundidad alta recibe los "
-#~ "eventos de las pulsaciones y puede elegir si el evento se envía a un "
-#~ "<code>ClutterActor</code> que esté debajo de él. Se verá cómo funciona "
-#~ "esto en pocos pasos."
-
-#~ msgid ""
-#~ "Lines 27‒33: This is similar to the above block of code. Notice that we "
-#~ "are setting the the depth to raise it above the other images."
-#~ msgstr ""
-#~ "Líneas 27‒33: esto es similar al bloque de código anterior. Tenga en "
-#~ "cuenta que se está estableciendo la profundidad para elevarlo por encima "
-#~ "del resto de imágenes."
-
-#~ msgid ""
-#~ "The following is the convenience function passed to "
-#~ "<code>g_slist_foreach</code>."
-#~ msgstr ""
-#~ "Lo siguiente es la función de conveniencia pasada a "
-#~ "<code>g_slist_foreach</code>."
-
-#~ msgid ""
-#~ "\n"
-#~ "static void\n"
-#~ "foreach_set_focus_state(gpointer data, gpointer user_data)\n"
-#~ "{\n"
-#~ " ClutterActor *actor = CLUTTER_ACTOR(data);\n"
-#~ " gboolean is_reactive = *((gboolean*)user_data);\n"
-#~ "\n"
-#~ " clutter_actor_set_reactive(actor, is_reactive);\n"
-#~ "}"
-#~ msgstr ""
-#~ "\n"
-#~ "static void\n"
-#~ "foreach_set_focus_state(gpointer data, gpointer user_data)\n"
-#~ "{\n"
-#~ " ClutterActor *actor = CLUTTER_ACTOR(data);\n"
-#~ " gboolean is_reactive = *((gboolean*)user_data);\n"
-#~ "\n"
-#~ " clutter_actor_set_reactive(actor, is_reactive);\n"
-#~ "}"
-
-#~ msgid ""
-#~ "Lines 2‒5: The signature of this function requires two <code>gpointer</"
-#~ "code>s. The first is a pointer to the <code>ClutterActor</code> that our "
-#~ "<code>GSList</code> holds and the other is the <code>is_focused</code> "
-#~ "flag that we've passed in the previous section. We want to cast these and "
-#~ "store them for easy use."
-#~ msgstr ""
-#~ "Líneas 2‒5: la firma de esta función requiere dos <code>gpointer</code>. "
-#~ "El primero es un puntero al <code>ClutterActor</code> contenido en la "
-#~ "<code>GSList</code> y el otro es el indicador <code>is_focused</code> que "
-#~ "se ha pasado en la sección anterior. Se quiere convertir su tipo («cast») "
-#~ "y almacenarlos para que sea fácil usarlos."
-
-#~ msgid ""
-#~ "Line 7: Depending on which boolean value is passed in, the "
-#~ "<code>ClutterActor</code> will be set to respond to events or not."
-#~ msgstr ""
-#~ "Línea 7: dependiendo de qué valor booleano se pasa, el "
-#~ "<code>ClutterActor</code> se establecerá para que responda o no a eventos."
-
-#~ msgid ""
-#~ "For a general discussion of this, see <link xref=\"properties.py\">here</"
-#~ "link>."
-#~ msgstr ""
-#~ "Para una discusión general de esto, consulte <link xref=\"properties.py"
-#~ "\">aquí</link>."
-
-#~ msgid ""
-#~ "For an explanation of signals and callback functions, see <link xref="
-#~ "\"signals-callbacks.py\">this page</link>. An example is the <code>"
-#~ "\"value-changed\"</code> signal, emitted when the value of the scale "
-#~ "changes."
-#~ msgstr ""
-#~ "Para una explicación de señales y funciones de retorno de llamada, "
-#~ "consulte <link xref=\"signals-callbacks.py\">esta página</link>. Un "
-#~ "ejemplo es la señal <code>«value-changed»</code>, que se emite cuando el "
-#~ "cambia el valor de la escala."
-
-#~ msgid ""
-#~ "For an explanation of signals and callback functions, see <link xref="
-#~ "\"signals-callbacks.py\">this page</link>. An example is the <code>"
-#~ "\"value-changed\"</code> signal, emitted when the value of the spinbutton "
-#~ "changes."
-#~ msgstr ""
-#~ "Para una explicación de señales y de funciones de retorno de llamada, "
-#~ "consulte <link xref=\"signals-callbacks.py\">esta página</link>. Un "
-#~ "ejemplo es la señal <code>\"value-changed\"</code>, emitida cuando el "
-#~ "cambia el valor del botón incremental."
-
-#~ msgid "Definitions"
-#~ msgstr "Definiciones"
-
-#~ msgid ""
-#~ "Conceptionally, a <em>string</em> is a list of <em>characters</em> such "
-#~ "as 'A', 'B', 'C' or 'È'. Characters are abstract representations and "
-#~ "their meaning depends on the language and context they are used in. The "
-#~ "<em>Unicode standard</em> describes how characters are represented by "
-#~ "<em>code points</em>. For example the characters above are represented "
-#~ "with the code points U+0041, U+0042, U+0043, and U+00C9, respectively. "
-#~ "Basically, code points are numbers in the range from 0 to 0x10FFFF."
-#~ msgstr ""
-#~ "Conceptualmente, una <em>cadena</em> es una lista de <em>caracteres</em> "
-#~ "como «A», «B», «C», o «È». Los caracteres son representaciones abstractas y "
-#~ "su significado depende del lenguaje y el contexto en el que se usan. El "
-#~ "<em>estándar Unicode</em> describe cómo sus significados se representan "
-#~ "por <em>puntos de código</em>. Por ejemplo, los caracteres anteriores se "
-#~ "representan con los puntos de código U+0041, U+0042, U+0043, y U+00C9, "
-#~ "respectivamente. Básicamente, los puntos de código son números entre 0 y "
-#~ "0x10FFFF"
-
-#~ msgid ""
-#~ "The representation of a string as a list of code points is abstract. In "
-#~ "order to convert this abstract representation into a sequence of bytes "
-#~ "the Unicode string must be <em>encoded</em>. The simplest from of "
-#~ "encoding is ASCII and is performed as follows:"
-#~ msgstr ""
-#~ "La representación de una cadena como una lista de puntos de código es "
-#~ "abstracta. Para convertir esta representación abstracta en una secuencia "
-#~ "de bytes, la cadena de Unicode debe <em>codificarse</em>. La forma más "
-#~ "simple de codificación es ASCII y se ejecuta de la siguiente manera:"
-
-#~ msgid ""
-#~ "If the code point is strictly less than 128, each byte is the same as the "
-#~ "value of the code point."
-#~ msgstr ""
-#~ "Si el punto de código es estrictamente menos de 128, cada byte es igual "
-#~ "al valor del punto de código."
-
-#~ msgid ""
-#~ "If the code point is 128 or greater, the Unicode string can’t be "
-#~ "represented in this encoding. (Python raises a <sys>UnicodeEncodeError</"
-#~ "sys> exception in this case.)"
-#~ msgstr ""
-#~ "Si el punto de código es 128 o mayor, la cadena de Unicode no puede "
-#~ "representarse en esta codificación. (Python eleva una excepción "
-#~ "<sys>UnicodeEncodeError</sys> en este caso)."
-
-#~ msgid ""
-#~ "Although ASCII encoding is simple to apply it can only encode for 128 "
-#~ "different characters which is hardly enough. One of the most commonly "
-#~ "used encodings that addresses this problem is UTF-8 (it can handle any "
-#~ "Unicode code point). UTF stands for “Unicode Transformation Format”, and "
-#~ "the ‘8’ means that 8-bit numbers are used in the encoding."
-#~ msgstr ""
-#~ "A pesar de que la codificación ASCII es simple de aplicar, sólo puede "
-#~ "codificar 128 caracteres diferentes, lo que no es suficiente. Una de las "
-#~ "codificaciones usadas más comúnmente que resuelve este problema es UTF-8 "
-#~ "(puede manejar cualquier punto de código Unicode). UTF significa «Formato "
-#~ "de Transformación de Unicode», y el «8» significa que se usan números de 8 "
-#~ "bits en esta codificación."
-
-#~ msgid ""
-#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
-#~ "builder.html\">The Python Gtk+ 3 Tutorial - Glade and Gtk.Builder</link>"
-#~ msgstr ""
-#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
-#~ "builder.html\">El tutorial de GTK+3 en Python: Glade y Gtk.Builder</link>"
-
-#~ msgid ""
-#~ "The TreeView widget is designed around a <em>Model/View/Controller</em> "
-#~ "design. For more information, and for a list of useful methods for "
-#~ "TreeView and the interface TreeModel, see <link xref=\"model-view-"
-#~ "controller.py\">here</link>."
-#~ msgstr ""
-#~ "El widget TreeView está diseñado alrededor de un diseño <em>Modelo/Vista/"
-#~ "Controlador</em>. Para obtener más información, y una lista de métodos "
-#~ "útiles para TreeView y la interfaz TreeModel, consulte <link xref=\"model-"
-#~ "view-controller.py\">aquí</link>."
-
-#~ msgid ""
-#~ "For buttons and callbacks functions, see <link xref=\"signals-callbacks.py"
-#~ "\">here</link>"
-#~ msgstr ""
-#~ "Para botones y funciones de retorno de llamada, consulte <link xref="
-#~ "\"signals-callbacks.py\">aquí</link>."
-
-#~ msgctxt "text"
-#~ msgid "Beginner's Tutorial (Python)"
-#~ msgstr "Tutorial para principiantes (Python)"
-
-#~ msgid "0 Beginner's Tutorial"
-#~ msgstr "0. Tutorial para principiantes"
-
-#~ msgid "Basic buttons"
-#~ msgstr "Botones básicos"
-
-#~ msgid "Entry widgets (with a detour on basic scrolling)"
-#~ msgstr "Widgets de entrada (con algo de desplazamiento básico)"
-
-#~ msgid "Selectors (a recap)"
-#~ msgstr "Selectores (un resumen)"
-
-#~ msgid "More containers"
-#~ msgstr "Más contenedores"
-
-#~ msgid "More scrolling"
-#~ msgstr "Más desplazamiento"
-
-#~ msgid "\"scrollbar.py\""
-#~ msgstr "«scrollbar.py»"
-
-#~ msgid "\"widget.py\""
-#~ msgstr "«widget.py»"
-
-#~ msgid "Some theory to help you"
-#~ msgstr "Algo de teoría para ayudarle"
-
-#~ msgid ""
-#~ "<code>window = Gtk.Window(application=self, title=\"Welcome to GNOME\")</"
-#~ "code> sets the title as well, without the need for the line <code>window."
-#~ "set_title(\"Welcome to GNOME\")</code>. For a general discussion of this, "
-#~ "see <link xref=\"properties.py\">here</link>."
-#~ msgstr ""
-#~ "<code>window = Gtk.Window(application=self, title=\"Welcome to GNOME\")</"
-#~ "code> también establece el título, sin necesitar la línea <code>window."
-#~ "set_title(\"Welcome to GNOME\")</code>. Para obtener más información "
-#~ "sobre esto, consulte <link xref=\"properties.py\">aquí</link>."
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:251
+msgid ""
+"That's what the stock \"About\" icon looks like. You can see a list of all "
+"the stock items starting with gtk-about in <link href=\"https://developer."
+"gnome.org/gtk3/3.4/gtk3-Stock-Items.html#GTK-STOCK-ABOUT:CAPS\">GNOME's "
+"developer documentation</link>. It was written for C programmers, but you "
+"don't need to know C to use it; just look at the part in quotation marks, "
+"like \"gtk-about\", and copy that part to use the icon next to it."
+msgstr ""
+"Así se ve el icono del almacén «About». Puede ver una lista de todos los "
+"elementos del almacén comenzando con «gtk-about» en la <link href=\"https://"
+"developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html#GTK-STOCK-ABOUT:CAPS"
+"\">documentación del desarrollador de GNOME</link>. Se escribió para "
+"programadores de C, pero no necesita saber C para usarla; simplemente "
+"consulte la parte entre comillas, como \"gtk-about\", y copie esa parte para "
+"usar el icono junto a ella."
+
+#. (itstool) path: note/p
+#: C/02_welcome_to_the_grid.js.page:252
+msgid ""
+"We put single quotes around 'gtk-about' here because, unlike text strings "
+"that have double quotes around them, that part will never need to be "
+"translated into another language. In fact, if it <em>were</em> translated "
+"it'd break the icon, because its name is still \"gtk-about\" no matter which "
+"language you speak."
+msgstr ""
+"Se ponen comillas simples alrededor de «gtk-about» aquí porque, a diferencia "
+"de cadenas de texto que tienen comillas dobles, esa parte nunca necesitará "
+"traducirse a otro lenguaje. En realidad, si se <em>tradujera</em> rompería "
+"el icono, porque su nombre todavía es «gtk-about» sin importar el lenguaje "
+"en el que habla."
+
+#. (itstool) path: section/title
+#: C/02_welcome_to_the_grid.js.page:257 C/03_getting_the_signal.js.page:338
+#: C/hellognome.js.page:187
+msgid "What's next?"
+msgstr "¿Qué viene ahora?"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:258
+msgid ""
+"Before we go on to the next tutorial, let's try something a little different:"
+msgstr ""
+"Antes de continuar con el siguiente tutorial, intente algo un poco diferente:"
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:259
+#, no-wrap
+msgid ""
+"\n"
+" // Create a button\n"
+" this._button = new Gtk.Button ({\n"
+" label: \"Welcome to GNOME, too!\"});\n"
+"\n"
+" // Attach the images and button to the grid\n"
+" this._grid.attach (this._image, 0, 0, 2, 1);\n"
+" this._grid.attach (this._icon, 0, 1, 1, 1);\n"
+" this._grid.attach (this._button, 1, 1, 1, 1);\n"
+msgstr ""
+"\n"
+" // Create a button\n"
+" this._button = new Gtk.Button ({\n"
+" label: \"Welcome to GNOME, too!\"});\n"
+"\n"
+" // Attach the images and button to the grid\n"
+" this._grid.attach (this._image, 0, 0, 2, 1);\n"
+" this._grid.attach (this._icon, 0, 1, 1, 1);\n"
+" this._grid.attach (this._button, 1, 1, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:270
+msgid ""
+"That's right, we turned the Label into a Button just by changing the name! "
+"If you run the application and click on it, though, you'll find that it "
+"doesn't do anything. How do we make our Button do something? That's what "
+"we'll find out, in <link xref=\"03_getting_the_signal.js\">our next "
+"tutorial</link>."
+msgstr ""
+"Así es, se convirtió la etiqueta en un botón simplemente cambiándole el "
+"nombre. Si ejecuta la aplicación y la pulsa, sin embargo, verá que no hace "
+"nada. ¿Cómo hacer para que el botón haga algo? Eso es lo que descubrirá, en "
+"<link xref=\"03_getting_the_signal.js\">el próximo tutorial</link>."
+
+#. (itstool) path: section/p
+#: C/02_welcome_to_the_grid.js.page:271
+msgid ""
+"If you like, feel free to spend some time experimenting with Grids, Labels, "
+"and Images, including stock images."
+msgstr ""
+"Si quiere, siéntase libre de experimentar con rejillas, etiquetas, e "
+"imágenes, incluyendo imágenes del almacén."
+
+#. (itstool) path: note/p
+#: C/02_welcome_to_the_grid.js.page:272
+msgid ""
+"One trick you can use to make more complex layouts is to nest Grids inside "
+"of each other. This lets you group together related widgets, and rearrange "
+"them easily. Take a look at the <link xref=\"radiobutton.js\">RadioButton</"
+"link> code sample if you'd like to see how this is done."
+msgstr ""
+"Un truco que puede usar para hacer distribuciones más complejas es anidar "
+"rejillas una dentro de otra. Esto le permite agrupar widgets "
+"interrelacionados, y reorganizarlos fácilmente. Eche un vistazo a la muestra "
+"de código del <link xref=\"radiobutton.js\">botón de radio</link> si quiere "
+"ver cómo se hace esto."
+
+#. (itstool) path: section/title
+#: C/02_welcome_to_the_grid.js.page:276 C/checkbutton.js.page:131
+#: C/comboboxtext.js.page:171 C/combobox.js.page:228 C/hellognome.js.page:194
+#: C/messagedialog.js.page:184 C/radiobutton.js.page:269 C/scale.js.page:203
+#: C/spinbutton.js.page:194 C/statusbar.js.page:216 C/switch.js.page:259
+#: C/textview.js.page:243 C/togglebutton.js.page:148
+#: C/treeview_simple_liststore.js.page:267
+msgid "Complete code sample"
+msgstr "Código de ejemplo completo"
+
+#. (itstool) path: section/code
+#: C/02_welcome_to_the_grid.js.page:277
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const WelcomeToTheGrid = new Lang.Class({\n"
+" Name: 'Welcome to the Grid',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 10,\n"
+" title: \"Welcome to the Grid\"});\n"
+"\n"
+" // Create the Grid\n"
+" this._grid = new Gtk.Grid ({\n"
+" // column_homogeneous: true,\n"
+" // column_spacing: 20,\n"
+" row_spacing: 20 });\n"
+"\n"
+" // Create an image\n"
+" this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n"
+"\n"
+" // Create a second image using a stock icon\n"
+" this._icon = new Gtk.Image ({ stock: 'gtk-about' });\n"
+"\n"
+" // Create a label\n"
+" this._label = new Gtk.Label ({\n"
+" label: \"Welcome to GNOME, too!\",\n"
+" /* margin_top: 20 */ });\n"
+"\n"
+" /* Create a second label\n"
+" this._labelTwo = new Gtk.Label ({\n"
+" label: \"The cake is a pie.\" }); */\n"
+"\n"
+" /* Create a button\n"
+" this._button = new Gtk.Button ({\n"
+" label: \"Welcome to GNOME, too!\"}); */\n"
+"\n"
+" // Attach the images and button to the grid\n"
+" this._grid.attach (this._image, 0, 0, 2, 1);\n"
+" this._grid.attach (this._icon, 0, 1, 1, 1);\n"
+" this._grid.attach (this._label, 1, 1, 1, 1);\n"
+"\n"
+" // this._grid.attach (this._label, 0, 1, 1, 1);\n"
+" // this._grid.attach (this._labelTwo, 1, 1, 1, 1);\n"
+"\n"
+" // this._grid.attach (this._button, 1, 1, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new WelcomeToTheGrid ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const WelcomeToTheGrid = new Lang.Class({\n"
+" Name: 'Welcome to the Grid',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 10,\n"
+" title: \"Welcome to the Grid\"});\n"
+"\n"
+" // Create the Grid\n"
+" this._grid = new Gtk.Grid ({\n"
+" // column_homogeneous: true,\n"
+" // column_spacing: 20,\n"
+" row_spacing: 20 });\n"
+"\n"
+" // Create an image\n"
+" this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n"
+"\n"
+" // Create a second image using a stock icon\n"
+" this._icon = new Gtk.Image ({ stock: 'gtk-about' });\n"
+"\n"
+" // Create a label\n"
+" this._label = new Gtk.Label ({\n"
+" label: \"Welcome to GNOME, too!\",\n"
+" /* margin_top: 20 */ });\n"
+"\n"
+" /* Create a second label\n"
+" this._labelTwo = new Gtk.Label ({\n"
+" label: \"The cake is a pie.\" }); */\n"
+"\n"
+" /* Create a button\n"
+" this._button = new Gtk.Button ({\n"
+" label: \"Welcome to GNOME, too!\"}); */\n"
+"\n"
+" // Attach the images and button to the grid\n"
+" this._grid.attach (this._image, 0, 0, 2, 1);\n"
+" this._grid.attach (this._icon, 0, 1, 1, 1);\n"
+" this._grid.attach (this._label, 1, 1, 1, 1);\n"
+"\n"
+" // this._grid.attach (this._label, 0, 1, 1, 1);\n"
+" // this._grid.attach (this._labelTwo, 1, 1, 1, 1);\n"
+"\n"
+" // this._grid.attach (this._button, 1, 1, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new WelcomeToTheGrid ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/03_getting_the_signal.js.page:37 C/03_getting_the_signal.js.page:351
+msgctxt "_"
+msgid ""
+"external ref='media/03_jssignal_01.png' "
+"md5='8d6ecab185f4af4534cc255d62b58b8e'"
+msgstr ""
+"external ref='media/03_jssignal_01.png' "
+"md5='8d6ecab185f4af4534cc255d62b58b8e'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/03_getting_the_signal.js.page:157 C/03_getting_the_signal.js.page:357
+msgctxt "_"
+msgid ""
+"external ref='media/03_jssignal_02.png' "
+"md5='ba941390fbafc4a0f653c8f70bca92c0'"
+msgstr ""
+"external ref='media/03_jssignal_02.png' "
+"md5='ba941390fbafc4a0f653c8f70bca92c0'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/03_getting_the_signal.js.page:231 C/03_getting_the_signal.js.page:363
+msgctxt "_"
+msgid ""
+"external ref='media/03_jssignal_03.png' "
+"md5='49ecf251b0bf57543c8d79a77b6f306d'"
+msgstr ""
+"external ref='media/03_jssignal_03.png' "
+"md5='49ecf251b0bf57543c8d79a77b6f306d'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/03_getting_the_signal.js.page:302 C/03_getting_the_signal.js.page:369
+msgctxt "_"
+msgid ""
+"external ref='media/03_jssignal_04.png' "
+"md5='dfc5221ca15ca9fba7d3c76a73804e2d'"
+msgstr ""
+"external ref='media/03_jssignal_04.png' "
+"md5='dfc5221ca15ca9fba7d3c76a73804e2d'"
+
+#. (itstool) path: info/desc
+#: C/03_getting_the_signal.js.page:21
+msgid "Create Buttons and other widgets that do things when you click on them."
+msgstr "Crear botones y otros widgets que efectúan acciones cuando los pulsa."
+
+#. (itstool) path: page/title
+#: C/03_getting_the_signal.js.page:24
+msgid "3. Getting the Signal"
+msgstr "3. Obtener la señal"
+
+#. (itstool) path: synopsis/p
+#: C/03_getting_the_signal.js.page:26
+msgid ""
+"In the last tutorial, we learned how to create widgets like Labels, Images, "
+"and Buttons. Here, we'll learn how to make Buttons and other input widgets "
+"actually do things, by writing functions which handle the signals they send "
+"when they are clicked on or interacted with."
+msgstr ""
+"En el último tutorial, aprendió cómo crear widgets como etiquetas, imágenes "
+"y botones. Aquí, aprenderá cómo hacer que los botones y otros widgets de "
+"entrada hagan cosas realmente, escribiendo funciones que manejen las señales "
+"que envían cuando se pulsan o interactúan."
+
+#. (itstool) path: section/title
+#: C/03_getting_the_signal.js.page:32
+msgid "A basic application"
+msgstr "Una aplicación básica"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:33
+msgid ""
+"In GNOME, widgets that you can interact with, like Buttons and Switches, "
+"send out signals when they are clicked on or activated. A Button, for "
+"instance, sends out the \"clicked\" signal when somebody clicks on it. When "
+"this happens, GNOME looks for the part in your code that says what to do."
+msgstr ""
+"En GNOME, los widgets con los que puede interactuar, como los botones y los "
+"interruptores, envían señales cuando se pulsan o activan. Un botón, por "
+"ejemplo, envía la señal «clicked» cuando alguien lo pulsa. Cuando esto "
+"sucede, GNOME busca la parte de su código que dice qué hacer."
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:34
+msgid ""
+"How do we write that code? By connecting that Button's \"clicked\" signal to "
+"a callback function, which is a function you write just to handle that "
+"signal. So whenever it gives off that signal, the function connected to that "
+"signal is run."
+msgstr ""
+"¿Cómo se escribe ese código? Conectando la señal «clicked» del botón a una "
+"función de retorno de llamada, que es una función que se escribe sólo para "
+"manejar esa señal. Entonces, cuando se envía esa señal, la función conectada "
+"se ejecuta."
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:35
+msgid "Here is an extremely basic example:"
+msgstr "Aquí hay un ejemplo extremadamente básico:"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:39
+msgid ""
+"This ApplicationWindow has a Button and a Label inside it, arranged in a "
+"Grid. Whenever the Button is clicked, a variable that holds the number of "
+"cookies is increased by 1, and the Label that shows how many cookies there "
+"are is updated."
+msgstr ""
+"La ApplicationWindow tiene un botón y una etiqueta dentro, ordenados en una "
+"rejilla. Cuando se pulsa el botón, una variable que guarda el número de "
+"galletas se incrementa en 1, y la etiqueta que muestra cuántas galletas hay "
+"se actualiza."
+
+#. (itstool) path: note/p
+#: C/03_getting_the_signal.js.page:40
+msgid ""
+"The cookies in this example are not the same as the cookies that you get "
+"from websites, which store your login information and may keep track of "
+"which sites you've visited. They're just imaginary treats. You may bake some "
+"real ones if you like."
+msgstr ""
+"Las galletas en este ejemplo no son las «cookies» que obtiene de sitios web, "
+"que almacenan su información de sesión y pueden rastrear qué sitios visitó. "
+"Son solamente utilería imaginaria. Puede hornear algunas reales, si quiere."
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:41
+msgid ""
+"Here is the basic, boilerplate code that goes at the start of the "
+"application, before we start creating the window and widgets. Besides the "
+"application having a unique name, the biggest change from the usual "
+"boilerplate is that we create a global variable right near the beginning, to "
+"hold the number of cookies."
+msgstr ""
+"Aquí está el código básico y repetitivo que va al inicio de la aplicación, "
+"antes de comenzar a crear la ventana y los widgets. Además de que la "
+"aplicación tiene un nombre único, el cambio más grande respecto del código "
+"usual es que se crea una variable global cerca del principio, para guardar "
+"el número de galletas."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:42
+#, no-wrap
+msgid ""
+"\n"
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"// We start out with 0 cookies\n"
+"var cookies = 0;\n"
+"\n"
+"const GettingTheSignal = new Lang.Class({\n"
+" Name: 'Getting the Signal',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"// We start out with 0 cookies\n"
+"var cookies = 0;\n"
+"\n"
+"const GettingTheSignal = new Lang.Class({\n"
+" Name: 'Getting the Signal',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:73
+msgid ""
+"Take a look at the part that uses our application's connect method and Lang."
+"bind, to connect its activate and startup signals to the functions that "
+"present the window and build the UI. We're going to do the same thing with "
+"our Button when we get to it, except that we're going to connect its "
+"\"clicked\" signal instead."
+msgstr ""
+"Eche un vistazo a la parte que usa el método «connect» de la aplicación y "
+"«Lang.bind», para conectar sus señales «activate» y «startup» a las "
+"funciones que presentan la ventana y construyen la IU. Va a hacer lo mismo "
+"con el botón cuando llegue a él, excepto que conectará la señal «clicked» en "
+"su lugar."
+
+#. (itstool) path: section/title
+#: C/03_getting_the_signal.js.page:77
+msgid "Click the button"
+msgstr "Pulsar el botón"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:79
+msgid ""
+"As usual, we'll put all the code to create our Button and other widgets "
+"inside the _buildUI function, which is called when the application starts up."
+msgstr ""
+"Como siempre, se pondrá todo el código para crear el botón y los otros "
+"widgets dentro de la función «_buildUI», que se llama cuando la aplicación "
+"arranca."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:80
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+msgstr ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:85
+msgid "First, we create the window itself:"
+msgstr "Primero, se crea la ventana en sí:"
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:86
+#, no-wrap
+msgid ""
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" title: \"Click the button to get a cookie!\"});\n"
+msgstr ""
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" title: \"Click the button to get a cookie!\"});\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:95
+msgid ""
+"Note that we've set its default_height and default_width properties. These "
+"let us control how tall and wide the ApplicationWindow will be, in pixels."
+msgstr ""
+"Tenga en cuenta que se han establecido sus propiedades «default_height» y "
+"«default_width». Estas le permiten controlar qué tan alta y ancha será la "
+"«ApplicationWindow», en píxeles."
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:96
+msgid ""
+"Next, we'll create the Label that shows us the number of cookies. We can use "
+"the cookies variable as part of the Label's label property."
+msgstr ""
+"A continuación, se creará la etiqueta que muestra el número de galletas. Se "
+"puede usar la variable de las galletas como parte de la propiedad «label» de "
+"la etiqueta."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:97
+#, no-wrap
+msgid ""
+"\n"
+" // Create the label\n"
+" this._cookieLabel = new Gtk.Label ({\n"
+" label: \"Number of cookies: \" + cookies });\n"
+msgstr ""
+"\n"
+" // Create the label\n"
+" this._cookieLabel = new Gtk.Label ({\n"
+" label: \"Number of cookies: \" + cookies });\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:103
+msgid ""
+"Now we'll create the Button. We set its label property to show the text that "
+"we want on the Button, and we connect its \"clicked\" signal to a function "
+"called _getACookie, which we'll write after we're done building our "
+"application's UI."
+msgstr ""
+"Ahora se creará el botón. Se configura su propiedad «label» para que muestre "
+"el texto que quiere en el botón, y se conecta su señal «clicked» a una "
+"función llamada «_getACookie», que se escribirá después de haber construido "
+"la IU de la aplicación."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:104
+#, no-wrap
+msgid ""
+"\n"
+" // Create the cookie button\n"
+" this._cookieButton = new Gtk.Button ({ label: \"Get a cookie\" });\n"
+"\n"
+" // Connect the cookie button to the function that handles clicking it\n"
+" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
+msgstr ""
+"\n"
+" // Create the cookie button\n"
+" this._cookieButton = new Gtk.Button ({ label: \"Get a cookie\" });\n"
+"\n"
+" // Connect the cookie button to the function that handles clicking it\n"
+" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:111
+msgid ""
+"Finally, we create a Grid, attach the Label and Button to it, add it to the "
+"window and tell the window to show itself and its contents. That's all we "
+"need inside the _buildUI function, so we close it with a bracket, as well as "
+"a comma that tells GNOME to go on to the next function. Note that even "
+"though we wrote the code for the Label first, we can still attach it to the "
+"Grid in a way that will put it on the bottom."
+msgstr ""
+"Finalmente, se crea una rejilla, se le adjuntan la etiqueta y el botón, se "
+"añade a la ventana y se le dice que se muestre con su contenido. Eso es todo "
+"lo que necesita dentro de la función «_buildUI», por lo que se cierra con un "
+"paréntesis y un punto y coma que le dice a GNOME que continúe con la "
+"siguiente función. Tenga en cuenta que incluso a pesar de que se escribió el "
+"código de la etiqueta primero, igual se puede adjuntar a la rejilla de forma "
+"tal que quede en la parte inferior."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:112
+#, no-wrap
+msgid ""
+"\n"
+" // Create a grid to arrange everything inside\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" row_spacing: 20 });\n"
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 1, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+"\n"
+" },\n"
+msgstr ""
+"\n"
+" // Create a grid to arrange everything inside\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" row_spacing: 20 });\n"
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 1, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+"\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:131
+msgid ""
+"Now, we write the _getACookie function. Whenever our Button sends out its "
+"\"clicked\" signal, the code in this function will run. In this case, all it "
+"does is increase the number of cookies by 1, and update the Label to show "
+"the new number of cookies. We do this using the Label's set_label method."
+msgstr ""
+"Ahora, se escribe la función «_getACookie». Cada vez que el botón envíe su "
+"señal «clicked», se ejecutará el código de esta función. En este caso, todo "
+"lo que hace es incrementar el número de galletas en 1, y actualizar la "
+"etiqueta para que muestre el número nuevo. Esto se hace usando el método "
+"«set_label» de la etiqueta."
+
+#. (itstool) path: note/p
+#: C/03_getting_the_signal.js.page:132
+msgid ""
+"Many widgets have the same properties and methods. Both Labels and Buttons, "
+"for instance, have a label property that says what text is inside them, and "
+"get_label and set_label methods that let you check what that text is and "
+"change it, respectively. So if you learn how one widget works, you'll also "
+"know how others like it work."
+msgstr ""
+"Muchos widgets tienen las mismas propiedades y métodos. Tanto las etiquetas "
+"como los botones, por ejemplo, tienen una propiedad «label» que dice qué "
+"texto va dentro de ellos, y métodos «get_label» y «set_label» que le "
+"permiten verificar cuál es el texto y cambiarlo, respectivamente. Por lo que "
+"si aprende cómo funciona un widget, también aprenderá cómo funcionan otros "
+"similares."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:133
+#, no-wrap
+msgid ""
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+msgstr ""
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:145
+msgid ""
+"Finally, we run the application, using the same kind of code as in our last "
+"tutorial."
+msgstr ""
+"Finalmente, se ejecuta la aplicación, usando el mismo tipo de código que en "
+"el tutorial anterior."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:146
+#, no-wrap
+msgid ""
+"\n"
+"// Run the application\n"
+"let app = new GettingTheSignal ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"// Run the application\n"
+"let app = new GettingTheSignal ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/title
+#: C/03_getting_the_signal.js.page:154
+msgid "Flip the switch"
+msgstr "Pulsar el interruptor"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:155
+msgid ""
+"Buttons aren't the only input widgets in our GTK+ toolbox. We can also use "
+"switches, like the one in this example. Switches don't have a label "
+"property, so we have to create a separate Label that says what it does to go "
+"next to it."
+msgstr ""
+"Los botones no son el único widget de entrada de la caja de herramientas de "
+"GTK+. También se pueden usar interruptores, como el de este ejemplo. Los "
+"interruptores no tienen una propiedad «label», por lo que hay que crear una "
+"etiqueta separada que diga qué hace a su lado."
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:159
+msgid ""
+"A Switch has two positions, Off and On. When a Switch is turned on, its text "
+"and background color change, so you can tell which position it's in."
+msgstr ""
+"Un interruptor tiene dos posiciones, «apagado» y «encendido». Cuando un "
+"interruptor está encendido, su texto y color de fondo cambian, indicando en "
+"qué posición está."
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:161
+msgid ""
+"You may have seen Switches like these in GNOME's accessibility menu, which "
+"let you turn features like large text and the on-screen keyboard on and off. "
+"In this case, the Switch controls our imaginary cookie dispenser. If the "
+"Switch is turned on, you can get cookies by clicking the \"Get a cookie\" "
+"Button. If it's turned off, clicking the Button won't do anything."
+msgstr ""
+"Puede haber visto interruptores como estos en el menú de accesibilidad de "
+"GNOME, que le permiten conmutar características como texto grande y el "
+"teclado en pantalla. En este caso, el interruptor controla un dispensador de "
+"galletas imaginario. Si el interruptor está encendido, puede obtener "
+"galletas pulsando el botón «Get a cookie». Si está apagado, pulsar el botón "
+"no hará nada."
+
+#. (itstool) path: note/p
+#: C/03_getting_the_signal.js.page:162
+msgid ""
+"You can get to the accessibility menu by clicking on the outline of a human, "
+"near your name in the upper-right corner of the screen."
+msgstr ""
+"Puede llegar al menú de accesibilidad pulsando el contorno de un humano, "
+"cerca de su nombre en la esquina superior derecha de la pantalla."
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:163
+msgid "Here's how we create the Switch:"
+msgstr "Aquí se muestra cómo crear el interruptor:"
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:164
+#, no-wrap
+msgid ""
+"\n"
+" // Create the switch that controls whether or not you can win\n"
+" this._cookieSwitch = new Gtk.Switch ();\n"
+msgstr ""
+"\n"
+" // Create the switch that controls whether or not you can win\n"
+" this._cookieSwitch = new Gtk.Switch ();\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:169
+msgid ""
+"We don't actually need to connect the Switch to anything. All we need to do "
+"is write an if statement in our _getACookie function, to check to see if the "
+"Switch is turned on. If we wanted to make something happen as soon as you "
+"flip the Switch, though, we would connect its notify::active signal, like so:"
+msgstr ""
+"En realidad no se necesita conectar el interruptor a nada. Todo lo que hay "
+"que hacer es escribir una declaración «if» en la función «_getACookie», para "
+"verificar si el interruptor está encendido. Si quisiera hacer que algo "
+"suceda tan pronto como se acciona el interruptor, conectaría su señal "
+"«notify::active», así:"
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:170
+#, no-wrap
+msgid ""
+"\n"
+" // Connect the switch to the function that handles it\n"
+" this._cookieSwitch.connect ('notify::active', Lang.bind (this, this._cookieDispenser));\n"
+msgstr ""
+"\n"
+" // Connect the switch to the function that handles it\n"
+" this._cookieSwitch.connect ('notify::active', Lang.bind (this, this._cookieDispenser));\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:175
+msgid ""
+"A Switch is set to the off position by default. If we wanted the Switch to "
+"start out turned on, we would set the value of its active property to true "
+"when we create it."
+msgstr ""
+"De manera predeterminada, un interruptor está apagado. Si quisiera que el "
+"interruptor arrancara encendido, establecería el valor de su propiedad "
+"«active» a «true» cuando lo crea."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:176
+#, no-wrap
+msgid ""
+"\n"
+" this._cookieSwitch = new Gtk.Switch ({ active: true });\n"
+msgstr ""
+"\n"
+" this._cookieSwitch = new Gtk.Switch ({ active: true });\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:180
+msgid ""
+"Let's just create it normally, though, and then create the Label that goes "
+"with it. We want the Switch and the Label to be kept right next to each "
+"other, so we'll create a Grid just for them, then put that Grid in our "
+"larger Grid that holds all the widgets inside it. Here's what the code looks "
+"like to create all that:"
+msgstr ""
+"Por ahora sólo se creará normalmente, y después se creará la etiqueta que lo "
+"acompaña. Se quiere que el interruptor y la etiqueta estén lado a lado, por "
+"lo que se creará una rejilla sólo para ellos, y después se pondrá esa "
+"rejilla en la rejilla más grande que contiene todos los widgets. Aquí está "
+"cómo se ve el código para crear todo eso:"
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:181
+#, no-wrap
+msgid ""
+"\n"
+" // Create the switch that controls whether or not you can win\n"
+" this._cookieSwitch = new Gtk.Switch ();\n"
+"\n"
+" // Create the label to go with the switch\n"
+" this._switchLabel = new Gtk.Label ({\n"
+" label: \"Cookie dispenser\" });\n"
+"\n"
+" // Create a grid for the switch and its label\n"
+" this._switchGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Put the switch and its label inside that grid\n"
+" this._switchGrid.attach (this._switchLabel, 0, 0, 1, 1);\n"
+" this._switchGrid.attach (this._cookieSwitch, 1, 0, 1, 1);\n"
+msgstr ""
+"\n"
+" // Create the switch that controls whether or not you can win\n"
+" this._cookieSwitch = new Gtk.Switch ();\n"
+"\n"
+" // Create the label to go with the switch\n"
+" this._switchLabel = new Gtk.Label ({\n"
+" label: \"Cookie dispenser\" });\n"
+"\n"
+" // Create a grid for the switch and its label\n"
+" this._switchGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Put the switch and its label inside that grid\n"
+" this._switchGrid.attach (this._switchLabel, 0, 0, 1, 1);\n"
+" this._switchGrid.attach (this._cookieSwitch, 1, 0, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:199
+msgid "And now we arrange everything in the larger Grid like so."
+msgstr "Y ahora se organiza todo en la rejilla más grande así."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:200
+#, no-wrap
+msgid ""
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
+" this._grid.attach (this._switchGrid, 0, 1, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
+msgstr ""
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
+" this._grid.attach (this._switchGrid, 0, 1, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:207
+msgid ""
+"Now we change the _getACookie function so that it checks to see if the "
+"cookie dispenser is turned on. We do that by using the Switch's get_active "
+"method. It returns true if the Switch is turned on, and false if the Switch "
+"is turned off."
+msgstr ""
+"Ahora se cambia la función «_getACookie» para que verifique si el "
+"dispensador de galletas está encendido. Se hace usando el método "
+"«get_active» del interruptor. Devuelve «true» si está encendido, y «false» "
+"si está apagado."
+
+#. (itstool) path: note/p
+#: C/03_getting_the_signal.js.page:208
+msgid ""
+"When a method is used in an if statement like this, the code inside the if "
+"statement is executed if the method returns true."
+msgstr ""
+"Cuando un método se usa en una declaración «if» como esta, el código dentro "
+"de la declaración «if» se ejecuta si el método devuelve «true»."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:209
+#, no-wrap
+msgid ""
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Is the cookie dispenser turned on?\n"
+" if (this._cookieSwitch.get_active()) {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+msgstr ""
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Is the cookie dispenser turned on?\n"
+" if (this._cookieSwitch.get_active()) {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+
+#. (itstool) path: section/title
+#: C/03_getting_the_signal.js.page:227
+msgid "Tuning the radio"
+msgstr "Sintonizar la radio"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:229
+msgid ""
+"Another type of input widget we can use is called the RadioButton. You "
+"create them in groups, and then only one RadioButton in a group can be "
+"selected at a time. They're called RadioButtons because they work like the "
+"channel preset button in old-style car radios. The radio could only be tuned "
+"to one station at a time, so whenever you pressed one button in, another "
+"would pop back out."
+msgstr ""
+"Otro tipo de widget de entrada que puede usar se llama botón de radio. Se "
+"crean en grupos, y sólo un botón de radio en un grupo puede seleccionarse "
+"por vez. Se llaman botones de radio porque funcionan como los botones de "
+"selección de canal en las radios de coches viejos. La radio sólo podía "
+"sintonizarse con una estación a la vez, por lo que cada vez que presionaba "
+"un botón, otro saltaba hacia arriba."
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:233
+msgid ""
+"First off, let's change our ApplicationWindow's name and increase its "
+"border_width property, so that our widgets aren't packed in too tightly. The "
+"border_width is the number of pixels between any widget and the edge of the "
+"window."
+msgstr ""
+"Primero, cambie el nombre de la «ApplicationWindow» e incremente su "
+"propiedad «border_width», para que los widgets no se empaqueten demasiado "
+"apretados. El «border_width» es el número de píxeles entre cualquier widget "
+"y el borde de la ventana."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:234
+#, no-wrap
+msgid ""
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" border_width: 20,\n"
+" title: \"Choose the one that says 'cookie'!\"});\n"
+msgstr ""
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" border_width: 20,\n"
+" title: \"Choose the one that says 'cookie'!\"});\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:245
+msgid ""
+"After that, we create the RadioButtons. Remember how they're created in "
+"groups? The way we do that, is we set each new RadioButton's group property "
+"to the name of another RadioButton."
+msgstr ""
+"Después de eso, se crean los botones de radio. ¿Recuerda cómo se crean en "
+"grupos? Eso se hace estableciendo la propiedad «group» de cada botón de "
+"radio al nombre de otro."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:246
+#, no-wrap
+msgid ""
+"\n"
+" // Create the radio buttons\n"
+" this._cookieRadio = new Gtk.RadioButton ({ label: \"Cookie\" });\n"
+" this._notCookieOne = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
+" group: this._cookieRadio });\n"
+" this._notCookieTwo = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
+" group: this._cookieRadio });\n"
+msgstr ""
+"\n"
+" // Create the radio buttons\n"
+" this._cookieRadio = new Gtk.RadioButton ({ label: \"Cookie\" });\n"
+" this._notCookieOne = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
+" group: this._cookieRadio });\n"
+" this._notCookieTwo = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
+" group: this._cookieRadio });\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:255
+msgid ""
+"Next, we create a Grid for the RadioButtons. Remember, we don't have to "
+"arrange things in Grids in the same order that we create them in."
+msgstr ""
+"A continuación, se crea una rejilla para los botones de radio. Recuerde, no "
+"es necesario ordenar cosas en rejillas en el mismo orden que se crean."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:256
+#, no-wrap
+msgid ""
+"\n"
+" // Arrange the radio buttons in their own grid\n"
+" this._radioGrid = new Gtk.Grid ();\n"
+" this._radioGrid.attach (this._notCookieOne, 0, 0, 1, 1);\n"
+" this._radioGrid.attach (this._cookieRadio, 0, 1, 1, 1);\n"
+" this._radioGrid.attach (this._notCookieTwo, 0, 2, 1, 1);\n"
+msgstr ""
+"\n"
+" // Arrange the radio buttons in their own grid\n"
+" this._radioGrid = new Gtk.Grid ();\n"
+" this._radioGrid.attach (this._notCookieOne, 0, 0, 1, 1);\n"
+" this._radioGrid.attach (this._cookieRadio, 0, 1, 1, 1);\n"
+" this._radioGrid.attach (this._notCookieTwo, 0, 2, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:264
+msgid ""
+"Normally, the RadioButton that's selected by default is the one that's the "
+"name of the group. We want the first \"Not cookie\" button to be selected by "
+"default, though, so we use its set_active method."
+msgstr ""
+"Normalmente, el botón de radio que está seleccionado de manera "
+"predeterminada es el del nombre del grupo. Sin embargo, se quiere que el "
+"primer botón «Not cookie» esté seleccionado de manera predeterminada, por lo "
+"que se usa su método «set_active»."
+
+#. (itstool) path: note/p
+#: C/03_getting_the_signal.js.page:265
+msgid "We could also set its active property to true when we create it."
+msgstr ""
+"También se podría establecer su propiedad «active» a «true» cuando se crea."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:266
+#, no-wrap
+msgid ""
+"\n"
+" // Set the button that will be at the top to be active by default\n"
+" this._notCookieOne.set_active (true);\n"
+msgstr ""
+"\n"
+" // Set the button that will be at the top to be active by default\n"
+" this._notCookieOne.set_active (true);\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:271
+msgid "Now we arrange everything in our main Grid like usual ..."
+msgstr "Ahora se organiza todo en la rejilla principal como siempre…"
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:272
+#, no-wrap
+msgid ""
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._radioGrid, 0, 0, 1, 1);\n"
+" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
+msgstr ""
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._radioGrid, 0, 0, 1, 1);\n"
+" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:279
+msgid ""
+"And then we change our _getACookie function to test to see if the cookie "
+"button is the one that's selected."
+msgstr ""
+"Y después se cambia la función «_getACookie» para probar si el botón de la "
+"galleta es el que está seleccionado."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:280
+#, no-wrap
+msgid ""
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Did you select \"cookie\" instead of \"not cookie\"?\n"
+" if (this._cookieRadio.get_active()) {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+msgstr ""
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Did you select \"cookie\" instead of \"not cookie\"?\n"
+" if (this._cookieRadio.get_active()) {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+
+#. (itstool) path: section/title
+#: C/03_getting_the_signal.js.page:298
+msgid "Can you spell \"cookie\"?"
+msgstr "¿Puede deletrear «cookie»?"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:300
+msgid ""
+"The last input widget we're going to cover is the Entry widget, which is "
+"used for single-line text entry."
+msgstr ""
+"El último widget de entrada que se va a cubrir es el widget «Entry», que se "
+"usa para entrada de texto de una sola línea."
+
+#. (itstool) path: note/p
+#: C/03_getting_the_signal.js.page:301
+msgid ""
+"If you need to be able to enter in a whole paragraph or more, like if you "
+"are building a text editor, you'll want to look at the much more "
+"customizable <link xref=\"textview.js\">TextView</link> widget."
+msgstr ""
+"Si necesita poder introducir un párrafo entero o más, como si estuviera "
+"construyendo un editor de texto, querrá echar un vistazo al widget <link "
+"xref=\"textview.js\">TextView</link>, mucho más configurable."
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:304
+msgid "After we change the window's name, we create the Entry widget."
+msgstr "Después de cambiar el nombre de la ventana, se crea el widget «Entry»."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:305
+#, no-wrap
+msgid ""
+"\n"
+" // Create the text entry field\n"
+" this._spellCookie = new Gtk.Entry ();\n"
+msgstr ""
+"\n"
+" // Create the text entry field\n"
+" this._spellCookie = new Gtk.Entry ();\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:310
+msgid "Next, we arrange everything in the Grid ..."
+msgstr "A continuación, se organiza todo en la rejilla…"
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:311
+#, no-wrap
+msgid ""
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._spellCookie, 0, 0, 1, 1);\n"
+" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
+msgstr ""
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._spellCookie, 0, 0, 1, 1);\n"
+" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:318
+msgid ""
+"And now we modify _getACookie's if statement again, using the Entry's "
+"get_text method to retrieve the text that you entered into it and see if you "
+"spelled \"cookie\" right. We don't care whether you capitalize \"cookie\" or "
+"not, so we use JavaScript's built-in toLowerCase method to change the "
+"Entry's text to all lower case inside the if statement."
+msgstr ""
+"Y ahora se modifica la declaración «if» de «_getACookie» nuevamente, usando "
+"el método «get_text» del «Entry» para obtener el texto que introdujo y "
+"verificar si deletreó «cookie» correctamente. No importa si utiliza "
+"mayúsculas, por lo que se usa el método «toLowerCase» integrado de "
+"JavaScript para cambiar todo el texto del «Entry» a minúsculas dentro de la "
+"declaración «if»."
+
+#. (itstool) path: note/p
+#: C/03_getting_the_signal.js.page:319
+msgid ""
+"An Entry widget doesn't have a label property, which is a set text string "
+"that the user can't change. (You can't normally change the label on a "
+"Button, for instance.) Instead, it has a text property, which changes to "
+"match what the user types in."
+msgstr ""
+"Un widget «Entry» no tiene una propiedad «label», que es una cadena de texto "
+"establecida que el usuario no puede cambiar (normalmente no puede cambiar la "
+"etiqueta de un botón, por ejemplo). En su lugar, tiene una propiedad «text», "
+"que cambia de acuerdo a lo que el usuario introduce."
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:320
+#, no-wrap
+msgid ""
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Did you spell \"cookie\" correctly?\n"
+" if ((this._spellCookie.get_text()).toLowerCase() == \"cookie\") {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+msgstr ""
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Did you spell \"cookie\" correctly?\n"
+" if ((this._spellCookie.get_text()).toLowerCase() == \"cookie\") {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+
+#. (itstool) path: section/p
+#: C/03_getting_the_signal.js.page:339
+msgid ""
+"Keep reading, if you'd like to see the complete code for each version of our "
+"cookie maker application."
+msgstr ""
+"Siga leyendo, si quiere ver el código completo para cada versión de la "
+"aplicación creadora de galletas."
+
+#. (itstool) path: note/p
+#: C/03_getting_the_signal.js.page:340
+msgid ""
+"The main JavaScript tutorials page has <link xref=\"beginner.js#buttons"
+"\">more detailed code samples</link> for each input widget, including "
+"several not covered here."
+msgstr ""
+"La página principal de tutoriales de JavaScript tiene <link xref=\"beginner."
+"js#buttons\">ejemplos de código más detallados</link> para cada widget de "
+"entrada, incluyendo varios no cubiertos aquí."
+
+#. (itstool) path: section/title
+#: C/03_getting_the_signal.js.page:345
+msgid "Complete code samples"
+msgstr "Ejemplos de código completos"
+
+#. (itstool) path: section/title
+#: C/03_getting_the_signal.js.page:350
+msgid "Code sample with Button"
+msgstr "Ejemplo de código con botón"
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:352
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"// We start out with 0 cookies\n"
+"var cookies = 0;\n"
+"\n"
+"const GettingTheSignal = new Lang.Class({\n"
+" Name: 'Getting the Signal',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" title: \"Click the button to get a cookie!\"});\n"
+"\n"
+" // Create the label\n"
+" this._cookieLabel = new Gtk.Label ({\n"
+" label: \"Number of cookies: \" + cookies });\n"
+"\n"
+" // Create the cookie button\n"
+" this._cookieButton = new Gtk.Button ({ label: \"Get a cookie\" });\n"
+"\n"
+" // Connect the cookie button to the function that handles clicking it\n"
+" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
+"\n"
+" // Create a grid to arrange everything inside\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" row_spacing: 20 });\n"
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 1, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new GettingTheSignal ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"// We start out with 0 cookies\n"
+"var cookies = 0;\n"
+"\n"
+"const GettingTheSignal = new Lang.Class({\n"
+" Name: 'Getting the Signal',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" title: \"Click the button to get a cookie!\"});\n"
+"\n"
+" // Create the label\n"
+" this._cookieLabel = new Gtk.Label ({\n"
+" label: \"Number of cookies: \" + cookies });\n"
+"\n"
+" // Create the cookie button\n"
+" this._cookieButton = new Gtk.Button ({ label: \"Get a cookie\" });\n"
+"\n"
+" // Connect the cookie button to the function that handles clicking it\n"
+" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
+"\n"
+" // Create a grid to arrange everything inside\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" row_spacing: 20 });\n"
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 1, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new GettingTheSignal ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/title
+#: C/03_getting_the_signal.js.page:356
+msgid "Code sample with Switch"
+msgstr "Ejemplo de código con interruptor"
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:358
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"// We start out with 0 cookies\n"
+"var cookies = 0;\n"
+"\n"
+"const GettingTheSignal = new Lang.Class({\n"
+" Name: 'Getting the Signal',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" title: \"Click the button to get a cookie!\"});\n"
+"\n"
+" // Create the label\n"
+" this._cookieLabel = new Gtk.Label ({\n"
+" label: \"Number of cookies: \" + cookies });\n"
+"\n"
+" // Create the cookie button\n"
+" this._cookieButton = new Gtk.Button ({\n"
+" label: \"Get a cookie\" });\n"
+"\n"
+" // Connect the cookie button to the function that handles clicking it\n"
+" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
+"\n"
+" // Create the switch that controls whether or not you can win\n"
+" this._cookieSwitch = new Gtk.Switch ();\n"
+"\n"
+" // Create the label to go with the switch\n"
+" this._switchLabel = new Gtk.Label ({\n"
+" label: \"Cookie dispenser\" });\n"
+"\n"
+" // Create a grid for the switch and its label\n"
+" this._switchGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Put the switch and its label inside that grid\n"
+" this._switchGrid.attach (this._switchLabel, 0, 0, 1, 1);\n"
+" this._switchGrid.attach (this._cookieSwitch, 1, 0, 1, 1);\n"
+"\n"
+" // Create a grid to arrange everything else inside\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" row_spacing: 20 });\n"
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
+" this._grid.attach (this._switchGrid, 0, 1, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Is the cookie dispenser turned on?\n"
+" if (this._cookieSwitch.get_active()) {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new GettingTheSignal ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"// We start out with 0 cookies\n"
+"var cookies = 0;\n"
+"\n"
+"const GettingTheSignal = new Lang.Class({\n"
+" Name: 'Getting the Signal',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" title: \"Click the button to get a cookie!\"});\n"
+"\n"
+" // Create the label\n"
+" this._cookieLabel = new Gtk.Label ({\n"
+" label: \"Number of cookies: \" + cookies });\n"
+"\n"
+" // Create the cookie button\n"
+" this._cookieButton = new Gtk.Button ({\n"
+" label: \"Get a cookie\" });\n"
+"\n"
+" // Connect the cookie button to the function that handles clicking it\n"
+" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
+"\n"
+" // Create the switch that controls whether or not you can win\n"
+" this._cookieSwitch = new Gtk.Switch ();\n"
+"\n"
+" // Create the label to go with the switch\n"
+" this._switchLabel = new Gtk.Label ({\n"
+" label: \"Cookie dispenser\" });\n"
+"\n"
+" // Create a grid for the switch and its label\n"
+" this._switchGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Put the switch and its label inside that grid\n"
+" this._switchGrid.attach (this._switchLabel, 0, 0, 1, 1);\n"
+" this._switchGrid.attach (this._cookieSwitch, 1, 0, 1, 1);\n"
+"\n"
+" // Create a grid to arrange everything else inside\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" row_spacing: 20 });\n"
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n"
+" this._grid.attach (this._switchGrid, 0, 1, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Is the cookie dispenser turned on?\n"
+" if (this._cookieSwitch.get_active()) {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new GettingTheSignal ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/title
+#: C/03_getting_the_signal.js.page:362
+msgid "Code sample with RadioButton"
+msgstr "Ejemplo de código con botón de radio"
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:364
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"// We start out with 0 cookies\n"
+"var cookies = 0;\n"
+"\n"
+"const GettingTheSignal = new Lang.Class({\n"
+" Name: 'Getting the Signal',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" border_width: 20,\n"
+" title: \"Choose the one that says 'cookie'!\"});\n"
+"\n"
+" // Create the radio buttons\n"
+" this._cookieRadio = new Gtk.RadioButton ({ label: \"Cookie\" });\n"
+" this._notCookieOne = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
+" group: this._cookieRadio });\n"
+" this._notCookieTwo = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
+" group: this._cookieRadio });\n"
+"\n"
+" // Arrange the radio buttons in their own grid\n"
+" this._radioGrid = new Gtk.Grid ();\n"
+" this._radioGrid.attach (this._notCookieOne, 0, 0, 1, 1);\n"
+" this._radioGrid.attach (this._cookieRadio, 0, 1, 1, 1);\n"
+" this._radioGrid.attach (this._notCookieTwo, 0, 2, 1, 1);\n"
+"\n"
+" // Set the button that will be at the top to be active by default\n"
+" this._notCookieOne.set_active (true);\n"
+"\n"
+" // Create the cookie button\n"
+" this._cookieButton = new Gtk.Button ({\n"
+" label: \"Get a cookie\" });\n"
+"\n"
+" // Connect the cookie button to the function that handles clicking it\n"
+" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
+"\n"
+" // Create the label\n"
+" this._cookieLabel = new Gtk.Label ({\n"
+" label: \"Number of cookies: \" + cookies });\n"
+"\n"
+" // Create a grid to arrange everything inside\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" row_spacing: 20 });\n"
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._radioGrid, 0, 0, 1, 1);\n"
+" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Did you select \"cookie\" instead of \"not cookie\"?\n"
+" if (this._cookieRadio.get_active()) {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new GettingTheSignal ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"// We start out with 0 cookies\n"
+"var cookies = 0;\n"
+"\n"
+"const GettingTheSignal = new Lang.Class({\n"
+" Name: 'Getting the Signal',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" border_width: 20,\n"
+" title: \"Choose the one that says 'cookie'!\"});\n"
+"\n"
+" // Create the radio buttons\n"
+" this._cookieRadio = new Gtk.RadioButton ({ label: \"Cookie\" });\n"
+" this._notCookieOne = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
+" group: this._cookieRadio });\n"
+" this._notCookieTwo = new Gtk.RadioButton ({ label: \"Not cookie\",\n"
+" group: this._cookieRadio });\n"
+"\n"
+" // Arrange the radio buttons in their own grid\n"
+" this._radioGrid = new Gtk.Grid ();\n"
+" this._radioGrid.attach (this._notCookieOne, 0, 0, 1, 1);\n"
+" this._radioGrid.attach (this._cookieRadio, 0, 1, 1, 1);\n"
+" this._radioGrid.attach (this._notCookieTwo, 0, 2, 1, 1);\n"
+"\n"
+" // Set the button that will be at the top to be active by default\n"
+" this._notCookieOne.set_active (true);\n"
+"\n"
+" // Create the cookie button\n"
+" this._cookieButton = new Gtk.Button ({\n"
+" label: \"Get a cookie\" });\n"
+"\n"
+" // Connect the cookie button to the function that handles clicking it\n"
+" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
+"\n"
+" // Create the label\n"
+" this._cookieLabel = new Gtk.Label ({\n"
+" label: \"Number of cookies: \" + cookies });\n"
+"\n"
+" // Create a grid to arrange everything inside\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" row_spacing: 20 });\n"
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._radioGrid, 0, 0, 1, 1);\n"
+" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Did you select \"cookie\" instead of \"not cookie\"?\n"
+" if (this._cookieRadio.get_active()) {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new GettingTheSignal ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/title
+#: C/03_getting_the_signal.js.page:368
+msgid "Code sample with Entry"
+msgstr "Ejemplo de código con «Entry»"
+
+#. (itstool) path: section/code
+#: C/03_getting_the_signal.js.page:370
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"// We start out with 0 cookies\n"
+"var cookies = 0;\n"
+"\n"
+"const GettingTheSignal = new Lang.Class({\n"
+" Name: 'Getting the Signal',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" border_width: 20,\n"
+" title: \"Spell 'cookie' to get a cookie!\"});\n"
+"\n"
+" // Create the text entry field\n"
+" this._spellCookie = new Gtk.Entry ();\n"
+"\n"
+" // Create the cookie button\n"
+" this._cookieButton = new Gtk.Button ({\n"
+" label: \"Get a cookie\" });\n"
+"\n"
+" // Connect the cookie button to the function that handles clicking it\n"
+" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
+"\n"
+" // Create the label\n"
+" this._cookieLabel = new Gtk.Label ({\n"
+" label: \"Number of cookies: \" + cookies });\n"
+"\n"
+" // Create a grid to arrange everything inside\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" row_spacing: 20 });\n"
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._spellCookie, 0, 0, 1, 1);\n"
+" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Did you spell \"cookie\" correctly?\n"
+" if ((this._spellCookie.get_text()).toLowerCase() == \"cookie\") {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new GettingTheSignal ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"// We start out with 0 cookies\n"
+"var cookies = 0;\n"
+"\n"
+"const GettingTheSignal = new Lang.Class({\n"
+" Name: 'Getting the Signal',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" border_width: 20,\n"
+" title: \"Spell 'cookie' to get a cookie!\"});\n"
+"\n"
+" // Create the text entry field\n"
+" this._spellCookie = new Gtk.Entry ();\n"
+"\n"
+" // Create the cookie button\n"
+" this._cookieButton = new Gtk.Button ({\n"
+" label: \"Get a cookie\" });\n"
+"\n"
+" // Connect the cookie button to the function that handles clicking it\n"
+" this._cookieButton.connect ('clicked', Lang.bind (this, this._getACookie));\n"
+"\n"
+" // Create the label\n"
+" this._cookieLabel = new Gtk.Label ({\n"
+" label: \"Number of cookies: \" + cookies });\n"
+"\n"
+" // Create a grid to arrange everything inside\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" row_spacing: 20 });\n"
+"\n"
+" // Put everything inside the grid\n"
+" this._grid.attach (this._spellCookie, 0, 0, 1, 1);\n"
+" this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n"
+" this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _getACookie: function() {\n"
+"\n"
+" // Did you spell \"cookie\" correctly?\n"
+" if ((this._spellCookie.get_text()).toLowerCase() == \"cookie\") {\n"
+"\n"
+" // Increase the number of cookies by 1 and update the label\n"
+" cookies++;\n"
+" this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new GettingTheSignal ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/aboutdialog.c.page:25 C/aboutdialog.js.page:21 C/aboutdialog.py.page:23
+#: C/aboutdialog.vala.page:30
+msgctxt "_"
+msgid ""
+"external ref='media/aboutdialog_GMenu.png' "
+"md5='a36117a559fa98e25e2f6b3db593639f'"
+msgstr ""
+"external ref='media/aboutdialog_GMenu.png' "
+"md5='a36117a559fa98e25e2f6b3db593639f'"
+
+#. (itstool) path: info/title
+#: C/aboutdialog.c.page:8
+msgctxt "text"
+msgid "AboutDialog (C)"
+msgstr "AboutDialog (C)"
+
+#. (itstool) path: credit/name
+#: C/aboutdialog.c.page:15 C/button.c.page:15 C/combobox.c.page:13
+#: C/dialog.c.page:15 C/entry.c.page:13 C/grid.c.page:13 C/image.c.page:13
+#: C/label.c.page:14 C/linkbutton.c.page:13 C/menubar.c.page:15
+#: C/messagedialog.c.page:14 C/progressbar.c.page:14 C/radiobutton.c.page:15
+#: C/scale.c.page:15 C/scrolledwindow.c.page:15 C/spinbutton.c.page:16
+#: C/spinner.c.page:14 C/statusbar.c.page:17 C/switch.c.page:13
+#: C/textview.c.page:13 C/togglebutton.c.page:17 C/toolbar.c.page:15
+msgid "Monica Kochofar"
+msgstr "Monica Kochofar"
+
+#. (itstool) path: info/desc
+#: C/aboutdialog.c.page:20 C/aboutdialog.js.page:17 C/aboutdialog.vala.page:26
+msgid "Display information about an application"
+msgstr "Mostrar información acerca de una aplicación"
+
+#. (itstool) path: page/title
+#: C/aboutdialog.c.page:23 C/aboutdialog.js.page:20 C/aboutdialog.py.page:22
+#: C/aboutdialog.vala.page:29
+msgid "AboutDialog"
+msgstr "AboutDialog"
+
+#. (itstool) path: page/p
+#: C/aboutdialog.c.page:26 C/aboutdialog.vala.page:31
+msgid "An AboutDialog example using Gtk.ApplicationWindow and Menu"
+msgstr "Un ejemplo de AboutDialog usando Gtk.ApplicationWindow y Menu"
+
+#. (itstool) path: note/p
+#: C/aboutdialog.c.page:27 C/aboutdialog.vala.page:32 C/gmenu.c.page:24
+msgid ""
+"<em style=\"bold\">You need to be running Gtk3.4 or later for this to work</"
+"em>"
+msgstr ""
+"<em style=\"bold\">Necesita ejecutar GTK+ 3.4 o superior para que funcione</"
+"em>"
+
+#. (itstool) path: page/code
+#: C/aboutdialog.c.page:29
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function in which reacts to the \"response\" signal from the user in\n"
+" * the message dialog window.\n"
+" * This function is used to destroy the dialog window.\n"
+" */\n"
+"static void\n"
+"on_close (GtkDialog *dialog,\n"
+" gint response_id,\n"
+" gpointer user_data)\n"
+"{\n"
+" /*This will cause the dialog to be destroyed*/\n"
+" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
+"\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the response signal \"activate\" related to the SimpleAction\n"
+" * \"about_action\".\n"
+" * This function is used to cause the about dialog window to popup.\n"
+" */\n"
+"static void\n"
+"about_cb (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *about_dialog;\n"
+"\n"
+" about_dialog = gtk_about_dialog_new ();\n"
+"\n"
+" /* Lists of authors/ documentators to be used later, they must be initialized\n"
+" * in a null terminated array of strings.\n"
+" */\n"
+" const gchar *authors[] = {\"GNOME Documentation Team\", NULL};\n"
+" const gchar *documenters[] = {\"GNOME Documentation Team\", NULL};\n"
+"\n"
+" /* We fill in the information for the about dialog */\n"
+" gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (about_dialog), \"AboutDialog Example\");\n"
+" gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about_dialog), \"Copyright \\xc2\\xa9 2012 GNOME
Documentation Team\");\n"
+" gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about_dialog), authors);\n"
+" gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (about_dialog), documenters);\n"
+" gtk_about_dialog_set_website_label (GTK_ABOUT_DIALOG (about_dialog), \"GNOME Developer Website\");\n"
+" gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about_dialog), \"http://developer.gnome.org\");\n"
+"\n"
+" /* We do not wish to show the title, which in this case would be \n"
+" * \"AboutDialog Example\". We have to reset the title of the messagedialog \n"
+" * window after setting the program name.\n"
+" */\n"
+" gtk_window_set_title (GTK_WINDOW (about_dialog), \"\");\n"
+"\n"
+" /* To close the aboutdialog when \"close\" is clicked we connect the response \n"
+" * signal to on_close\n"
+" */\n"
+" g_signal_connect (GTK_DIALOG (about_dialog), \"response\", \n"
+" G_CALLBACK (on_close), NULL);\n"
+"\n"
+" /* Show the about dialog */\n"
+" gtk_widget_show (about_dialog); \n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+"\n"
+" GSimpleAction *about_action;\n"
+"\n"
+" /* Create a window with a title and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"AboutDialog Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n"
+"\n"
+" /* Create a new simple action, giving it a NULL parameter type. It will \n"
+" * always be NULL for actions invoked from a menu. (e.g clicking on an \"ok\" \n"
+" * or \"cancel\" button)\n"
+" */\n"
+" about_action = g_simple_action_new (\"about\", NULL); \n"
+"\n"
+" /* Connect the \"activate\" signal to the appropriate callback function. \n"
+" * It will indicate that the action was just activated.\n"
+" */\n"
+" g_signal_connect (about_action, \"activate\", G_CALLBACK (about_cb), \n"
+" GTK_WINDOW (window));\n"
+"\n"
+" /* Adds the about_action to the overall action map. An Action map is an \n"
+" * interface that contains a number of named GAction instances \n"
+" * (such as about_action) \n"
+" */\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the response signal \"activate\" from the \"quit\" action \n"
+" * found in the function directly below.\n"
+" */ \n"
+"static void\n"
+"quit_cb (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GApplication *application = user_data;\n"
+"\n"
+" g_application_quit (application);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the menu we are creating in this sample */\n"
+"static void\n"
+"startup (GApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GMenu *menu;\n"
+" GSimpleAction *quit_action;\n"
+"\n"
+" /* Initialize the GMenu, and add a menu item with label \"About\" and action \n"
+" * \"win.about\". Also add another menu item with label \"Quit\" and action \n"
+" * \"app.quit\" \n"
+" */\n"
+" menu = g_menu_new ();\n"
+" g_menu_append (menu, \"About\", \"win.about\");\n"
+" g_menu_append (menu, \"Quit\", \"app.quit\");\n"
+"\n"
+" /* Create a new simple action for the application. (In this case it is the \n"
+" * \"quit\" action.\n"
+" */\n"
+" quit_action = g_simple_action_new (\"quit\", NULL);\n"
+"\n"
+" /* Ensure that the menu we have just created is set for the overall application */\n"
+" gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (menu));\n"
+"\n"
+" g_signal_connect (quit_action, \n"
+" \"activate\", \n"
+" G_CALLBACK (quit_cb), \n"
+" app);\n"
+"\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
+"\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the application */\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function in which reacts to the \"response\" signal from the user in\n"
+" * the message dialog window.\n"
+" * This function is used to destroy the dialog window.\n"
+" */\n"
+"static void\n"
+"on_close (GtkDialog *dialog,\n"
+" gint response_id,\n"
+" gpointer user_data)\n"
+"{\n"
+" /*This will cause the dialog to be destroyed*/\n"
+" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
+"\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the response signal \"activate\" related to the SimpleAction\n"
+" * \"about_action\".\n"
+" * This function is used to cause the about dialog window to popup.\n"
+" */\n"
+"static void\n"
+"about_cb (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *about_dialog;\n"
+"\n"
+" about_dialog = gtk_about_dialog_new ();\n"
+"\n"
+" /* Lists of authors/ documentators to be used later, they must be initialized\n"
+" * in a null terminated array of strings.\n"
+" */\n"
+" const gchar *authors[] = {\"GNOME Documentation Team\", NULL};\n"
+" const gchar *documenters[] = {\"GNOME Documentation Team\", NULL};\n"
+"\n"
+" /* We fill in the information for the about dialog */\n"
+" gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (about_dialog), \"AboutDialog Example\");\n"
+" gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about_dialog), \"Copyright \\xc2\\xa9 2012 GNOME
Documentation Team\");\n"
+" gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about_dialog), authors);\n"
+" gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (about_dialog), documenters);\n"
+" gtk_about_dialog_set_website_label (GTK_ABOUT_DIALOG (about_dialog), \"GNOME Developer Website\");\n"
+" gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about_dialog), \"http://developer.gnome.org\");\n"
+"\n"
+" /* We do not wish to show the title, which in this case would be \n"
+" * \"AboutDialog Example\". We have to reset the title of the messagedialog \n"
+" * window after setting the program name.\n"
+" */\n"
+" gtk_window_set_title (GTK_WINDOW (about_dialog), \"\");\n"
+"\n"
+" /* To close the aboutdialog when \"close\" is clicked we connect the response \n"
+" * signal to on_close\n"
+" */\n"
+" g_signal_connect (GTK_DIALOG (about_dialog), \"response\", \n"
+" G_CALLBACK (on_close), NULL);\n"
+"\n"
+" /* Show the about dialog */\n"
+" gtk_widget_show (about_dialog); \n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+"\n"
+" GSimpleAction *about_action;\n"
+"\n"
+" /* Create a window with a title and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"AboutDialog Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n"
+"\n"
+" /* Create a new simple action, giving it a NULL parameter type. It will \n"
+" * always be NULL for actions invoked from a menu. (e.g clicking on an \"ok\" \n"
+" * or \"cancel\" button)\n"
+" */\n"
+" about_action = g_simple_action_new (\"about\", NULL); \n"
+"\n"
+" /* Connect the \"activate\" signal to the appropriate callback function. \n"
+" * It will indicate that the action was just activated.\n"
+" */\n"
+" g_signal_connect (about_action, \"activate\", G_CALLBACK (about_cb), \n"
+" GTK_WINDOW (window));\n"
+"\n"
+" /* Adds the about_action to the overall action map. An Action map is an \n"
+" * interface that contains a number of named GAction instances \n"
+" * (such as about_action) \n"
+" */\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the response signal \"activate\" from the \"quit\" action \n"
+" * found in the function directly below.\n"
+" */ \n"
+"static void\n"
+"quit_cb (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GApplication *application = user_data;\n"
+"\n"
+" g_application_quit (application);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the menu we are creating in this sample */\n"
+"static void\n"
+"startup (GApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GMenu *menu;\n"
+" GSimpleAction *quit_action;\n"
+"\n"
+" /* Initialize the GMenu, and add a menu item with label \"About\" and action \n"
+" * \"win.about\". Also add another menu item with label \"Quit\" and action \n"
+" * \"app.quit\" \n"
+" */\n"
+" menu = g_menu_new ();\n"
+" g_menu_append (menu, \"About\", \"win.about\");\n"
+" g_menu_append (menu, \"Quit\", \"app.quit\");\n"
+"\n"
+" /* Create a new simple action for the application. (In this case it is the \n"
+" * \"quit\" action.\n"
+" */\n"
+" quit_action = g_simple_action_new (\"quit\", NULL);\n"
+"\n"
+" /* Ensure that the menu we have just created is set for the overall application */\n"
+" gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (menu));\n"
+"\n"
+" g_signal_connect (quit_action, \n"
+" \"activate\", \n"
+" G_CALLBACK (quit_cb), \n"
+" app);\n"
+"\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
+"\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the application */\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: page/p
+#. (itstool) path: section/p
+#: C/aboutdialog.c.page:31 C/aboutdialog.js.page:25 C/aboutdialog.py.page:42
+#: C/aboutdialog.vala.page:35 C/button.c.page:30 C/button.js.page:27
+#: C/button.py.page:53 C/buttonbox.js.page:36 C/buttonbox.py.page:47
+#: C/checkbutton.c.page:26 C/checkbutton.py.page:43 C/checkbutton.vala.page:26
+#: C/colorbutton.js.page:34 C/colorbutton.py.page:41
+#: C/colorbutton.vala.page:28 C/comboboxtext.js.page:177 C/combobox.c.page:31
+#: C/combobox.js.page:234 C/combobox.py.page:43 C/combobox.vala.page:26
+#: C/combobox_multicolumn.py.page:42 C/combobox_multicolumn.vala.page:36
+#: C/dialog.c.page:30 C/dialog.js.page:26 C/dialog.py.page:47
+#: C/dialog.vala.page:28 C/entry.c.page:28 C/entry.js.page:26
+#: C/entry.py.page:62 C/entry.vala.page:26 C/filechooserdialog.py.page:71
+#: C/filechooserdialog.vala.page:36 C/fontchooserwidget.js.page:35
+#: C/fontchooserwidget.py.page:45 C/fontchooserwidget.vala.page:35
+#: C/gmenu.c.page:28 C/gmenu.js.page:26 C/gmenu.py.page:78
+#: C/gmenu.vala.page:35 C/grid.c.page:28 C/grid.js.page:30 C/grid.py.page:55
+#: C/grid.vala.page:28 C/GtkApplicationWindow.c.page:26
+#: C/GtkApplicationWindow.js.page:27 C/GtkApplicationWindow.py.page:51
+#: C/GtkApplicationWindow.vala.page:27 C/image.c.page:29 C/image.js.page:28
+#: C/image.py.page:128 C/image.vala.page:28 C/label.c.page:33
+#: C/label.js.page:26 C/label.py.page:103 C/label.vala.page:27
+#: C/linkbutton.c.page:28 C/linkbutton.js.page:26 C/linkbutton.py.page:45
+#: C/linkbutton.vala.page:26 C/menubar.c.page:33 C/menubar.py.page:184
+#: C/menubar.vala.page:188 C/menubutton.c.page:36 C/menubutton.js.page:29
+#: C/menubutton.py.page:54 C/menubutton.vala.page:29 C/messagedialog.c.page:32
+#: C/messagedialog.js.page:190 C/messagedialog.py.page:55
+#: C/messagedialog.vala.page:27 C/paned.c.page:34 C/paned.js.page:34
+#: C/paned.py.page:40 C/paned.vala.page:34 C/progressbar.c.page:29
+#: C/progressbar.js.page:35 C/progressbar.py.page:55
+#: C/progressbar.vala.page:26 C/radiobutton.c.page:30 C/radiobutton.py.page:47
+#: C/radiobutton.vala.page:29 C/scale.c.page:30 C/scale.py.page:55
+#: C/scale.vala.page:28 C/scrolledwindow.c.page:30 C/scrolledwindow.js.page:34
+#: C/scrolledwindow.py.page:43 C/scrolledwindow.vala.page:27
+#: C/separator.c.page:36 C/separator.py.page:37 C/separator.vala.page:38
+#: C/spinbutton.c.page:31 C/spinbutton.py.page:47 C/spinbutton.vala.page:28
+#: C/spinner.c.page:29 C/spinner.js.page:26 C/spinner.py.page:40
+#: C/spinner.vala.page:26 C/statusbar.c.page:32 C/statusbar.py.page:51
+#: C/statusbar.vala.page:29 C/switch.c.page:29 C/switch.py.page:43
+#: C/switch.vala.page:32 C/textview.c.page:32 C/textview.py.page:94
+#: C/textview.vala.page:31 C/togglebutton.c.page:32 C/togglebutton.py.page:42
+#: C/togglebutton.vala.page:29 C/toolbar.c.page:31 C/toolbar.js.page:27
+#: C/toolbar.py.page:53 C/toolbar.vala.page:30 C/toolbar_builder.py.page:192
+#: C/toolbar_builder.vala.page:147 C/tooltip.c.page:36 C/tooltip.js.page:35
+#: C/tooltip.py.page:57 C/tooltip.vala.page:36
+#: C/treeview_advanced_liststore.py.page:42
+#: C/treeview_cellrenderertoggle.py.page:42
+#: C/treeview_simple_liststore.js.page:273
+#: C/treeview_simple_liststore.py.page:43
+#: C/treeview_simple_liststore.vala.page:28 C/treeview_treestore.py.page:42
+#: C/widget_drawing.py.page:36 C/window.c.page:30 C/window.py.page:62
+#: C/window.vala.page:34
+msgid "In this sample we used the following:"
+msgstr "En este ejemplo se usa lo siguiente:"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.c.page:35 C/button.c.page:34 C/combobox.c.page:35
+#: C/dialog.c.page:34 C/entry.c.page:32 C/grid.c.page:32
+#: C/GtkApplicationWindow.c.page:30 C/image.c.page:33 C/label.c.page:37
+#: C/linkbutton.c.page:32 C/messagedialog.c.page:36 C/progressbar.c.page:33
+#: C/radiobutton.c.page:34 C/scale.c.page:34 C/spinbutton.c.page:35
+#: C/spinner.c.page:33 C/statusbar.c.page:36 C/switch.c.page:33
+#: C/textview.c.page:36 C/togglebutton.c.page:36 C/window.c.page:34
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkApplication.html"
+"\">GtkApplication</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkApplication.html"
+"\">GtkApplication</link>"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.c.page:36 C/button.c.page:35 C/combobox.c.page:36
+#: C/dialog.c.page:35 C/entry.c.page:33 C/grid.c.page:33
+#: C/linkbutton.c.page:33 C/messagedialog.c.page:38 C/progressbar.c.page:34
+#: C/radiobutton.c.page:35 C/scale.c.page:35 C/spinbutton.c.page:36
+#: C/spinner.c.page:34 C/statusbar.c.page:37 C/switch.c.page:34
+#: C/textview.c.page:37 C/togglebutton.c.page:37 C/window.c.page:35
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkWindow.html\">GtkWindow</"
+"link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkWindow.html\">GtkWindow</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.c.page:37
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkAboutDialog.html"
+"\">GtkAboutDialog</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkAboutDialog.html"
+"\">GtkAboutDialog</link>"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.c.page:38 C/aboutdialog.py.page:48 C/messagedialog.c.page:42
+#: C/messagedialog.py.page:64
+msgid ""
+"<link href=\"http://developer.gnome.org/gio/stable/GMenu.html\">GMenu</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gio/stable/GMenu.html\">GMenu</link>"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.c.page:39 C/messagedialog.c.page:41
+msgid ""
+"<link href=\"http://developer.gnome.org/gio/stable/GActionMap.html"
+"\">GActionMap</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gio/stable/GActionMap.html"
+"\">GActionMap</link>"
+
+#. (itstool) path: info/title
+#: C/aboutdialog.js.page:7
+msgctxt "text"
+msgid "AboutDialog (JavaScript)"
+msgstr "AboutDialog (JavaScript)"
+
+#. (itstool) path: page/p
+#: C/aboutdialog.js.page:22
+msgid ""
+"A modal dialog window which shows information about an application and its "
+"creators. This one is triggered by clicking \"About\" in the application's "
+"menu, which is normally a good place to put it."
+msgstr ""
+"Una ventana de diálogo modal que muestra información sobre una aplicación Se "
+"muestra al pulsar el elemento de menú «Acerca de» en la aplicación, que es "
+"normalmente un buen sitio para ponerla."
+
+#. (itstool) path: page/code
+#: C/aboutdialog.js.page:24
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const AboutDialogExample = new Lang.Class({\n"
+" Name: 'AboutDialog Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsaboutdialog',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal creates the menu and builds the UI\n"
+" _onStartup: function() {\n"
+" this._initMenus();\n"
+" this._buildUI();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function(){\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"AboutDialog Example\",\n"
+" default_height: 250,\n"
+" default_width: 350 });\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" // Create the application menu\n"
+" _initMenus: function() {\n"
+" let menu = new Gio.Menu();\n"
+" menu.append(\"About\", 'app.about');\n"
+" menu.append(\"Quit\",'app.quit');\n"
+" this.application.set_app_menu(menu);\n"
+"\n"
+" // Create the \"About\" menu option and have it call the _showAbout() function\n"
+" let aboutAction = new Gio.SimpleAction({ name: 'about' });\n"
+" aboutAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showAbout();\n"
+" }));\n"
+" this.application.add_action(aboutAction);\n"
+"\n"
+" // Create the \"Quit\" menu option and have it close the window\n"
+" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+" },\n"
+"\n"
+" _showAbout: function() {\n"
+"\n"
+" // String arrays of the names of the people involved in the project\n"
+" var authors = [\"GNOME Documentation Team\"];\n"
+" var documenters = [\"GNOME Documentation Team\"];\n"
+"\n"
+" // Create the About dialog\n"
+" let aboutDialog = new Gtk.AboutDialog({ title: \"AboutDialog Example\",\n"
+" program_name: \"GtkApplication Example\",\n"
+" copyright: \"Copyright \\xa9 2012 GNOME Documentation
Team\",\n"
+" authors: authors,\n"
+" documenters: documenters,\n"
+" website: \"http://developer.gnome.org\",\n"
+" website_label: \"GNOME Developer Website\" });\n"
+"\n"
+" // Attach the About dialog to the window\n"
+" aboutDialog.modal = true;\n"
+" aboutDialog.transient_for = this._window;\n"
+"\n"
+" // Show the About dialog\n"
+" aboutDialog.show();\n"
+"\n"
+" // Connect the Close button to the destroy signal for the dialog\n"
+" aboutDialog.connect('response', function() {\n"
+" aboutDialog.destroy();\n"
+" });\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new AboutDialogExample();\n"
+"app.application.run(ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const AboutDialogExample = new Lang.Class({\n"
+" Name: 'AboutDialog Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsaboutdialog',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal creates the menu and builds the UI\n"
+" _onStartup: function() {\n"
+" this._initMenus();\n"
+" this._buildUI();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function(){\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"AboutDialog Example\",\n"
+" default_height: 250,\n"
+" default_width: 350 });\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" // Create the application menu\n"
+" _initMenus: function() {\n"
+" let menu = new Gio.Menu();\n"
+" menu.append(\"About\", 'app.about');\n"
+" menu.append(\"Quit\",'app.quit');\n"
+" this.application.set_app_menu(menu);\n"
+"\n"
+" // Create the \"About\" menu option and have it call the _showAbout() function\n"
+" let aboutAction = new Gio.SimpleAction({ name: 'about' });\n"
+" aboutAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showAbout();\n"
+" }));\n"
+" this.application.add_action(aboutAction);\n"
+"\n"
+" // Create the \"Quit\" menu option and have it close the window\n"
+" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+" },\n"
+"\n"
+" _showAbout: function() {\n"
+"\n"
+" // String arrays of the names of the people involved in the project\n"
+" var authors = [\"GNOME Documentation Team\"];\n"
+" var documenters = [\"GNOME Documentation Team\"];\n"
+"\n"
+" // Create the About dialog\n"
+" let aboutDialog = new Gtk.AboutDialog({ title: \"AboutDialog Example\",\n"
+" program_name: \"GtkApplication Example\",\n"
+" copyright: \"Copyright \\xa9 2012 GNOME Documentation
Team\",\n"
+" authors: authors,\n"
+" documenters: documenters,\n"
+" website: \"http://developer.gnome.org\",\n"
+" website_label: \"GNOME Developer Website\" });\n"
+"\n"
+" // Attach the About dialog to the window\n"
+" aboutDialog.modal = true;\n"
+" aboutDialog.transient_for = this._window;\n"
+"\n"
+" // Show the About dialog\n"
+" aboutDialog.show();\n"
+"\n"
+" // Connect the Close button to the destroy signal for the dialog\n"
+" aboutDialog.connect('response', function() {\n"
+" aboutDialog.destroy();\n"
+" });\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new AboutDialogExample();\n"
+"app.application.run(ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.js.page:29 C/gmenu.c.page:32 C/gmenu.js.page:30
+#: C/gmenu.py.page:80 C/messagedialog.js.page:194 C/switch.js.page:266
+msgid ""
+"<link href=\"http://developer.gnome.org/gio/unstable/GMenu.html\">GMenu</"
+"link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gio/unstable/GMenu.html\">GMenu</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.js.page:30 C/filechooserdialog.py.page:80 C/gmenu.c.page:33
+#: C/gmenu.js.page:31 C/gmenu.py.page:81 C/menubar.c.page:39
+#: C/messagedialog.js.page:195 C/messagedialog.py.page:62 C/switch.js.page:267
+msgid ""
+"<link href=\"http://developer.gnome.org/gio/stable/GSimpleAction.html"
+"\">GSimpleAction</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gio/stable/GSimpleAction.html"
+"\">GSimpleAction</link>"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.js.page:31
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.AboutDialog."
+"html\">Gtk.AboutDialog</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.AboutDialog."
+"html\">Gtk.AboutDialog</link>"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.js.page:32 C/button.js.page:31 C/checkbutton.js.page:138
+#: C/comboboxtext.js.page:181 C/combobox.js.page:238 C/dialog.js.page:30
+#: C/entry.js.page:30 C/grid.js.page:34 C/GtkApplicationWindow.js.page:31
+#: C/image.js.page:32 C/label.js.page:30 C/linkbutton.js.page:30
+#: C/messagedialog.js.page:196 C/progressbar.js.page:40
+#: C/radiobutton.js.page:276 C/scale.js.page:211 C/spinbutton.js.page:202
+#: C/spinner.js.page:31 C/statusbar.js.page:223 C/switch.js.page:268
+#: C/textview.js.page:250 C/togglebutton.js.page:155
+#: C/treeview_simple_liststore.js.page:277 C/window.js.page:39
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Application."
+"html\">Gtk.Application</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Application."
+"html\">Gtk.Application</link>"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.js.page:33 C/button.js.page:32 C/checkbutton.js.page:139
+#: C/comboboxtext.js.page:182 C/combobox.js.page:239 C/dialog.js.page:31
+#: C/entry.js.page:31 C/grid.js.page:35 C/GtkApplicationWindow.js.page:32
+#: C/image.js.page:33 C/label.js.page:31 C/linkbutton.js.page:31
+#: C/messagedialog.js.page:197 C/progressbar.js.page:41
+#: C/radiobutton.js.page:277 C/scale.js.page:212 C/spinbutton.js.page:203
+#: C/spinner.js.page:32 C/statusbar.js.page:224 C/switch.js.page:269
+#: C/textview.js.page:251 C/togglebutton.js.page:156
+#: C/treeview_simple_liststore.js.page:278
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkApplicationWindow.html"
+"\">Gtk.ApplicationWindow</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkApplicationWindow.html"
+"\">Gtk.ApplicationWindow</link>"
+
+#. (itstool) path: info/title
+#: C/aboutdialog.py.page:8
+msgctxt "text"
+msgid "AboutDialog (Python)"
+msgstr "AboutDialog (Python)"
+
+#. (itstool) path: credit/name
+#: C/aboutdialog.py.page:14 C/beginner.js.page:16 C/beginner.py.page:19
+#: C/beginner.vala.page:19 C/button.py.page:15 C/buttonbox.py.page:15
+#: C/checkbutton.py.page:14 C/colorbutton.py.page:14 C/combobox.py.page:15
+#: C/combobox_multicolumn.py.page:14 C/dialog.py.page:15 C/entry.py.page:15
+#: C/filechooserdialog.py.page:17 C/fontchooserwidget.py.page:15
+#: C/gmenu.py.page:21 C/grid.py.page:21 C/GtkApplicationWindow.py.page:20
+#: C/guitar-tuner.c.page:23 C/guitar-tuner.cpp.page:21
+#: C/guitar-tuner.py.page:23 C/guitar-tuner.py.page:28
+#: C/guitar-tuner.vala.page:26 C/image.py.page:15 C/image-viewer.c.page:23
+#: C/image-viewer.cpp.page:21 C/image-viewer.js.page:23
+#: C/image-viewer.py.page:23 C/image-viewer.vala.page:31 C/js.page:16
+#: C/label.py.page:17 C/linkbutton.py.page:14 C/magic-mirror.vala.page:23
+#: C/menubar.py.page:20 C/menubutton.py.page:20 C/message-board.c.page:20
+#: C/messagedialog.py.page:14 C/model-view-controller.py.page:21
+#: C/paned.py.page:14 C/photo-wall.c.page:22 C/progressbar.py.page:14
+#: C/properties.py.page:21 C/py.page:15 C/radiobutton.py.page:15
+#: C/record-collection.js.page:23 C/scale.py.page:15
+#: C/scrolledwindow.py.page:14 C/separator.py.page:15
+#: C/signals-callbacks.py.page:21 C/spinbutton.py.page:15 C/spinner.py.page:14
+#: C/statusbar.py.page:15 C/strings.py.page:21 C/switch.py.page:14
+#: C/textview.py.page:22 C/togglebutton.py.page:14 C/toolbar.py.page:15
+#: C/toolbar_builder.py.page:22 C/tooltip.py.page:15
+#: C/treeview_advanced_liststore.py.page:14
+#: C/treeview_cellrenderertoggle.py.page:14
+#: C/treeview_simple_liststore.py.page:15 C/treeview_treestore.py.page:15
+#: C/tutorial.py.page:20 C/vala.page:15 C/weatherApp.js.page:17
+#: C/widget_drawing.py.page:13 C/window.py.page:20
+msgid "Marta Maria Casetti"
+msgstr "Marta Maria Casetti"
+
+#. (itstool) path: info/desc
+#: C/aboutdialog.py.page:19
+msgid "A window that displays information about an application"
+msgstr "Una ventana que muestra información acerca de una aplicación"
+
+#. (itstool) path: page/p
+#: C/aboutdialog.py.page:24
+msgid ""
+"An AboutDialog example using Gtk.ApplicationWindow and Menu (the \"about\" "
+"is displayed if \"About\" in the menu is selected)."
+msgstr ""
+"Un ejemplo de AboutDialog usando Gtk.ApplicationWindow y Menu (el diálogo se "
+"muestra al pulsar el elemento de menú «Acerca de»)."
+
+#. (itstool) path: section/title
+#: C/aboutdialog.py.page:29 C/button.py.page:31 C/buttonbox.js.page:30
+#: C/buttonbox.py.page:31 C/checkbutton.py.page:29 C/colorbutton.js.page:28
+#: C/colorbutton.py.page:29 C/combobox.py.page:30
+#: C/combobox_multicolumn.py.page:29 C/combobox_multicolumn.vala.page:29
+#: C/dialog.py.page:30 C/entry.py.page:35 C/filechooserdialog.py.page:53
+#: C/fontchooserwidget.js.page:29 C/fontchooserwidget.py.page:31
+#: C/fontchooserwidget.vala.page:29 C/gmenu.py.page:36 C/grid.py.page:37
+#: C/GtkApplicationWindow.py.page:35 C/image.py.page:41 C/label.py.page:37
+#: C/linkbutton.py.page:30 C/menubutton.c.page:30 C/menubutton.py.page:37
+#: C/messagedialog.py.page:29 C/paned.c.page:28 C/paned.js.page:28
+#: C/paned.py.page:29 C/paned.vala.page:28 C/progressbar.py.page:39
+#: C/radiobutton.py.page:30 C/scale.py.page:30 C/scrolledwindow.js.page:28
+#: C/scrolledwindow.py.page:29 C/separator.c.page:30 C/separator.py.page:31
+#: C/separator.vala.page:32 C/spinbutton.py.page:30 C/spinner.py.page:29
+#: C/statusbar.py.page:30 C/switch.py.page:31 C/textview.py.page:44
+#: C/togglebutton.py.page:29 C/toolbar.py.page:31
+#: C/toolbar_builder.py.page:164 C/tooltip.c.page:30 C/tooltip.js.page:29
+#: C/tooltip.py.page:31 C/tooltip.vala.page:30
+#: C/treeview_advanced_liststore.py.page:29
+#: C/treeview_cellrenderertoggle.py.page:29
+#: C/treeview_simple_liststore.py.page:30 C/treeview_treestore.py.page:30
+#: C/widget_drawing.py.page:28 C/window.py.page:45
+msgid "Code used to generate this example"
+msgstr "Código usado para generar este ejemplo"
+
+#. (itstool) path: section/code
+#: C/aboutdialog.py.page:31
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" # constructor for a window (the parent window)\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"AboutDialog Example\", application=app)\n"
+" self.set_default_size(200, 200)\n"
+"\n"
+" # create the about_action (a Gio.SimpleAction)\n"
+" about_action = Gio.SimpleAction.new(\"about\", None)\n"
+" # connect the signal from the action to the function about_cb()\n"
+" about_action.connect(\"activate\", self.about_cb)\n"
+" # add the action to the application\n"
+" app.add_action(about_action)\n"
+"\n"
+" # callback function for the about_action's \"activate\" signal\n"
+" def about_cb(self, action, parameter):\n"
+" # a Gtk.AboutDialog\n"
+" aboutdialog = Gtk.AboutDialog()\n"
+"\n"
+" # lists of authors and documenters (will be used later)\n"
+" authors = [\"GNOME Documentation Team\"]\n"
+" documenters = [\"GNOME Documentation Team\"]\n"
+"\n"
+" # we fill in the aboutdialog\n"
+" aboutdialog.set_program_name(\"AboutDialog Example\")\n"
+" aboutdialog.set_copyright(\n"
+" \"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\")\n"
+" aboutdialog.set_authors(authors)\n"
+" aboutdialog.set_documenters(documenters)\n"
+" aboutdialog.set_website(\"http://developer.gnome.org\")\n"
+" aboutdialog.set_website_label(\"GNOME Developer Website\")\n"
+"\n"
+" # we do not want to show the title, which by default would be \"About AboutDialog Example\"\n"
+" # we have to reset the title of the messagedialog window after setting\n"
+" # the program name\n"
+" aboutdialog.set_title(\"\")\n"
+"\n"
+" # to close the aboutdialog when \"close\" is clicked we connect the\n"
+" # \"response\" signal to on_close\n"
+" aboutdialog.connect(\"response\", self.on_close)\n"
+" # show the aboutdialog\n"
+" aboutdialog.show()\n"
+"\n"
+" # destroy the aboutdialog\n"
+" def on_close(self, action, parameter):\n"
+" action.destroy()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def quit_cb(self, action, parameter):\n"
+" self.quit()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # create a menu (a Gio.Menu)\n"
+" menu = Gio.Menu()\n"
+" # append a menu item with label \"About\" and action \"app.about\"\n"
+" menu.append(\"About\", \"app.about\")\n"
+" # append a menu item with label \"Quit\" and action \"app.quit\"\n"
+" menu.append(\"Quit\", \"app.quit\")\n"
+" # set menu as the menu for the application\n"
+" self.set_app_menu(menu)\n"
+"\n"
+" # a new simpleaction - for the application\n"
+" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
+" quit_action.connect(\"activate\", self.quit_cb)\n"
+" self.add_action(quit_action)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" # constructor for a window (the parent window)\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"AboutDialog Example\", application=app)\n"
+" self.set_default_size(200, 200)\n"
+"\n"
+" # create the about_action (a Gio.SimpleAction)\n"
+" about_action = Gio.SimpleAction.new(\"about\", None)\n"
+" # connect the signal from the action to the function about_cb()\n"
+" about_action.connect(\"activate\", self.about_cb)\n"
+" # add the action to the application\n"
+" app.add_action(about_action)\n"
+"\n"
+" # callback function for the about_action's \"activate\" signal\n"
+" def about_cb(self, action, parameter):\n"
+" # a Gtk.AboutDialog\n"
+" aboutdialog = Gtk.AboutDialog()\n"
+"\n"
+" # lists of authors and documenters (will be used later)\n"
+" authors = [\"GNOME Documentation Team\"]\n"
+" documenters = [\"GNOME Documentation Team\"]\n"
+"\n"
+" # we fill in the aboutdialog\n"
+" aboutdialog.set_program_name(\"AboutDialog Example\")\n"
+" aboutdialog.set_copyright(\n"
+" \"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\")\n"
+" aboutdialog.set_authors(authors)\n"
+" aboutdialog.set_documenters(documenters)\n"
+" aboutdialog.set_website(\"http://developer.gnome.org\")\n"
+" aboutdialog.set_website_label(\"GNOME Developer Website\")\n"
+"\n"
+" # we do not want to show the title, which by default would be \"About AboutDialog Example\"\n"
+" # we have to reset the title of the messagedialog window after setting\n"
+" # the program name\n"
+" aboutdialog.set_title(\"\")\n"
+"\n"
+" # to close the aboutdialog when \"close\" is clicked we connect the\n"
+" # \"response\" signal to on_close\n"
+" aboutdialog.connect(\"response\", self.on_close)\n"
+" # show the aboutdialog\n"
+" aboutdialog.show()\n"
+"\n"
+" # destroy the aboutdialog\n"
+" def on_close(self, action, parameter):\n"
+" action.destroy()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def quit_cb(self, action, parameter):\n"
+" self.quit()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # create a menu (a Gio.Menu)\n"
+" menu = Gio.Menu()\n"
+" # append a menu item with label \"About\" and action \"app.about\"\n"
+" menu.append(\"About\", \"app.about\")\n"
+" # append a menu item with label \"Quit\" and action \"app.quit\"\n"
+" menu.append(\"Quit\", \"app.quit\")\n"
+" # set menu as the menu for the application\n"
+" self.set_app_menu(menu)\n"
+"\n"
+" # a new simpleaction - for the application\n"
+" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
+" quit_action.connect(\"activate\", self.quit_cb)\n"
+" self.add_action(quit_action)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/aboutdialog.py.page:36
+msgid "Useful methods for an AboutDialog widget"
+msgstr "Métodos útiles para un widget «AboutDialog»"
+
+#. (itstool) path: section/p
+#: C/aboutdialog.py.page:37
+msgid ""
+"In line 15 the signal <code>\"activate\"</code> is connected to the callback "
+"function <code>about_cb()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 15 la señal <code>«activate»</code> se conecta a la función de "
+"retorno de llamada <code>about_cb()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
+"explicación más detallada."
+
+#. (itstool) path: section/title
+#: C/aboutdialog.py.page:41 C/button.py.page:52 C/buttonbox.js.page:35
+#: C/buttonbox.py.page:46 C/checkbutton.py.page:42 C/colorbutton.js.page:33
+#: C/colorbutton.py.page:40 C/combobox.py.page:42
+#: C/combobox_multicolumn.py.page:41 C/combobox_multicolumn.vala.page:35
+#: C/dialog.py.page:46 C/entry.py.page:61 C/filechooserdialog.py.page:70
+#: C/fontchooserwidget.js.page:34 C/fontchooserwidget.py.page:44
+#: C/fontchooserwidget.vala.page:34 C/gmenu.py.page:77 C/grid.py.page:54
+#: C/GtkApplicationWindow.py.page:50 C/image.py.page:126 C/label.py.page:102
+#: C/linkbutton.py.page:44 C/menubar.py.page:183 C/menubutton.c.page:35
+#: C/menubutton.py.page:53 C/messagedialog.py.page:54 C/paned.c.page:33
+#: C/paned.js.page:33 C/paned.py.page:39 C/paned.vala.page:33
+#: C/progressbar.py.page:54 C/radiobutton.py.page:46 C/scale.py.page:54
+#: C/scrolledwindow.js.page:33 C/scrolledwindow.py.page:42
+#: C/spinbutton.py.page:46 C/spinner.py.page:39 C/statusbar.py.page:50
+#: C/switch.py.page:42 C/textview.py.page:93 C/togglebutton.py.page:41
+#: C/toolbar.py.page:52 C/toolbar_builder.py.page:191 C/tooltip.c.page:35
+#: C/tooltip.js.page:34 C/tooltip.py.page:56 C/tooltip.vala.page:35
+#: C/treeview_advanced_liststore.py.page:41
+#: C/treeview_cellrenderertoggle.py.page:41
+#: C/treeview_simple_liststore.py.page:42 C/treeview_treestore.py.page:41
+#: C/widget_drawing.py.page:35 C/window.py.page:60
+msgid "API References"
+msgstr "Referencias de la API"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.py.page:46
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkAboutDialog.html"
+"\">GtkAboutDialog</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkAboutDialog.html"
+"\">GtkAboutDialog</link>"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.py.page:47 C/checkbutton.py.page:46 C/grid.py.page:58
+#: C/GtkApplicationWindow.py.page:56 C/separator.c.page:38
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkApplicationWindow."
+"html\">GtkApplicationWindow</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkApplicationWindow."
+"html\">GtkApplicationWindow</link>"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.py.page:49 C/checkbutton.py.page:45 C/grid.py.page:57
+#: C/GtkApplicationWindow.py.page:55 C/messagedialog.py.page:65
+#: C/window.py.page:64
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkApplication.html"
+"\">GtkApplication</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkApplication.html"
+"\">GtkApplication</link>"
+
+#. (itstool) path: info/title
+#: C/aboutdialog.vala.page:8
+msgctxt "text"
+msgid "AboutDialog (Vala)"
+msgstr "AboutDialog (Vala)"
+
+#. (itstool) path: credit/name
+#: C/aboutdialog.vala.page:15 C/gmenu.vala.page:14
+msgid "Ryan Lortie"
+msgstr "Ryan Lortie"
+
+#. (itstool) path: credit/name
+#: C/aboutdialog.vala.page:21 C/beginner.py.page:15 C/beginner.vala.page:15
+#: C/button.vala.page:14 C/c.page:14 C/checkbutton.c.page:13
+#: C/checkbutton.vala.page:13 C/colorbutton.vala.page:15 C/combobox.c.page:18
+#: C/combobox.vala.page:13 C/combobox_multicolumn.vala.page:14 C/cpp.page:11
+#: C/dialog.vala.page:13 C/entry.vala.page:13 C/filechooserdialog.vala.page:16
+#: C/gmenu.c.page:13 C/gmenu.js.page:13 C/gmenu.py.page:15
+#: C/gmenu.vala.page:20 C/grid.py.page:15 C/grid.vala.page:15
+#: C/GtkApplicationWindow.c.page:13 C/GtkApplicationWindow.js.page:13
+#: C/GtkApplicationWindow.py.page:15 C/GtkApplicationWindow.vala.page:13
+#: C/guitar-tuner.vala.page:22 C/hello-world.c.page:20
+#: C/hello-world.js.page:20 C/hello-world.py.page:20
+#: C/hello-world.vala.page:20 C/image.vala.page:13 C/image-viewer.vala.page:27
+#: C/index.page:23 C/js.page:12 C/label.vala.page:13 C/linkbutton.vala.page:13
+#: C/menubar.py.page:15 C/menubar.vala.page:15 C/menubutton.c.page:13
+#: C/menubutton.py.page:14 C/menubutton.vala.page:13
+#: C/messagedialog.vala.page:13 C/paned.c.page:13 C/paned.vala.page:13
+#: C/progressbar.vala.page:13 C/py.page:11 C/radiobutton.vala.page:16
+#: C/response-type.page:9 C/scale.vala.page:15 C/scrolledwindow.vala.page:14
+#: C/separator.c.page:14 C/separator.vala.page:16 C/spinbutton.vala.page:15
+#: C/spinner.vala.page:13 C/statusbar.vala.page:16 C/switch.vala.page:17
+#: C/textview.vala.page:13 C/togglebutton.vala.page:16 C/toolbar.js.page:13
+#: C/toolbar.vala.page:14 C/toolbar_builder.py.page:16
+#: C/toolbar_builder.vala.page:15 C/tooltip.c.page:14 C/tooltip.vala.page:14
+#: C/treeview_simple_liststore.vala.page:15 C/tutorial.py.page:15
+#: C/vala.page:11 C/window.c.page:13 C/window.py.page:15 C/window.vala.page:13
+msgid "Tiffany Antopolski"
+msgstr "Tiffany Antopolski"
+
+#. (itstool) path: page/code
+#: C/aboutdialog.vala.page:34
+#, no-wrap
+msgid ""
+"/* A window in the application */\n"
+"public class Window : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* The constructor */\n"
+"\tpublic Window (Application app) {\n"
+"\t\tObject (application: app, title: \"AboutDialog Example\");\n"
+"\n"
+"\t\tvar about_action = new SimpleAction (\"about\", null);\n"
+"\n"
+"\t\tabout_action.activate.connect (this.about_cb);\n"
+"\t\tthis.add_action (about_action);\n"
+"\t\tthis.show_all ();\n"
+"\t}\n"
+"\n"
+"\t/* This is the callback function connected to the 'activate' signal\n"
+"\t * of the SimpleAction about_action.\n"
+"\t */\n"
+"\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n"
+"\t\tstring[] authors = { \"GNOME Documentation Team\", null };\n"
+"\t\tstring[] documenters = { \"GNOME Documentation Team\", null };\n"
+"\n"
+"\t\tGtk.show_about_dialog (this,\n"
+" \"program-name\", (\"GtkApplication Example\"),\n"
+" \"copyright\", (\"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\"),\n"
+" \"authors\", authors,\n"
+" \"documenters\", documenters,\n"
+" \"website\", \"http://developer.gnome.org\",\n"
+" \"website-label\", (\"GNOME Developer Website\"),\n"
+" null);\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the Application */\n"
+"public class Application : Gtk.Application {\n"
+"\n"
+"\t/* Here we override the activate signal of GLib.Application */\n"
+"\tprotected override void activate () {\n"
+"\t\tnew Window (this);\n"
+"\t}\n"
+"\n"
+"\t/* Here we override the startup signal of GLib.Application */\n"
+"\tprotected override void startup () {\n"
+"\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\tvar menu = new Menu ();\n"
+"\t\tmenu.append (\"About\", \"win.about\");\n"
+"\t\tmenu.append (\"Quit\", \"app.quit\");\n"
+"\t\tthis.app_menu = menu;\n"
+"\n"
+"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
+"\t\t//quit_action.activate.connect (this.quit);\n"
+"\t\tthis.add_action (quit_action);\n"
+"\t}\n"
+"\n"
+"\t/* The constructor */\n"
+"\tpublic Application () {\n"
+"\t\tObject (application_id: \"org.example.application\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main function creates Application and runs it */\n"
+"int main (string[] args) {\n"
+"\treturn new Application ().run (args);\n"
+"}\n"
+msgstr ""
+"/* A window in the application */\n"
+"public class Window : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* The constructor */\n"
+"\tpublic Window (Application app) {\n"
+"\t\tObject (application: app, title: \"AboutDialog Example\");\n"
+"\n"
+"\t\tvar about_action = new SimpleAction (\"about\", null);\n"
+"\n"
+"\t\tabout_action.activate.connect (this.about_cb);\n"
+"\t\tthis.add_action (about_action);\n"
+"\t\tthis.show_all ();\n"
+"\t}\n"
+"\n"
+"\t/* This is the callback function connected to the 'activate' signal\n"
+"\t * of the SimpleAction about_action.\n"
+"\t */\n"
+"\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n"
+"\t\tstring[] authors = { \"GNOME Documentation Team\", null };\n"
+"\t\tstring[] documenters = { \"GNOME Documentation Team\", null };\n"
+"\n"
+"\t\tGtk.show_about_dialog (this,\n"
+" \"program-name\", (\"GtkApplication Example\"),\n"
+" \"copyright\", (\"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\"),\n"
+" \"authors\", authors,\n"
+" \"documenters\", documenters,\n"
+" \"website\", \"http://developer.gnome.org\",\n"
+" \"website-label\", (\"GNOME Developer Website\"),\n"
+" null);\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the Application */\n"
+"public class Application : Gtk.Application {\n"
+"\n"
+"\t/* Here we override the activate signal of GLib.Application */\n"
+"\tprotected override void activate () {\n"
+"\t\tnew Window (this);\n"
+"\t}\n"
+"\n"
+"\t/* Here we override the startup signal of GLib.Application */\n"
+"\tprotected override void startup () {\n"
+"\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\tvar menu = new Menu ();\n"
+"\t\tmenu.append (\"About\", \"win.about\");\n"
+"\t\tmenu.append (\"Quit\", \"app.quit\");\n"
+"\t\tthis.app_menu = menu;\n"
+"\n"
+"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
+"\t\t//quit_action.activate.connect (this.quit);\n"
+"\t\tthis.add_action (quit_action);\n"
+"\t}\n"
+"\n"
+"\t/* The constructor */\n"
+"\tpublic Application () {\n"
+"\t\tObject (application_id: \"org.example.application\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main function creates Application and runs it */\n"
+"int main (string[] args) {\n"
+"\treturn new Application ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.vala.page:39 C/gmenu.vala.page:39 C/window.vala.page:38
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Application.html\">Gtk."
+"Application</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Application.html\">Gtk."
+"Application</link>"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.vala.page:40 C/gmenu.vala.page:40
+#: C/GtkApplicationWindow.vala.page:32 C/label.vala.page:32
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ApplicationWindow.html"
+"\">Gtk.ApplicationWindow</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ApplicationWindow.html"
+"\">Gtk.ApplicationWindow</link>"
+
+#. (itstool) path: item/p
+#: C/aboutdialog.vala.page:41
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.set_default_size.html"
+"\">set_default_size</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.set_default_size.html"
+"\">set_default_size</link>"
+
+#. (itstool) path: info/desc
+#: C/audio-player.vala.page:10
+msgid "Coming soon..."
+msgstr "Próximamente..."
+
+#. (itstool) path: credit/name
+#: C/audio-player.vala.page:14 C/guitar-tuner.c.page:15
+#: C/guitar-tuner.cpp.page:13 C/guitar-tuner.py.page:15
+#: C/guitar-tuner.vala.page:14 C/image-viewer.c.page:15
+#: C/image-viewer.cpp.page:13 C/image-viewer.vala.page:15
+#: C/record-collection.js.page:15
+msgid "GNOME Documentation Project"
+msgstr "Proyecto de documentación de GNOME"
+
+#. (itstool) path: page/title
+#: C/audio-player.vala.page:19
+msgid "Audio player"
+msgstr "Reproductor de sonido"
+
+#. (itstool) path: credit/name
+#: C/beginner.js.page:11 C/grid.js.page:13 C/guitar-tuner.js.page:12
+#: C/hello-world.c.page:15 C/hello-world.js.page:15 C/hello-world.py.page:15
+#: C/hello-world.vala.page:15 C/weatherApp.js.page:12
+#: C/weatherAppMain.js.page:11 C/weatherAutotools.js.page:11
+#: C/weatherGeonames.js.page:11
+msgid "Susanna Huhtanen"
+msgstr "Susanna Huhtanen"
+
+#. (itstool) path: credit/years
+#: C/beginner.js.page:18 C/beginner.py.page:21 C/beginner.vala.page:21
+#: C/buttonbox.js.page:16 C/colorbutton.js.page:15
+#: C/combobox_multicolumn.vala.page:16 C/fontchooserwidget.js.page:15
+#: C/fontchooserwidget.vala.page:15 C/guitar-tuner.c.page:25
+#: C/guitar-tuner.cpp.page:23 C/guitar-tuner.py.page:25
+#: C/guitar-tuner.py.page:30 C/guitar-tuner.vala.page:28
+#: C/image-viewer.c.page:25 C/image-viewer.cpp.page:23
+#: C/image-viewer.js.page:25 C/image-viewer.py.page:25
+#: C/image-viewer.vala.page:33 C/js.page:18 C/magic-mirror.vala.page:25
+#: C/menubutton.c.page:15 C/message-board.c.page:22 C/paned.js.page:15
+#: C/paned.vala.page:15 C/photo-wall.c.page:24 C/py.page:17
+#: C/record-collection.js.page:25 C/scrolledwindow.js.page:15
+#: C/separator.c.page:16 C/separator.vala.page:18 C/tooltip.c.page:16
+#: C/tooltip.js.page:16 C/tooltip.vala.page:16 C/tutorial.py.page:27
+#: C/vala.page:17 C/weatherApp.js.page:19 C/widget_drawing.py.page:15
+msgid "2013"
+msgstr "2013"
+
+#. (itstool) path: info/desc
+#: C/beginner.js.page:21
+msgid ""
+"A beginner's guide to writing GNOME applications in JavaScript, including "
+"code samples and practice exercises."
+msgstr ""
+"Una guía para principiantes sobre escribir aplicaciones de GNOME en "
+"JavaScript, incluyendo ejemplos de código y ejercicios de práctica."
+
+#. (itstool) path: page/title
+#: C/beginner.js.page:24 C/beginner.vala.page:25
+msgid "Tutorial for beginners and code samples"
+msgstr "Tutorial para principiantes y ejemplos de código"
+
+#. (itstool) path: synopsis/p
+#: C/beginner.js.page:26
+msgid ""
+"JavaScript is one of the most popular programming languages on the web. It's "
+"not just for the web, though. If you have even a basic understanding of "
+"JavaScript, you can write full-fledged applications for GNOME. <link href="
+"\"https://wiki.gnome.org/Apps/Documents\">GNOME Documents</link> is written "
+"in JavaScript, and so is <link href=\"https://live.gnome.org/GnomeShell/Tour"
+"\">GNOME Shell</link>, the most basic part of GNOME."
+msgstr ""
+"JavaScript es uno de los lenguajes de programación más populares en la web. "
+"Sin embargo, no es sólo para la web. Si tiene aunque sea un conocimiento "
+"básico de JavaScript, puede escribir aplicaciones completas para GNOME. Los "
+"<link href=\"https://wiki.gnome.org/Apps/Documents\">documentos de GNOME</"
+"link> está escritos en JavaScript, y también <link href=\"https://live.gnome."
+"org/GnomeShell/Tour\">GNOME Shell</link>, la parte más básica de GNOME."
+
+#. (itstool) path: note/p
+#: C/beginner.js.page:27
+msgid ""
+"GNOME Shell is what you see when you click on \"Activities\" in the top-left "
+"corner of your screen. It also controls the clock and the rest of the top "
+"panel. Besides showing how you to write GNOME applications, these tutorials "
+"will also show you how to use JavaScript to write GNOME Shell extensions, "
+"which give it new features or change the way it does things."
+msgstr ""
+"GNOME Shell es lo que ve cuando pulsa en «Actividades», en la esquina "
+"superior izquierda de su pantalla. También controla el reloj y el resto del "
+"panel superior. Además de mostrarle cómo escribir aplicaciones de GNOME, "
+"estos tutoriales le mostrarán cómo usar JavaScript para escribir extensiones "
+"de GNOME Shell, que le añaden características o cambian su comportamiento."
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:31
+msgid "Getting Started"
+msgstr "Inicio"
+
+#. (itstool) path: section/p
+#: C/beginner.js.page:32
+msgid ""
+"These tutorials are designed for people who already know how to write in "
+"JavaScript, and who have GNOME installed on their computers already, but who "
+"are new to developing GNOME applications. If you don't already know "
+"JavaScript, or if you need help getting GNOME set up, take a look at these "
+"resources first:"
+msgstr ""
+"Estos tutoriales están diseñados para gente que ya sabe cómo programar en "
+"JavaScript, y que ya tienen GNOME instalado en sus equipos, pero que están "
+"comenzando a desarrollar aplicaciones de GNOME. Si todavía no sabe "
+"JavaScript, o si necesita ayuda instalando GNOME, eche un vistazo a estos "
+"recursos primero:"
+
+#. (itstool) path: item/p
+#: C/beginner.js.page:34
+msgid ""
+"<link href=\"http://eloquentjavascript.net/contents.html\">Eloquent "
+"JavaScript</link> is a free, Creative Commons-licensed book, which explains "
+"the basics of JavaScript programming. Since you won't be writing JavaScript "
+"for the web, you only need to read up to chapter 10 or so."
+msgstr ""
+"<link href=\"http://eloquentjavascript.net/contents.html\">Eloquent "
+"JavaScript</link> es un libro libre, con licencia Creative Commons, que "
+"explica los conceptos básicos de programación en JavaScript. Dado que no va "
+"a escribir JavaScript para la web, sólo necesitará leer hasta el capítulo 10."
+
+#. (itstool) path: item/p
+#: C/beginner.js.page:35
+msgid ""
+"<link href=\"http://www.gnome.org/getting-gnome/\">Download GNOME</link> as "
+"part of a distribution, like Fedora, openSUSE, or Ubuntu. Each distribution "
+"has its own instructions for how to get GNOME."
+msgstr ""
+"<link href=\"http://www.gnome.org/getting-gnome/\">Descargue GNOME</link> "
+"como parte de una distribución, como Fedora, openSUSE, o Ubuntu. Cada "
+"distribución tiene sus propias instrucciones para obtener GNOME."
+
+#. (itstool) path: item/p
+#: C/beginner.js.page:36
+msgid ""
+"<link xref=\"set-up-gedit.js\">Set up gedit</link> for writing applications. "
+"GNOME's text editor, gedit, is sometimes just called \"text editor\"."
+msgstr ""
+"<link xref=\"set-up-gedit.js\">Configurar gedit</link> para escribir "
+"aplicaciones. El editor de texto de GNOME, gedit, a veces solo se llama "
+"«editor de texto»."
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:42 C/beginner.vala.page:42 C/c.page:113
+msgid "Tutorials"
+msgstr "Tutoriales"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:46 C/beginner.vala.page:46 C/py.page:32
+msgid "Code samples"
+msgstr "Ejemplos de código"
+
+#. (itstool) path: section/p
+#: C/beginner.js.page:47
+msgid ""
+"These samples show how to use widgets in your GNOME applications. Each one "
+"demonstrates a complete application which showcases the featured widget. At "
+"the end of each sample, you will find links to more detailed reference "
+"material."
+msgstr ""
+"Estos ejemplos muestran cómo usar widgets en sus aplicaciones de GNOME. Cada "
+"uno demuestra una aplicación completa que exhibe el widget presentado. Al "
+"final de cada ejemplo, encontrará enlaces a material de referencia más "
+"detallado."
+
+#. (itstool) path: section/p
+#: C/beginner.js.page:48 C/beginner.vala.page:47 C/c.page:91
+msgid "To run the code samples:"
+msgstr "Para ejecutar los ejemplos de código:"
+
+#. (itstool) path: item/p
+#: C/beginner.js.page:50
+msgid "Copy and paste the code into <var>filename</var>.js"
+msgstr "Copie y pegue el código en <var>nombre_archivo</var>.js"
+
+#. (itstool) path: item/p
+#: C/beginner.js.page:51
+msgid "In the terminal, type:"
+msgstr "Escriba en la terminal:"
+
+#. (itstool) path: item/screen
+#: C/beginner.js.page:52
+#, no-wrap
+msgid "gjs <var>filename</var>.js"
+msgstr "gjs <var>nombre_archivo</var>.js"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:55 C/beginner.py.page:32 C/beginner.vala.page:58
+#: C/c.page:118
+msgid "Windows"
+msgstr "Ventanas"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:57 C/beginner.py.page:34 C/beginner.vala.page:61
+#: C/c.page:121
+msgid "Display widgets"
+msgstr "Widgets de visualización"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:59 C/beginner.py.page:36 C/beginner.vala.page:63
+#: C/c.page:123
+msgid "Buttons and toggles"
+msgstr "Botones y casillas"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:61 C/beginner.py.page:38 C/beginner.vala.page:65
+#: C/c.page:125
+msgid "Numeric and text data entry"
+msgstr "Entrada de daos numérica y de texto"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:63 C/beginner.py.page:40 C/beginner.vala.page:67
+#: C/c.page:127
+msgid "Multiline text editor"
+msgstr "Editor de texto multilínea"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:65 C/beginner.py.page:42 C/beginner.vala.page:69
+#: C/c.page:129
+msgid "Menu, combo box and toolbar widgets"
+msgstr "Widgets de menú, caja combinada y barra de herramientas"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:67 C/beginner.py.page:44 C/beginner.vala.page:71
+#: C/c.page:131
+msgid "TreeView widget"
+msgstr "Widget TreeView"
+
+#. (itstool) path: section/title
+#. (itstool) path: steps/title
+#: C/beginner.js.page:69 C/beginner.py.page:46 C/beginner.vala.page:73
+#: C/c.page:133 C/tutorial.py.page:127
+msgid "Selectors"
+msgstr "Selectores"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:70 C/beginner.py.page:47 C/beginner.vala.page:74
+#: C/c.page:134
+msgid "File selectors"
+msgstr "Selectores de archivos"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:72 C/beginner.py.page:49 C/beginner.vala.page:76
+#: C/c.page:136
+msgid "Font selectors"
+msgstr "Selectores de tipografías"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:74 C/beginner.py.page:51 C/beginner.vala.page:78
+#: C/c.page:138
+msgid "Color Selectors"
+msgstr "Selectores de color"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:77 C/beginner.py.page:54 C/beginner.vala.page:81
+#: C/c.page:141
+msgid "Layout containers"
+msgstr "Contenedores de la distribución"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:79 C/beginner.py.page:56 C/beginner.vala.page:83
+#: C/c.page:143
+msgid "Ornaments"
+msgstr "Adornos"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:81 C/beginner.py.page:58 C/beginner.vala.page:85
+#: C/c.page:145
+msgid "Scrolling"
+msgstr "Desplazamiento"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:83 C/beginner.py.page:60 C/beginner.vala.page:87
+#: C/c.page:147
+msgid "Miscellaneous"
+msgstr "Varios"
+
+#. (itstool) path: section/title
+#: C/beginner.js.page:88 C/beginner.vala.page:92 C/menubar.vala.page:198
+msgid "Exercises"
+msgstr "Ejercicios"
+
+#. (itstool) path: info/title
+#: C/beginner.py.page:9
+msgctxt "text"
+msgid "GTK+ widgets sample code (Python)"
+msgstr "Código de ejemplo de widget de GTK+ (Python)"
+
+#. (itstool) path: info/desc
+#: C/beginner.py.page:13
+msgid ""
+"A guide to GUI programming using GTK+, including code samples and practice "
+"exercises."
+msgstr ""
+"Una guía de programación de IU en GTK+, incluyendo ejemplos de código y "
+"ejercicios de práctica."
+
+#. (itstool) path: page/title
+#: C/beginner.py.page:25
+msgid "GTK+ widgets sample code"
+msgstr "Código de ejemplo de widgets de GTK+"
+
+#. (itstool) path: synopsis/p
+#: C/beginner.py.page:27
+msgid ""
+"If you are a beginner and you would like a tutorial to guide you step by "
+"step in an exploration of what you can do with GTK+ 3, you should go to the "
+"<link xref=\"tutorial.py\"/> page. If you are looking for a specific widget, "
+"you can find it in the sections below."
+msgstr ""
+"Si es un principiante y quiere un tutorial que le guíe paso a paso en una "
+"explicación sobre qué puede hacer con GTK+ 3, debe ir a la página <link xref="
+"\"tutorial.py\"/>. Si está buscando un widget específico, puede encontrarlo "
+"en las secciones a continuación."
+
+#. (itstool) path: section/title
+#: C/beginner.py.page:64
+msgid "Theory pages"
+msgstr "Páginas de teoría"
+
+#. (itstool) path: info/title
+#: C/beginner.vala.page:9
+msgctxt "text"
+msgid "Tutorial for beginners (Vala)"
+msgstr "Tutorial para principiantes (Vala)"
+
+#. (itstool) path: info/desc
+#: C/beginner.vala.page:13
+msgid ""
+"A beginner's guide to GUI programming using GTK+, including code samples and "
+"practice exercises."
+msgstr ""
+"Una guía de programación de interfaces usuario en GTK+ para principiantes, "
+"incluyendo ejemplos de código y ejercicios prácticos."
+
+#. (itstool) path: synopsis/p
+#: C/beginner.vala.page:27
+msgid ""
+"Although these tutorials are designed for beginners, we can't cover all the "
+"basics. Before attempting to follow these tutorials, you are expected to be "
+"familiar with the following concepts:"
+msgstr ""
+"Aunque estos tutoriales están diseñados para principiantes, no se pueden "
+"cubrir todos los conceptos básicos. Antes de intentar seguir estos "
+"tutoriales, debe estar familiarizado con los siguientes conceptos:"
+
+#. (itstool) path: item/p
+#: C/beginner.vala.page:29
+msgid "Object oriented programming"
+msgstr "Programación orientada a objetos"
+
+#. (itstool) path: item/p
+#: C/beginner.vala.page:30
+msgid "The Vala programming language:"
+msgstr "El lenguaje de programación Vala:"
+
+#. (itstool) path: item/p
+#: C/beginner.vala.page:32
+msgid ""
+"<link href=\"https://live.gnome.org/Vala/Tutorial\">The Vala Tutorial</link>"
+msgstr ""
+"<link href=\"https://live.gnome.org/Vala/Tutorial\">El tutorial de Vala</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/beginner.vala.page:33
+msgid ""
+"<link href=\"https://live.gnome.org/Vala/Documentation#Sample_Code\">Sample "
+"Vala code</link>"
+msgstr ""
+"<link href=\"https://live.gnome.org/Vala/Documentation#Sample_Code\">Código "
+"de ejemplo de Vala</link>"
+
+#. (itstool) path: synopsis/p
+#: C/beginner.vala.page:38
+msgid ""
+"By following these tutorials you will learn the basics of GUI programming "
+"using GTK+."
+msgstr ""
+"Siguiendo estos tutoriales, aprenderá los conceptos básicos de la "
+"programación de IGU usando GTK+."
+
+#. (itstool) path: item/p
+#: C/beginner.vala.page:51
+msgid "Copy and paste the code into <var>filename</var>.vala"
+msgstr "Copie y pegue el código en <var>nombre_archivo</var>.vala"
+
+#. (itstool) path: item/p
+#: C/beginner.vala.page:52 C/c.page:98
+msgid "In the terminal type:"
+msgstr "Escriba en la terminal:"
+
+#. (itstool) path: item/screen
+#: C/beginner.vala.page:53
+#, no-wrap
+msgid "valac --pkg gtk+-3.0 <var>filename</var>.vala"
+msgstr "valac --pkg gtk+-3.0 <var>nombre_archivo</var>.vala"
+
+#. (itstool) path: item/screen
+#: C/beginner.vala.page:54 C/c.page:100
+#, no-wrap
+msgid "./<var>filename</var>"
+msgstr "./<var>nombre_archivo</var>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/button.c.page:25 C/button.js.page:22 C/button.py.page:25
+#: C/button.vala.page:24
+msgctxt "_"
+msgid "external ref='media/button.png' md5='8d69efbb3a0d3e043af6139b6492171c'"
+msgstr "external ref='media/button.png' md5='8d69efbb3a0d3e043af6139b6492171c'"
+
+#. (itstool) path: info/title
+#: C/button.c.page:8
+msgctxt "text"
+msgid "Button (C)"
+msgstr "Botón (C)"
+
+#. (itstool) path: info/desc
+#: C/button.c.page:20 C/button.py.page:20 C/button.vala.page:19
+msgid "A button widget which emits a signal when clicked"
+msgstr "Un widget de botón que emite una señal cuando se pulsa sobre él"
+
+#. (itstool) path: page/title
+#: C/button.c.page:23 C/button.js.page:21 C/button.py.page:23
+msgid "Button"
+msgstr "Button"
+
+#. (itstool) path: page/p
+#: C/button.c.page:26
+msgid ""
+"A button widget connected to a callback function that reverses its label "
+"when clicked."
+msgstr ""
+"Un widget de botón conectado a una función de retorno de llamada que "
+"invierte su etiqueta cuando se pulsa."
+
+#. (itstool) path: page/code
+#: C/button.c.page:28
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/*This is the callback function. It is a handler function which \n"
+"reacts to the signal. In this case, it will cause the button label's \n"
+"string to reverse.*/\n"
+"static void\n"
+"button_clicked (GtkButton *button,\n"
+" gpointer user_data)\n"
+"{\n"
+" const char *old_label;\n"
+" char *new_label;\n"
+"\n"
+" old_label = gtk_button_get_label (button);\n"
+" new_label = g_utf8_strreverse (old_label, -1);\n"
+"\n"
+" gtk_button_set_label (button, new_label);\n"
+" g_free (new_label);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *button;\n"
+"\n"
+" /*Create a window with a title and a default size*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"GNOME Button\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n"
+"\n"
+" /*Create a button with a label, and add it to the window*/\n"
+" button = gtk_button_new_with_label (\"Click Me\");\n"
+" gtk_container_add (GTK_CONTAINER (window), button);\n"
+"\n"
+" /*Connecting the clicked signal to the callback function*/\n"
+" g_signal_connect (GTK_BUTTON (button),\n"
+" \"clicked\", \n"
+" G_CALLBACK (button_clicked), \n"
+" G_OBJECT (window));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/*This is the callback function. It is a handler function which \n"
+"reacts to the signal. In this case, it will cause the button label's \n"
+"string to reverse.*/\n"
+"static void\n"
+"button_clicked (GtkButton *button,\n"
+" gpointer user_data)\n"
+"{\n"
+" const char *old_label;\n"
+" char *new_label;\n"
+"\n"
+" old_label = gtk_button_get_label (button);\n"
+" new_label = g_utf8_strreverse (old_label, -1);\n"
+"\n"
+" gtk_button_set_label (button, new_label);\n"
+" g_free (new_label);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *button;\n"
+"\n"
+" /*Create a window with a title and a default size*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"GNOME Button\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n"
+"\n"
+" /*Create a button with a label, and add it to the window*/\n"
+" button = gtk_button_new_with_label (\"Click Me\");\n"
+" gtk_container_add (GTK_CONTAINER (window), button);\n"
+"\n"
+" /*Connecting the clicked signal to the callback function*/\n"
+" g_signal_connect (GTK_BUTTON (button),\n"
+" \"clicked\", \n"
+" G_CALLBACK (button_clicked), \n"
+" G_OBJECT (window));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/button.c.page:36 C/buttonbox.py.page:51 C/grid.c.page:35
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkButton.html"
+"\">GtkButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkButton.html"
+"\">GtkButton</link>"
+
+#. (itstool) path: item/p
+#: C/button.c.page:37
+msgid ""
+"<link href=\"http://developer.gnome.org/glib/stable/glib-Unicode-"
+"Manipulation.html#g-utf8-strreverse\">Unicode Manipulation</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/glib/stable/glib-Unicode-"
+"Manipulation.html#g-utf8-strreverse\">Manejo de Unicode</link>"
+
+#. (itstool) path: info/title
+#: C/button.js.page:8
+msgctxt "text"
+msgid "Button (JavaScript)"
+msgstr "Botón (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/button.js.page:18
+msgid "A button which can be connected to other widgets"
+msgstr "Un botón que puede estar conectado a otros widgets."
+
+#. (itstool) path: page/p
+#: C/button.js.page:23
+msgid "A button widget that changes its label when you click it."
+msgstr "Un widget que cambia su etiqueta cuando se pulsa sobre él."
+
+#. (itstool) path: page/code
+#: C/button.js.page:25
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ButtonExample = new Lang.Class ({\n"
+" Name: 'Button Example',\n"
+"\n"
+" /* Create the application itself\n"
+" This boilerplate code is needed to build any GTK+ application. */\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jsbutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal initializes menus and builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"GNOME Button\",\n"
+" default_height: 50,\n"
+" default_width: 250 });\n"
+"\n"
+" // Create the button\n"
+" this.Button = new Gtk.Button ({label: \"Click Me\"});\n"
+" this._window.add (this.Button);\n"
+"\n"
+" // Bind it to a function that says what to do when the button is clicked\n"
+" this.Button.connect (\"clicked\", Lang.bind(this, this._clickHandler));\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" // Here's the function that says what happens when the button is clicked\n"
+" _clickHandler: function () {\n"
+" this.Button.set_label (\"Clicked!\");\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ButtonExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ButtonExample = new Lang.Class ({\n"
+" Name: 'Button Example',\n"
+"\n"
+" /* Create the application itself\n"
+" This boilerplate code is needed to build any GTK+ application. */\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jsbutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal initializes menus and builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"GNOME Button\",\n"
+" default_height: 50,\n"
+" default_width: 250 });\n"
+"\n"
+" // Create the button\n"
+" this.Button = new Gtk.Button ({label: \"Click Me\"});\n"
+" this._window.add (this.Button);\n"
+"\n"
+" // Bind it to a function that says what to do when the button is clicked\n"
+" this.Button.connect (\"clicked\", Lang.bind(this, this._clickHandler));\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" // Here's the function that says what happens when the button is clicked\n"
+" _clickHandler: function () {\n"
+" this.Button.set_label (\"Clicked!\");\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ButtonExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/button.js.page:33 C/grid.js.page:36
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html"
+"\">Gtk.Button</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html"
+"\">Gtk.Button</link>"
+
+#. (itstool) path: info/title
+#: C/button.py.page:8
+msgctxt "text"
+msgid "Button (Python)"
+msgstr "Botón (Python)"
+
+#. (itstool) path: page/p
+#: C/button.py.page:26 C/button.vala.page:25
+msgid "A button widget connected to a simple callback function."
+msgstr "Un widget de botón conectado a una función de retorno de llamada."
+
+#. (itstool) path: section/code
+#: C/button.py.page:32
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"GNOME Button\", application=app)\n"
+" self.set_default_size(250, 50)\n"
+"\n"
+" # a button\n"
+" button = Gtk.Button()\n"
+" # with a label\n"
+" button.set_label(\"Click me\")\n"
+" # connect the signal \"clicked\" emitted by the button\n"
+" # to the callback function do_clicked\n"
+" button.connect(\"clicked\", self.do_clicked)\n"
+" # add the button to the window\n"
+" self.add(button)\n"
+"\n"
+" # callback function connected to the signal \"clicked\" of the button\n"
+" def do_clicked(self, button):\n"
+" print(\"You clicked me!\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"GNOME Button\", application=app)\n"
+" self.set_default_size(250, 50)\n"
+"\n"
+" # a button\n"
+" button = Gtk.Button()\n"
+" # with a label\n"
+" button.set_label(\"Click me\")\n"
+" # connect the signal \"clicked\" emitted by the button\n"
+" # to the callback function do_clicked\n"
+" button.connect(\"clicked\", self.do_clicked)\n"
+" # add the button to the window\n"
+" self.add(button)\n"
+"\n"
+" # callback function connected to the signal \"clicked\" of the button\n"
+" def do_clicked(self, button):\n"
+" print(\"You clicked me!\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/button.py.page:36
+msgid "Useful methods for a Button widget"
+msgstr "Métodos útiles para un widget «Button»"
+
+#. (itstool) path: section/p
+#: C/button.py.page:37
+msgid ""
+"In line 16 the <code>\"clicked\"</code> signal from the button is connected "
+"to the callback function <code>do_clicked()</code> using <code><var>widget</"
+"var>.connect(<var>signal</var>, <var>callback function</var>)</code>. See "
+"<link xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 16, la señal <code>«clicked»</code> del botón se conecta a la "
+"función de retorno de llamada <code>do_clicked()</code> usando "
+"<code><var>widget</var>.connect(<var>señal</var>, <var>función de retorno de "
+"llamada</var>)</code>. Consulte la <link xref=\"signals-callbacks.py\"/> "
+"para obtener una explicación más detallada."
+
+#. (itstool) path: item/p
+#: C/button.py.page:39
+msgid ""
+"<code>set_relief(Gtk.ReliefStyle.NONE)</code> sets to none the relief style "
+"of the edges of the Gtk.Button - as opposed to <code>Gtk.ReliefStyle.NORMAL</"
+"code>."
+msgstr ""
+"<code>set_relief(Gtk.ReliefStyle.NONE)</code> establece el estilo de relieve "
+"de los bordes del «Gtk.Button» a «ninguno», opuesto a <code>Gtk.ReliefStyle."
+"NORMAL</code>."
+
+#. (itstool) path: item/p
+#: C/button.py.page:40
+msgid ""
+"If the label of the button is a <link href=\"http://developer.gnome.org/gtk3/"
+"unstable/gtk3-Stock-Items.html\">stock icon</link>, "
+"<code>set_use_stock(True)</code> sets the label as the name of the "
+"corresponding stock icon."
+msgstr ""
+"Si la etiqueta de un botón es un <link href=\"http://developer.gnome.org/"
+"gtk3/unstable/gtk3-Stock-Items.html\">icono del almacén</link>, "
+"<code>set_use_stock(True)</code> establece la etiqueta al nombre del icono "
+"del almacén correspondiente."
+
+#. (itstool) path: item/p
+#: C/button.py.page:41
+msgid ""
+"To set an image (e.g. a stock image) for the button <code>button</code>:"
+msgstr ""
+"Para establecer una imagen (por ejemplo, una imagen del almacén) para el "
+"botón <code>button</code>:"
+
+#. (itstool) path: item/code
+#: C/button.py.page:42
+#, no-wrap
+msgid ""
+"\n"
+"image = Gtk.Image()\n"
+"image.set_from_stock(Gtk.STOCK_ABOUT, Gtk.IconSize.BUTTON)\n"
+"button.set_image(image)"
+msgstr ""
+"\n"
+"image = Gtk.Image()\n"
+"image.set_from_stock(Gtk.STOCK_ABOUT, Gtk.IconSize.BUTTON)\n"
+"button.set_image(image)"
+
+#. (itstool) path: item/p
+#: C/button.py.page:46
+msgid ""
+"You should not set a label for the button after this, otherwise it will show "
+"the label and not the image."
+msgstr ""
+"No debe establecer una etiqueta para el botón después de esto, ya que si lo "
+"hace mostrará la etiqueta y no la imagen."
+
+#. (itstool) path: item/p
+#: C/button.py.page:47
+msgid ""
+"If we use <code>set_focus_on_click(False)</code> the button will not grab "
+"focus when it is clicked by the mouse. This could be useful in places like "
+"toolbars, so that the keyboard focus is not removed from the main area of "
+"the application."
+msgstr ""
+"Si usa <code>set_focus_on_click(False)</code>, el botón no atrapará el foco "
+"cuando el ratón lo pulse. Esto podría ser útil en lugares como barras de "
+"herramientas, para que el foco del teclado no se quite del área principal de "
+"la aplicación."
+
+#. (itstool) path: item/p
+#: C/button.py.page:55
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkButton.html"
+"\">GtkButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkButton.html"
+"\">GtkButton</link>"
+
+#. (itstool) path: item/p
+#: C/button.py.page:56 C/dialog.py.page:52 C/label.py.page:106
+#: C/linkbutton.py.page:47 C/messagedialog.py.page:61 C/radiobutton.py.page:49
+#: C/separator.py.page:39 C/window.py.page:65
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkWindow.html"
+"\">GtkWindow</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkWindow.html"
+"\">GtkWindow</link>"
+
+#. (itstool) path: info/title
+#: C/button.vala.page:8
+msgctxt "text"
+msgid "Button (Vala)"
+msgstr "Botón (Vala)"
+
+#. (itstool) path: page/title
+#: C/button.vala.page:22
+msgid "Button widget"
+msgstr "Widget de botón"
+
+#. (itstool) path: page/code
+#: C/button.vala.page:27
+#, no-wrap
+msgid ""
+"\n"
+"/* A window in the application */\n"
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* The constructor of the window */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"GNOME Button\");\n"
+"\n"
+"\t\tvar button = new Gtk.Button.with_label (\"Click Me\");\n"
+"\t\tbutton.clicked.connect (this.reverse_label);\n"
+"\t\tbutton.show ();\n"
+"\n"
+"\t\tthis.window_position = Gtk.WindowPosition.CENTER;\n"
+"\t\tthis.set_default_size (250,50);\n"
+"\t\tthis.add (button);\n"
+"\t}\n"
+"\n"
+"\t/* The callback function connected to the\n"
+"\t * 'clicked' signal of the button.\n"
+"\t */\n"
+"\tvoid reverse_label (Gtk.Button button) {\n"
+"\t\tbutton.label = button.label.reverse ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\n"
+"\t/* This is the constructor */\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the activate signal of GLib.Application */\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"\n"
+"/* A window in the application */\n"
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* The constructor of the window */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"GNOME Button\");\n"
+"\n"
+"\t\tvar button = new Gtk.Button.with_label (\"Click Me\");\n"
+"\t\tbutton.clicked.connect (this.reverse_label);\n"
+"\t\tbutton.show ();\n"
+"\n"
+"\t\tthis.window_position = Gtk.WindowPosition.CENTER;\n"
+"\t\tthis.set_default_size (250,50);\n"
+"\t\tthis.add (button);\n"
+"\t}\n"
+"\n"
+"\t/* The callback function connected to the\n"
+"\t * 'clicked' signal of the button.\n"
+"\t */\n"
+"\tvoid reverse_label (Gtk.Button button) {\n"
+"\t\tbutton.label = button.label.reverse ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\n"
+"\t/* This is the constructor */\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the activate signal of GLib.Application */\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: page/p
+#: C/button.vala.page:29
+msgid ""
+"In this sample we used the following: <link href=\"http://www.valadoc.org/gtk"
+"+-3.0/Gtk.Button.html\">Gtk.Button</link>"
+msgstr ""
+"En este ejemplo se usa el siguiente widget: <link href=\"http://www.valadoc."
+"org/gtk+-3.0/Gtk.Button.html\">Gtk.Button</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/buttonbox.js.page:24 C/buttonbox.py.page:25
+msgctxt "_"
+msgid ""
+"external ref='media/buttonbox_calculator.png' "
+"md5='ce0de08b7ac66f517290e33e6d33d508'"
+msgstr ""
+"external ref='media/buttonbox_calculator.png' "
+"md5='ce0de08b7ac66f517290e33e6d33d508'"
+
+#. (itstool) path: info/title
+#: C/buttonbox.js.page:8
+msgctxt "text"
+msgid "ButtonBox (JavaScript)"
+msgstr "ButtonBox (JavaScript)"
+
+#. (itstool) path: credit/name
+#: C/buttonbox.js.page:14 C/colorbutton.js.page:13
+#: C/fontchooserwidget.js.page:13 C/paned.js.page:13
+#: C/scrolledwindow.js.page:13 C/tooltip.js.page:14
+msgid "Meg Ford"
+msgstr "Meg Ford"
+
+#. (itstool) path: info/desc
+#: C/buttonbox.js.page:19 C/buttonbox.py.page:20
+msgid "A container for arranging buttons"
+msgstr "Un contenedor para organizar botones"
+
+#. (itstool) path: page/title
+#. (itstool) path: steps/title
+#: C/buttonbox.js.page:22 C/buttonbox.py.page:23 C/tutorial.py.page:92
+msgid "ButtonBox"
+msgstr "Botonera"
+
+#. (itstool) path: page/p
+#: C/buttonbox.js.page:25 C/buttonbox.py.page:26
+msgid "A calculator - the buttons are enclosed in horizontal ButtonBoxes."
+msgstr "Una calculadora: los botones se agrupan en botoneras horizontales."
+
+#. (itstool) path: section/code
+#: C/buttonbox.js.page:31
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ButtonBoxExample = new Lang.Class ({\n"
+" Name: 'ButtonBox Example',\n"
+"\n"
+" // Create the application itthis\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application({ application_id: 'org.example.jsbuttonbox' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this.window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+" // Create the application window\n"
+" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Calculator\",\n"
+" default_width: 350,\n"
+" default_height: 200,\n"
+" border_width: 10 });\n"
+" this.entry = new Gtk.Entry();\n"
+" this.entry.set_text('0');\n"
+" // text aligned on the right\n"
+" this.entry.set_alignment(1);\n"
+" // the text in the entry cannot be modified by writing in it\n"
+" this.entry.set_can_focus(false);\n"
+"\n"
+" // a grid\n"
+" this.grid = new Gtk.Grid();\n"
+" this.grid.set_row_spacing(5);\n"
+" \n"
+" // to attach the entry\n"
+" this.grid.attach(this.entry, 0, 0, 1, 1);\n"
+" \n"
+" // the labels for the buttons\n"
+" this.buttons = [ 7, 8, 9, '/', 4, 5, 6, '*', 1, 2, 3, '-', 'C', 0, '=', '+' ];\n"
+" \n"
+" // each row is a ButtonBox, attached to the grid \n"
+" for (i = 0; i < 4; i++) {\n"
+" this.hbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL);\n"
+" this.hbox.set_spacing(5);\n"
+" this.grid.attach(this.hbox, 0, i + 1, 1, 1);\n"
+" // each ButtonBox has 4 buttons, connected to the callback function\n"
+" for (j= 0; j < 4; j++) {\n"
+" this.button = new Gtk.Button();\n"
+" this.buttonLabel = (this.buttons[i * 4 + j].toString());\n"
+" this.button.set_label(this.buttonLabel);\n"
+" this.button.set_can_focus(false);\n"
+" this.button.connect(\"clicked\", Lang.bind(this, this._buttonClicked, this.button));\n"
+" this.hbox.add(this.button);\n"
+" }\n"
+" }\n"
+" \n"
+" // some variables for the calculations\n"
+" this.firstNumber = 0;\n"
+" this.secondNumber = 0;\n"
+" this.counter = 0;\n"
+" this.operation = \"\";\n"
+"\n"
+" // add the grid to the window\n"
+" this.window.add(this.grid);\n"
+" this.window.show_all();\n"
+" },\n"
+"\n"
+" // callback function for all the buttons\n"
+" _buttonClicked: function(button) {\n"
+" this.button = button;\n"
+" // for the operations\n"
+" if (this.button.get_label() == '+') {\n"
+" this.counter += 1 \n"
+" if (this.counter > 1)\n"
+" this._doOperation();\n"
+" this.entry.set_text('0');\n"
+" this.operation = \"plus\";\n"
+" }\n"
+"\n"
+" else if (this.button.get_label() == '-') {\n"
+" this.counter += 1;\n"
+" if (this.counter > 1)\n"
+" this._doOperation();\n"
+" this.entry.set_text('0');\n"
+" this.operation = \"minus\";\n"
+" }\n"
+"\n"
+" else if (this.button.get_label() == '*') {\n"
+" this.counter += 1; \n"
+" if (this.counter > 1)\n"
+" this._doOperation();\n"
+" this.entry.set_text('0');\n"
+" this.operation = \"multiplication\";\n"
+" }\n"
+"\n"
+" else if (this.button.get_label() == '/') {\n"
+" this.counter += 1 \n"
+" if (this.counter > 1)\n"
+" this._doOperation();\n"
+" this.entry.set_text('0');\n"
+" this.operation = \"division\";\n"
+" }\n"
+"\n"
+" // for =\n"
+" else if (this.button.get_label() == '=') {\n"
+" this._doOperation();\n"
+" this.entry.set_text(this.firstNumber.toString());\n"
+" this.counter = 1;\n"
+" }\n"
+"\n"
+" // for Cancel\n"
+" else if (this.button.get_label() == 'C') {\n"
+" this.firstNumber = 0;\n"
+" this.secondNumber = 0;\n"
+" this.counter = 0;\n"
+" this.entry.set_text('0');\n"
+" this.operation = \"\";\n"
+" }\n"
+"\n"
+" // for a digit button\n"
+" else {\n"
+" this.newDigit = parseInt(this.button.get_label());\n"
+" if (this.entry.get_text() == \"error\")\n"
+" this.number = 0;\n"
+" else\n"
+" this.number = parseInt(this.entry.get_text());\n"
+" this.number = this.number * 10 + this.newDigit; \n"
+" if (this.counter == 0)\n"
+" this.firstNumber = this.number;\n"
+" else\n"
+" this.secondNumber = this.number;\n"
+" this.entry.set_text(this.number.toString());\n"
+" }\n"
+" },\n"
+"\n"
+" _doOperation: function() {\n"
+" if (this.operation == \"plus\") {\n"
+" this.firstNumber += this.secondNumber;\n"
+" } else if (this.operation == \"minus\") {\n"
+" this.firstNumber -= this.secondNumber;\n"
+" } else if (this.operation == \"multiplication\") {\n"
+" this.firstNumber *= this.secondNumber;\n"
+" } else if (this.operation == \"division\") {\n"
+" if (this.secondNumber != 0) {\n"
+" this.firstNumber /= this.secondNumber;\n"
+" } else {\n"
+" this.firstNumber = 0; \n"
+" this.secondNumber = 0;\n"
+" this.counter = 0; \n"
+" this.entry.set_text(\"error\");\n"
+" this.operation = \"\";\n"
+"\n"
+" return\n"
+" }\n"
+" } else {\n"
+" this.firstNumber = 0;\n"
+" this.secondNumber = 0;\n"
+" this.counter = 0;\n"
+" this.entry.set_text(\"error\");\n"
+" }\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ButtonBoxExample();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ButtonBoxExample = new Lang.Class ({\n"
+" Name: 'ButtonBox Example',\n"
+"\n"
+" // Create the application itthis\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application({ application_id: 'org.example.jsbuttonbox' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this.window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+" // Create the application window\n"
+" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Calculator\",\n"
+" default_width: 350,\n"
+" default_height: 200,\n"
+" border_width: 10 });\n"
+" this.entry = new Gtk.Entry();\n"
+" this.entry.set_text('0');\n"
+" // text aligned on the right\n"
+" this.entry.set_alignment(1);\n"
+" // the text in the entry cannot be modified by writing in it\n"
+" this.entry.set_can_focus(false);\n"
+"\n"
+" // a grid\n"
+" this.grid = new Gtk.Grid();\n"
+" this.grid.set_row_spacing(5);\n"
+" \n"
+" // to attach the entry\n"
+" this.grid.attach(this.entry, 0, 0, 1, 1);\n"
+" \n"
+" // the labels for the buttons\n"
+" this.buttons = [ 7, 8, 9, '/', 4, 5, 6, '*', 1, 2, 3, '-', 'C', 0, '=', '+' ];\n"
+" \n"
+" // each row is a ButtonBox, attached to the grid \n"
+" for (i = 0; i < 4; i++) {\n"
+" this.hbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL);\n"
+" this.hbox.set_spacing(5);\n"
+" this.grid.attach(this.hbox, 0, i + 1, 1, 1);\n"
+" // each ButtonBox has 4 buttons, connected to the callback function\n"
+" for (j= 0; j < 4; j++) {\n"
+" this.button = new Gtk.Button();\n"
+" this.buttonLabel = (this.buttons[i * 4 + j].toString());\n"
+" this.button.set_label(this.buttonLabel);\n"
+" this.button.set_can_focus(false);\n"
+" this.button.connect(\"clicked\", Lang.bind(this, this._buttonClicked, this.button));\n"
+" this.hbox.add(this.button);\n"
+" }\n"
+" }\n"
+" \n"
+" // some variables for the calculations\n"
+" this.firstNumber = 0;\n"
+" this.secondNumber = 0;\n"
+" this.counter = 0;\n"
+" this.operation = \"\";\n"
+"\n"
+" // add the grid to the window\n"
+" this.window.add(this.grid);\n"
+" this.window.show_all();\n"
+" },\n"
+"\n"
+" // callback function for all the buttons\n"
+" _buttonClicked: function(button) {\n"
+" this.button = button;\n"
+" // for the operations\n"
+" if (this.button.get_label() == '+') {\n"
+" this.counter += 1 \n"
+" if (this.counter > 1)\n"
+" this._doOperation();\n"
+" this.entry.set_text('0');\n"
+" this.operation = \"plus\";\n"
+" }\n"
+"\n"
+" else if (this.button.get_label() == '-') {\n"
+" this.counter += 1;\n"
+" if (this.counter > 1)\n"
+" this._doOperation();\n"
+" this.entry.set_text('0');\n"
+" this.operation = \"minus\";\n"
+" }\n"
+"\n"
+" else if (this.button.get_label() == '*') {\n"
+" this.counter += 1; \n"
+" if (this.counter > 1)\n"
+" this._doOperation();\n"
+" this.entry.set_text('0');\n"
+" this.operation = \"multiplication\";\n"
+" }\n"
+"\n"
+" else if (this.button.get_label() == '/') {\n"
+" this.counter += 1 \n"
+" if (this.counter > 1)\n"
+" this._doOperation();\n"
+" this.entry.set_text('0');\n"
+" this.operation = \"division\";\n"
+" }\n"
+"\n"
+" // for =\n"
+" else if (this.button.get_label() == '=') {\n"
+" this._doOperation();\n"
+" this.entry.set_text(this.firstNumber.toString());\n"
+" this.counter = 1;\n"
+" }\n"
+"\n"
+" // for Cancel\n"
+" else if (this.button.get_label() == 'C') {\n"
+" this.firstNumber = 0;\n"
+" this.secondNumber = 0;\n"
+" this.counter = 0;\n"
+" this.entry.set_text('0');\n"
+" this.operation = \"\";\n"
+" }\n"
+"\n"
+" // for a digit button\n"
+" else {\n"
+" this.newDigit = parseInt(this.button.get_label());\n"
+" if (this.entry.get_text() == \"error\")\n"
+" this.number = 0;\n"
+" else\n"
+" this.number = parseInt(this.entry.get_text());\n"
+" this.number = this.number * 10 + this.newDigit; \n"
+" if (this.counter == 0)\n"
+" this.firstNumber = this.number;\n"
+" else\n"
+" this.secondNumber = this.number;\n"
+" this.entry.set_text(this.number.toString());\n"
+" }\n"
+" },\n"
+"\n"
+" _doOperation: function() {\n"
+" if (this.operation == \"plus\") {\n"
+" this.firstNumber += this.secondNumber;\n"
+" } else if (this.operation == \"minus\") {\n"
+" this.firstNumber -= this.secondNumber;\n"
+" } else if (this.operation == \"multiplication\") {\n"
+" this.firstNumber *= this.secondNumber;\n"
+" } else if (this.operation == \"division\") {\n"
+" if (this.secondNumber != 0) {\n"
+" this.firstNumber /= this.secondNumber;\n"
+" } else {\n"
+" this.firstNumber = 0; \n"
+" this.secondNumber = 0;\n"
+" this.counter = 0; \n"
+" this.entry.set_text(\"error\");\n"
+" this.operation = \"\";\n"
+"\n"
+" return\n"
+" }\n"
+" } else {\n"
+" this.firstNumber = 0;\n"
+" this.secondNumber = 0;\n"
+" this.counter = 0;\n"
+" this.entry.set_text(\"error\");\n"
+" }\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ButtonBoxExample();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/buttonbox.js.page:38
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ButtonBox.html"
+"\">GtkButtonBox</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ButtonBox.html"
+"\">GtkButtonBox</link>"
+
+#. (itstool) path: item/p
+#: C/buttonbox.js.page:39
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Box.html"
+"\">GtkBox</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Box.html"
+"\">GtkBox</link>"
+
+#. (itstool) path: item/p
+#: C/buttonbox.js.page:40
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html"
+"\">GtkButton</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html"
+"\">GtkButton</link>"
+
+#. (itstool) path: item/p
+#: C/buttonbox.js.page:41
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Entry.html"
+"\">GtkEntry</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Entry.html"
+"\">GtkEntry</link>"
+
+#. (itstool) path: item/p
+#: C/buttonbox.js.page:42
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html"
+"\">GtkGrid</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html"
+"\">GtkGrid</link>"
+
+#. (itstool) path: info/title
+#: C/buttonbox.py.page:8
+msgctxt "text"
+msgid "ButtonBox (Python)"
+msgstr "Botonera (Python)"
+
+#. (itstool) path: section/code
+#: C/buttonbox.py.page:32
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Calculator\", application=app)\n"
+" self.set_default_size(350, 200)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # an entry\n"
+" self.entry = Gtk.Entry()\n"
+" # with an initial text\n"
+" self.entry.set_text('0')\n"
+" # text aligned on the right\n"
+" self.entry.set_alignment(1)\n"
+" # the text in the entry cannot be modified writing in it\n"
+" self.entry.set_can_focus(False)\n"
+"\n"
+" # a grid\n"
+" grid = Gtk.Grid()\n"
+" grid.set_row_spacing(5)\n"
+"\n"
+" # to attach the entry\n"
+" grid.attach(self.entry, 0, 0, 1, 1)\n"
+"\n"
+" # the labels for the buttons\n"
+" buttons = [7, 8, 9, '/',\n"
+" 4, 5, 6, '*',\n"
+" 1, 2, 3, '-',\n"
+" 'C', 0, '=', '+']\n"
+"\n"
+" # each row is a ButtonBox, attached to the grid\n"
+" for i in range(4):\n"
+" hbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL)\n"
+" hbox.set_spacing(5)\n"
+" grid.attach(hbox, 0, i + 1, 1, 1)\n"
+" # each ButtonBox has 4 buttons, connected to the callback function\n"
+" for j in range(4):\n"
+" button = Gtk.Button(label=buttons[i * 4 + j])\n"
+" button.set_can_focus(False)\n"
+" button.connect(\"clicked\", self.button_clicked)\n"
+" hbox.add(button)\n"
+"\n"
+" # some variables for the calculations\n"
+" self.first_number = 0\n"
+" self.second_number = 0\n"
+" self.counter = 0\n"
+" self.operation = \"\"\n"
+"\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" # callback function for all the buttons\n"
+" def button_clicked(self, button):\n"
+" # for the operations\n"
+" if button.get_label() == '+':\n"
+" self.counter += 1\n"
+" if self.counter > 1:\n"
+" self.do_operation()\n"
+" self.entry.set_text('0')\n"
+" self.operation = \"plus\"\n"
+" elif button.get_label() == '-':\n"
+" self.counter += 1\n"
+" if self.counter > 1:\n"
+" self.do_operation()\n"
+" self.entry.set_text('0')\n"
+" self.operation = \"minus\"\n"
+" elif button.get_label() == '*':\n"
+" self.counter += 1\n"
+" if self.counter > 1:\n"
+" self.do_operation()\n"
+" self.entry.set_text('0')\n"
+" self.operation = \"multiplication\"\n"
+" elif button.get_label() == '/':\n"
+" self.counter += 1\n"
+" if self.counter > 1:\n"
+" self.do_operation()\n"
+" self.entry.set_text('0')\n"
+" self.operation = \"division\"\n"
+" # for =\n"
+" elif button.get_label() == '=':\n"
+" self.do_operation()\n"
+" self.entry.set_text(str(self.first_number))\n"
+" self.counter = 1\n"
+" # for Cancel\n"
+" elif button.get_label() == 'C':\n"
+" self.first_number = 0\n"
+" self.second_number = 0\n"
+" self.counter = 0\n"
+" self.entry.set_text('')\n"
+" self.operation = \"\"\n"
+" # for a digit button\n"
+" else:\n"
+" new_digit = int(button.get_label())\n"
+" if self.entry.get_text() == 'error':\n"
+" number = 0\n"
+" else:\n"
+" number = int(self.entry.get_text())\n"
+" number = number * 10 + new_digit\n"
+" if self.counter == 0:\n"
+" self.first_number = number\n"
+" else:\n"
+" self.second_number = number\n"
+" self.entry.set_text(str(number))\n"
+"\n"
+" def do_operation(self):\n"
+" if self.operation == \"plus\":\n"
+" self.first_number += self.second_number\n"
+" elif self.operation == \"minus\":\n"
+" self.first_number -= self.second_number\n"
+" elif self.operation == \"multiplication\":\n"
+" self.first_number *= self.second_number\n"
+" elif self.operation == \"division\":\n"
+" try:\n"
+" self.first_number /= self.second_number\n"
+" except ZeroDivisionError:\n"
+" self.first_number = 0\n"
+" self.second_number = 0\n"
+" self.counter = 0\n"
+" self.entry.set_text('error')\n"
+" self.operation = \"\"\n"
+" return\n"
+" else:\n"
+" self.first_number = 0\n"
+" self.second_number = 0\n"
+" self.counter = 0\n"
+" self.entry.set_text('error')\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Calculator\", application=app)\n"
+" self.set_default_size(350, 200)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # an entry\n"
+" self.entry = Gtk.Entry()\n"
+" # with an initial text\n"
+" self.entry.set_text('0')\n"
+" # text aligned on the right\n"
+" self.entry.set_alignment(1)\n"
+" # the text in the entry cannot be modified writing in it\n"
+" self.entry.set_can_focus(False)\n"
+"\n"
+" # a grid\n"
+" grid = Gtk.Grid()\n"
+" grid.set_row_spacing(5)\n"
+"\n"
+" # to attach the entry\n"
+" grid.attach(self.entry, 0, 0, 1, 1)\n"
+"\n"
+" # the labels for the buttons\n"
+" buttons = [7, 8, 9, '/',\n"
+" 4, 5, 6, '*',\n"
+" 1, 2, 3, '-',\n"
+" 'C', 0, '=', '+']\n"
+"\n"
+" # each row is a ButtonBox, attached to the grid\n"
+" for i in range(4):\n"
+" hbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL)\n"
+" hbox.set_spacing(5)\n"
+" grid.attach(hbox, 0, i + 1, 1, 1)\n"
+" # each ButtonBox has 4 buttons, connected to the callback function\n"
+" for j in range(4):\n"
+" button = Gtk.Button(label=buttons[i * 4 + j])\n"
+" button.set_can_focus(False)\n"
+" button.connect(\"clicked\", self.button_clicked)\n"
+" hbox.add(button)\n"
+"\n"
+" # some variables for the calculations\n"
+" self.first_number = 0\n"
+" self.second_number = 0\n"
+" self.counter = 0\n"
+" self.operation = \"\"\n"
+"\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" # callback function for all the buttons\n"
+" def button_clicked(self, button):\n"
+" # for the operations\n"
+" if button.get_label() == '+':\n"
+" self.counter += 1\n"
+" if self.counter > 1:\n"
+" self.do_operation()\n"
+" self.entry.set_text('0')\n"
+" self.operation = \"plus\"\n"
+" elif button.get_label() == '-':\n"
+" self.counter += 1\n"
+" if self.counter > 1:\n"
+" self.do_operation()\n"
+" self.entry.set_text('0')\n"
+" self.operation = \"minus\"\n"
+" elif button.get_label() == '*':\n"
+" self.counter += 1\n"
+" if self.counter > 1:\n"
+" self.do_operation()\n"
+" self.entry.set_text('0')\n"
+" self.operation = \"multiplication\"\n"
+" elif button.get_label() == '/':\n"
+" self.counter += 1\n"
+" if self.counter > 1:\n"
+" self.do_operation()\n"
+" self.entry.set_text('0')\n"
+" self.operation = \"division\"\n"
+" # for =\n"
+" elif button.get_label() == '=':\n"
+" self.do_operation()\n"
+" self.entry.set_text(str(self.first_number))\n"
+" self.counter = 1\n"
+" # for Cancel\n"
+" elif button.get_label() == 'C':\n"
+" self.first_number = 0\n"
+" self.second_number = 0\n"
+" self.counter = 0\n"
+" self.entry.set_text('')\n"
+" self.operation = \"\"\n"
+" # for a digit button\n"
+" else:\n"
+" new_digit = int(button.get_label())\n"
+" if self.entry.get_text() == 'error':\n"
+" number = 0\n"
+" else:\n"
+" number = int(self.entry.get_text())\n"
+" number = number * 10 + new_digit\n"
+" if self.counter == 0:\n"
+" self.first_number = number\n"
+" else:\n"
+" self.second_number = number\n"
+" self.entry.set_text(str(number))\n"
+"\n"
+" def do_operation(self):\n"
+" if self.operation == \"plus\":\n"
+" self.first_number += self.second_number\n"
+" elif self.operation == \"minus\":\n"
+" self.first_number -= self.second_number\n"
+" elif self.operation == \"multiplication\":\n"
+" self.first_number *= self.second_number\n"
+" elif self.operation == \"division\":\n"
+" try:\n"
+" self.first_number /= self.second_number\n"
+" except ZeroDivisionError:\n"
+" self.first_number = 0\n"
+" self.second_number = 0\n"
+" self.counter = 0\n"
+" self.entry.set_text('error')\n"
+" self.operation = \"\"\n"
+" return\n"
+" else:\n"
+" self.first_number = 0\n"
+" self.second_number = 0\n"
+" self.counter = 0\n"
+" self.entry.set_text('error')\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/buttonbox.py.page:36
+msgid "Useful methods for a ButtonBox widget"
+msgstr "Métodos útiles para un widget ButtonBox"
+
+#. (itstool) path: item/p
+#: C/buttonbox.py.page:38
+msgid ""
+"The layout of the ButtonBox are set with <code>set_layout(layout)</code>, "
+"where <code>layout</code> can be <code>Gtk.ButtonBoxStyle.SPREAD</code> "
+"(buttons are evenly spread across the box), <code>Gtk.ButtonBoxStyle.EDGE</"
+"code> (buttons are placed at the edges of the box), <code>Gtk.ButtonBoxStyle."
+"START</code> (buttons are grouped towards the start of the box), <code>Gtk."
+"ButtonBoxStyle.END</code> (buttons are grouped towards the end of the box), "
+"<code>Gtk.ButtonBoxStyle.CENTER</code> (buttons are centered in the box)."
+msgstr ""
+"La distribución de la botonera se configura con "
+"<code>set_layout(distribución)</code>, donde <code>distribución</code> puede "
+"ser <code>Gtk.ButtonBoxStyle.SPREAD</code> (los botones se separan "
+"equidistantes a lo largo de la botonera), <code>Gtk.ButtonBoxStyle.EDGE</"
+"code> (los botones se ponen en los bordes), <code>Gtk.ButtonBoxStyle.START</"
+"code> (los botones se agrupan hacia el comienzo de la botonera), <code>Gtk."
+"ButtonBoxStyle.END</code> (los botones se agrupan hacia el final), <code>Gtk."
+"ButtonBoxStyle.CENTER</code> (los botones se agrupan hacia el centro)."
+
+#. (itstool) path: item/p
+#: C/buttonbox.py.page:39
+msgid ""
+"<code>set_child_secondary(button, is_secondary)</code> sets whether "
+"<code>button</code> should appear in a secondary group of children. A "
+"typical use of a secondary child is the help button in a dialog. This group "
+"appears after the other children if the style is <code>START</code>, "
+"<code>SPREAD</code> or <code>EDGE</code>, and before the other children if "
+"the style is <code>END</code>. If the style is <code>START</code> or "
+"<code>END</code>, then the secondary children are aligned at the other end "
+"of the button box from the main children. For the other styles, they appear "
+"immediately next to the main children."
+msgstr ""
+"<code>set_child_secondary(botón, es_secundario)</code> configura si "
+"<code>botón</code> debe aparecer en un grupo secundario de hijos. Un uso "
+"típico de un hijo secundario es el botón de ayuda en un diálogo. Este grupo "
+"aparece después de los otros hijos si el estilo es <code>START</code>, "
+"<code>SPREAD</code> o <code>EDGE</code>, y antes de los otros hijos si el "
+"estilo es <code>END</code>. Si el estilo es <code>START</code> o <code>END</"
+"code>, entonces los hijos secundarios se alinean al otro lado de los hijos "
+"principales en la botonera . Para los otros estilos, aparecen inmediatamente "
+"a continuación de los hijos principales."
+
+#. (itstool) path: item/p
+#: C/buttonbox.py.page:40
+msgid ""
+"<code>set_child_non_homogeneous(button, is_non_homogeneous)</code> sets "
+"whether the child is exempted from homogeneous sizing. Default value is "
+"<code>False</code>."
+msgstr ""
+"<code>set_child_non_homogeneous(botón, es_heterogéneo)</code> establece si "
+"el hijo está exento de dimensionado homogéneo. El valor predeterminado es "
+"<code>False</code>."
+
+#. (itstool) path: item/p
+#: C/buttonbox.py.page:41
+msgid ""
+"<code>set_spacing(spacing)</code> sets the spacing, in pixels, between the "
+"buttons of the box."
+msgstr ""
+"<code>set_spacing(espaciado)</code> establece el espaciado, en píxeles, "
+"entre los botones de la botonera."
+
+#. (itstool) path: item/p
+#: C/buttonbox.py.page:49
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkButtonBox.html"
+"\">GtkButtonBox</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkButtonBox.html"
+"\">GtkButtonBox</link>"
+
+#. (itstool) path: item/p
+#: C/buttonbox.py.page:50
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkBox.html\">GtkBox</"
+"link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkBox.html\">GtkBox</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/buttonbox.py.page:52 C/entry.c.page:34
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkEntry.html"
+"\">GtkEntry</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkEntry.html"
+"\">GtkEntry</link>"
+
+#. (itstool) path: item/p
+#: C/buttonbox.py.page:53 C/grid.c.page:36 C/radiobutton.c.page:37
+#: C/spinbutton.c.page:40 C/statusbar.c.page:40 C/switch.c.page:37
+#: C/togglebutton.c.page:40
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkGrid.html\">GtkGrid</"
+"link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkGrid.html\">GtkGrid</"
+"link>"
+
+#. (itstool) path: info/title
+#: C/c.page:9
+msgctxt "link"
+msgid "C"
+msgstr "C"
+
+#. (itstool) path: credit/name
+#: C/c.page:18
+msgid "Bastian Ilso"
+msgstr "Bastian Ilso"
+
+#. (itstool) path: info/desc
+#: C/c.page:24
+msgid "Tutorials and code samples in C."
+msgstr "Tutoriales y ejemplos de código en C."
+
+#. (itstool) path: page/title
+#: C/c.page:27
+msgid "Platform Demos in C"
+msgstr "Demostraciones de la plataforma en C"
+
+#. (itstool) path: section/title
+#: C/c.page:31
+msgid "Prerequisites"
+msgstr "Prerrequisitos"
+
+#. (itstool) path: section/p
+#: C/c.page:33
+msgid ""
+"To compile these platform demos you will need a C compiler, for example "
+"<link href=\"https://gcc.gnu.org/\">gcc</link>. You will also need GTK+ 3 "
+"including headers and pkg-config files. Linux distributions usually abstract "
+"GTK+ 3 headers and pkg-config files into separate packages called <em>gtk3-"
+"devel</em>, <em>gtk3-dev</em> or similar."
+msgstr ""
+"Para estas demostraciones de la plataforma necesitará un compilador de C, "
+"por ejemplo <link href=\"https://gcc.gnu.org/\">gcc</link>. También "
+"necesitará las cabeceras de GTK+3 y los archivos pkg-config. Normalmente, "
+"las distribuciones de Linux proporcionan las cabeceras de GTK+ 3y los "
+"archivos pkg-config en paquetes separados llamados <em>gtk3-devel</em>, "
+"<em>gtk3-dev</em> o similar."
+
+#. (itstool) path: section/title
+#: C/c.page:44
+msgid "Guidelines for new developers"
+msgstr "Guías para nuevos desarrolladores"
+
+#. (itstool) path: section/p
+#: C/c.page:46
+msgid ""
+"Beyond the prerequisites mentioned above, several tools has been developed "
+"to assist you further in developing your GNOME application. GNOME also "
+"recommends a specific coding style and conventions which this section will "
+"elaborate further upon."
+msgstr ""
+"Más allá de los requisitos mencionados anteriormente, se han desarrollado "
+"varias herramientas para ayudarle a desarrollar su aplicación para GNOME. Se "
+"recomienda un estilo de codificación determinado y unos convenios que se "
+"detallarán más adelante en esta sección."
+
+#. (itstool) path: section/title
+#: C/c.page:52
+msgid "Recommended tools"
+msgstr "Herramientas recomendadas"
+
+#. (itstool) path: item/p
+#: C/c.page:56
+msgid ""
+"<link href=\"https://wiki.gnome.org/Apps/Devhelp\">DevHelp</link>: An API "
+"documentation browser for GNOME."
+msgstr ""
+"<link href=\"https://wiki.gnome.org/Apps/Devhelp\">DevHelp</link>: un "
+"explorador de la documentación de la API para GNOME."
+
+#. (itstool) path: item/p
+#: C/c.page:60
+msgid ""
+"A GNOME IDE (Integrated Development Environment). An IDE can assist you in "
+"writing and debugging C code, for example <link href=\"https://wiki.gnome."
+"org/Apps/Builder\">Builder</link> or <link href=\"https://wiki.gnome.org/"
+"Apps/Anjuta\">Anjuta</link>."
+msgstr ""
+"Un EID para GNOME (Entorno integrado de desarrollo). Un EID puede ayudarle a "
+"escribir y depurar código en C, por ejemplo <link href=\"https://wiki.gnome."
+"org/Apps/Builder\">Builder</link> o <link href=\"https://wiki.gnome.org/Apps/"
+"Anjuta\">Anjuta</link>."
+
+#. (itstool) path: item/p
+#: C/c.page:66
+msgid ""
+"<link href=\"http://glade.gnome.org/\">Glade</link>: A user interface "
+"designer for GTK+ Applications."
+msgstr ""
+"<link href=\"http://glade.gnome.org/\">Glade</link>: un diseñador de "
+"interfaces para aplicaciones en GTK+."
+
+#. (itstool) path: item/p
+#: C/c.page:70
+msgid ""
+"An IRC Client, for example <link href=\"https://wiki.gnome.org/Apps/Polari"
+"\">Polari</link> or <link href=\"https://wiki.gnome.org/Apps/Empathy"
+"\">Empathy</link>. If you run into problems while following the beginner "
+"tutorials, join #gnome on <em>irc.gnome.org</em>."
+msgstr ""
+"Un cliente de IRC, por ejemplo <link href=\"https://wiki.gnome.org/Apps/"
+"Polari\">Polari</link> o <link href=\"https://wiki.gnome.org/Apps/Empathy"
+"\">Empathy</link>. Si tiene problemas al seguir los tutoriales para "
+"principiantes, únase a #gnome en <em>irc.gnome.org</em>."
+
+#. (itstool) path: section/title
+#: C/c.page:80
+msgid "Coding Style"
+msgstr "Estilo del código"
+
+#. (itstool) path: section/p
+#: C/c.page:82
+msgid ""
+"Most applications in the GNOME project is written in the <link href=\"http://"
+"en.wikipedia.org/wiki/Indent_style#GNU_style\">GNU style</link> of "
+"indentation. The tutorials and code examples presented are following this "
+"convention and you are recommended to do so too."
+msgstr ""
+"La mayoría de las aplicaciones del proyecto GNOME están escritas siguiendo "
+"el estilo de sangrado de <link href=\"http://en.wikipedia.org/wiki/"
+"Indent_style#GNU_style\">GNU</link>. Los tutoriales y los códigos de ejemplo "
+"mostrados siguen este convenio y se recomienda que haga lo mismo."
+
+#. (itstool) path: section/title
+#: C/c.page:89
+msgid "Executing Code"
+msgstr "Ejecutar el código"
+
+#. (itstool) path: item/p
+#: C/c.page:95
+msgid "Copy and paste the code into <var>filename</var>.c"
+msgstr "Copie y pegue el código en <var>nombre_archivo</var>.c"
+
+#. (itstool) path: item/screen
+#: C/c.page:99
+#, no-wrap
+msgid "gcc <var>filename</var>.c `pkg-config --cflags --libs gtk+-3.0` -o <var>filename</var>"
+msgstr "gcc <var>nombre_archivo</var>.c `pkg-config --cflags --libs gtk+-3.0` -o <var>nombre_archivo</var>"
+
+#. (itstool) path: note/p
+#: C/c.page:105
+msgid ""
+"For more information about compiling GTK+ programs see <link href=\"http://"
+"developer.gnome.org/gtk3/3.4/gtk-compiling.html\">Compiling GTK+ "
+"Applications on UNIX</link>."
+msgstr ""
+"Para obtener más información sobre cómo compilar programas en GTK+, consulte "
+"<link href=\"http://developer.gnome.org/gtk3/3.4/gtk-compiling.html"
+"\">Compilar aplicaciones GTK+ en UNIX</link>."
+
+#. (itstool) path: section/title
+#: C/c.page:117
+msgid "Widget Code Examples"
+msgstr "Ejemplos de código de widget"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/checkbutton.c.page:22 C/checkbutton.js.page:22 C/checkbutton.py.page:23
+#: C/checkbutton.vala.page:22
+msgctxt "_"
+msgid ""
+"external ref='media/checkbutton.png' md5='7921a6812c87dd2b3781f4fad241e858'"
+msgstr ""
+"external ref='media/checkbutton.png' md5='7921a6812c87dd2b3781f4fad241e858'"
+
+#. (itstool) path: info/title
+#: C/checkbutton.c.page:8
+msgctxt "text"
+msgid "CheckButton (C)"
+msgstr "CheckButton (C)"
+
+#. (itstool) path: info/desc
+#: C/checkbutton.c.page:18
+msgid "Create widgets with a discrete ToggleButton"
+msgstr "Crear widgets con un botón ToggleButton discreto"
+
+#. (itstool) path: page/title
+#: C/checkbutton.c.page:21 C/checkbutton.js.page:21 C/checkbutton.py.page:22
+#: C/checkbutton.vala.page:21
+msgid "CheckButton"
+msgstr "CheckButton"
+
+#. (itstool) path: page/p
+#: C/checkbutton.c.page:23 C/checkbutton.py.page:24 C/checkbutton.vala.page:23
+msgid "This CheckButton toggles the title."
+msgstr "Este CheckButton cambia el título."
+
+#. (itstool) path: page/code
+#: C/checkbutton.c.page:25
+#, no-wrap
+msgid ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"/* signal handler for \"toggled\" signal of the CheckButton */\n"
+"static void\n"
+"toggled_cb (GtkToggleButton *toggle_button,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWindow *window = user_data;\n"
+"\n"
+" if (gtk_toggle_button_get_active (toggle_button))\n"
+" gtk_window_set_title (window, \"CheckButton Example\");\n"
+" else\n"
+" gtk_window_set_title (window, \"\");\n"
+"}\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *checkbutton;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"CheckButton Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n"
+"\n"
+" checkbutton = gtk_check_button_new_with_label (\"Show Title\");\n"
+" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), TRUE);\n"
+" g_signal_connect (GTK_TOGGLE_BUTTON (checkbutton), \"toggled\", G_CALLBACK (toggled_cb), window);\n"
+" gtk_container_add (GTK_CONTAINER (window), checkbutton);\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.example.checkbutton\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"/* signal handler for \"toggled\" signal of the CheckButton */\n"
+"static void\n"
+"toggled_cb (GtkToggleButton *toggle_button,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWindow *window = user_data;\n"
+"\n"
+" if (gtk_toggle_button_get_active (toggle_button))\n"
+" gtk_window_set_title (window, \"CheckButton Example\");\n"
+" else\n"
+" gtk_window_set_title (window, \"\");\n"
+"}\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *checkbutton;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"CheckButton Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n"
+"\n"
+" checkbutton = gtk_check_button_new_with_label (\"Show Title\");\n"
+" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), TRUE);\n"
+" g_signal_connect (GTK_TOGGLE_BUTTON (checkbutton), \"toggled\", G_CALLBACK (toggled_cb), window);\n"
+" gtk_container_add (GTK_CONTAINER (window), checkbutton);\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.example.checkbutton\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/checkbutton.c.page:30
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/3.2/GtkCheckButton.html"
+"\">GtkCheckButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/3.2/GtkCheckButton.html"
+"\">GtkCheckButton</link>"
+
+#. (itstool) path: info/title
+#: C/checkbutton.js.page:8
+msgctxt "text"
+msgid "CheckButton (JavaScript)"
+msgstr "CheckButton (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/checkbutton.js.page:18
+msgid "A box which can be checked or unchecked"
+msgstr "Una casilla que puede estar marcada o desmarcada"
+
+#. (itstool) path: page/p
+#: C/checkbutton.js.page:23
+msgid ""
+"This application has a CheckButton. Whether the box is checked dictates "
+"whether the window's title bar shows anything."
+msgstr ""
+"Esta aplicación tiene una casilla de verificación. Si la casilla está "
+"activada, la barra de título de la ventana muestra algo."
+
+#. (itstool) path: page/p
+#: C/checkbutton.js.page:24
+msgid ""
+"A CheckButton sends the \"toggled\" signal when it's checked or unchecked. "
+"While it's checked, the \"active\" property is true. While it's not, \"active"
+"\" tests as false."
+msgstr ""
+"Una casilla de verificación envía la señal «toggled» cuando se activa o "
+"desactiva. Cuando está activada, la propiedad «active» es «true». Cuando no "
+"lo está, «active» es «false»."
+
+#. (itstool) path: section/title
+#: C/checkbutton.js.page:28 C/comboboxtext.js.page:30 C/combobox.js.page:33
+#: C/guitar-tuner.js.page:55 C/hello-world.js.page:53 C/hello-world.py.page:46
+#: C/messagedialog.js.page:31 C/radiobutton.js.page:28 C/scale.js.page:28
+#: C/spinbutton.js.page:31 C/statusbar.js.page:28 C/switch.js.page:35
+#: C/textview.js.page:38 C/togglebutton.js.page:28
+#: C/treeview_simple_liststore.js.page:37 C/weatherAppMain.js.page:41
+msgid "Libraries to import"
+msgstr "Bibliotecas que importar"
+
+#. (itstool) path: section/code
+#: C/checkbutton.js.page:29 C/messagedialog.js.page:32
+#: C/radiobutton.js.page:29 C/scale.js.page:29 C/spinbutton.js.page:32
+#: C/statusbar.js.page:29 C/switch.js.page:36 C/togglebutton.js.page:29
+#, no-wrap
+msgid ""
+"\n"
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+msgstr ""
+"\n"
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+
+#. (itstool) path: section/p
+#: C/checkbutton.js.page:36 C/comboboxtext.js.page:37 C/combobox.js.page:41
+#: C/messagedialog.js.page:39 C/radiobutton.js.page:36 C/scale.js.page:36
+#: C/spinbutton.js.page:39 C/statusbar.js.page:36 C/switch.js.page:43
+#: C/textview.js.page:45 C/togglebutton.js.page:36
+#: C/treeview_simple_liststore.js.page:46
+msgid ""
+"These are the libraries we need to import for this application to run. "
+"Remember that the line which tells GNOME that we're using Gjs always needs "
+"to go at the start."
+msgstr ""
+"Estas son las bibliotecas que necesita importar para que esta aplicación se "
+"ejecute. Recuerde que la línea que le dice a GNOME que está usando Gjs "
+"siempre tiene que ir al principio."
+
+#. (itstool) path: section/title
+#: C/checkbutton.js.page:40 C/comboboxtext.js.page:41 C/combobox.js.page:45
+#: C/messagedialog.js.page:43 C/radiobutton.js.page:40 C/scale.js.page:40
+#: C/spinbutton.js.page:43 C/statusbar.js.page:40 C/switch.js.page:47
+#: C/textview.js.page:49 C/togglebutton.js.page:40
+#: C/treeview_simple_liststore.js.page:50
+msgid "Creating the application window"
+msgstr "Crear la ventana de la aplicación"
+
+#. (itstool) path: section/code
+#: C/checkbutton.js.page:41
+#, no-wrap
+msgid ""
+"\n"
+"const CheckButtonExample = new Lang.Class({\n"
+" Name: 'CheckButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jscheckbutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+"const CheckButtonExample = new Lang.Class({\n"
+" Name: 'CheckButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jscheckbutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/checkbutton.js.page:67
+msgid ""
+"All the code for this sample goes in the CheckButtonExample class. The above "
+"code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> for our widgets and window to "
+"go in."
+msgstr ""
+"Todo el código de este ejemplo va en la clase CheckButtonExample. El código "
+"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> para que vayan los widgets y "
+"la ventana."
+
+#. (itstool) path: section/code
+#: C/checkbutton.js.page:68
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 100,\n"
+" default_width: 300,\n"
+" border_width: 10,\n"
+" title: \"CheckButton Example\"});\n"
+msgstr ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 100,\n"
+" default_width: 300,\n"
+" border_width: 10,\n"
+" title: \"CheckButton Example\"});\n"
+
+#. (itstool) path: section/p
+#: C/checkbutton.js.page:81
+msgid ""
+"The _buildUI function is where we put all the code to create the "
+"application's user interface. The first step is creating a new <link href="
+"\"GtkApplicationWindow.js.page\">Gtk.ApplicationWindow</link> to put all our "
+"widgets into."
+msgstr ""
+"La función «_buildUI» es donde se pone todo el código para crear la interfaz "
+"de usuario de la aplicación. El primer paso es crea una <link href="
+"\"GtkApplicationWindow.js.page\">Gtk.ApplicationWindow</link> nueva para "
+"poner todos los widgets."
+
+#. (itstool) path: section/title
+#: C/checkbutton.js.page:85
+msgid "Creating the checkbutton"
+msgstr "Crear la casilla"
+
+#. (itstool) path: section/code
+#: C/checkbutton.js.page:86
+#, no-wrap
+msgid ""
+"\n"
+" // Create the check button\n"
+" this._button = new Gtk.CheckButton ({label: \"Show Title\"});\n"
+" this._window.add (this._button);\n"
+"\n"
+" // Have the check button be checked by default\n"
+" this._button.set_active (true);\n"
+"\n"
+" // Connect the button to a function that does something when it's toggled\n"
+" this._button.connect (\"toggled\", Lang.bind (this, this._toggledCB));\n"
+msgstr ""
+"\n"
+" // Create the check button\n"
+" this._button = new Gtk.CheckButton ({label: \"Show Title\"});\n"
+" this._window.add (this._button);\n"
+"\n"
+" // Have the check button be checked by default\n"
+" this._button.set_active (true);\n"
+"\n"
+" // Connect the button to a function that does something when it's toggled\n"
+" this._button.connect (\"toggled\", Lang.bind (this, this._toggledCB));\n"
+
+#. (itstool) path: section/p
+#: C/checkbutton.js.page:97
+msgid ""
+"This code creates the checkbutton itself. The label next to the checkbutton "
+"is created by giving the checkbutton the \"label\" property and assigning a "
+"string value to it. Since this checkbutton toggles whether the window title "
+"is on or off, and the window title will be on to start with, we want the box "
+"to be checked by default. Whenever the user checks or unchecks the box, we "
+"call the _toggledCB function."
+msgstr ""
+"Este código crea la casilla de verificación en sí. La etiqueta junto a esta "
+"se crea dándole a la casilla la propiedad «label» y asignándole una cadena. "
+"Dado que esta casilla permuta si se muestra o no el título de la ventana, y "
+"este se mostrará al inicio, se quiere que la casilla esté verificada de "
+"manera predeterminada. Cuando el usuario active o desactive la casilla, se "
+"llamará a la función «_toggledCB»."
+
+#. (itstool) path: section/code
+#: C/checkbutton.js.page:98 C/radiobutton.js.page:170
+#, no-wrap
+msgid ""
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+msgstr ""
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/checkbutton.js.page:103
+msgid ""
+"This code finishes up creating the UI, by telling the window to show itself "
+"and all child widgets (which is just the checkbutton in this case)."
+msgstr ""
+"Este código termina de crear la IU, diciéndole a la ventana que se muestre "
+"con todos sus widgets hijos (que, en este caso, solo es la casilla de "
+"verificación)."
+
+#. (itstool) path: section/title
+#: C/checkbutton.js.page:107
+msgid "Function which handles the checkbutton's toggling"
+msgstr "Función que maneja la conmutación de la casilla de verificación"
+
+#. (itstool) path: section/code
+#: C/checkbutton.js.page:108
+#, no-wrap
+msgid ""
+"\n"
+" _toggledCB: function () {\n"
+"\n"
+" // Make the window title appear or disappear when the checkbox is toggled\n"
+" if (this._button.get_active() == true)\n"
+" this._window.set_title (\"CheckButton Example\");\n"
+" else\n"
+" this._window.set_title (\"\");\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+msgstr ""
+"\n"
+" _toggledCB: function () {\n"
+"\n"
+" // Make the window title appear or disappear when the checkbox is toggled\n"
+" if (this._button.get_active() == true)\n"
+" this._window.set_title (\"CheckButton Example\");\n"
+" else\n"
+" this._window.set_title (\"\");\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+
+#. (itstool) path: section/p
+#: C/checkbutton.js.page:121
+msgid ""
+"If the checkbutton is toggled from on to off, we want the window title to "
+"disappear. If it's toggled from off to on, we want it to reappear. We can "
+"tell which way it was toggled by testing to see whether it's active "
+"(checked) or not afterwards. A simple if / else statement which calls the "
+"checkbutton's get_active() method will work for this."
+msgstr ""
+"Si la casilla se conmuta de «encendido» a «apagado», se quiere que el título "
+"de la ventana desaparezca. Si sucede al revés, que aparezca. Se puede saber "
+"en qué sentido se conmutó probando si está activada (verificada) o no. Una "
+"declaración «if / else» simple que llame al método «get_active()» de la "
+"casilla de verificación funcionará."
+
+#. (itstool) path: section/code
+#: C/checkbutton.js.page:122
+#, no-wrap
+msgid ""
+"\n"
+"// Run the application\n"
+"let app = new CheckButtonExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"// Run the application\n"
+"let app = new CheckButtonExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/p
+#: C/checkbutton.js.page:127
+msgid ""
+"Finally, we create a new instance of the finished CheckButtonExample class, "
+"and set the application running."
+msgstr ""
+"Finalmente, se crea una instancia nueva de la clase «CheckButtonExample» "
+"terminada, y se ejecuta la aplicación."
+
+#. (itstool) path: section/code
+#: C/checkbutton.js.page:132
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const CheckButtonExample = new Lang.Class({\n"
+" Name: 'CheckButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jscheckbutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 100,\n"
+" default_width: 300,\n"
+" border_width: 10,\n"
+" title: \"CheckButton Example\"});\n"
+"\n"
+" // Create the check button\n"
+" this._button = new Gtk.CheckButton ({label: \"Show Title\"});\n"
+" this._window.add (this._button);\n"
+"\n"
+" // Have the check button be checked by default\n"
+" this._button.set_active (true);\n"
+"\n"
+" // Connect the button to a function that does something when it's toggled\n"
+" this._button.connect (\"toggled\", Lang.bind (this, this._toggledCB));\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _toggledCB: function () {\n"
+"\n"
+" // Make the window title appear or disappear when the checkbox is toggled\n"
+" if (this._button.get_active() == true)\n"
+" this._window.set_title (\"CheckButton Example\");\n"
+" else\n"
+" this._window.set_title (\"\");\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new CheckButtonExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const CheckButtonExample = new Lang.Class({\n"
+" Name: 'CheckButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jscheckbutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 100,\n"
+" default_width: 300,\n"
+" border_width: 10,\n"
+" title: \"CheckButton Example\"});\n"
+"\n"
+" // Create the check button\n"
+" this._button = new Gtk.CheckButton ({label: \"Show Title\"});\n"
+" this._window.add (this._button);\n"
+"\n"
+" // Have the check button be checked by default\n"
+" this._button.set_active (true);\n"
+"\n"
+" // Connect the button to a function that does something when it's toggled\n"
+" this._button.connect (\"toggled\", Lang.bind (this, this._toggledCB));\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _toggledCB: function () {\n"
+"\n"
+" // Make the window title appear or disappear when the checkbox is toggled\n"
+" if (this._button.get_active() == true)\n"
+" this._window.set_title (\"CheckButton Example\");\n"
+" else\n"
+" this._window.set_title (\"\");\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new CheckButtonExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/title
+#: C/checkbutton.js.page:136 C/comboboxtext.js.page:176 C/combobox.js.page:233
+#: C/messagedialog.js.page:189 C/radiobutton.js.page:274 C/scale.js.page:208
+#: C/spinbutton.js.page:199 C/statusbar.js.page:221 C/switch.js.page:264
+#: C/textview.js.page:248 C/togglebutton.js.page:153
+#: C/treeview_simple_liststore.js.page:272
+msgid "In-depth documentation"
+msgstr "Documentación en profundidad"
+
+#. (itstool) path: item/p
+#: C/checkbutton.js.page:140
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.CheckButton."
+"html\">Gtk.CheckButton</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.CheckButton."
+"html\">Gtk.CheckButton</link>"
+
+#. (itstool) path: info/title
+#: C/checkbutton.py.page:8
+msgctxt "text"
+msgid "CheckButton (Python)"
+msgstr "CheckButton (Python)"
+
+#. (itstool) path: info/desc
+#: C/checkbutton.py.page:19
+msgid "A toggle button in a window"
+msgstr "Un botón conmutador en una ventana"
+
+#. (itstool) path: section/code
+#: C/checkbutton.py.page:31
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"CheckButton Example\", application=app)\n"
+" self.set_default_size(300, 100)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # a new checkbutton\n"
+" button = Gtk.CheckButton()\n"
+" # with a label\n"
+" button.set_label(\"Show Title\")\n"
+" # connect the signal \"toggled\" emitted by the checkbutton\n"
+" # with the callback function toggled_cb\n"
+" button.connect(\"toggled\", self.toggled_cb)\n"
+" # by default, the checkbutton is active\n"
+" button.set_active(True)\n"
+"\n"
+" # add the checkbutton to the window\n"
+" self.add(button)\n"
+"\n"
+" # callback function\n"
+" def toggled_cb(self, button):\n"
+" # if the togglebutton is active, set the title of the window\n"
+" # as \"Checkbutton Example\"\n"
+" if button.get_active():\n"
+" self.set_title(\"CheckButton Example\")\n"
+" # else, set it as \"\" (empty string)\n"
+" else:\n"
+" self.set_title(\"\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"CheckButton Example\", application=app)\n"
+" self.set_default_size(300, 100)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # a new checkbutton\n"
+" button = Gtk.CheckButton()\n"
+" # with a label\n"
+" button.set_label(\"Show Title\")\n"
+" # connect the signal \"toggled\" emitted by the checkbutton\n"
+" # with the callback function toggled_cb\n"
+" button.connect(\"toggled\", self.toggled_cb)\n"
+" # by default, the checkbutton is active\n"
+" button.set_active(True)\n"
+"\n"
+" # add the checkbutton to the window\n"
+" self.add(button)\n"
+"\n"
+" # callback function\n"
+" def toggled_cb(self, button):\n"
+" # if the togglebutton is active, set the title of the window\n"
+" # as \"Checkbutton Example\"\n"
+" if button.get_active():\n"
+" self.set_title(\"CheckButton Example\")\n"
+" # else, set it as \"\" (empty string)\n"
+" else:\n"
+" self.set_title(\"\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/checkbutton.py.page:36
+msgid "Useful methods for a CheckButton widget"
+msgstr "Métodos útiles para un widget «CheckButton»"
+
+#. (itstool) path: section/p
+#: C/checkbutton.py.page:37
+msgid ""
+"In line 17 the <code>\"toggled\"</code> signal is connected to the callback "
+"function <code>toggled_cb()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 17 la señal <code>«toggled»</code> se conecta a una función de "
+"retorno de llamada <code>toggled_cb()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
+"explicación más detallada."
+
+#. (itstool) path: item/p
+#: C/checkbutton.py.page:47 C/togglebutton.py.page:44
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToggleButton.html"
+"\">GtkToggleButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToggleButton.html"
+"\">GtkToggleButton</link>"
+
+#. (itstool) path: item/p
+#: C/checkbutton.py.page:48
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCheckButton.html"
+"\">GtkCheckButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCheckButton.html"
+"\">GtkCheckButton</link>"
+
+#. (itstool) path: info/title
+#: C/checkbutton.vala.page:8
+msgctxt "text"
+msgid "CheckButton (Vala)"
+msgstr "CheckButton (Vala)"
+
+#. (itstool) path: info/desc
+#: C/checkbutton.vala.page:18
+msgid "Create widgets with a discrete toggle button"
+msgstr "Crear widgets con un botón conmutador discreto"
+
+#. (itstool) path: page/code
+#: C/checkbutton.vala.page:25
+#, no-wrap
+msgid ""
+"/* A window in the application */\n"
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* The constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"CheckButton Example\");\n"
+"\n"
+"\t\tthis.set_default_size (300, 100);\n"
+"\t\tthis.border_width = 10;\n"
+"\n"
+"\t\tvar checkbutton = new Gtk.CheckButton.with_label (\"Show Title\");\n"
+"\n"
+"\t\t/* Connect the checkbutton to the\n"
+"\t\t * callback function (aka. signal handler).\n"
+"\t\t */\n"
+"\t\tcheckbutton.toggled.connect (this.toggled_cb);\n"
+"\n"
+"\t\t/* Add the button to the this window */\n"
+"\t\tthis.add (checkbutton);\n"
+"\n"
+"\t\tcheckbutton.set_active (true);\n"
+"\t\tcheckbutton.show ();\n"
+"\t}\n"
+"\n"
+"\t/* The signal handler for the 'toggled' signal of the checkbutton. */\n"
+"\tvoid toggled_cb (Gtk.ToggleButton checkbutton) {\n"
+"\t\tif (checkbutton.get_active())\n"
+"\t\t\tthis.set_title (\"CheckButton Example\");\n"
+"\t\telse\n"
+"\t\t\tthis.set_title (\"\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application */\n"
+"class MyApplication : Gtk.Application {\n"
+"\n"
+"\t/* The constructor */\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.checkbutton\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the activate signal of GLib.Application */\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"}\n"
+"\n"
+"/* main creates and runs the application */\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"/* A window in the application */\n"
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* The constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"CheckButton Example\");\n"
+"\n"
+"\t\tthis.set_default_size (300, 100);\n"
+"\t\tthis.border_width = 10;\n"
+"\n"
+"\t\tvar checkbutton = new Gtk.CheckButton.with_label (\"Show Title\");\n"
+"\n"
+"\t\t/* Connect the checkbutton to the\n"
+"\t\t * callback function (aka. signal handler).\n"
+"\t\t */\n"
+"\t\tcheckbutton.toggled.connect (this.toggled_cb);\n"
+"\n"
+"\t\t/* Add the button to the this window */\n"
+"\t\tthis.add (checkbutton);\n"
+"\n"
+"\t\tcheckbutton.set_active (true);\n"
+"\t\tcheckbutton.show ();\n"
+"\t}\n"
+"\n"
+"\t/* The signal handler for the 'toggled' signal of the checkbutton. */\n"
+"\tvoid toggled_cb (Gtk.ToggleButton checkbutton) {\n"
+"\t\tif (checkbutton.get_active())\n"
+"\t\t\tthis.set_title (\"CheckButton Example\");\n"
+"\t\telse\n"
+"\t\t\tthis.set_title (\"\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application */\n"
+"class MyApplication : Gtk.Application {\n"
+"\n"
+"\t/* The constructor */\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.checkbutton\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the activate signal of GLib.Application */\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"}\n"
+"\n"
+"/* main creates and runs the application */\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/checkbutton.vala.page:30
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CheckButton.html\">Gtk."
+"CheckButton</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CheckButton.html\">Gtk."
+"CheckButton</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/colorbutton.js.page:22 C/colorbutton.py.page:23
+#: C/colorbutton.vala.page:24
+msgctxt "_"
+msgid ""
+"external ref='media/colorbutton.png' md5='904539d26fe367bf99f9a0961cfc9a03'"
+msgstr ""
+"external ref='media/colorbutton.png' md5='904539d26fe367bf99f9a0961cfc9a03'"
+
+#. (itstool) path: info/title
+#: C/colorbutton.js.page:8
+msgctxt "text"
+msgid "ColorButton (JavaScript)"
+msgstr "ColorButton (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/colorbutton.js.page:18 C/colorbutton.py.page:19
+#: C/colorbutton.vala.page:20
+msgid "A button to launch a color selection dialog"
+msgstr "Un botón para mostrar el diálogo de selección de color"
+
+#. (itstool) path: page/title
+#: C/colorbutton.js.page:21 C/colorbutton.py.page:22
+#: C/colorbutton.vala.page:23
+msgid "ColorButton"
+msgstr "ColorButton"
+
+#. (itstool) path: page/p
+#: C/colorbutton.js.page:23 C/colorbutton.py.page:24
+msgid ""
+"This ColorButton launches a color selection dialog and prints in the "
+"terminal the RGB values of the color selected."
+msgstr ""
+"Este ColorButton muestra un diálogo de selección de color e imprime por la "
+"terminal los valores RGB del color seleccionado."
+
+#. (itstool) path: section/code
+#: C/colorbutton.js.page:29
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gdk = imports.gi.Gdk;\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ColorbuttonExample = new Lang.Class ({\n"
+" Name: 'Colorbutton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({ application_id: 'org.example.jscolorbutton' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this.window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"ColorButton\",\n"
+" default_width: 150,\n"
+" default_height: 50,\n"
+" border_width: 10 });\n"
+"\n"
+" this.button = new Gtk.ColorButton();\n"
+" this.color = new Gdk.RGBA();\n"
+" this.color.red = 0.0;\n"
+" this.color.green = 0.0;\n"
+" this.color.blue = 1.0;\n"
+" this.color.alpha = 0.5;\n"
+" this.button.set_rgba(this.color);\n"
+" this.button.connect(\"color-set\", Lang.bind(this, this.onColorChosen));\n"
+" this.label = new Gtk.Label();\n"
+" this.label.set_text(\"Click to choose a color\");\n"
+"\n"
+" let grid = new Gtk.Grid();\n"
+" grid.attach(this.button, 0, 0, 2, 1);\n"
+" grid.attach(this.label, 0, 1, 2, 1);\n"
+" this.window.add(grid);\n"
+" this.window.show_all();\n"
+" },\n"
+"\n"
+" onColorChosen: function() {\n"
+" let colorName = this.color.to_string();\n"
+" this.label.set_text(\"You chose the color \" + colorName);\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ColorbuttonExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gdk = imports.gi.Gdk;\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ColorbuttonExample = new Lang.Class ({\n"
+" Name: 'Colorbutton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({ application_id: 'org.example.jscolorbutton' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this.window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"ColorButton\",\n"
+" default_width: 150,\n"
+" default_height: 50,\n"
+" border_width: 10 });\n"
+"\n"
+" this.button = new Gtk.ColorButton();\n"
+" this.color = new Gdk.RGBA();\n"
+" this.color.red = 0.0;\n"
+" this.color.green = 0.0;\n"
+" this.color.blue = 1.0;\n"
+" this.color.alpha = 0.5;\n"
+" this.button.set_rgba(this.color);\n"
+" this.button.connect(\"color-set\", Lang.bind(this, this.onColorChosen));\n"
+" this.label = new Gtk.Label();\n"
+" this.label.set_text(\"Click to choose a color\");\n"
+"\n"
+" let grid = new Gtk.Grid();\n"
+" grid.attach(this.button, 0, 0, 2, 1);\n"
+" grid.attach(this.label, 0, 1, 2, 1);\n"
+" this.window.add(grid);\n"
+" this.window.show_all();\n"
+" },\n"
+"\n"
+" onColorChosen: function() {\n"
+" let colorName = this.color.to_string();\n"
+" this.label.set_text(\"You chose the color \" + colorName);\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ColorbuttonExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/colorbutton.js.page:36
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ColorButton."
+"html\">GtkColorButton</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ColorButton."
+"html\">GtkColorButton</link>"
+
+#. (itstool) path: item/p
+#: C/colorbutton.js.page:37 C/colorbutton.py.page:45
+msgid ""
+"<link href=\"http://developer.gnome.org/gdk3/stable/gdk3-RGBA-Colors.html"
+"\">RGBA Colors</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gdk3/stable/gdk3-RGBA-Colors.html"
+"\">Colores RGBA</link>"
+
+#. (itstool) path: info/title
+#: C/colorbutton.py.page:8
+msgctxt "text"
+msgid "ColorButton (Python)"
+msgstr "ColorButton (Python)"
+
+#. (itstool) path: section/code
+#: C/colorbutton.py.page:30
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gdk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"ColorButton\", application=app)\n"
+" self.set_default_size(150, 50)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # a colorbutton (which opens a dialogue window in\n"
+" # which we choose a color)\n"
+" self.button = Gtk.ColorButton()\n"
+" # with a default color (blue, in this instance)\n"
+" color = Gdk.RGBA()\n"
+" color.red = 0.0\n"
+" color.green = 0.0\n"
+" color.blue = 1.0\n"
+" color.alpha = 0.5\n"
+" self.button.set_rgba(color)\n"
+"\n"
+" # choosing a color in the dialogue window emits a signal\n"
+" self.button.connect(\"color-set\", self.on_color_chosen)\n"
+"\n"
+" # a label\n"
+" label = Gtk.Label()\n"
+" label.set_text(\"Click to choose a color\")\n"
+"\n"
+" # a grid to attach button and label\n"
+" grid = Gtk.Grid()\n"
+" grid.attach(self.button, 0, 0, 2, 1)\n"
+" grid.attach(label, 0, 1, 2, 1)\n"
+" self.add(grid)\n"
+"\n"
+" # if a new color is chosen, we print it as rgb(r,g,b) in the terminal\n"
+" def on_color_chosen(self, user_data):\n"
+" print(\"You chose the color: \" + self.button.get_rgba().to_string())\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gdk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"ColorButton\", application=app)\n"
+" self.set_default_size(150, 50)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # a colorbutton (which opens a dialogue window in\n"
+" # which we choose a color)\n"
+" self.button = Gtk.ColorButton()\n"
+" # with a default color (blue, in this instance)\n"
+" color = Gdk.RGBA()\n"
+" color.red = 0.0\n"
+" color.green = 0.0\n"
+" color.blue = 1.0\n"
+" color.alpha = 0.5\n"
+" self.button.set_rgba(color)\n"
+"\n"
+" # choosing a color in the dialogue window emits a signal\n"
+" self.button.connect(\"color-set\", self.on_color_chosen)\n"
+"\n"
+" # a label\n"
+" label = Gtk.Label()\n"
+" label.set_text(\"Click to choose a color\")\n"
+"\n"
+" # a grid to attach button and label\n"
+" grid = Gtk.Grid()\n"
+" grid.attach(self.button, 0, 0, 2, 1)\n"
+" grid.attach(label, 0, 1, 2, 1)\n"
+" self.add(grid)\n"
+"\n"
+" # if a new color is chosen, we print it as rgb(r,g,b) in the terminal\n"
+" def on_color_chosen(self, user_data):\n"
+" print(\"You chose the color: \" + self.button.get_rgba().to_string())\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/colorbutton.py.page:34
+msgid "Useful methods for a ColorButton widget"
+msgstr "Métodos útiles para un widget «ColorButton»"
+
+#. (itstool) path: section/p
+#: C/colorbutton.py.page:35
+msgid ""
+"<code>set_color(color)</code>, where the <code>color</code> is defined as in "
+"the example, sets the color of the ColorButton, which by default is black. "
+"<code>get_color()</code> returns the color."
+msgstr ""
+"<code>set_color(color)</code>, donde el <code>color</code> se define como en "
+"el ejemplo, establece el color del «ColorButton», que es negro de manera "
+"predeterminada. <code>get_color()</code> devuelve el color."
+
+#. (itstool) path: section/p
+#: C/colorbutton.py.page:36
+msgid ""
+"In line 23 the <code>\"color-set\"</code> signal is connected to the "
+"callback function <code>on_color_chosen()</code> using <code><var>widget</"
+"var>.connect(<var>signal</var>, <var>callback function</var>)</code>. See "
+"<link xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 23 la señal <code>«color-set»</code> se conecta a una función de "
+"retorno de llamada <code>on_color_chosen()</code> usando <code><var>widget</"
+"var>.connect(<var>señal</var>, <var>función de retorno de llamada</var>)</"
+"code>. Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
+"explicación más detallada."
+
+#. (itstool) path: item/p
+#: C/colorbutton.py.page:43
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkColorButton.html"
+"\">GtkColorButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkColorButton.html"
+"\">GtkColorButton</link>"
+
+#. (itstool) path: item/p
+#: C/colorbutton.py.page:44
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkColorChooser.html"
+"\">GtkColorChooser</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkColorChooser.html"
+"\">GtkColorChooser</link>"
+
+#. (itstool) path: info/title
+#: C/colorbutton.vala.page:8
+msgctxt "text"
+msgid "ColorButton (Vala)"
+msgstr "ColorButton (Vala)"
+
+#. (itstool) path: page/p
+#: C/colorbutton.vala.page:25
+msgid "RGB values of the selected color are shown in the label."
+msgstr "Los valores RGB del color seleccionado se muestran en la etiqueta."
+
+#. (itstool) path: page/code
+#: C/colorbutton.vala.page:27
+#, no-wrap
+msgid ""
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tGtk.Label label;\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\t\t/* Create the window of this application and show it. */\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"ColorButton\";\n"
+"\t\twindow.set_default_size (150, 50);\n"
+"\t\twindow.set_border_width (10);\n"
+"\n"
+"\t\t/* Create a new ColorButton with default blue. */\n"
+"\t\tvar blue = Gdk.RGBA ();\n"
+"\t\tblue.parse (\"blue\");\n"
+"\t\tvar colorbutton = new Gtk.ColorButton.with_rgba (blue);\n"
+"\n"
+"\t\tlabel = new Gtk.Label (\"Click to choose a color\");\n"
+"\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tgrid.attach (colorbutton, 0, 0, 1, 1);\n"
+"\t\tgrid.attach_next_to (label, colorbutton, Gtk.PositionType.BOTTOM, 1, 1);\n"
+"\n"
+"\t\tcolorbutton.color_set.connect (this.on_color_set);\n"
+"\n"
+"\t\twindow.add (grid);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"\n"
+"\tvoid on_color_set (Gtk.ColorButton button) {\n"
+"\t\tvar color = button.get_rgba ();\n"
+"\t\tlabel.set_text (\"RGBA: \" + color.to_string());\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tGtk.Label label;\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\t\t/* Create the window of this application and show it. */\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"ColorButton\";\n"
+"\t\twindow.set_default_size (150, 50);\n"
+"\t\twindow.set_border_width (10);\n"
+"\n"
+"\t\t/* Create a new ColorButton with default blue. */\n"
+"\t\tvar blue = Gdk.RGBA ();\n"
+"\t\tblue.parse (\"blue\");\n"
+"\t\tvar colorbutton = new Gtk.ColorButton.with_rgba (blue);\n"
+"\n"
+"\t\tlabel = new Gtk.Label (\"Click to choose a color\");\n"
+"\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tgrid.attach (colorbutton, 0, 0, 1, 1);\n"
+"\t\tgrid.attach_next_to (label, colorbutton, Gtk.PositionType.BOTTOM, 1, 1);\n"
+"\n"
+"\t\tcolorbutton.color_set.connect (this.on_color_set);\n"
+"\n"
+"\t\twindow.add (grid);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"\n"
+"\tvoid on_color_set (Gtk.ColorButton button) {\n"
+"\t\tvar color = button.get_rgba ();\n"
+"\t\tlabel.set_text (\"RGBA: \" + color.to_string());\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/colorbutton.vala.page:32
+msgid ""
+"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.ColorButton.html\">Gtk."
+"ColorButton</link>"
+msgstr ""
+"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.ColorButton.html\">Gtk."
+"ColorButton</link>"
+
+#. (itstool) path: item/p
+#: C/colorbutton.vala.page:33
+msgid "<link href=\"http://valadoc.org/gdk-3.0/Gdk.RGBA.html\">Gdk.RGBA</link>"
+msgstr ""
+"<link href=\"http://valadoc.org/gdk-3.0/Gdk.RGBA.html\">Gdk.RGBA</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/comboboxtext.js.page:24 C/combobox.c.page:26 C/combobox.py.page:24
+#: C/combobox.vala.page:22
+msgctxt "_"
+msgid ""
+"external ref='media/combobox.png' md5='ab9e91bc1a58fe866cb00dd52159251d'"
+msgstr ""
+"external ref='media/combobox.png' md5='ab9e91bc1a58fe866cb00dd52159251d'"
+
+#. (itstool) path: info/title
+#: C/comboboxtext.js.page:8
+msgctxt "text"
+msgid "ComboBoxText (JavaScript)"
+msgstr "ComboBoxText (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/comboboxtext.js.page:20
+msgid "A text-only drop-down menu"
+msgstr "Un menú desplegable de solo texto"
+
+#. (itstool) path: page/title
+#: C/comboboxtext.js.page:23
+msgid "ComboBoxText"
+msgstr "ComboBoxText"
+
+#. (itstool) path: page/p
+#: C/comboboxtext.js.page:25
+msgid ""
+"A ComboBox is a drop-down menu. The difference between a <link xref="
+"\"combobox.js\">ComboBox</link> and a ComboBoxText is that a ComboBoxText "
+"just has basic text options, while a full ComboBox uses a ListStore or "
+"TreeStore (which are basically spreadsheets) to show things like branching "
+"options, or pictures to go alongside each choice."
+msgstr ""
+"Un «ComboBox» es un menú desplegable. La diferencia entre un <link xref="
+"\"combobox.js\">ComboBox</link> y un «ComboBoxText» es que este sólo tiene "
+"opciones básicas de texto, mientras que un «ComboBox» completo usa un "
+"«ListStore» o «TreeStore» (que son básicamente hojas de cálculo) para "
+"mostrar cosas como opciones de bifurcación, o imágenes junto a cada opción."
+
+#. (itstool) path: note/p
+#: C/comboboxtext.js.page:26
+msgid ""
+"Unless you need the added features of a full ComboBox, or are comfortable "
+"working with ListStores and TreeStores, you may find it a lot simpler to use "
+"a ComboBoxText whenever possible."
+msgstr ""
+"A menos que necesite las características adicionales de un «ComboBox» "
+"completo, o si se siente cómodo trabajando con «ListStore» y «TreeStore», "
+"encontrará mucho más simple usar un «ComboBoxText» siempre que sea posible."
+
+#. (itstool) path: section/code
+#: C/comboboxtext.js.page:42
+#, no-wrap
+msgid ""
+"\n"
+"const ComboBoxTextExample = new Lang.Class ({\n"
+" Name: 'ComboBoxText Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jscomboboxtext'});\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+"const ComboBoxTextExample = new Lang.Class ({\n"
+" Name: 'ComboBoxText Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jscomboboxtext'});\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/comboboxtext.js.page:66 C/messagedialog.js.page:70
+msgid ""
+"All the code for this sample goes in the MessageDialogExample class. The "
+"above code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/"
+"gjs/Gtk.Application.html\">Gtk.Application</link> for our widgets and window "
+"to go in."
+msgstr ""
+"Todo el código de este ejemplo va en la clase «MessageDialogExample». El "
+"código anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-"
+"gtk-3.0/gjs/Gtk.Application.html\">Gtk.Application</link> para que vayan los "
+"widgets y la ventana."
+
+#. (itstool) path: section/code
+#: C/comboboxtext.js.page:67 C/combobox.js.page:71
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Welcome to GNOME\",\n"
+" default_width: 200,\n"
+" border_width: 10 });\n"
+msgstr ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Welcome to GNOME\",\n"
+" default_width: 200,\n"
+" border_width: 10 });\n"
+
+#. (itstool) path: section/p
+#: C/comboboxtext.js.page:79 C/combobox.js.page:83 C/messagedialog.js.page:84
+#: C/radiobutton.js.page:79 C/scale.js.page:78 C/spinbutton.js.page:81
+#: C/switch.js.page:88 C/textview.js.page:88 C/togglebutton.js.page:81
+#: C/treeview_simple_liststore.js.page:90
+msgid ""
+"The _buildUI function is where we put all the code to create the "
+"application's user interface. The first step is creating a new <link xref="
+"\"GtkApplicationWindow.js\">Gtk.ApplicationWindow</link> to put all our "
+"widgets into."
+msgstr ""
+"La función _buildUI es donde se pone todo el código que crea la interfaz de "
+"usuario de la aplicación. El primer paso es crear una <link xref="
+"\"GtkApplicationWindow.js\">Gtk.ApplicationWindow</link> nueva para poner "
+"dentro todos los widgets."
+
+#. (itstool) path: section/title
+#: C/comboboxtext.js.page:83
+msgid "Creating the ComboBoxText"
+msgstr "Crear el ComboBoxText"
+
+#. (itstool) path: section/code
+#: C/comboboxtext.js.page:84
+#, no-wrap
+msgid ""
+"\n"
+" // Create the combobox\n"
+" this._comboBoxText = new Gtk.ComboBoxText();\n"
+"\n"
+" // Populate the combobox\n"
+" let distros = [\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"];\n"
+" for (let i = 0; i < distros.length; i++)\n"
+" this._comboBoxText.append_text (distros[i]);\n"
+" this._comboBoxText.set_active (0);\n"
+"\n"
+" // Connect the combobox's 'changed' signal to our callback function\n"
+" this._comboBoxText.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
+msgstr ""
+"\n"
+" // Create the combobox\n"
+" this._comboBoxText = new Gtk.ComboBoxText();\n"
+"\n"
+" // Populate the combobox\n"
+" let distros = [\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"];\n"
+" for (let i = 0; i < distros.length; i++)\n"
+" this._comboBoxText.append_text (distros[i]);\n"
+" this._comboBoxText.set_active (0);\n"
+"\n"
+" // Connect the combobox's 'changed' signal to our callback function\n"
+" this._comboBoxText.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
+
+#. (itstool) path: section/p
+#: C/comboboxtext.js.page:97
+msgid ""
+"After we create the ComboBoxText, we use its <file>append_text</file> method "
+"to add text strings to it. Like the entries in an array, they each have a "
+"number for an ID, starting with 0. To make things simpler, you can actually "
+"create an array for your ComboBoxText entries, then use a for loop to append "
+"them in order, like we did here."
+msgstr ""
+"Después de crear el «ComboBoxText», se usa su método <file>append_text</"
+"file> para añadirle cadenas de texto. Al igual que las entradas en una "
+"matriz, cada una tiene un número para identificarlas, comenzando por el 0. "
+"Para hacer las cosas más simples, puede crear una matriz para los datos del "
+"«ComboBoxText», y después usar un bucle «for» para añadirlos en orden, como "
+"aquí."
+
+#. (itstool) path: section/p
+#: C/comboboxtext.js.page:98
+msgid ""
+"After we populate the ComboBoxText, we set its first entry to be active, so "
+"that we'll see the \"Select distribution\" line before we click on it. Then "
+"we connect its <file>changed</file> signal to the _onComboChanged function, "
+"so that it's called whenever you make a new selection from the drop-down "
+"menu."
+msgstr ""
+"Después de poblar el «ComboBoxText», se activa su primera entrada, para ver "
+"la línea «Seleccionar distribución» antes de pulsarlo. Después se conecta su "
+"señal <file>changed</file> a la función «_onComboChanged», para que se llame "
+"siempre que haga una selección nueva del menú desplegable."
+
+#. (itstool) path: note/p
+#: C/comboboxtext.js.page:99
+msgid ""
+"If you'd like to add an entry to a ComboBoxText, you can use the "
+"<file>insert_text</file> method. And if you'd rather use a text string as an "
+"ID for each entry than rely on numbers alone, you can use the <file>append</"
+"file> and <file>insert</file> methods. See the links at the bottom of this "
+"tutorial for the details of how to use them."
+msgstr ""
+"Si quiere añadirle una entrada a un «ComboBoxText», puede usar el método "
+"<file>insert_text</file>. Y si prefiere usar una cadena de texto como "
+"identificación de cada entrada en lugar de solo números, puede usar los "
+"métodos <file>append</file> e <file>insert</file>. Consulte los enlaces al "
+"final de este tutorial para ver detalles sobre su uso."
+
+#. (itstool) path: section/code
+#: C/comboboxtext.js.page:101
+#, no-wrap
+msgid ""
+"\n"
+" // Add the combobox to the window\n"
+" this._window.add (this._comboBoxText);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+msgstr ""
+"\n"
+" // Add the combobox to the window\n"
+" this._window.add (this._comboBoxText);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/comboboxtext.js.page:109
+msgid ""
+"Finally, we add the ComboBoxText to the window, and tell the window to show "
+"itself and the widget inside it."
+msgstr ""
+"Finalmente, se añade el «ComboBoxText» a la ventana, y se le dice que se "
+"muestre con su widget."
+
+#. (itstool) path: section/title
+#: C/comboboxtext.js.page:113 C/combobox.js.page:170 C/radiobutton.js.page:181
+msgid "Function which handles your selection"
+msgstr "Función que maneja su selección"
+
+#. (itstool) path: section/code
+#: C/comboboxtext.js.page:114
+#, no-wrap
+msgid ""
+"\n"
+" _onComboChanged: function () {\n"
+"\n"
+" // The responses we'll use for our messagedialog\n"
+" let responses = [\"\",\n"
+" \"Fedora is a community distro sponsored by Red Hat.\",\n"
+" \"Mint is a popular distro based on Ubuntu.\",\n"
+" \"SUSE is a name shared by two separate distros.\"];\n"
+msgstr ""
+"\n"
+" _onComboChanged: function () {\n"
+"\n"
+" // The responses we'll use for our messagedialog\n"
+" let responses = [\"\",\n"
+" \"Fedora is a community distro sponsored by Red Hat.\",\n"
+" \"Mint is a popular distro based on Ubuntu.\",\n"
+" \"SUSE is a name shared by two separate distros.\"];\n"
+
+#. (itstool) path: section/p
+#: C/comboboxtext.js.page:123
+msgid ""
+"We're going to create a pop-up <link xref=\"messagedialog.js"
+"\">MessageDialog</link>, which shows you a message based on which distro you "
+"select. First, we create the array of responses to use. Since the first "
+"string in our ComboBoxText is just the \"Select distribution\" message, we "
+"make the first string in our array blank."
+msgstr ""
+"Se va a crear un <link xref=\"messagedialog.js\">MessageDialog</link> "
+"emergente, que muestre un mensaje a partir de qué distribución elija. "
+"Primero, se crea la matriz de respuestas para usar. Dado que la primera "
+"cadena del «ComboBoxText» es solo el mensaje «Seleccione distribución», la "
+"primera cadena de la matriz está vacía."
+
+#. (itstool) path: section/code
+#: C/comboboxtext.js.page:125
+#, no-wrap
+msgid ""
+"\n"
+" // Which combobox item is active?\n"
+" let activeItem = this._comboBoxText.get_active();\n"
+"\n"
+" // No messagedialog if you chose \"Select distribution\"\n"
+" if (activeItem != 0) {\n"
+" this._popUp = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" buttons: Gtk.ButtonsType.OK,\n"
+" message_type: Gtk.MessageType.INFO,\n"
+" text: responses[activeItem]});\n"
+"\n"
+" // Connect the OK button to a handler function\n"
+" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
+"\n"
+" // Show the messagedialog\n"
+" this._popUp.show();\n"
+" }\n"
+"\n"
+" },\n"
+msgstr ""
+"\n"
+" // Which combobox item is active?\n"
+" let activeItem = this._comboBoxText.get_active();\n"
+"\n"
+" // No messagedialog if you chose \"Select distribution\"\n"
+" if (activeItem != 0) {\n"
+" this._popUp = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" buttons: Gtk.ButtonsType.OK,\n"
+" message_type: Gtk.MessageType.INFO,\n"
+" text: responses[activeItem]});\n"
+"\n"
+" // Connect the OK button to a handler function\n"
+" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
+"\n"
+" // Show the messagedialog\n"
+" this._popUp.show();\n"
+" }\n"
+"\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/comboboxtext.js.page:147
+msgid ""
+"Before showing a MessageDialog, we first test to make sure you didn't choose "
+"the \"Select distribution\" message. After that, we set its text to be the "
+"entry in the array that corresponds to the active entry in our ComboBoxText. "
+"We do that using the <file>get_active</file> method, which returns the "
+"number ID of your selection."
+msgstr ""
+"Antes de mostrar un «MessageDialog», se verifica que no ha elegido el "
+"mensaje «Seleccionar distribución». Después de eso, se establece su texto a "
+"la entrada en la matriz que le corresponde a la entrada activa en el "
+"«ComboBoxText». Esto se hace usando el método <file>get_active</file>, que "
+"devuelve la identificación numérica de su selección."
+
+#. (itstool) path: note/p
+#: C/comboboxtext.js.page:148
+msgid ""
+"Other methods you can use include <file>get_active_id,</file> which returns "
+"the text ID assigned by <file>append,</file> and <file>get_active_text,</"
+"file> which returns the full text of the string you selected."
+msgstr ""
+"Otros métodos que puede usar incluyen <file>get_active_id</file>, que "
+"devuelve la identificación de texto que asignó <file>append</file>, y "
+"<file>get_active_text</file>, que devuelve el texto completo de la cadena "
+"que seleccionó."
+
+#. (itstool) path: section/p
+#: C/comboboxtext.js.page:149 C/combobox.js.page:206
+msgid ""
+"After we create the MessageDialog, we connect its response signal to the "
+"_onDialogResponse function, then tell it to show itself."
+msgstr ""
+"Después de crear el «MessageDialog», se conecta su señal «response» a la "
+"función «onDialogResponse», y se le dice que se muestre."
+
+#. (itstool) path: section/code
+#: C/comboboxtext.js.page:151 C/combobox.js.page:208
+#, no-wrap
+msgid ""
+"\n"
+" _onDialogResponse: function () {\n"
+"\n"
+" this._popUp.destroy ();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+msgstr ""
+"\n"
+" _onDialogResponse: function () {\n"
+"\n"
+" this._popUp.destroy ();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+
+#. (itstool) path: section/p
+#: C/comboboxtext.js.page:160 C/combobox.js.page:217
+msgid ""
+"Since the only button the MessageDialog has is an OK button, we don't need "
+"to test its response_id to see which button was clicked. All we do here is "
+"destroy the popup."
+msgstr ""
+"Dado que el único botón que tiene el «MessageDialog» es un botón aceptar, no "
+"se necesita verificar su «response_id» para ver qué botón se pulsó. Todo lo "
+"que se hace aquí es destruir la ventana emergente."
+
+#. (itstool) path: section/code
+#: C/comboboxtext.js.page:162
+#, no-wrap
+msgid ""
+"\n"
+"// Run the application\n"
+"let app = new ComboBoxTextExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"// Run the application\n"
+"let app = new ComboBoxTextExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/p
+#: C/comboboxtext.js.page:167
+msgid ""
+"Finally, we create a new instance of the finished ComboBoxTextExample class, "
+"and set the application running."
+msgstr ""
+"Finalmente, se crea una instancia nueva de la clase ComboBoxTextExample "
+"terminada, y se ejecuta la aplicación."
+
+#. (itstool) path: section/code
+#: C/comboboxtext.js.page:172
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ComboBoxTextExample = new Lang.Class ({\n"
+" Name: 'ComboBoxText Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jscomboboxtext'});\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Welcome to GNOME\",\n"
+" default_width: 200,\n"
+" border_width: 10 });\n"
+"\n"
+" // Create the combobox\n"
+" this._comboBoxText = new Gtk.ComboBoxText();\n"
+"\n"
+" // Populate the combobox\n"
+" let distros = [\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"];\n"
+" for (let i = 0; i < distros.length; i++)\n"
+" this._comboBoxText.append_text (distros[i]);\n"
+" this._comboBoxText.set_active (0);\n"
+"\n"
+" // Connect the combobox's 'changed' signal to our callback function\n"
+" this._comboBoxText.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
+"\n"
+" // Add the combobox to the window\n"
+" this._window.add (this._comboBoxText);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _onComboChanged: function () {\n"
+"\n"
+" // The responses we'll use for our messagedialog\n"
+" let responses = [\"\",\n"
+" \"Fedora is a community distro sponsored by Red Hat.\",\n"
+" \"Mint is a popular distro based on Ubuntu.\",\n"
+" \"SUSE is a name shared by two separate distros.\"];\n"
+"\n"
+" // Which combobox item is active?\n"
+" let activeItem = this._comboBoxText.get_active();\n"
+"\n"
+" // No messagedialog if you chose \"Select distribution\"\n"
+" if (activeItem != 0) {\n"
+" this._popUp = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" buttons: Gtk.ButtonsType.OK,\n"
+" message_type: Gtk.MessageType.INFO,\n"
+" text: responses[activeItem]});\n"
+"\n"
+" // Connect the OK button to a handler function\n"
+" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
+"\n"
+" // Show the messagedialog\n"
+" this._popUp.show();\n"
+" }\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _onDialogResponse: function () {\n"
+"\n"
+" this._popUp.destroy ();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ComboBoxTextExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ComboBoxTextExample = new Lang.Class ({\n"
+" Name: 'ComboBoxText Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jscomboboxtext'});\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Welcome to GNOME\",\n"
+" default_width: 200,\n"
+" border_width: 10 });\n"
+"\n"
+" // Create the combobox\n"
+" this._comboBoxText = new Gtk.ComboBoxText();\n"
+"\n"
+" // Populate the combobox\n"
+" let distros = [\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"];\n"
+" for (let i = 0; i < distros.length; i++)\n"
+" this._comboBoxText.append_text (distros[i]);\n"
+" this._comboBoxText.set_active (0);\n"
+"\n"
+" // Connect the combobox's 'changed' signal to our callback function\n"
+" this._comboBoxText.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
+"\n"
+" // Add the combobox to the window\n"
+" this._window.add (this._comboBoxText);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _onComboChanged: function () {\n"
+"\n"
+" // The responses we'll use for our messagedialog\n"
+" let responses = [\"\",\n"
+" \"Fedora is a community distro sponsored by Red Hat.\",\n"
+" \"Mint is a popular distro based on Ubuntu.\",\n"
+" \"SUSE is a name shared by two separate distros.\"];\n"
+"\n"
+" // Which combobox item is active?\n"
+" let activeItem = this._comboBoxText.get_active();\n"
+"\n"
+" // No messagedialog if you chose \"Select distribution\"\n"
+" if (activeItem != 0) {\n"
+" this._popUp = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" buttons: Gtk.ButtonsType.OK,\n"
+" message_type: Gtk.MessageType.INFO,\n"
+" text: responses[activeItem]});\n"
+"\n"
+" // Connect the OK button to a handler function\n"
+" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
+"\n"
+" // Show the messagedialog\n"
+" this._popUp.show();\n"
+" }\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _onDialogResponse: function () {\n"
+"\n"
+" this._popUp.destroy ();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ComboBoxTextExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/comboboxtext.js.page:183
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ComboBoxText."
+"html\">Gtk.ComboBoxText</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ComboBoxText."
+"html\">Gtk.ComboBoxText</link>"
+
+#. (itstool) path: item/p
+#: C/comboboxtext.js.page:184 C/combobox.js.page:244 C/entry.js.page:33
+#: C/messagedialog.js.page:198
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.MessageDialog."
+"html\">Gtk.MessageDialog</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.MessageDialog."
+"html\">Gtk.MessageDialog</link>"
+
+#. (itstool) path: info/title
+#: C/combobox.c.page:8
+msgctxt "text"
+msgid "ComboBox (C)"
+msgstr "ComboBox (C)"
+
+#. (itstool) path: info/desc
+#: C/combobox.c.page:22 C/combobox.py.page:20 C/combobox.vala.page:18
+#: C/combobox_multicolumn.py.page:19 C/combobox_multicolumn.vala.page:19
+msgid "A widget used to choose from a list of items"
+msgstr "Un widget usado para elegir de una lista de elementos"
+
+#. (itstool) path: page/title
+#: C/combobox.c.page:25 C/combobox.js.page:25 C/combobox.vala.page:21
+msgid "ComboBox"
+msgstr "ComboBox"
+
+#. (itstool) path: page/p
+#: C/combobox.c.page:27 C/combobox.vala.page:23
+msgid "This ComboBox prints to the terminal when you change your selection."
+msgstr "Este ComboBox imprime en la terminal cuando cambia su selección."
+
+#. (itstool) path: page/code
+#: C/combobox.c.page:29
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"/* This is the callback function. It is a handler function which reacts to the\n"
+" * signal. In this case, if the row selected is not the first one of the\n"
+" * ComboBox, we write its value in the terminal for the user.\n"
+" */\n"
+"static void\n"
+"on_changed (GtkComboBox *widget,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkComboBox *combo_box = widget;\n"
+"\n"
+" if (gtk_combo_box_get_active (combo_box) != 0) {\n"
+" gchar *distro = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(combo_box));\n"
+" g_print (\"You chose %s\\n\", distro);\n"
+" g_free (distro);\n"
+" }\n"
+"\n"
+"}\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" gint i;\n"
+" GtkWidget *view;\n"
+" GtkWidget *window;\n"
+" GtkWidget *combo_box;\n"
+"\n"
+" /* Create a window with a title, border width, and a default size. Setting the\n"
+" * size to -1 means to use the \"natural\" default size.\n"
+" * (the size request of the window)\n"
+" */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 200, -1);\n"
+" gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n"
+"\n"
+"\n"
+" /* Create the combo box and append your string values to it. */\n"
+" combo_box = gtk_combo_box_text_new ();\n"
+" const char *distros[] = {\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"};\n"
+"\n"
+" \n"
+" /* G_N_ELEMENTS is a macro which determines the number of elements in an array.*/ \n"
+" for (i = 0; i < G_N_ELEMENTS (distros); i++){\n"
+" \tgtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), distros[i]);\n"
+" }\n"
+"\n"
+" /* Choose to set the first row as the active one by default, from the beginning */\n"
+" gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), 0);\n"
+"\n"
+" /* Connect the signal emitted when a row is selected to the appropriate\n"
+" * callback function.\n"
+" */\n"
+" g_signal_connect (combo_box,\n"
+" \"changed\",\n"
+" G_CALLBACK (on_changed),\n"
+" NULL);\n"
+"\n"
+" /* Add it to the window */\n"
+" gtk_container_add (GTK_CONTAINER (window), combo_box);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"/* This is the callback function. It is a handler function which reacts to the\n"
+" * signal. In this case, if the row selected is not the first one of the\n"
+" * ComboBox, we write its value in the terminal for the user.\n"
+" */\n"
+"static void\n"
+"on_changed (GtkComboBox *widget,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkComboBox *combo_box = widget;\n"
+"\n"
+" if (gtk_combo_box_get_active (combo_box) != 0) {\n"
+" gchar *distro = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(combo_box));\n"
+" g_print (\"You chose %s\\n\", distro);\n"
+" g_free (distro);\n"
+" }\n"
+"\n"
+"}\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" gint i;\n"
+" GtkWidget *view;\n"
+" GtkWidget *window;\n"
+" GtkWidget *combo_box;\n"
+"\n"
+" /* Create a window with a title, border width, and a default size. Setting the\n"
+" * size to -1 means to use the \"natural\" default size.\n"
+" * (the size request of the window)\n"
+" */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 200, -1);\n"
+" gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n"
+"\n"
+"\n"
+" /* Create the combo box and append your string values to it. */\n"
+" combo_box = gtk_combo_box_text_new ();\n"
+" const char *distros[] = {\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"};\n"
+"\n"
+" \n"
+" /* G_N_ELEMENTS is a macro which determines the number of elements in an array.*/ \n"
+" for (i = 0; i < G_N_ELEMENTS (distros); i++){\n"
+" \tgtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), distros[i]);\n"
+" }\n"
+"\n"
+" /* Choose to set the first row as the active one by default, from the beginning */\n"
+" gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), 0);\n"
+"\n"
+" /* Connect the signal emitted when a row is selected to the appropriate\n"
+" * callback function.\n"
+" */\n"
+" g_signal_connect (combo_box,\n"
+" \"changed\",\n"
+" G_CALLBACK (on_changed),\n"
+" NULL);\n"
+"\n"
+" /* Add it to the window */\n"
+" gtk_container_add (GTK_CONTAINER (window), combo_box);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/combobox.c.page:37
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkComboBoxText.html"
+"\">GtkComboBoxText</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkComboBoxText.html"
+"\">GtkComboBoxText</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/combobox.js.page:26 C/combobox_multicolumn.py.page:23
+#: C/combobox_multicolumn.vala.page:23
+msgctxt "_"
+msgid ""
+"external ref='media/combobox_multicolumn.png' "
+"md5='43f16648fb11ebc7d2f70825ed0f63b3'"
+msgstr ""
+"external ref='media/combobox_multicolumn.png' "
+"md5='43f16648fb11ebc7d2f70825ed0f63b3'"
+
+#. (itstool) path: info/title
+#: C/combobox.js.page:8
+msgctxt "text"
+msgid "ComboBox (JavaScript)"
+msgstr "ComboBox (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/combobox.js.page:22
+msgid "A customizable drop-down menu"
+msgstr "Un menú desplegable personalizable."
+
+#. (itstool) path: page/p
+#: C/combobox.js.page:27
+msgid ""
+"A ComboBox is an extremely customizable drop-down menu. It holds the "
+"equivalent of a <link xref=\"treeview_simple_liststore.js\">TreeView</link> "
+"widget that appears when you click on it, complete with a ListStore "
+"(basically a spreadsheet) that says what's in the rows and columns. In this "
+"example, our ListStore has the name of each option in one column, and the "
+"name of a stock icon in the other, which the ComboBox then turns into an "
+"icon for each option."
+msgstr ""
+"Un «ComboBox» es un menú desplegable extremadamente personalizable. Contiene "
+"el equivalente a un widget <link xref=\"treeview_simple_liststore.js"
+"\">TreeView</link> que aparece cuando lo pulsa, completo con un "
+"«ListStore» (básicamente una hoja de cálculo) que dice qué está en las filas "
+"y columnas. En este ejemplo, el «ListStore» tiene el nombre de cada opción "
+"en una columna, y el nombre de un elemento del almacén en la otra, que el "
+"«ComboBox» convierte en un icono para cada opción."
+
+#. (itstool) path: page/p
+#: C/combobox.js.page:28
+msgid ""
+"You select a whole horizontal row at a time, so the icons aren't treated as "
+"separate options. They and the text beside them make up each option you can "
+"click on."
+msgstr ""
+"Puede seleccionar una fila horizontal a la vez, por lo que los iconos no se "
+"tratan como opciones separadas. Ellos y su texto forman una opción que puede "
+"pulsar."
+
+#. (itstool) path: note/p
+#: C/combobox.js.page:29
+msgid ""
+"Working with a ListStore can be time-consuming. If you just want a simple "
+"text-only drop-down menu, take a look at the <link xref=\"comboboxtext.js"
+"\">ComboBoxText</link>. It doesn't take as much time to set up, and is "
+"easier to work with."
+msgstr ""
+"Trabajar con un «ListStore» puede llevar tiempo. Si sólo quiere un menú "
+"desplegable de solo texto simple, échele un vistazo al <link xref="
+"\"comboboxtext.js\">ComboBoxText</link>. No toma tanto tiempo configurarlo, "
+"y es más fácil trabajar con él."
+
+#. (itstool) path: section/code
+#: C/combobox.js.page:34
+#, no-wrap
+msgid ""
+"\n"
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+msgstr ""
+"\n"
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+
+#. (itstool) path: section/code
+#: C/combobox.js.page:46
+#, no-wrap
+msgid ""
+"\n"
+"const ComboBoxExample = new Lang.Class ({\n"
+" Name: 'ComboBox Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jscombobox'});\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+"const ComboBoxExample = new Lang.Class ({\n"
+" Name: 'ComboBox Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jscombobox'});\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/combobox.js.page:70
+msgid ""
+"All the code for this sample goes in the ComboBoxExample class. The above "
+"code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> for our widgets and window to "
+"go in."
+msgstr ""
+"Todo el código de este ejemplo va en la clase «ComboBoxExample». El código "
+"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> para que vayan los widgets y "
+"la ventana."
+
+#. (itstool) path: section/title
+#: C/combobox.js.page:87 C/treeview_simple_liststore.js.page:94
+msgid "Creating the ListStore"
+msgstr "Crear el ListStore"
+
+#. (itstool) path: section/code
+#: C/combobox.js.page:88
+#, no-wrap
+msgid ""
+"\n"
+" // Create the liststore to put our options in\n"
+" this._listStore = new Gtk.ListStore();\n"
+" this._listStore.set_column_types ([\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING]);\n"
+msgstr ""
+"\n"
+" // Create the liststore to put our options in\n"
+" this._listStore = new Gtk.ListStore();\n"
+" this._listStore.set_column_types ([\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING]);\n"
+
+#. (itstool) path: section/p
+#: C/combobox.js.page:95
+msgid ""
+"This ListStore works like the one used in the <link xref="
+"\"treeview_simple_liststore.js\">TreeView</link> example. We're giving it "
+"two columns, both strings, because one of them will contain the names of "
+"<link href=\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html"
+"\">stock Gtk icons</link>."
+msgstr ""
+"Este «ListStore» funciona como el que se usó en el ejemplo del <link xref="
+"\"treeview_simple_liststore.js\">TreeView</link>. Se le dan dos columnas, "
+"ambas cadenas, porque una contendrá los nombres de los <link href=\"https://"
+"developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html\">iconos del almacén de "
+"GTK+</link>."
+
+#. (itstool) path: section/p
+#: C/combobox.js.page:96
+msgid ""
+"If we'd wanted to use our own icons that weren't already built in to GNOME, "
+"we'd have needed to use the <file>gtk.gdk.Pixbuf</file> type instead. Here "
+"are a few other types you can use:"
+msgstr ""
+"Si quisiera usar sus propios iconos que no están incluidos en GNOME, tendría "
+"que usar el tipo <file>gtk.gdk.Pixbuf</file> en su lugar. Aquí hay algunos "
+"tipos más que puede usar:"
+
+#. (itstool) path: item/p
+#: C/combobox.js.page:98 C/treeview_simple_liststore.js.page:107
+msgid "<file>GObject.TYPE_BOOLEAN</file> -- True or false"
+msgstr "<file>GObject.TYPE_BOOLEAN</file>: verdadero o falso"
+
+#. (itstool) path: item/p
+#: C/combobox.js.page:99 C/treeview_simple_liststore.js.page:108
+msgid ""
+"<file>GObject.TYPE_FLOAT</file> -- A floating point number (one with a "
+"decimal point)"
+msgstr ""
+"<file>GObject.TYPE_FLOAT</file>: un número de coma flotante (uno con coma "
+"decimal)"
+
+#. (itstool) path: item/p
+#: C/combobox.js.page:100 C/treeview_simple_liststore.js.page:109
+msgid "<file>GObject.TYPE_STRING</file> -- A string of letters and numbers"
+msgstr "<file>GObject.TYPE_STRING</file>: una cadena de letras y números"
+
+#. (itstool) path: note/p
+#: C/combobox.js.page:102 C/treeview_simple_liststore.js.page:113
+msgid ""
+"You need to put the line <file>const GObject = imports.gi.GObject;</file> at "
+"the start of your application's code, like we did in this example, if you "
+"want to be able to use GObject types."
+msgstr ""
+"Necesita poner la línea <file>const GObject = imports.gi.GObject;</file> al "
+"principio del código de su aplicación, como se hizo en este ejemplo, si "
+"quiere poder usar tipos de GObject."
+
+#. (itstool) path: section/code
+#: C/combobox.js.page:104
+#, no-wrap
+msgid ""
+"\n"
+" // This array holds our list of options and their icons\n"
+" let options = [{ name: \"Select\" },\n"
+" { name: \"New\", icon: Gtk.STOCK_NEW },\n"
+" { name: \"Open\", icon: Gtk.STOCK_OPEN },\n"
+" { name: \"Save\", icon: Gtk.STOCK_SAVE }];\n"
+"\n"
+" // Put the options in the liststore\n"
+" for (let i = 0; i < options.length; i++ ) {\n"
+" let option = options[i];\n"
+" let iter = this._listStore.append();\n"
+" this._listStore.set (iter, [0], [option.name]);\n"
+" if ('icon' in option)\n"
+" this._listStore.set (iter, [1], [option.icon]);\n"
+" }\n"
+msgstr ""
+"\n"
+" // This array holds our list of options and their icons\n"
+" let options = [{ name: \"Select\" },\n"
+" { name: \"New\", icon: Gtk.STOCK_NEW },\n"
+" { name: \"Open\", icon: Gtk.STOCK_OPEN },\n"
+" { name: \"Save\", icon: Gtk.STOCK_SAVE }];\n"
+"\n"
+" // Put the options in the liststore\n"
+" for (let i = 0; i < options.length; i++ ) {\n"
+" let option = options[i];\n"
+" let iter = this._listStore.append();\n"
+" this._listStore.set (iter, [0], [option.name]);\n"
+" if ('icon' in option)\n"
+" this._listStore.set (iter, [1], [option.icon]);\n"
+" }\n"
+
+#. (itstool) path: section/p
+#: C/combobox.js.page:120
+msgid ""
+"Here we create an array of the text options and their corresponding icons, "
+"then put them into the ListStore in much the same way we would for a <link "
+"xref=\"treeview_simple_liststore.js\">TreeView's</link> ListStore. We only "
+"want to put an icon in if there's actually an icon in the options array, so "
+"we make sure to check for that first."
+msgstr ""
+"Aquí se crea una matriz de las opciones de texto y sus iconos "
+"correspondientes, después se ponen en el «ListStore» de forma parecida a "
+"cOmo se haría para un «ListStore» de un <link xref="
+"\"treeview_simple_liststore.js\">TreeView</link>. Sólo se quiere poner un "
+"icono si hay uno en la matriz de opciones, por lo que primero hay que "
+"asegurarse de verificar esto."
+
+#. (itstool) path: note/p
+#: C/combobox.js.page:121
+msgid ""
+"\"Select\" isn't really an option so much as an invitation to click on our "
+"ComboBox, so it doesn't need an icon."
+msgstr ""
+"«Select» no es realmente una opción, sino una invitación a pulsar en el "
+"«ComboBox», por lo que no necesita un icono."
+
+#. (itstool) path: section/title
+#: C/combobox.js.page:125
+msgid "Creating the ComboBox"
+msgstr "Crear el ComboBox"
+
+#. (itstool) path: section/code
+#: C/combobox.js.page:126
+#, no-wrap
+msgid ""
+"\n"
+" // Create the combobox\n"
+" this._comboBox = new Gtk.ComboBox({\n"
+" model: this._listStore});\n"
+msgstr ""
+"\n"
+" // Create the combobox\n"
+" this._comboBox = new Gtk.ComboBox({\n"
+" model: this._listStore});\n"
+
+#. (itstool) path: section/p
+#: C/combobox.js.page:131
+msgid ""
+"Each ComboBox has an underlying \"model\" it takes all its options from. You "
+"can use a TreeStore if you want to have a ComboBox with branching options. "
+"In this case, we're just using the ListStore we already created."
+msgstr ""
+"Cada «ComboBox» tiene un «modelo» subyacente del que toma todas sus "
+"opciones. Puede usar un «TreeStore» si quiere tener un «ComboBox» con "
+"opciones de bifurcación. En este caso, solo se está usando el «ListStore» "
+"que ya se creó."
+
+#. (itstool) path: section/code
+#: C/combobox.js.page:132
+#, no-wrap
+msgid ""
+"\n"
+" // Create some cellrenderers for the items in each column\n"
+" let rendererPixbuf = new Gtk.CellRendererPixbuf();\n"
+" let rendererText = new Gtk.CellRendererText();\n"
+"\n"
+" // Pack the renderers into the combobox in the order we want to see\n"
+" this._comboBox.pack_start (rendererPixbuf, false);\n"
+" this._comboBox.pack_start (rendererText, false);\n"
+"\n"
+" // Set the renderers to use the information from our liststore\n"
+" this._comboBox.add_attribute (rendererText, \"text\", 0);\n"
+" this._comboBox.add_attribute (rendererPixbuf, \"stock_id\", 1);\n"
+msgstr ""
+"\n"
+" // Create some cellrenderers for the items in each column\n"
+" let rendererPixbuf = new Gtk.CellRendererPixbuf();\n"
+" let rendererText = new Gtk.CellRendererText();\n"
+"\n"
+" // Pack the renderers into the combobox in the order we want to see\n"
+" this._comboBox.pack_start (rendererPixbuf, false);\n"
+" this._comboBox.pack_start (rendererText, false);\n"
+"\n"
+" // Set the renderers to use the information from our liststore\n"
+" this._comboBox.add_attribute (rendererText, \"text\", 0);\n"
+" this._comboBox.add_attribute (rendererPixbuf, \"stock_id\", 1);\n"
+
+#. (itstool) path: section/p
+#: C/combobox.js.page:145
+msgid ""
+"This part, again, works much like creating CellRenderers and packing them "
+"into the columns of a <link xref=\"treeview_simple_liststore.js\">TreeView</"
+"link>. The biggest difference is that we don't need to create the ComboBox's "
+"columns as separate objects. We just pack the CellRenderers into it in the "
+"order we want them to show up, then tell them to pull information from the "
+"ListStore (and what type of information we want them to expect)."
+msgstr ""
+"Esta parte, nuevamente, funciona de forma similar a crear «CellRenderer» y "
+"empaquetarlos en columnas de un <link xref=\"treeview_simple_liststore.js"
+"\">TreeView</link>. La principal diferencia es que no necesita crear las "
+"columnas del «ComboBox» como objetos separados. Sólo se empaquetan los "
+"«CellRenderer» en el orden en el que quiere que se muestren, y se les dice "
+"que obtengan información del «ListStore» (y qué tipo de información tienen "
+"que esperar)."
+
+#. (itstool) path: section/p
+#: C/combobox.js.page:146
+msgid ""
+"We use a CellRendererText to show the text, and a CellRendererPixbuf to show "
+"the icons. We can store the names of the icons' stock types as strings, but "
+"when we display them we need a CellRenderer that's designed for pictures."
+msgstr ""
+"Se usa un «CellRendererText» para mostrar el texto, y un "
+"«CellRendererPixbuf» para mostrar los iconos. Se pueden almacenar los "
+"nombres de los tipos del almacén de iconos como cadenas, pero cuando se "
+"muestran se necesita un «CellRenderer» diseñado para imágenes."
+
+#. (itstool) path: note/p
+#: C/combobox.js.page:147
+msgid ""
+"Just like with a TreeView, the \"model\" (in this case a ListStore) and the "
+"\"view\" (in this case our ComboBox) are separate. Because of that, we can "
+"do things like have the columns in one order in the ListStore, and then pack "
+"the CellRenderers that correspond to those columns into the ComboBox in a "
+"different order. We can even create a TreeView or other widget that shows "
+"the information in the ListStore in a different way, without it affecting "
+"our ComboBox."
+msgstr ""
+"Al igual que con un «TreeView», el «modelo» (en este caso un «ListStore») y "
+"la «vista» (en este caso el «ComboBox») están separados. Es por esto que se "
+"pueden hacer cosas como tener las columnas en un orden en el «ListStore», y "
+"después empaquetar los «CellRenderer» que les corresponden en el «ComboBox» "
+"en un orden diferente. Incluso se puede crear un «TreeView» u otro widget "
+"que muestre la información en el «ListStore» de una manera diferente, sin "
+"afectar el «ComboBox»."
+
+#. (itstool) path: section/code
+#: C/combobox.js.page:149
+#, no-wrap
+msgid ""
+"\n"
+" // Set the first row in the combobox to be active on startup\n"
+" this._comboBox.set_active (0);\n"
+"\n"
+" // Connect the combobox's 'changed' signal to our callback function\n"
+" this._comboBox.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
+msgstr ""
+"\n"
+" // Set the first row in the combobox to be active on startup\n"
+" this._comboBox.set_active (0);\n"
+"\n"
+" // Connect the combobox's 'changed' signal to our callback function\n"
+" this._comboBox.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
+
+#. (itstool) path: section/p
+#: C/combobox.js.page:156
+msgid ""
+"We want the \"Select\" text to be the part people see at first, that gets "
+"them to click on the ComboBox. So we set it to be the active entry. We also "
+"connect the ComboBox's <file>changed</file> signal to a callback function, "
+"so that any time someone clicks on a new option something happens. In this "
+"case, we're just going to show a popup with a little haiku."
+msgstr ""
+"Se quiere que el texto «Select» sea la parte que la gente ve al principio, "
+"que les haga pulsar el «ComboBox»; por lo que se establece como entrada "
+"activa. También se conecta la señal <file>changed</file> del «ComboBox» a "
+"una función de retorno de llamada, para que siempre que alguien pulse una "
+"opción nueva suceda algo. En este caso, sólo se va a mostrar una ventana "
+"emergente con un pequeño «haiku»."
+
+#. (itstool) path: section/code
+#: C/combobox.js.page:158
+#, no-wrap
+msgid ""
+"\n"
+" // Add the combobox to the window\n"
+" this._window.add (this._comboBox);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+msgstr ""
+"\n"
+" // Add the combobox to the window\n"
+" this._window.add (this._comboBox);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/combobox.js.page:166
+msgid ""
+"Finally, we add the ComboBox to the window, and tell the window to show "
+"itself and everything inside it."
+msgstr ""
+"Finalmente, se añade el «ComboBox» a la ventana, y se le dice que se muestre "
+"con todo lo que contiene."
+
+#. (itstool) path: section/code
+#: C/combobox.js.page:171
+#, no-wrap
+msgid ""
+"\n"
+" _selected: function () {\n"
+"\n"
+" // The silly pseudohaiku that we'll use for our messagedialog\n"
+" let haiku = [\"\",\n"
+" \"You ask for the new\\nwith no thought for the aged\\nlike fallen leaves trod.\",\n"
+" \"Like a simple clam\\nrevealing a lustrous pearl\\nit opens for you.\",\n"
+" \"A moment in time\\na memory on the breeze\\nthese things can't be saved.\"];\n"
+msgstr ""
+"\n"
+" _selected: function () {\n"
+"\n"
+" // The silly pseudohaiku that we'll use for our messagedialog\n"
+" let haiku = [\"\",\n"
+" \"You ask for the new\\nwith no thought for the aged\\nlike fallen leaves trod.\",\n"
+" \"Like a simple clam\\nrevealing a lustrous pearl\\nit opens for you.\",\n"
+" \"A moment in time\\na memory on the breeze\\nthese things can't be saved.\"];\n"
+
+#. (itstool) path: section/p
+#: C/combobox.js.page:180
+msgid ""
+"We're going to create a pop-up <link xref=\"messagedialog.js"
+"\">MessageDialog</link>, which shows you a silly haiku based on which distro "
+"you select. First, we create the array of haiku to use. Since the first "
+"string in our ComboBox is just the \"Select\" message, we make the first "
+"string in our array blank."
+msgstr ""
+"Se va a crear un <link xref=\"messagedialog.js\">MessageDialog</link> "
+"emergente, que muestra un «haiku» tonto de acuerdo a qué distribución "
+"seleccione. Primero, se crea la matriz de «haiku». Dado que la primera "
+"cadena en el «ComboBox» es sólo el mensaje «Select», la primera cadena en la "
+"matriz se hace vacía."
+
+#. (itstool) path: section/code
+#: C/combobox.js.page:182
+#, no-wrap
+msgid ""
+"\n"
+" // Which combobox item is active?\n"
+" let activeItem = this._comboBox.get_active();\n"
+"\n"
+" // No messagedialog if you choose \"Select\"\n"
+" if (activeItem != 0) {\n"
+" this._popUp = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" buttons: Gtk.ButtonsType.OK,\n"
+" message_type: Gtk.MessageType.INFO,\n"
+" text: haiku[activeItem]});\n"
+"\n"
+" // Connect the OK button to a handler function\n"
+" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
+"\n"
+" // Show the messagedialog\n"
+" this._popUp.show();\n"
+" }\n"
+"\n"
+" },\n"
+msgstr ""
+"\n"
+" // Which combobox item is active?\n"
+" let activeItem = this._comboBox.get_active();\n"
+"\n"
+" // No messagedialog if you choose \"Select\"\n"
+" if (activeItem != 0) {\n"
+" this._popUp = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" buttons: Gtk.ButtonsType.OK,\n"
+" message_type: Gtk.MessageType.INFO,\n"
+" text: haiku[activeItem]});\n"
+"\n"
+" // Connect the OK button to a handler function\n"
+" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
+"\n"
+" // Show the messagedialog\n"
+" this._popUp.show();\n"
+" }\n"
+"\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/combobox.js.page:204
+msgid ""
+"Before showing a MessageDialog, we first test to make sure you didn't choose "
+"the \"Select\" message. After that, we set its text to be the haiku in the "
+"array that corresponds to the active entry in our ComboBoxText. We do that "
+"using the <file>get_active</file> method, which returns the number ID of "
+"your selection."
+msgstr ""
+"Antes de mostrar un «MessageDialog», primero se verifica que no se eligió el "
+"mensaje «Select». Después de eso, se establece su texto al «haiku» en la "
+"matriz que le corresponde a la entrada activa en el «ComboBoxText». Esto se "
+"hace usando el método <file>get_active</file>, que devuelve la "
+"identificación numérica de su selección."
+
+#. (itstool) path: note/p
+#: C/combobox.js.page:205
+msgid ""
+"Other methods you can use include <file>get_active_id</file>, which returns "
+"the text ID assigned by <file>append</file>, and <file>get_active_text</"
+"file>, which returns the full text of the string you selected."
+msgstr ""
+"Otros métodos que puede usar incluyen <file>get_active_id</file>, que "
+"devuelve la identificación de texto que asignó <file>append</file>, y "
+"<file>get_active_text</file>, que devuelve el texto completo de la cadena "
+"que seleccionó."
+
+#. (itstool) path: section/code
+#: C/combobox.js.page:219
+#, no-wrap
+msgid ""
+"\n"
+"// Run the application\n"
+"let app = new ComboBoxExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"// Run the application\n"
+"let app = new ComboBoxExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/p
+#: C/combobox.js.page:224
+msgid ""
+"Finally, we create a new instance of the finished ComboBoxExample class, and "
+"set the application running."
+msgstr ""
+"Finalmente, se crea una instancia nueva de la clase «ComboBoxExample» "
+"terminada, y se ejecuta la aplicación."
+
+#. (itstool) path: section/code
+#: C/combobox.js.page:229
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ComboBoxExample = new Lang.Class ({\n"
+" Name: 'ComboBox Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jscombobox'});\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Welcome to GNOME\",\n"
+" default_width: 200,\n"
+" border_width: 10 });\n"
+"\n"
+" // Create the liststore to put our options in\n"
+" this._listStore = new Gtk.ListStore();\n"
+" this._listStore.set_column_types ([\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING]);\n"
+"\n"
+" // This array holds our list of options and their icons\n"
+" let options = [{ name: \"Select\" },\n"
+" { name: \"New\", icon: Gtk.STOCK_NEW },\n"
+" { name: \"Open\", icon: Gtk.STOCK_OPEN },\n"
+" { name: \"Save\", icon: Gtk.STOCK_SAVE }];\n"
+"\n"
+" // Put the options in the liststore\n"
+" for (let i = 0; i < options.length; i++ ) {\n"
+" let option = options[i];\n"
+" let iter = this._listStore.append();\n"
+" this._listStore.set (iter, [0], [option.name]);\n"
+" if ('icon' in option)\n"
+" this._listStore.set (iter, [1], [option.icon]);\n"
+" }\n"
+"\n"
+" // Create the combobox\n"
+" this._comboBox = new Gtk.ComboBox({\n"
+" model: this._listStore});\n"
+"\n"
+" // Create some cellrenderers for the items in each column\n"
+" let rendererPixbuf = new Gtk.CellRendererPixbuf();\n"
+" let rendererText = new Gtk.CellRendererText();\n"
+"\n"
+" // Pack the renderers into the combobox in the order we want to see\n"
+" this._comboBox.pack_start (rendererPixbuf, false);\n"
+" this._comboBox.pack_start (rendererText, false);\n"
+"\n"
+" // Set the renderers to use the information from our liststore\n"
+" this._comboBox.add_attribute (rendererText, \"text\", 0);\n"
+" this._comboBox.add_attribute (rendererPixbuf, \"stock_id\", 1);\n"
+"\n"
+" // Set the first row in the combobox to be active on startup\n"
+" this._comboBox.set_active (0);\n"
+"\n"
+" // Connect the combobox's 'changed' signal to our callback function\n"
+" this._comboBox.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
+"\n"
+" // Add the combobox to the window\n"
+" this._window.add (this._comboBox);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _onComboChanged: function () {\n"
+"\n"
+" // The silly pseudohaiku that we'll use for our messagedialog\n"
+" let haiku = [\"\",\n"
+" \"You ask for the new\\nwith no thought for the aged\\nlike fallen leaves trod.\",\n"
+" \"Like a simple clam\\nrevealing a lustrous pearl\\nit opens for you.\",\n"
+" \"A moment in time\\na memory on the breeze\\nthese things can't be saved.\"];\n"
+"\n"
+" // Which combobox item is active?\n"
+" let activeItem = this._comboBox.get_active();\n"
+"\n"
+" // No messagedialog if you choose \"Select\"\n"
+" if (activeItem != 0) {\n"
+" this._popUp = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" buttons: Gtk.ButtonsType.OK,\n"
+" message_type: Gtk.MessageType.INFO,\n"
+" text: haiku[activeItem]});\n"
+"\n"
+" // Connect the OK button to a handler function\n"
+" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
+"\n"
+" // Show the messagedialog\n"
+" this._popUp.show();\n"
+" }\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _onDialogResponse: function () {\n"
+"\n"
+" this._popUp.destroy ();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ComboBoxExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ComboBoxExample = new Lang.Class ({\n"
+" Name: 'ComboBox Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jscombobox'});\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Welcome to GNOME\",\n"
+" default_width: 200,\n"
+" border_width: 10 });\n"
+"\n"
+" // Create the liststore to put our options in\n"
+" this._listStore = new Gtk.ListStore();\n"
+" this._listStore.set_column_types ([\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING]);\n"
+"\n"
+" // This array holds our list of options and their icons\n"
+" let options = [{ name: \"Select\" },\n"
+" { name: \"New\", icon: Gtk.STOCK_NEW },\n"
+" { name: \"Open\", icon: Gtk.STOCK_OPEN },\n"
+" { name: \"Save\", icon: Gtk.STOCK_SAVE }];\n"
+"\n"
+" // Put the options in the liststore\n"
+" for (let i = 0; i < options.length; i++ ) {\n"
+" let option = options[i];\n"
+" let iter = this._listStore.append();\n"
+" this._listStore.set (iter, [0], [option.name]);\n"
+" if ('icon' in option)\n"
+" this._listStore.set (iter, [1], [option.icon]);\n"
+" }\n"
+"\n"
+" // Create the combobox\n"
+" this._comboBox = new Gtk.ComboBox({\n"
+" model: this._listStore});\n"
+"\n"
+" // Create some cellrenderers for the items in each column\n"
+" let rendererPixbuf = new Gtk.CellRendererPixbuf();\n"
+" let rendererText = new Gtk.CellRendererText();\n"
+"\n"
+" // Pack the renderers into the combobox in the order we want to see\n"
+" this._comboBox.pack_start (rendererPixbuf, false);\n"
+" this._comboBox.pack_start (rendererText, false);\n"
+"\n"
+" // Set the renderers to use the information from our liststore\n"
+" this._comboBox.add_attribute (rendererText, \"text\", 0);\n"
+" this._comboBox.add_attribute (rendererPixbuf, \"stock_id\", 1);\n"
+"\n"
+" // Set the first row in the combobox to be active on startup\n"
+" this._comboBox.set_active (0);\n"
+"\n"
+" // Connect the combobox's 'changed' signal to our callback function\n"
+" this._comboBox.connect ('changed', Lang.bind (this, this._onComboChanged));\n"
+"\n"
+" // Add the combobox to the window\n"
+" this._window.add (this._comboBox);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _onComboChanged: function () {\n"
+"\n"
+" // The silly pseudohaiku that we'll use for our messagedialog\n"
+" let haiku = [\"\",\n"
+" \"You ask for the new\\nwith no thought for the aged\\nlike fallen leaves trod.\",\n"
+" \"Like a simple clam\\nrevealing a lustrous pearl\\nit opens for you.\",\n"
+" \"A moment in time\\na memory on the breeze\\nthese things can't be saved.\"];\n"
+"\n"
+" // Which combobox item is active?\n"
+" let activeItem = this._comboBox.get_active();\n"
+"\n"
+" // No messagedialog if you choose \"Select\"\n"
+" if (activeItem != 0) {\n"
+" this._popUp = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" buttons: Gtk.ButtonsType.OK,\n"
+" message_type: Gtk.MessageType.INFO,\n"
+" text: haiku[activeItem]});\n"
+"\n"
+" // Connect the OK button to a handler function\n"
+" this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n"
+"\n"
+" // Show the messagedialog\n"
+" this._popUp.show();\n"
+" }\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _onDialogResponse: function () {\n"
+"\n"
+" this._popUp.destroy ();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ComboBoxExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/combobox.js.page:240
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
+"CellRendererPixbuf.html\">Gtk.CellRendererPixbuf</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
+"CellRendererPixbuf.html\">Gtk.CellRendererPixbuf</link>"
+
+#. (itstool) path: item/p
+#: C/combobox.js.page:241 C/treeview_simple_liststore.js.page:279
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
+"CellRendererText.html\">Gtk.CellRendererText</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
+"CellRendererText.html\">Gtk.CellRendererText</link>"
+
+#. (itstool) path: item/p
+#: C/combobox.js.page:242
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ComboBox.html"
+"\">Gtk.ComboBox</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ComboBox.html"
+"\">Gtk.ComboBox</link>"
+
+#. (itstool) path: item/p
+#: C/combobox.js.page:243 C/treeview_simple_liststore.js.page:280
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ListStore.html"
+"\">Gtk.ListStore</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ListStore.html"
+"\">Gtk.ListStore</link>"
+
+#. (itstool) path: item/p
+#: C/combobox.js.page:245 C/treeview_simple_liststore.js.page:281
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TreeIter.html"
+"\">Gtk.TreeIter</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TreeIter.html"
+"\">Gtk.TreeIter</link>"
+
+#. (itstool) path: info/title
+#: C/combobox.py.page:8 C/combobox_multicolumn.py.page:8
+msgctxt "text"
+msgid "ComboBox (Python)"
+msgstr "ComboBox (Python)"
+
+#. (itstool) path: page/title
+#: C/combobox.py.page:23
+msgid "ComboBox (one column)"
+msgstr "ComboBox (una columna)"
+
+#. (itstool) path: page/p
+#: C/combobox.py.page:25 C/combobox_multicolumn.py.page:24
+#: C/combobox_multicolumn.vala.page:24
+msgid "This ComboBox prints to the terminal your selection when you change it."
+msgstr ""
+"Esta ComboBox imprime su selección en la terminal cuando cambia la cambia."
+
+#. (itstool) path: section/code
+#: C/combobox.py.page:31
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"distros = [[\"Select distribution\"], [\"Fedora\"], [\"Mint\"], [\"Suse\"]]\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+" self.set_default_size(200, -1)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # the data in the model, of type string\n"
+" listmodel = Gtk.ListStore(str)\n"
+" # append the data in the model\n"
+" for i in range(len(distros)):\n"
+" listmodel.append(distros[i])\n"
+"\n"
+" # a combobox to see the data stored in the model\n"
+" combobox = Gtk.ComboBox(model=listmodel)\n"
+"\n"
+" # a cellrenderer to render the text\n"
+" cell = Gtk.CellRendererText()\n"
+"\n"
+" # pack the cell into the beginning of the combobox, allocating\n"
+" # no more space than needed\n"
+" combobox.pack_start(cell, False)\n"
+" # associate a property (\"text\") of the cellrenderer (cell) to a column (column 0)\n"
+" # in the model used by the combobox\n"
+" combobox.add_attribute(cell, \"text\", 0)\n"
+"\n"
+" # the first row is the active one by default at the beginning\n"
+" combobox.set_active(0)\n"
+"\n"
+" # connect the signal emitted when a row is selected to the callback\n"
+" # function\n"
+" combobox.connect(\"changed\", self.on_changed)\n"
+"\n"
+" # add the combobox to the window\n"
+" self.add(combobox)\n"
+"\n"
+" def on_changed(self, combo):\n"
+" # if the row selected is not the first one, write its value on the\n"
+" # terminal\n"
+" if combo.get_active() != 0:\n"
+" print(\"You chose \" + str(distros[combo.get_active()][0]) + \".\")\n"
+" return True\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"distros = [[\"Select distribution\"], [\"Fedora\"], [\"Mint\"], [\"Suse\"]]\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+" self.set_default_size(200, -1)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # the data in the model, of type string\n"
+" listmodel = Gtk.ListStore(str)\n"
+" # append the data in the model\n"
+" for i in range(len(distros)):\n"
+" listmodel.append(distros[i])\n"
+"\n"
+" # a combobox to see the data stored in the model\n"
+" combobox = Gtk.ComboBox(model=listmodel)\n"
+"\n"
+" # a cellrenderer to render the text\n"
+" cell = Gtk.CellRendererText()\n"
+"\n"
+" # pack the cell into the beginning of the combobox, allocating\n"
+" # no more space than needed\n"
+" combobox.pack_start(cell, False)\n"
+" # associate a property (\"text\") of the cellrenderer (cell) to a column (column 0)\n"
+" # in the model used by the combobox\n"
+" combobox.add_attribute(cell, \"text\", 0)\n"
+"\n"
+" # the first row is the active one by default at the beginning\n"
+" combobox.set_active(0)\n"
+"\n"
+" # connect the signal emitted when a row is selected to the callback\n"
+" # function\n"
+" combobox.connect(\"changed\", self.on_changed)\n"
+"\n"
+" # add the combobox to the window\n"
+" self.add(combobox)\n"
+"\n"
+" def on_changed(self, combo):\n"
+" # if the row selected is not the first one, write its value on the\n"
+" # terminal\n"
+" if combo.get_active() != 0:\n"
+" print(\"You chose \" + str(distros[combo.get_active()][0]) + \".\")\n"
+" return True\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/combobox.py.page:35 C/combobox_multicolumn.py.page:35
+msgid "Useful methods for a ComboBox widget"
+msgstr "Métodos útiles para un widget «ComboBox»"
+
+#. (itstool) path: section/p
+#: C/combobox.py.page:36 C/combobox_multicolumn.py.page:36
+msgid ""
+"The ComboBox widget is designed around a <em>Model/View/Controller</em> "
+"design: the <em>Model</em> stores the data; the <em>View</em> gets change "
+"notifications and displays the content of the model; the <em>Controller</"
+"em>, finally, changes the state of the model and notifies the view of these "
+"changes. For more information and for a list of useful methods for ComboBox "
+"see <link xref=\"model-view-controller.py\"/>."
+msgstr ""
+"El widget «ComboBox» está desarrollado sobre el diseño <em>Modelo/Vista/"
+"Controlador</em>: el <em>Modelo</em> almacena los datos, la <em>Vista</em> "
+"obtiene las notificaciones de cambio y muestra el contenido del modelo; el "
+"<em>Controlador</em>, finalmente, cambia el estado del modelo y le notifica "
+"a la vista los cambios. Para más información, y una lista de métodos útiles "
+"de «ComboBox» y «TreeModel», consulte la <link xref=\"model-view-controller."
+"py\"/>."
+
+#. (itstool) path: section/p
+#: C/combobox.py.page:37
+msgid ""
+"In line 35 the <code>\"changed\"</code> signal is connected to the callback "
+"function <code>on_changed()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 35 la señal <code>«changed»</code> se conecta a la función de "
+"retorno de llamada <code>on_changed()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
+"explicación más detallada."
+
+#. (itstool) path: item/p
+#: C/combobox.py.page:45 C/combobox_multicolumn.py.page:44
+#: C/model-view-controller.py.page:190
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkComboBox.html"
+"\">GtkComboBox</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkComboBox.html"
+"\">GtkComboBox</link>"
+
+#. (itstool) path: item/p
+#: C/combobox.py.page:46 C/combobox_multicolumn.py.page:45
+#: C/treeview_advanced_liststore.py.page:46
+#: C/treeview_simple_liststore.py.page:47
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkListStore.html"
+"\">GtkListStore</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkListStore.html"
+"\">GtkListStore</link>"
+
+#. (itstool) path: item/p
+#: C/combobox.py.page:47 C/combobox_multicolumn.py.page:46
+#: C/treeview_advanced_liststore.py.page:47
+#: C/treeview_cellrenderertoggle.py.page:47
+#: C/treeview_simple_liststore.py.page:48 C/treeview_treestore.py.page:47
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererText."
+"html\">GtkCellRendererText</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererText."
+"html\">GtkCellRendererText</link>"
+
+#. (itstool) path: item/p
+#: C/combobox.py.page:48
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellLayout.html"
+"\">GtkCellLayout</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellLayout.html"
+"\">GtkCellLayout</link>"
+
+#. (itstool) path: item/p
+#: C/combobox.py.page:49 C/combobox_multicolumn.py.page:49
+#: C/treeview_advanced_liststore.py.page:49
+#: C/treeview_simple_liststore.py.page:50
+msgid ""
+"<link href=\"http://git.gnome.org/browse/pygobject/tree/gi/overrides/Gtk.py"
+"\">pygobject - Python bindings for GObject Introspection</link>"
+msgstr ""
+"<link href=\"http://git.gnome.org/browse/pygobject/tree/gi/overrides/Gtk.py"
+"\">pygobject: vinculaciones de Python para introspección de GObject</link>"
+
+#. (itstool) path: info/title
+#: C/combobox.vala.page:8 C/combobox_multicolumn.vala.page:8
+msgctxt "text"
+msgid "ComboBox (Vala)"
+msgstr "ComboBox (Vala)"
+
+#. (itstool) path: page/code
+#: C/combobox.vala.page:25
+#, no-wrap
+msgid ""
+"/* A window in the application */\n"
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* An instance array of linux distributions belonging to this window. */\n"
+"\tstring[] distros = {\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"};\n"
+"\n"
+"\t/* This enum makes the code more readable when we refer to\n"
+"\t * the column as Column.DISTRO, instead of just 0.\n"
+"\t */\n"
+"\tenum Column {\n"
+"\t\tDISTRO\n"
+"\t}\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
+"\n"
+"\t\tthis.set_default_size (200, -1);\n"
+"\t\tthis.border_width = 10;\n"
+"\n"
+"\t\tGtk.ListStore liststore = new Gtk.ListStore (1, typeof (string));\n"
+"\n"
+"\t\tfor (int i = 0; i < distros.length; i++){\n"
+"\t\t\tGtk.TreeIter iter;\n"
+"\t\t\tliststore.append (out iter);\n"
+"\t\t\tliststore.set (iter, Column.DISTRO, distros[i]);\n"
+"\t\t}\n"
+"\n"
+"\t\tGtk.ComboBox combobox = new Gtk.ComboBox.with_model (liststore);\n"
+"\t\tGtk.CellRendererText cell = new Gtk.CellRendererText ();\n"
+"\t\tcombobox.pack_start (cell, false);\n"
+"\n"
+"\t\tcombobox.set_attributes (cell, \"text\", Column.DISTRO);\n"
+"\n"
+"\t\t/* Set the first item in the list to be selected (active). */\n"
+"\t\tcombobox.set_active (0);\n"
+"\n"
+"\t\t/* Connect the 'changed' signal of the combobox\n"
+"\t\t * to the signal handler (aka. callback function).\n"
+"\t\t */\n"
+"\t\tcombobox.changed.connect (this.item_changed);\n"
+"\n"
+"\t\t/* Add the combobox to this window */\n"
+"\t\tthis.add (combobox);\n"
+"\t\tcombobox.show ();\n"
+"\t}\n"
+"\n"
+"\t/* Signal handler for the 'changed' signal of the combobox. */\n"
+"\tvoid item_changed (Gtk.ComboBox combo) {\n"
+"\t\tif (combo.get_active () !=0) {\n"
+"\t\t\tprint (\"You chose \" + distros [combo.get_active ()] +\"\\n\");\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application */\n"
+"class MyApplication : Gtk.Application {\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the activate signal of GLib.Application,\n"
+"\t * which is inherited by Gtk.Application.\n"
+"\t */\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t/* Create the window of this application\n"
+"\t\t * and show it.\n"
+"\t\t */\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application */\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"/* A window in the application */\n"
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* An instance array of linux distributions belonging to this window. */\n"
+"\tstring[] distros = {\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"};\n"
+"\n"
+"\t/* This enum makes the code more readable when we refer to\n"
+"\t * the column as Column.DISTRO, instead of just 0.\n"
+"\t */\n"
+"\tenum Column {\n"
+"\t\tDISTRO\n"
+"\t}\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
+"\n"
+"\t\tthis.set_default_size (200, -1);\n"
+"\t\tthis.border_width = 10;\n"
+"\n"
+"\t\tGtk.ListStore liststore = new Gtk.ListStore (1, typeof (string));\n"
+"\n"
+"\t\tfor (int i = 0; i < distros.length; i++){\n"
+"\t\t\tGtk.TreeIter iter;\n"
+"\t\t\tliststore.append (out iter);\n"
+"\t\t\tliststore.set (iter, Column.DISTRO, distros[i]);\n"
+"\t\t}\n"
+"\n"
+"\t\tGtk.ComboBox combobox = new Gtk.ComboBox.with_model (liststore);\n"
+"\t\tGtk.CellRendererText cell = new Gtk.CellRendererText ();\n"
+"\t\tcombobox.pack_start (cell, false);\n"
+"\n"
+"\t\tcombobox.set_attributes (cell, \"text\", Column.DISTRO);\n"
+"\n"
+"\t\t/* Set the first item in the list to be selected (active). */\n"
+"\t\tcombobox.set_active (0);\n"
+"\n"
+"\t\t/* Connect the 'changed' signal of the combobox\n"
+"\t\t * to the signal handler (aka. callback function).\n"
+"\t\t */\n"
+"\t\tcombobox.changed.connect (this.item_changed);\n"
+"\n"
+"\t\t/* Add the combobox to this window */\n"
+"\t\tthis.add (combobox);\n"
+"\t\tcombobox.show ();\n"
+"\t}\n"
+"\n"
+"\t/* Signal handler for the 'changed' signal of the combobox. */\n"
+"\tvoid item_changed (Gtk.ComboBox combo) {\n"
+"\t\tif (combo.get_active () !=0) {\n"
+"\t\t\tprint (\"You chose \" + distros [combo.get_active ()] +\"\\n\");\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application */\n"
+"class MyApplication : Gtk.Application {\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the activate signal of GLib.Application,\n"
+"\t * which is inherited by Gtk.Application.\n"
+"\t */\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t/* Create the window of this application\n"
+"\t\t * and show it.\n"
+"\t\t */\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application */\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/combobox.vala.page:30 C/treeview_simple_liststore.vala.page:33
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ListStore.html\">Gtk."
+"ListStore</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ListStore.html\">Gtk."
+"ListStore</link>"
+
+#. (itstool) path: item/p
+#: C/combobox.vala.page:31
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ComboBox.html\">Gtk."
+"ComboBox</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ComboBox.html\">Gtk."
+"ComboBox</link>"
+
+#. (itstool) path: item/p
+#: C/combobox.vala.page:32
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererText.html\">Gtk."
+"CellRendererText</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererText.html\">Gtk."
+"CellRendererText</link>"
+
+#. (itstool) path: item/p
+#: C/combobox.vala.page:33
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellLayout.set_attributes."
+"html\">set_attributes</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellLayout.set_attributes."
+"html\">set_attributes</link>"
+
+#. (itstool) path: page/title
+#: C/combobox_multicolumn.py.page:22 C/combobox_multicolumn.vala.page:22
+msgid "ComboBox (two columns)"
+msgstr "ComboBox (dos columnas)"
+
+#. (itstool) path: section/code
+#: C/combobox_multicolumn.py.page:30
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"actions = [[\"Select\", None],\n"
+" [\"New\", Gtk.STOCK_NEW],\n"
+" [\"Open\", Gtk.STOCK_OPEN],\n"
+" [\"Save\", Gtk.STOCK_SAVE]]\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+" self.set_default_size(200, -1)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # the data in the model, of type string on two columns\n"
+" listmodel = Gtk.ListStore(str, str)\n"
+" # append the data\n"
+" for i in range(len(actions)):\n"
+" listmodel.append(actions[i])\n"
+"\n"
+" # a combobox to see the data stored in the model\n"
+" combobox = Gtk.ComboBox(model=listmodel)\n"
+"\n"
+" # cellrenderers to render the data\n"
+" renderer_pixbuf = Gtk.CellRendererPixbuf()\n"
+" renderer_text = Gtk.CellRendererText()\n"
+"\n"
+" # we pack the cell into the beginning of the combobox, allocating\n"
+" # no more space than needed;\n"
+" # first the image, then the text;\n"
+" # note that it does not matter in which order they are in the model,\n"
+" # the visualization is decided by the order of the cellrenderers\n"
+" combobox.pack_start(renderer_pixbuf, False)\n"
+" combobox.pack_start(renderer_text, False)\n"
+"\n"
+" # associate a property of the cellrenderer to a column in the model\n"
+" # used by the combobox\n"
+" combobox.add_attribute(renderer_text, \"text\", 0)\n"
+" combobox.add_attribute(renderer_pixbuf, \"stock_id\", 1)\n"
+"\n"
+" # the first row is the active one at the beginning\n"
+" combobox.set_active(0)\n"
+"\n"
+" # connect the signal emitted when a row is selected to the callback\n"
+" # function\n"
+" combobox.connect(\"changed\", self.on_changed)\n"
+"\n"
+" # add the combobox to the window\n"
+" self.add(combobox)\n"
+"\n"
+" def on_changed(self, combo):\n"
+" # if the row selected is not the first one, write on the terminal\n"
+" # the value of the first column in the model\n"
+" if combo.get_active() != 0:\n"
+" print(\"You chose \" + str(actions[combo.get_active()][0]) + \"\\n\")\n"
+" return True\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"actions = [[\"Select\", None],\n"
+" [\"New\", Gtk.STOCK_NEW],\n"
+" [\"Open\", Gtk.STOCK_OPEN],\n"
+" [\"Save\", Gtk.STOCK_SAVE]]\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+" self.set_default_size(200, -1)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # the data in the model, of type string on two columns\n"
+" listmodel = Gtk.ListStore(str, str)\n"
+" # append the data\n"
+" for i in range(len(actions)):\n"
+" listmodel.append(actions[i])\n"
+"\n"
+" # a combobox to see the data stored in the model\n"
+" combobox = Gtk.ComboBox(model=listmodel)\n"
+"\n"
+" # cellrenderers to render the data\n"
+" renderer_pixbuf = Gtk.CellRendererPixbuf()\n"
+" renderer_text = Gtk.CellRendererText()\n"
+"\n"
+" # we pack the cell into the beginning of the combobox, allocating\n"
+" # no more space than needed;\n"
+" # first the image, then the text;\n"
+" # note that it does not matter in which order they are in the model,\n"
+" # the visualization is decided by the order of the cellrenderers\n"
+" combobox.pack_start(renderer_pixbuf, False)\n"
+" combobox.pack_start(renderer_text, False)\n"
+"\n"
+" # associate a property of the cellrenderer to a column in the model\n"
+" # used by the combobox\n"
+" combobox.add_attribute(renderer_text, \"text\", 0)\n"
+" combobox.add_attribute(renderer_pixbuf, \"stock_id\", 1)\n"
+"\n"
+" # the first row is the active one at the beginning\n"
+" combobox.set_active(0)\n"
+"\n"
+" # connect the signal emitted when a row is selected to the callback\n"
+" # function\n"
+" combobox.connect(\"changed\", self.on_changed)\n"
+"\n"
+" # add the combobox to the window\n"
+" self.add(combobox)\n"
+"\n"
+" def on_changed(self, combo):\n"
+" # if the row selected is not the first one, write on the terminal\n"
+" # the value of the first column in the model\n"
+" if combo.get_active() != 0:\n"
+" print(\"You chose \" + str(actions[combo.get_active()][0]) + \"\\n\")\n"
+" return True\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/p
+#: C/combobox_multicolumn.py.page:37
+msgid ""
+"In line 45 the <code>\"changed\"</code> signal is connected to the callback "
+"function <code>on_changed()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 45 la señal <code>«changed»</code> se conecta a la función de "
+"retorno de llamada <code>on_changed()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
+"explicación más detallada."
+
+#. (itstool) path: item/p
+#: C/combobox_multicolumn.py.page:47
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererPixbuf."
+"html\">GtkCellRendererPixbuf</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererPixbuf."
+"html\">GtkCellRendererPixbuf</link>"
+
+#. (itstool) path: item/p
+#: C/combobox_multicolumn.py.page:48 C/combobox_multicolumn.vala.page:42
+#: C/toolbar.py.page:58
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/gtk3-Stock-Items.html"
+"\">Stock Items</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/gtk3-Stock-Items.html"
+"\">Elementos del almacén</link>"
+
+#. (itstool) path: section/code
+#: C/combobox_multicolumn.vala.page:30
+#, no-wrap
+msgid ""
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tstring[] file = {\"Select\", \"New\", \"Open\", \"Save\"};\n"
+"\tstring[] stock_item = {\"\",\"gtk-new\", \"gtk-open\", \"gtk-save\"};\n"
+"\n"
+"\tenum Column {\n"
+"\t\tFILE,\n"
+"\t\tSTOCK_ITEM\t\n"
+"\t}\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
+"\n"
+"\t\tthis.set_default_size (200, -1);\n"
+"\t\tthis.border_width = 10;\n"
+"\n"
+"\t\tGtk.ListStore liststore = new Gtk.ListStore (2, typeof (string), typeof (string));\n"
+"\n"
+"\t\tfor (int i = 0; i < file.length; i++){\n"
+"\t\t\tGtk.TreeIter iter;\n"
+"\t\t\tliststore.append (out iter);\n"
+"\t\t\tliststore.set (iter, Column.FILE, file[i]);\n"
+"\t\t\tliststore.set (iter, Column.STOCK_ITEM, stock_item[i]);\n"
+"\t\t}\n"
+"\n"
+"\t\tGtk.ComboBox combobox = new Gtk.ComboBox.with_model (liststore);\n"
+"\n"
+"\t\t/* CellRenderers render the data. */\n"
+"\t\tGtk.CellRendererText cell = new Gtk.CellRendererText ();\n"
+"\t\tGtk.CellRendererPixbuf cell_pb = new Gtk.CellRendererPixbuf ();\n"
+"\t\t\n"
+" /* we pack the cell into the beginning of the combobox, allocating\n"
+"\t\t * no more space than needed;\n"
+"\t\t * first the image, then the text;\n"
+"\t\t * note that it does not matter in which order they are in the model,\n"
+"\t\t * the visualization is decided by the order of the cellrenderers\n"
+"\t\t */\n"
+"\t\tcombobox.pack_start (cell_pb, false);\n"
+"\t\tcombobox.pack_start (cell, false);\n"
+"\n"
+"\t\t/* associate a property of the cellrenderer to a column in the model\n"
+"\t\t * used by the combobox\n"
+"\t\t */\n"
+"\t\tcombobox.set_attributes (cell_pb, \"stock_id\", Column.STOCK_ITEM);\n"
+"\t\tcombobox.set_attributes (cell, \"text\", Column.FILE);\n"
+"\n"
+"\t\t/* Set the first item in the list to be selected (active). */\n"
+"\t\tcombobox.set_active (0);\n"
+"\n"
+"\t\t/* Connect the 'changed' signal of the combobox\n"
+"\t\t * to the signal handler (aka. callback function).\n"
+"\t\t */\n"
+"\t\tcombobox.changed.connect (this.item_changed);\n"
+"\n"
+"\t\t/* Add the combobox to this window */\n"
+"\t\tthis.add (combobox);\n"
+"\t\tcombobox.show ();\n"
+"\t}\n"
+"\n"
+"\tvoid item_changed (Gtk.ComboBox combo) {\n"
+"\t\tif (combo.get_active () !=0) {\n"
+"\t\t\tprint (\"You chose \" + file [combo.get_active ()] +\"\\n\");\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"class MyApplication : Gtk.Application {\n"
+" protected override void activate () {\n"
+" new MyWindow (this).show ();\n"
+" }\n"
+"}\n"
+"\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tstring[] file = {\"Select\", \"New\", \"Open\", \"Save\"};\n"
+"\tstring[] stock_item = {\"\",\"gtk-new\", \"gtk-open\", \"gtk-save\"};\n"
+"\n"
+"\tenum Column {\n"
+"\t\tFILE,\n"
+"\t\tSTOCK_ITEM\t\n"
+"\t}\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
+"\n"
+"\t\tthis.set_default_size (200, -1);\n"
+"\t\tthis.border_width = 10;\n"
+"\n"
+"\t\tGtk.ListStore liststore = new Gtk.ListStore (2, typeof (string), typeof (string));\n"
+"\n"
+"\t\tfor (int i = 0; i < file.length; i++){\n"
+"\t\t\tGtk.TreeIter iter;\n"
+"\t\t\tliststore.append (out iter);\n"
+"\t\t\tliststore.set (iter, Column.FILE, file[i]);\n"
+"\t\t\tliststore.set (iter, Column.STOCK_ITEM, stock_item[i]);\n"
+"\t\t}\n"
+"\n"
+"\t\tGtk.ComboBox combobox = new Gtk.ComboBox.with_model (liststore);\n"
+"\n"
+"\t\t/* CellRenderers render the data. */\n"
+"\t\tGtk.CellRendererText cell = new Gtk.CellRendererText ();\n"
+"\t\tGtk.CellRendererPixbuf cell_pb = new Gtk.CellRendererPixbuf ();\n"
+"\t\t\n"
+" /* we pack the cell into the beginning of the combobox, allocating\n"
+"\t\t * no more space than needed;\n"
+"\t\t * first the image, then the text;\n"
+"\t\t * note that it does not matter in which order they are in the model,\n"
+"\t\t * the visualization is decided by the order of the cellrenderers\n"
+"\t\t */\n"
+"\t\tcombobox.pack_start (cell_pb, false);\n"
+"\t\tcombobox.pack_start (cell, false);\n"
+"\n"
+"\t\t/* associate a property of the cellrenderer to a column in the model\n"
+"\t\t * used by the combobox\n"
+"\t\t */\n"
+"\t\tcombobox.set_attributes (cell_pb, \"stock_id\", Column.STOCK_ITEM);\n"
+"\t\tcombobox.set_attributes (cell, \"text\", Column.FILE);\n"
+"\n"
+"\t\t/* Set the first item in the list to be selected (active). */\n"
+"\t\tcombobox.set_active (0);\n"
+"\n"
+"\t\t/* Connect the 'changed' signal of the combobox\n"
+"\t\t * to the signal handler (aka. callback function).\n"
+"\t\t */\n"
+"\t\tcombobox.changed.connect (this.item_changed);\n"
+"\n"
+"\t\t/* Add the combobox to this window */\n"
+"\t\tthis.add (combobox);\n"
+"\t\tcombobox.show ();\n"
+"\t}\n"
+"\n"
+"\tvoid item_changed (Gtk.ComboBox combo) {\n"
+"\t\tif (combo.get_active () !=0) {\n"
+"\t\t\tprint (\"You chose \" + file [combo.get_active ()] +\"\\n\");\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"class MyApplication : Gtk.Application {\n"
+" protected override void activate () {\n"
+" new MyWindow (this).show ();\n"
+" }\n"
+"}\n"
+"\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/combobox_multicolumn.vala.page:38
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ComboBox.html"
+"\">GtkComboBox</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ComboBox.html"
+"\">GtkComboBox</link>"
+
+#. (itstool) path: item/p
+#: C/combobox_multicolumn.vala.page:39
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ListStore.html"
+"\">GtkListStore</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ListStore.html"
+"\">GtkListStore</link>"
+
+#. (itstool) path: item/p
+#: C/combobox_multicolumn.vala.page:40
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererText.html"
+"\">GtkCellRendererText</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererText.html"
+"\">GtkCellRendererText</link>"
+
+#. (itstool) path: item/p
+#: C/combobox_multicolumn.vala.page:41
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererPixbuf.html"
+"\">GtkCellRendererPixbuf</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.CellRendererPixbuf.html"
+"\">GtkCellRendererPixbuf</link>"
+
+#. (itstool) path: info/title
+#: C/cpp.page:7
+msgctxt "link"
+msgid "C++"
+msgstr "C++"
+
+#. (itstool) path: page/title
+#: C/cpp.page:16
+msgid "Code samples and platform demos in C++"
+msgstr "Ejemplos de código y demostraciones de la plataforma en C++"
+
+#. (itstool) path: section/title
+#: C/cpp.page:21 C/js.page:36 C/py.page:39 C/vala.page:30
+msgid "Examples of applications"
+msgstr "Ejemplos de aplicaciones"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/dialog.c.page:25 C/dialog.js.page:22 C/dialog.py.page:24
+#: C/dialog.vala.page:22
+msgctxt "_"
+msgid "external ref='media/dialog.png' md5='c90a33386a600e892fe623d4072c8c38'"
+msgstr "external ref='media/dialog.png' md5='c90a33386a600e892fe623d4072c8c38'"
+
+#. (itstool) path: info/title
+#: C/dialog.c.page:8
+msgctxt "text"
+msgid "Dialog (C)"
+msgstr "Diálogo (C)"
+
+#. (itstool) path: info/desc
+#: C/dialog.c.page:20 C/dialog.js.page:18 C/dialog.py.page:20
+#: C/dialog.vala.page:18
+msgid "A popup window"
+msgstr "Una ventana emergente"
+
+#. (itstool) path: page/title
+#: C/dialog.c.page:23 C/dialog.js.page:21 C/dialog.py.page:23
+#: C/dialog.vala.page:21
+msgid "Dialog"
+msgstr "Diálogo"
+
+#. (itstool) path: page/p
+#: C/dialog.c.page:26
+msgid "A dialog window that pops up when a button is pressed."
+msgstr "Una ventana de diálogo que aparece cuando se pulsa un botón"
+
+#. (itstool) path: page/code
+#: C/dialog.c.page:28
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+" \n"
+"\n"
+"/*Callback function in which reacts to the \"response\" signal. Be sure to place \n"
+"it before the function it is called in*/\n"
+"static void\n"
+"on_response (GtkDialog *dialog,\n"
+" gint response_id,\n"
+" gpointer user_data)\n"
+"{\n"
+" /*For demonstration purposes, this will show the int value \n"
+" of the response type*/\n"
+" g_print (\"response is %d\\n\", response_id);\n"
+" \n"
+" /*This will cause the dialog to be destroyed*/\n"
+" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/*Callback function in which reacts to the \"clicked\" signal*/\n"
+"static void\n"
+"show_dialog (GtkButton *button,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWindow *window = user_data;\n"
+" GtkWidget *dialog;\n"
+" GtkWidget *content_area;\n"
+" GtkWidget *label;\n"
+"\n"
+" gint response_id;\n"
+"\n"
+" /*Create the dialog window. Modal windows prevent interaction with other \n"
+" windows in the same application*/\n"
+" dialog = gtk_dialog_new_with_buttons (\"A Gtk+ Dialog\", \n"
+" window, \n"
+" GTK_DIALOG_MODAL, \n"
+" GTK_STOCK_OK, \n"
+" GTK_RESPONSE_OK, \n"
+" NULL);\n"
+"\n"
+" /*Create a label and attach it to the content area of the dialog*/\n"
+" content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));\n"
+" label = gtk_label_new (\"This demonstrates a dialog with a label\");\n"
+" gtk_container_add (GTK_CONTAINER (content_area), label);\n"
+"\n"
+" /*The main purpose of this is to show dialog's child widget, label*/\n"
+" gtk_widget_show_all (dialog);\n"
+" \n"
+" /*Connecting the \"response\" signal from the user to the associated\n"
+" callback function*/\n"
+" g_signal_connect (GTK_DIALOG (dialog), \n"
+" \"response\", \n"
+" G_CALLBACK (on_response), \n"
+" NULL);\n"
+"\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *button;\n"
+" \n"
+" /*Create a window with a title and a default size*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"GNOME Button\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n"
+"\n"
+" /*Create a button with a label, and add it to the window*/\n"
+" button = gtk_button_new_with_label (\"Click Me\");\n"
+" gtk_container_add (GTK_CONTAINER (window), button);\n"
+" \n"
+" /*Connecting the clicked signal to the callback*/\n"
+" g_signal_connect (GTK_BUTTON (button), \n"
+" \"clicked\", \n"
+" G_CALLBACK (show_dialog), \n"
+" GTK_WINDOW (window));\n"
+" \n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+" \n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+" \n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" \n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+" \n"
+"\n"
+"/*Callback function in which reacts to the \"response\" signal. Be sure to place \n"
+"it before the function it is called in*/\n"
+"static void\n"
+"on_response (GtkDialog *dialog,\n"
+" gint response_id,\n"
+" gpointer user_data)\n"
+"{\n"
+" /*For demonstration purposes, this will show the int value \n"
+" of the response type*/\n"
+" g_print (\"response is %d\\n\", response_id);\n"
+" \n"
+" /*This will cause the dialog to be destroyed*/\n"
+" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/*Callback function in which reacts to the \"clicked\" signal*/\n"
+"static void\n"
+"show_dialog (GtkButton *button,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWindow *window = user_data;\n"
+" GtkWidget *dialog;\n"
+" GtkWidget *content_area;\n"
+" GtkWidget *label;\n"
+"\n"
+" gint response_id;\n"
+"\n"
+" /*Create the dialog window. Modal windows prevent interaction with other \n"
+" windows in the same application*/\n"
+" dialog = gtk_dialog_new_with_buttons (\"A Gtk+ Dialog\", \n"
+" window, \n"
+" GTK_DIALOG_MODAL, \n"
+" GTK_STOCK_OK, \n"
+" GTK_RESPONSE_OK, \n"
+" NULL);\n"
+"\n"
+" /*Create a label and attach it to the content area of the dialog*/\n"
+" content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));\n"
+" label = gtk_label_new (\"This demonstrates a dialog with a label\");\n"
+" gtk_container_add (GTK_CONTAINER (content_area), label);\n"
+"\n"
+" /*The main purpose of this is to show dialog's child widget, label*/\n"
+" gtk_widget_show_all (dialog);\n"
+" \n"
+" /*Connecting the \"response\" signal from the user to the associated\n"
+" callback function*/\n"
+" g_signal_connect (GTK_DIALOG (dialog), \n"
+" \"response\", \n"
+" G_CALLBACK (on_response), \n"
+" NULL);\n"
+"\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *button;\n"
+" \n"
+" /*Create a window with a title and a default size*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"GNOME Button\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n"
+"\n"
+" /*Create a button with a label, and add it to the window*/\n"
+" button = gtk_button_new_with_label (\"Click Me\");\n"
+" gtk_container_add (GTK_CONTAINER (window), button);\n"
+" \n"
+" /*Connecting the clicked signal to the callback*/\n"
+" g_signal_connect (GTK_BUTTON (button), \n"
+" \"clicked\", \n"
+" G_CALLBACK (show_dialog), \n"
+" GTK_WINDOW (window));\n"
+" \n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+" \n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+" \n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" \n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/dialog.c.page:36
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkDialog.html"
+"\">GtkDialog</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkDialog.html"
+"\">GtkDialog</link>"
+
+#. (itstool) path: item/p
+#: C/dialog.c.page:37 C/radiobutton.c.page:36 C/spinbutton.c.page:38
+#: C/switch.c.page:35
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkLabel.html"
+"\">GtkLabel</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkLabel.html"
+"\">GtkLabel</link>"
+
+#. (itstool) path: info/title
+#: C/dialog.js.page:8
+msgctxt "text"
+msgid "Dialog (JavaScript)"
+msgstr "Diálogo (JavaScript)"
+
+#. (itstool) path: page/p
+#: C/dialog.js.page:23
+msgid ""
+"A customizable popup window, which has a content area and an action area. "
+"This example dialog's content area contains a short message, and its action "
+"area contains a button which dismisses the dialog."
+msgstr ""
+"Una ventana emergente personalizable, que contiene un área de contenido y un "
+"área de acción. Esta área de contenido del diálogo de ejemplo contiene un "
+"mensaje, y su área de acción contiene un botón que cierra el diálogo."
+
+#. (itstool) path: page/code
+#: C/dialog.js.page:25
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const DialogExample = new Lang.Class ({\n"
+" Name: 'Dialog Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jsdialog',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Gtk.Dialog Example\",\n"
+" default_height: 50,\n"
+" default_width: 250 });\n"
+"\n"
+" // Create a button\n"
+" this._button = new Gtk.Button ({label: \"Click Me\"});\n"
+" this._window.add (this._button);\n"
+"\n"
+" // Bind it to the function that creates the dialog\n"
+" this._button.connect (\"clicked\", Lang.bind(this, this._createDialog));\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" _createDialog: function () {\n"
+"\n"
+" // Create the dialog\n"
+" this._dialog = new Gtk.Dialog ({ transient_for: this._window,\n"
+" modal: true,\n"
+" title: \"A Gtk+ dialog\" });\n"
+"\n"
+" // Create the dialog's content area, which contains a message\n"
+" this._contentArea = this._dialog.get_content_area();\n"
+" this._message = new Gtk.Label ({label: \"This demonstrates a dialog with a label\"});\n"
+" this._contentArea.add (this._message);\n"
+"\n"
+" // Create the dialog's action area, which contains a stock OK button\n"
+" this._actionArea = this._dialog.get_action_area();\n"
+" this._OKButton = Gtk.Button.new_from_stock (Gtk.STOCK_OK);\n"
+" this._actionArea.add (this._OKButton);\n"
+"\n"
+" // Connect the button to the function that handles what it does\n"
+" this._OKButton.connect (\"clicked\", Lang.bind (this, this._OKHandler));\n"
+"\n"
+" this._dialog.show_all();\n"
+" },\n"
+"\n"
+" _OKHandler: function (dialog, response_id) {\n"
+"\n"
+" // Destroy the dialog\n"
+" this._dialog.destroy();\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new DialogExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const DialogExample = new Lang.Class ({\n"
+" Name: 'Dialog Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jsdialog',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Gtk.Dialog Example\",\n"
+" default_height: 50,\n"
+" default_width: 250 });\n"
+"\n"
+" // Create a button\n"
+" this._button = new Gtk.Button ({label: \"Click Me\"});\n"
+" this._window.add (this._button);\n"
+"\n"
+" // Bind it to the function that creates the dialog\n"
+" this._button.connect (\"clicked\", Lang.bind(this, this._createDialog));\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" _createDialog: function () {\n"
+"\n"
+" // Create the dialog\n"
+" this._dialog = new Gtk.Dialog ({ transient_for: this._window,\n"
+" modal: true,\n"
+" title: \"A Gtk+ dialog\" });\n"
+"\n"
+" // Create the dialog's content area, which contains a message\n"
+" this._contentArea = this._dialog.get_content_area();\n"
+" this._message = new Gtk.Label ({label: \"This demonstrates a dialog with a label\"});\n"
+" this._contentArea.add (this._message);\n"
+"\n"
+" // Create the dialog's action area, which contains a stock OK button\n"
+" this._actionArea = this._dialog.get_action_area();\n"
+" this._OKButton = Gtk.Button.new_from_stock (Gtk.STOCK_OK);\n"
+" this._actionArea.add (this._OKButton);\n"
+"\n"
+" // Connect the button to the function that handles what it does\n"
+" this._OKButton.connect (\"clicked\", Lang.bind (this, this._OKHandler));\n"
+"\n"
+" this._dialog.show_all();\n"
+" },\n"
+"\n"
+" _OKHandler: function (dialog, response_id) {\n"
+"\n"
+" // Destroy the dialog\n"
+" this._dialog.destroy();\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new DialogExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/dialog.js.page:32
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Dialog.html"
+"\">Gtk.Dialog</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Dialog.html"
+"\">Gtk.Dialog</link>"
+
+#. (itstool) path: info/title
+#: C/dialog.py.page:8
+msgctxt "text"
+msgid "Dialog (Python)"
+msgstr "Diálogo (Python)"
+
+#. (itstool) path: page/p
+#: C/dialog.py.page:25
+msgid "A dialog with the response signal connected to a callback function."
+msgstr ""
+"Un diálogo con la señal de respuesta conectada a una función de retorno de "
+"llamada."
+
+#. (itstool) path: section/code
+#: C/dialog.py.page:32
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # construct a window (the parent window)\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"GNOME Button\", application=app)\n"
+" self.set_default_size(250, 50)\n"
+"\n"
+" # a button on the parent window\n"
+" button = Gtk.Button(\"Click me\")\n"
+" # connect the signal \"clicked\" of the button with the function\n"
+" # on_button_click()\n"
+" button.connect(\"clicked\", self.on_button_click)\n"
+" # add the button to the window\n"
+" self.add(button)\n"
+"\n"
+" # callback function for the signal \"clicked\" of the button in the parent\n"
+" # window\n"
+" def on_button_click(self, widget):\n"
+" # create a Gtk.Dialog\n"
+" dialog = Gtk.Dialog()\n"
+" dialog.set_title(\"A Gtk+ Dialog\")\n"
+" # The window defined in the constructor (self) is the parent of the dialog.\n"
+" # Furthermore, the dialog is on top of the parent window\n"
+" dialog.set_transient_for(self)\n"
+" # set modal true: no interaction with other windows of the application\n"
+" dialog.set_modal(True)\n"
+" # add a button to the dialog window\n"
+" dialog.add_button(button_text=\"OK\", response_id=Gtk.ResponseType.OK)\n"
+" # connect the \"response\" signal (the button has been clicked) to the\n"
+" # function on_response()\n"
+" dialog.connect(\"response\", self.on_response)\n"
+"\n"
+" # get the content area of the dialog, add a label to it\n"
+" content_area = dialog.get_content_area()\n"
+" label = Gtk.Label(\"This demonstrates a dialog with a label\")\n"
+" content_area.add(label)\n"
+" # show the dialog\n"
+" dialog.show_all()\n"
+"\n"
+" def on_response(self, widget, response_id):\n"
+" print(\"response_id is\", response_id)\n"
+" # destroy the widget (the dialog) when the function on_response() is called\n"
+" # (that is, when the button of the dialog has been clicked)\n"
+" widget.destroy()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # construct a window (the parent window)\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"GNOME Button\", application=app)\n"
+" self.set_default_size(250, 50)\n"
+"\n"
+" # a button on the parent window\n"
+" button = Gtk.Button(\"Click me\")\n"
+" # connect the signal \"clicked\" of the button with the function\n"
+" # on_button_click()\n"
+" button.connect(\"clicked\", self.on_button_click)\n"
+" # add the button to the window\n"
+" self.add(button)\n"
+"\n"
+" # callback function for the signal \"clicked\" of the button in the parent\n"
+" # window\n"
+" def on_button_click(self, widget):\n"
+" # create a Gtk.Dialog\n"
+" dialog = Gtk.Dialog()\n"
+" dialog.set_title(\"A Gtk+ Dialog\")\n"
+" # The window defined in the constructor (self) is the parent of the dialog.\n"
+" # Furthermore, the dialog is on top of the parent window\n"
+" dialog.set_transient_for(self)\n"
+" # set modal true: no interaction with other windows of the application\n"
+" dialog.set_modal(True)\n"
+" # add a button to the dialog window\n"
+" dialog.add_button(button_text=\"OK\", response_id=Gtk.ResponseType.OK)\n"
+" # connect the \"response\" signal (the button has been clicked) to the\n"
+" # function on_response()\n"
+" dialog.connect(\"response\", self.on_response)\n"
+"\n"
+" # get the content area of the dialog, add a label to it\n"
+" content_area = dialog.get_content_area()\n"
+" label = Gtk.Label(\"This demonstrates a dialog with a label\")\n"
+" content_area.add(label)\n"
+" # show the dialog\n"
+" dialog.show_all()\n"
+"\n"
+" def on_response(self, widget, response_id):\n"
+" print(\"response_id is\", response_id)\n"
+" # destroy the widget (the dialog) when the function on_response() is called\n"
+" # (that is, when the button of the dialog has been clicked)\n"
+" widget.destroy()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/dialog.py.page:37
+msgid "Useful methods for a Dialog widget"
+msgstr "Métodos útiles para un widget «Dialog»"
+
+#. (itstool) path: section/p
+#: C/dialog.py.page:38
+msgid ""
+"In line 16 the signal <code>\"clicked\"</code> is connected to the callback "
+"function <code>on_button_click()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 16, la señal <code>«clicked»</code> se conecta a la función de "
+"retorno de llamada <code>on_button_click()</code> usando <code><var>widget</"
+"var>.connect(<var>señal</var>, <var>función de retorno de llamada</var>)</"
+"code>. Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
+"explicación más detallada."
+
+#. (itstool) path: item/p
+#: C/dialog.py.page:40
+msgid ""
+"Instead of <code>set_modal(True)</code> we could have "
+"<code>set_modal(False)</code> followed by "
+"<code>set_destroy_with_parent(True)</code> that would destroy the dialog "
+"window if the main window is closed."
+msgstr ""
+"En lugar de <code>set_modal(True)</code> se podría tener "
+"<code>set_modal(False)</code> seguido de "
+"<code>set_destroy_with_parent(True)</code> que destruiría la ventana de "
+"diálogo si se cerrara la ventana principal."
+
+#. (itstool) path: item/p
+#: C/dialog.py.page:41
+msgid ""
+"<code>add_button(button_text=\"The Answer\", response_id=42)</code>, where "
+"<code>42</code> is any integer, is an alternative to "
+"<code>add_button(button_text=\"text\", response_id=Gtk.ResponseType."
+"RESPONSE)</code>, where <code>RESPONSE</code> could be one of <code>OK, "
+"CANCEL, CLOSE, YES, NO, APPLY, HELP</code>, which in turn correspond to the "
+"integers <code>-5, -6,..., -11</code>."
+msgstr ""
+"<code>add_button(button_text=\"La respuesta\", response_id=42)</code>, donde "
+"<code>42</code> es cualquier entero, es una alternativa a "
+"<code>add_button(button_text=\"texto\", response_id=Gtk.ResponseType."
+"RESPUESTA)</code>, donde <code>RESPUESTA</code> podría ser <code>OK, CANCEL, "
+"CLOSE, YES, NO, APPLY, HELP</code>, que a su vez corresponden a los enteros "
+"<code>-5, -6,..., -11</code>."
+
+#. (itstool) path: item/p
+#: C/dialog.py.page:51 C/messagedialog.py.page:60
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkDialog.html"
+"\">GtkDialog</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkDialog.html"
+"\">GtkDialog</link>"
+
+#. (itstool) path: info/title
+#: C/dialog.vala.page:8
+msgctxt "text"
+msgid "Dialog (Vala)"
+msgstr "Diálogo (Vala)"
+
+#. (itstool) path: page/p
+#: C/dialog.vala.page:23
+msgid "A dialog with the response signal hooked up to a callback function."
+msgstr ""
+"Un diálogo con la señal de respuesta enlazada a una función de retorno de "
+"llamada."
+
+#. (itstool) path: page/code
+#: C/dialog.vala.page:25
+#, no-wrap
+msgid ""
+"\n"
+"/* A window in the application. */\n"
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"GNOME Button\");\n"
+"\n"
+"\t\tthis.window_position = Gtk.WindowPosition.CENTER;\n"
+"\t\tthis.set_default_size (250,50);\n"
+"\n"
+"\t\tvar button = new Gtk.Button.with_label (\"Click Me\");\n"
+"\n"
+"\t\t/* Connect the button's \"clicked\" signal to\n"
+"\t\t * the signal handler (aka. this.callback function).\n"
+"\t\t */\n"
+"\t\tbutton.clicked.connect (this.on_button_click);\n"
+"\n"
+"\t\t/* Add the button to this window and show it. */\n"
+"\t\tthis.add (button);\n"
+"\t\tbutton.show ();\n"
+"\t}\n"
+"\n"
+"\t/* The signal handler for the buttons 'clicked' signal. */\n"
+"\tvoid on_button_click (Gtk.Button button) {\n"
+"\t\tvar dialog = new Gtk.Dialog.with_buttons (\"A Gtk+ Dialog\", this,\n"
+" Gtk.DialogFlags.MODAL,\n"
+" Gtk.Stock.OK,\n"
+" Gtk.ResponseType.OK, null);\n"
+"\n"
+"\t\tvar content_area = dialog.get_content_area ();\n"
+"\t\tvar label = new Gtk.Label (\"This demonstrates a dialog with a label\");\n"
+"\n"
+"\t\tcontent_area.add (label);\n"
+"\n"
+"\t\t/* Connect the 'response' signal of the dialog\n"
+"\t\t * the signal handler. It is emitted when the dialog's\n"
+"\t\t * OK button is clicked.\n"
+"\t\t */\n"
+"\t\tdialog.response.connect (on_response);\n"
+"\n"
+"\t\t/* Show the dialog and all the widgets. */\n"
+"\t\tdialog.show_all ();\n"
+"\t}\n"
+"\n"
+"\t/* Signal handler for the 'response' signal of the dialog. */\n"
+" void on_response (Gtk.Dialog dialog, int response_id) {\n"
+"\n"
+" /* To see the int value of the ResponseType. This is only\n"
+"\t\t * for demonstration purposes.*/\n"
+" print (\"response is %d\\n\", response_id);\n"
+"\n"
+"\t\t/* This causes the dialog to be destroyed. */\n"
+" dialog.destroy ();\n"
+" }\n"
+"\n"
+"}\n"
+"\n"
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\n"
+"\t/* The constructor of the application. */\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t/* Create a window for the this application and show it. */\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"\n"
+"/* A window in the application. */\n"
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"GNOME Button\");\n"
+"\n"
+"\t\tthis.window_position = Gtk.WindowPosition.CENTER;\n"
+"\t\tthis.set_default_size (250,50);\n"
+"\n"
+"\t\tvar button = new Gtk.Button.with_label (\"Click Me\");\n"
+"\n"
+"\t\t/* Connect the button's \"clicked\" signal to\n"
+"\t\t * the signal handler (aka. this.callback function).\n"
+"\t\t */\n"
+"\t\tbutton.clicked.connect (this.on_button_click);\n"
+"\n"
+"\t\t/* Add the button to this window and show it. */\n"
+"\t\tthis.add (button);\n"
+"\t\tbutton.show ();\n"
+"\t}\n"
+"\n"
+"\t/* The signal handler for the buttons 'clicked' signal. */\n"
+"\tvoid on_button_click (Gtk.Button button) {\n"
+"\t\tvar dialog = new Gtk.Dialog.with_buttons (\"A Gtk+ Dialog\", this,\n"
+" Gtk.DialogFlags.MODAL,\n"
+" Gtk.Stock.OK,\n"
+" Gtk.ResponseType.OK, null);\n"
+"\n"
+"\t\tvar content_area = dialog.get_content_area ();\n"
+"\t\tvar label = new Gtk.Label (\"This demonstrates a dialog with a label\");\n"
+"\n"
+"\t\tcontent_area.add (label);\n"
+"\n"
+"\t\t/* Connect the 'response' signal of the dialog\n"
+"\t\t * the signal handler. It is emitted when the dialog's\n"
+"\t\t * OK button is clicked.\n"
+"\t\t */\n"
+"\t\tdialog.response.connect (on_response);\n"
+"\n"
+"\t\t/* Show the dialog and all the widgets. */\n"
+"\t\tdialog.show_all ();\n"
+"\t}\n"
+"\n"
+"\t/* Signal handler for the 'response' signal of the dialog. */\n"
+" void on_response (Gtk.Dialog dialog, int response_id) {\n"
+"\n"
+" /* To see the int value of the ResponseType. This is only\n"
+"\t\t * for demonstration purposes.*/\n"
+" print (\"response is %d\\n\", response_id);\n"
+"\n"
+"\t\t/* This causes the dialog to be destroyed. */\n"
+" dialog.destroy ();\n"
+" }\n"
+"\n"
+"}\n"
+"\n"
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\n"
+"\t/* The constructor of the application. */\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t/* Create a window for the this application and show it. */\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/dialog.vala.page:32
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.html\">Gtk.Dialog</"
+"link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.html\">Gtk.Dialog</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/dialog.vala.page:33
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.Dialog.with_buttons."
+"html\">Gtk.Dialog.with_buttons</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.Dialog.with_buttons."
+"html\">Gtk.Dialog.with_buttons</link>"
+
+#. (itstool) path: item/p
+#: C/dialog.vala.page:34 C/label.vala.page:33
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Label.html\">Gtk.Label</"
+"link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Label.html\">Gtk.Label</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/dialog.vala.page:35
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.get_content_area.html"
+"\">get_content_area</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.get_content_area.html"
+"\">get_content_area</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/entry.c.page:23 C/entry.js.page:22 C/entry.py.page:29
+#: C/entry.vala.page:22
+msgctxt "_"
+msgid "external ref='media/entry.png' md5='8a828cffdcbaa4bad83342e109f28cc8'"
+msgstr "external ref='media/entry.png' md5='8a828cffdcbaa4bad83342e109f28cc8'"
+
+#. (itstool) path: info/title
+#: C/entry.c.page:8
+msgctxt "text"
+msgid "Entry (C)"
+msgstr "Entry (C)"
+
+#. (itstool) path: info/desc
+#: C/entry.c.page:18 C/entry.py.page:25 C/entry.vala.page:18
+msgid "A single line text entry field"
+msgstr "Un campo de entrada de texto de una sola línea"
+
+#. (itstool) path: page/title
+#: C/entry.c.page:21 C/entry.js.page:21 C/entry.py.page:28
+#: C/entry.vala.page:21
+msgid "Entry"
+msgstr "Entry"
+
+#. (itstool) path: page/p
+#: C/entry.c.page:24 C/entry.vala.page:23
+msgid "This application greets you in the terminal."
+msgstr "Esta aplicación le saluda en la terminal."
+
+#. (itstool) path: page/code
+#: C/entry.c.page:26
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/*This is the callback function. It is a handler function \n"
+"which reacts to the signal. In this case, it will grab the \n"
+"text input from the entry box and print out a line to the user.*/\n"
+"static void\n"
+"on_activate (GtkEntry *entry,\n"
+" gpointer user_data)\n"
+"{\n"
+" const char *name;\n"
+" name = gtk_entry_get_text (entry);\n"
+"\n"
+" g_print (\"\\nHello %s!\\n\\n\", name);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *entry_box;\n"
+"\n"
+" /*Create a window with a title, a default size, \n"
+" and a set border width*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"What is your name?\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n"
+" gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n"
+"\n"
+" /*Create a new entry box, and add it to the window*/\n"
+" entry_box = gtk_entry_new ();\n"
+" gtk_container_add (GTK_CONTAINER (window), entry_box);\n"
+"\n"
+" /*Connecting the activate signal to the callback*/\n"
+" g_signal_connect (GTK_ENTRY (entry_box), \"activate\", \n"
+" G_CALLBACK (on_activate), NULL);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/*This is the callback function. It is a handler function \n"
+"which reacts to the signal. In this case, it will grab the \n"
+"text input from the entry box and print out a line to the user.*/\n"
+"static void\n"
+"on_activate (GtkEntry *entry,\n"
+" gpointer user_data)\n"
+"{\n"
+" const char *name;\n"
+" name = gtk_entry_get_text (entry);\n"
+"\n"
+" g_print (\"\\nHello %s!\\n\\n\", name);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *entry_box;\n"
+"\n"
+" /*Create a window with a title, a default size, \n"
+" and a set border width*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"What is your name?\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n"
+" gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n"
+"\n"
+" /*Create a new entry box, and add it to the window*/\n"
+" entry_box = gtk_entry_new ();\n"
+" gtk_container_add (GTK_CONTAINER (window), entry_box);\n"
+"\n"
+" /*Connecting the activate signal to the callback*/\n"
+" g_signal_connect (GTK_ENTRY (entry_box), \"activate\", \n"
+" G_CALLBACK (on_activate), NULL);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: info/title
+#: C/entry.js.page:8
+msgctxt "text"
+msgid "Entry (JavaScript)"
+msgstr "Entry (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/entry.js.page:18
+msgid "A single-line text entry field"
+msgstr "Un campo de entrada de texto de una sola línea"
+
+#. (itstool) path: page/p
+#: C/entry.js.page:23
+msgid "This application greets you by name through a pop-up window."
+msgstr "Esta aplicación le saluda por su nombre con una ventana emergente."
+
+#. (itstool) path: page/code
+#: C/entry.js.page:25
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const EntryExample = new Lang.Class({\n"
+" Name: 'Entry Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsentry',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 100,\n"
+" default_width: 300,\n"
+" border_width: 10,\n"
+" title: \"What is your name?\"});\n"
+"\n"
+" // Create the text entry box\n"
+" this.entry = new Gtk.Entry ();\n"
+" this._window.add(this.entry);\n"
+"\n"
+" // Connect the text entry box to a function that responds to what you type in\n"
+" this.entry.connect(\"activate\", Lang.bind (this, this._hello));\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _hello: function() {\n"
+"\n"
+" // Create a popup dialog to greet the person who types in their name\n"
+" this._greeter = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" text: \"Hello, \" + this.entry.get_text() + \"!\",\n"
+" message_type: Gtk.MessageType.OTHER,\n"
+" buttons: Gtk.ButtonsType.OK,\n"
+" });\n"
+"\n"
+" // Show the popup dialog\n"
+" this._greeter.show();\n"
+"\n"
+" // Bind the OK button to the function that closes the popup\n"
+" this._greeter.connect (\"response\", Lang.bind(this, this._okClicked));\n"
+" },\n"
+"\n"
+" _okClicked: function () {\n"
+" this._greeter.destroy();\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new EntryExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const EntryExample = new Lang.Class({\n"
+" Name: 'Entry Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsentry',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 100,\n"
+" default_width: 300,\n"
+" border_width: 10,\n"
+" title: \"What is your name?\"});\n"
+"\n"
+" // Create the text entry box\n"
+" this.entry = new Gtk.Entry ();\n"
+" this._window.add(this.entry);\n"
+"\n"
+" // Connect the text entry box to a function that responds to what you type in\n"
+" this.entry.connect(\"activate\", Lang.bind (this, this._hello));\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _hello: function() {\n"
+"\n"
+" // Create a popup dialog to greet the person who types in their name\n"
+" this._greeter = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" text: \"Hello, \" + this.entry.get_text() + \"!\",\n"
+" message_type: Gtk.MessageType.OTHER,\n"
+" buttons: Gtk.ButtonsType.OK,\n"
+" });\n"
+"\n"
+" // Show the popup dialog\n"
+" this._greeter.show();\n"
+"\n"
+" // Bind the OK button to the function that closes the popup\n"
+" this._greeter.connect (\"response\", Lang.bind(this, this._okClicked));\n"
+" },\n"
+"\n"
+" _okClicked: function () {\n"
+" this._greeter.destroy();\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new EntryExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/entry.js.page:32
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Entry.html"
+"\">Gtk.Entry</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Entry.html"
+"\">Gtk.Entry</link>"
+
+#. (itstool) path: info/title
+#: C/entry.py.page:8
+msgctxt "text"
+msgid "Entry (Python)"
+msgstr "Entry (Python)"
+
+#. (itstool) path: credit/name
+#: C/entry.py.page:21 C/label.py.page:22 C/model-view-controller.py.page:16
+#: C/properties.py.page:16 C/signals-callbacks.py.page:16 C/strings.py.page:16
+#: C/textview.py.page:16 C/toolbar_builder.py.page:28
+msgid "Sebastian Pölsterl"
+msgstr "Sebastian Pölsterl"
+
+#. (itstool) path: credit/years
+#: C/entry.py.page:23 C/index.page:20 C/model-view-controller.py.page:18
+#: C/properties.py.page:18 C/signals-callbacks.py.page:18 C/strings.py.page:18
+#: C/textview.py.page:18 C/toolbar_builder.py.page:30
+msgid "2011"
+msgstr "2011"
+
+#. (itstool) path: page/p
+#: C/entry.py.page:30
+msgid "This application greets you in the terminal with the name you provide."
+msgstr "Esta aplicación le saluda en la terminal con el nombre que le indique."
+
+#. (itstool) path: section/code
+#: C/entry.py.page:36
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"What is your name?\", application=app)\n"
+" self.set_default_size(300, 100)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # a single line entry\n"
+" name_box = Gtk.Entry()\n"
+" # emits a signal when the Enter key is pressed, connected to the\n"
+" # callback function cb_activate\n"
+" name_box.connect(\"activate\", self.cb_activate)\n"
+"\n"
+" # add the Gtk.Entry to the window\n"
+" self.add(name_box)\n"
+"\n"
+" # the content of the entry is used to write in the terminal\n"
+" def cb_activate(self, entry):\n"
+" # retrieve the content of the widget\n"
+" name = entry.get_text()\n"
+" # print it in a nice form in the terminal\n"
+" print(\"Hello \" + name + \"!\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"What is your name?\", application=app)\n"
+" self.set_default_size(300, 100)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # a single line entry\n"
+" name_box = Gtk.Entry()\n"
+" # emits a signal when the Enter key is pressed, connected to the\n"
+" # callback function cb_activate\n"
+" name_box.connect(\"activate\", self.cb_activate)\n"
+"\n"
+" # add the Gtk.Entry to the window\n"
+" self.add(name_box)\n"
+"\n"
+" # the content of the entry is used to write in the terminal\n"
+" def cb_activate(self, entry):\n"
+" # retrieve the content of the widget\n"
+" name = entry.get_text()\n"
+" # print it in a nice form in the terminal\n"
+" print(\"Hello \" + name + \"!\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/entry.py.page:40
+msgid "Useful methods for an Entry widget"
+msgstr "Métodos útiles para un widget «Entry»"
+
+#. (itstool) path: section/p
+#: C/entry.py.page:41
+msgid ""
+"In line 14 the signal <code>\"activate\"</code> is connected to the callback "
+"function <code>cb_activate()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation. Some of the "
+"signals that a Gtk.Entry widget can emit are: <code>\"activate\"</code> "
+"(emitted when the user activates the Entry key); <code>\"backspace\"</code> "
+"(emitted when the user activates the Backspace or Shift-Backspace keys); "
+"<code>\"copy-clipboard\"</code> (Ctrl-c and Ctrl-Insert); <code>\"paste-"
+"clipboard\"</code> (Ctrl-v and Shift-Insert); <code>\"delete-from-cursor\"</"
+"code> (Delete, for deleting a character; Ctrl-Delete, for deleting a word); "
+"<code>\"icon-press\"</code> (emitted when the user clicks an activatable "
+"icon); <code>\"icon-release\"</code> (emitted on the button release from a "
+"mouse click over an activatable icon); <code>\"insert-at-cursor\"</code> "
+"(emitted when the user initiates the insertion of a fixed string at the "
+"cursor); <code>\"move-cursor\"</code> (emitted when the user initiates a "
+"cursor movement); <code>\"populate-popup\"</code> (emitted before showing "
+"the context menu of the entry; it can be used to add items to it)."
+msgstr ""
+"En la línea 14 la señal <code>«activate»</code> se conecta a la función de "
+"retorno de llamada <code>cb_activate()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
+"explicación más detallada. Algunas de las señales que un widget «Gtk.Entry» "
+"puede emitir son: <code>«activate»</code> (cuando el usuario pulsa la tecla "
+"«Intro»); <code>«backspace»</code> (cuando el usuario pulsa las teclas "
+"«Retroceso» o «Mayús-Retroceso»); <code>«copy-clipboard»</code> («Ctrl-C» y "
+"«Ctrl-Insert»); <code>«paste-clipboard»</code> («Ctrl-V» o «Mayús-Insert»); "
+"<code>«delete-from-cursor»</code> («Suprimir», para borrar un carácter; "
+"«Ctrl-Suprimir», para borrar una palabra); <code>«icon-press»</code> (cuando "
+"el usuario pulsa un icono activable); <code>«icon-release»</code> (cuando el "
+"botón del ratón se suelta sobre un icono activable); <code>«insert-at-"
+"cursor»</code> (cuando el usuario inicia la inserción de una cadena fija en "
+"el cursor); <code>«move-cursor»</code> (cuando el usuario inicia un "
+"movimiento del cursor); <code>«populate-popup»</code> (antes de mostrar el "
+"menú contextual de una entrada; puede usarse para añadirle elementos)."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:43
+msgid ""
+"<code>get_buffer()</code> and <code>set_buffer(buffer)</code>, where "
+"<code>buffer</code> is a Gtk.EntryBuffer object, can be used to get and set "
+"the buffer for the entry."
+msgstr ""
+"<code>get_buffer()</code> y <code>set_buffer(búfer)</code> donde "
+"<code>búfer</code> es un objeto «Gtk.EntryBuffer», pueden usarse para "
+"obtener y establecer el búfer de la entrada."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:44
+msgid ""
+"<code>get_text()</code> and <code>set_text(\"some text\")</code> can be used "
+"to get and set the content for the entry."
+msgstr ""
+"<code>get_text()</code> y <code>set_text(\"texto\")</code> pueden usarse "
+"para obtener y establecer el contenido de la entrada."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:45
+msgid "<code>get_text_length()</code> is self-explanatory."
+msgstr "<code>get_text_length()</code> obtiene la longitud del texto."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:46
+msgid ""
+"<code>get_text_area()</code> gets the area where the entry's text is drawn."
+msgstr ""
+"<code>get_text_area()</code> obtiene el área en la que se dibuja el texto de "
+"la entrada."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:47
+msgid ""
+"If we set <code>set_visibility(False)</code> the characters in the entry are "
+"displayed as the invisible char. This is the best available in the current "
+"font, but it can be changed with <code>set_invisible_char(ch)</code>, where "
+"<code>ch</code> is a Unicode charcater. The latter method is reversed by "
+"<code>unset_invisbile_char()</code>."
+msgstr ""
+"Si se establece <code>set_visibility(False)</code>, los caracteres en la "
+"entrada se muestran como caracteres invisibles. Este es el mejor disponible "
+"en la tipografía actual, pero puede cambiarse con "
+"<code>set_invisible_char(ch)</code>, donde <code>ch</code> es un carácter "
+"Unicode. El último método se revierte con <code>unset_invisbile_char()</"
+"code>."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:48
+msgid ""
+"<code>set_max_length(int)</code>, where <code>int</code> is an integer, "
+"truncates every entry longer than <code>int</code> to have the desired "
+"maximum length."
+msgstr ""
+"<code>set_max_length(int)</code>, donde <code>int</code> es un entero, "
+"trunca todas las entradas más largas que <code>int</code> para tener la "
+"longitud máxima deseada."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:49
+msgid ""
+"By default, if you press the Entry key the Gtk.Entry emits the signal <code>"
+"\"activate\"</code>. If you would like to activate the default widget for "
+"the window (set using <code>set_default(widget)</code> on the window), then "
+"use <code>set_activates_default(True)</code>."
+msgstr ""
+"De manera predeterminada, si presiona la tecla «Intro», el «Gtk.Entry» emite "
+"la señal <code>«activate»</code>. Si quisiera activar el widget "
+"predeterminado de la ventana (establecido usando <code>set_default(widget)</"
+"code> en la ventana), entonces use <code>set_activates_default(True)</code>."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:50
+msgid "To set a frame around the entry: <code>set_has_frame(True)</code>."
+msgstr ""
+"Para poner un marco alrededor de la entrada: <code>set_has_frame(True)</"
+"code>."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:51
+msgid ""
+"<code>set_placeholder_text(\"some text\")</code> sets the text to be "
+"displayed in the entry when it is empty and unfocused."
+msgstr ""
+"<code>set_placeholder_text(\"texto\")</code> establece el texto que mostrar "
+"en la entrada cuando esté vacía y sin foco."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:52
+msgid ""
+"<code>set_overwrite_mode(True)</code> and <code>set_overwrite_mode(False)</"
+"code> are self-explanatory."
+msgstr ""
+"<code>set_overwrite_mode(True)</code> y <code>set_overwrite_mode(False)</"
+"code> activa o desactiva el modo de sobreescritura."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:53
+msgid ""
+"If we have <code>set_editable(False)</code> the user cannot edit the text in "
+"the widget."
+msgstr ""
+"Si tiene <code>set_editable(False)</code> el usuario no puede editar el "
+"texto en el widget."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:54
+msgid ""
+"<code>set_completion(completion)</code>, where <code>completion</code> is a "
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkEntryCompletion.html"
+"\"><code>Gtk.EntryCompletion</code></link>, sets completion - or disables it "
+"if <code>completion</code> is <code>None</code>."
+msgstr ""
+"<code>set_completion(completado)</code>, donde <code>completado</code> es un "
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkEntryCompletion.html"
+"\"><code>Gtk.EntryCompletion</code></link>, configura el completado; o lo "
+"desactiva si <code>completado</code> es <code>None</code>."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:55
+msgid ""
+"An Entry widget can display progress or activity information behind the "
+"text. We use <code>set_progress_fraction(fraction)</code>, where "
+"<code>fraction</code> is a <code>float</code> between <code>0.0</code> and "
+"<code>1.0</code> inclusive, to fill in the given fraction of the bar. We use "
+"<code>set_progress_pulse_step()</code> to set the fraction of total entry "
+"width to move the progress bouncing block for each call to "
+"<code>progress_pulse()</code>. The latter method indicates that some "
+"progress is made, and causes the progress indicator of the entry to enter "
+"\"activity mode\", where a block bounces back and forth. Each call to "
+"<code>progress_pulse()</code> causes the block to move by a little bit (the "
+"amount of movement per pulse is determined, as said before, by "
+"<code>set_progress_pulse_step()</code>)."
+msgstr ""
+"Un widget de entrada puede mostrar progreso o información de actividad "
+"detrás del texto. Se usa <code>set_progress_fraction(fracción)</code>, donde "
+"<code>fracción</code> es un <code>float</code> entre <code>0.0</code> y "
+"<code>1.0</code> inclusive, para llenar la fracción dada de la barra. Se usa "
+"<code>set_progress_pulse_step()</code> para establecer la fracción de la "
+"anchura total de la entrada para mover el bloque que rebota por cada llamada "
+"a <code>progress_pulse()</code>. El último método indica que se realizó "
+"algún progreso, y hace que el indicador de progreso de la entrada entre al "
+"«modo de actividad», en el que un bloque rebota hacia adelante y atrás. Cada "
+"llamada a <code>progress_pulse()</code> hace que el bloque se mueva un poco "
+"(la cantidad de movimiento por pulso la determina, como se dijo "
+"anteriormente, <code>set_progress_pulse_step()</code>)."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:56
+msgid ""
+"An Entry widget can also show icons. These icons can be activatable by "
+"clicking, can be set up as drag source and can have tooltips. To add an "
+"icon, use <code>set_icon_from_stock(icon_position, stock_id)</code>, or one "
+"of <code>set_icon_from_pixbuf(icon_position, pixbuf)</code>, "
+"<code>set_icon_from_icon_name(icon_position, icon_name)</code>, where "
+"<code>icon_position</code> is one of <code>Gtk.EntryIconPosition.PRIMARY</"
+"code> (to set the icon at the beginning of the entry) <code>Gtk."
+"EntryIconPosition.SECONDARY</code> (to set the icon at the end of the "
+"entry). To set a tooltip on an icon, use "
+"<code>set_icon_tooltip_text(\"tooltip text\")</code> or "
+"<code>set_icon_tooltip_markup(\"tooltip text in Pango markup language\")</"
+"code>."
+msgstr ""
+"Una entrada también puede mostrar iconos. Estos pueden activarse cuando se "
+"pulsan, configurarse para arrastrarse, y tener consejos. Para añadir un "
+"icono, use <code>set_icon_from_stock(posición_icono, id_almacén)</code>, "
+"<code>set_icon_from_pixbuf(posición_icono, pixbuf)</code>, o "
+"<code>set_icon_from_icon_name(posición_icono, nombre_icono)</code>, donde "
+"<code>posición_icono</code> puede ser <code>Gtk.EntryIconPosition.PRIMARY</"
+"code> (para poner el icono al principio de la entrada) o <code>Gtk."
+"EntryIconPosition.SECONDARY</code> (para poner el icono al final de la "
+"entrada). Para ponerle un consejo a un icono, use "
+"<code>set_icon_tooltip_text(\"texto del consejo\")</code> o "
+"<code>set_icon_tooltip_markup(\"texto del consejo en el lenguaje de marcado "
+"Pango\")</code>."
+
+#. (itstool) path: item/p
+#: C/entry.py.page:64
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkEntry.html"
+"\">GtkEntry</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkEntry.html"
+"\">GtkEntry</link>"
+
+#. (itstool) path: info/title
+#: C/entry.vala.page:8
+msgctxt "text"
+msgid "Entry (Vala)"
+msgstr "Entry (Vala)"
+
+#. (itstool) path: page/code
+#: C/entry.vala.page:25
+#, no-wrap
+msgid ""
+"/* A window in the application. */\n"
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"What is your name?\");\n"
+"\n"
+"\t\tvar name_box = new Gtk.Entry ();\n"
+"\n"
+"\t\t/* Connect to the signal handler. */\n"
+"\t\tname_box.activate.connect (this.on_activate);\n"
+"\t\tname_box.show ();\n"
+"\n"
+"\t\tthis.set_default_size (300, 100);\n"
+"\t\tthis.border_width = 10;\n"
+"\n"
+"\t\t/* Add the name_box to this window. */\n"
+"\t\tthis.add (name_box);\n"
+"\t}\n"
+"\n"
+"\t/* Signal handler (aka. callback function) for the 'activate'\n"
+"\t * signal of a Gtk.Entry.\n"
+"\t */\n"
+"\tvoid on_activate (Gtk.Entry entry) {\n"
+"\t\tname = entry.get_text ();\n"
+"\t\tprint (\"\\nHello \" + name + \"!\\n\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application. */\n"
+"class MyApplication : Gtk.Application {\n"
+"\n"
+"\t/* Constructor for the application. */\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t/* Create a new window for this application\n"
+"\t\t * and show it. */\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"}\n"
+"\n"
+"/* The main function creates and runs the application. */\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"/* A window in the application. */\n"
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"What is your name?\");\n"
+"\n"
+"\t\tvar name_box = new Gtk.Entry ();\n"
+"\n"
+"\t\t/* Connect to the signal handler. */\n"
+"\t\tname_box.activate.connect (this.on_activate);\n"
+"\t\tname_box.show ();\n"
+"\n"
+"\t\tthis.set_default_size (300, 100);\n"
+"\t\tthis.border_width = 10;\n"
+"\n"
+"\t\t/* Add the name_box to this window. */\n"
+"\t\tthis.add (name_box);\n"
+"\t}\n"
+"\n"
+"\t/* Signal handler (aka. callback function) for the 'activate'\n"
+"\t * signal of a Gtk.Entry.\n"
+"\t */\n"
+"\tvoid on_activate (Gtk.Entry entry) {\n"
+"\t\tname = entry.get_text ();\n"
+"\t\tprint (\"\\nHello \" + name + \"!\\n\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application. */\n"
+"class MyApplication : Gtk.Application {\n"
+"\n"
+"\t/* Constructor for the application. */\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t/* Create a new window for this application\n"
+"\t\t * and show it. */\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"}\n"
+"\n"
+"/* The main function creates and runs the application. */\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/entry.vala.page:30
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Entry.html\">Gtk.Entry</"
+"link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Entry.html\">Gtk.Entry</"
+"link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/filechooserdialog.py.page:26
+msgctxt "_"
+msgid ""
+"external ref='media/filechooserdialog_save.png' "
+"md5='3a7a3b71b9d3a36066857843b68ff27f'"
+msgstr ""
+"external ref='media/filechooserdialog_save.png' "
+"md5='3a7a3b71b9d3a36066857843b68ff27f'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/filechooserdialog.py.page:28
+msgctxt "_"
+msgid ""
+"external ref='media/filechooserdialog_menu.png' "
+"md5='8a75f04127a70eba0ed68a9eb1d3bbca'"
+msgstr ""
+"external ref='media/filechooserdialog_menu.png' "
+"md5='8a75f04127a70eba0ed68a9eb1d3bbca'"
+
+#. (itstool) path: info/title
+#: C/filechooserdialog.py.page:8
+msgctxt "text"
+msgid "FileChooserDialog (Python)"
+msgstr "FileChooserDialog (Python)"
+
+#. (itstool) path: info/desc
+#: C/filechooserdialog.py.page:22
+msgid "A dialog suitable for \"Open\" and \"Save\" commands"
+msgstr "Un diálogo adecuado para comandos «Abrir» y «Guardar»"
+
+#. (itstool) path: page/title
+#: C/filechooserdialog.py.page:25 C/filechooserdialog.vala.page:24
+msgid "FileChooserDialog"
+msgstr "FileChooserDialog"
+
+#. (itstool) path: page/p
+#: C/filechooserdialog.py.page:27
+msgid ""
+"This FileChooserDialog saves a text document, which can be opened or written "
+"from scratch in a TextView (see below)."
+msgstr ""
+"Este «FileChooserDialog» guarda un documento de texto, que puede abrirse o "
+"escribirse desde cero en un «TextView» (vea a continuación)."
+
+#. (itstool) path: page/p
+#: C/filechooserdialog.py.page:29
+msgid "It is also possible to call a FileChooserDialog to open a new document."
+msgstr ""
+"También es posible llamar a un «FileChooserDialog» para abrir un documento "
+"nuevo."
+
+#. (itstool) path: section/title
+#: C/filechooserdialog.py.page:34
+msgid "Steps to recreate the example"
+msgstr "Pasos para recrear el ejemplo"
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:36
+msgid ""
+"Create a file .ui to describe an app-menu with items \"New\", \"Open\", "
+"\"Save\", \"Save as\", and \"Quit\". This can be done with Glade or in a "
+"text editor. See <link xref=\"#xml\"/>"
+msgstr ""
+"Cree un archivo «.ui» para describir un menú de aplicación con elementos "
+"«New», «Open», «Save», «Save as», y «Quit». Esto puede hacerse con Glade o "
+"en un editor de texto. Consulte <link xref=\"#xml\"/>"
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:37
+msgid ""
+"Create a Python program for a Gtk.TextView with a Gtk.Buffer <code>self."
+"buffer</code>, and a <code>self.file</code> which will be a Gio.File and we "
+"set initially as <code>None</code>."
+msgstr ""
+"Cree un programa en Python para un «Gtk.TextView» con un «Gtk.Buffer» "
+"<code>self.buffer</code>, y un <code>self.file</code> que será un «Gio.File» "
+"establecido inicialmente a <code>None</code>."
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:38
+msgid ""
+"In this program, create also the actions corresponding to the items in the "
+"app-menu, connect them to callback functions, and import the menu in the "
+"<code>do_startup()</code> method with a Gtk.Builder."
+msgstr ""
+"En este programa, también cree las acciones correspondientes a los elementos "
+"en el menú de aplicación, conéctelos a funciones de retorno de llamada, e "
+"importe el menú en el método <code>do_startup()</code> con un «Gtk.Builder»."
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:39
+msgid ""
+"\"New\" and \"Quit\" actions and callback functions are quite "
+"straightforward, see <link xref=\"#code\"/>. See <link xref=\"signals-"
+"callbacks.py\"/> for a more detailed explanation of signals and callback "
+"functions."
+msgstr ""
+"Las acciones y funciones de retorno de llamada «New» y «Quit» son bastante "
+"directas, consulte <link xref=\"#code\"/>. Consulte la <link xref=\"signals-"
+"callbacks.py\"/> para obtener una explicación más detallada de señales y "
+"funciones de retorno de llamada."
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:40
+msgid ""
+"\"Open\" callback should create and open a Gtk.FileChooserDialog for \"Open"
+"\", connected with another callback function for each of the two \"Open\" "
+"and \"Cancel\" buttons of the FileChooserDialog."
+msgstr ""
+"La devolución de llamada «Open» debe crear y abrir un «Gtk."
+"FileChooserDialog» para «Abrir», conectado con otra función de retorno de "
+"llamada por cada uno de los dos botones «Open» y «Cancel» del "
+"«FileChooserDialog»."
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:41
+msgid ""
+"\"Save as\" works basically as \"Open\", but the callback function of the "
+"\"Save\" button depends on a more complex method <code>save_to_file()</code>."
+msgstr ""
+"«Save as» funciona básicamente como «Open», pero la función de retorno de "
+"llamada del botón «Save» depende en un método más complejo, "
+"<code>save_to_file()</code>."
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:42
+msgid ""
+"\"Save\" can be reduced to the case where the file is <code>None</code>, "
+"that is the case where <code>self.file</code> is a new file, which in turn "
+"is the case \"Save as\"; and to the case where the file is not <code>None</"
+"code>, which in turn is reduced to <code>save_to_file()</code>."
+msgstr ""
+"«Save» puede reducirse al caso en el que el archivo es <code>None</code>, es "
+"decir en el caso en el que <code>self.file</code> es un archivo nuevo, que a "
+"su vez es el caso de «Save as»; y al caso en el que el archivo no es "
+"<code>None</code>, que a su vez se reduce a <code>save_to_file()</code>."
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:43
+msgid ""
+"Finally, the method <code>save_to_file()</code>: see <link xref=\"#code\"/>, "
+"lines 146 - 175."
+msgstr ""
+"Finalmente, el método <code>save_to_file()</code>: consulte <link xref="
+"\"#code\"/>, líneas 146 - 175."
+
+#. (itstool) path: section/title
+#: C/filechooserdialog.py.page:48
+msgid "XML file which creates the app-menu"
+msgstr "Archivo XML que crea el menú de aplicación"
+
+#. (itstool) path: section/code
+#: C/filechooserdialog.py.page:49 C/filechooserdialog.vala.page:30
+#, no-wrap
+msgid ""
+"<?xml version=\"1.0\"?>\n"
+"<interface>\n"
+" <menu id=\"appmenu\">\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">New</attribute>\n"
+" <attribute name=\"action\">win.new</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Open</attribute>\n"
+" <attribute name=\"action\">win.open</attribute>\n"
+" </item>\n"
+" </section>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">Save</attribute>\n"
+" <attribute name=\"action\">win.save</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Save As...</attribute>\n"
+" <attribute name=\"action\">win.save-as</attribute>\n"
+" </item>\n"
+" </section>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">Quit</attribute>\n"
+" <attribute name=\"action\">app.quit</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </menu>\n"
+"</interface>\n"
+msgstr ""
+"<?xml version=\"1.0\"?>\n"
+"<interface>\n"
+" <menu id=\"appmenu\">\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">New</attribute>\n"
+" <attribute name=\"action\">win.new</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Open</attribute>\n"
+" <attribute name=\"action\">win.open</attribute>\n"
+" </item>\n"
+" </section>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">Save</attribute>\n"
+" <attribute name=\"action\">win.save</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Save As...</attribute>\n"
+" <attribute name=\"action\">win.save-as</attribute>\n"
+" </item>\n"
+" </section>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">Quit</attribute>\n"
+" <attribute name=\"action\">app.quit</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </menu>\n"
+"</interface>\n"
+
+#. (itstool) path: section/code
+#: C/filechooserdialog.py.page:54
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gdk\n"
+"from gi.repository import Gio\n"
+"from gi.repository import GObject\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(\n"
+" self, title=\"FileChooserDialog Example\", application=app)\n"
+" self.set_default_size(400, 400)\n"
+"\n"
+" # the actions for the window menu, connected to the callback functions\n"
+" new_action = Gio.SimpleAction.new(\"new\", None)\n"
+" new_action.connect(\"activate\", self.new_callback)\n"
+" self.add_action(new_action)\n"
+"\n"
+" open_action = Gio.SimpleAction.new(\"open\", None)\n"
+" open_action.connect(\"activate\", self.open_callback)\n"
+" self.add_action(open_action)\n"
+"\n"
+" save_action = Gio.SimpleAction.new(\"save\", None)\n"
+" save_action.connect(\"activate\", self.save_callback)\n"
+" self.add_action(save_action)\n"
+"\n"
+" save_as_action = Gio.SimpleAction.new(\"save-as\", None)\n"
+" save_as_action.connect(\"activate\", self.save_as_callback)\n"
+" self.add_action(save_as_action)\n"
+"\n"
+" # the file\n"
+" self.file = None\n"
+"\n"
+" # the textview with the buffer\n"
+" self.buffer = Gtk.TextBuffer()\n"
+" textview = Gtk.TextView(buffer=self.buffer)\n"
+" textview.set_wrap_mode(Gtk.WrapMode.WORD)\n"
+"\n"
+" # a scrolled window for the textview\n"
+" self.scrolled_window = Gtk.ScrolledWindow()\n"
+" self.scrolled_window.set_policy(\n"
+" Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)\n"
+" self.scrolled_window.add(textview)\n"
+" self.scrolled_window.set_border_width(5)\n"
+"\n"
+" # add the scrolled window to the window\n"
+" self.add(self.scrolled_window)\n"
+"\n"
+" # callback for new\n"
+" def new_callback(self, action, parameter):\n"
+" self.buffer.set_text(\"\")\n"
+" print(\"New file created\")\n"
+"\n"
+" # callback for open\n"
+" def open_callback(self, action, parameter):\n"
+" # create a filechooserdialog to open:\n"
+" # the arguments are: title of the window, parent_window, action,\n"
+" # (buttons, response)\n"
+" open_dialog = Gtk.FileChooserDialog(\"Pick a file\", self,\n"
+" Gtk.FileChooserAction.OPEN,\n"
+" (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,\n"
+" Gtk.STOCK_OPEN, Gtk.ResponseType.ACCEPT))\n"
+"\n"
+" # not only local files can be selected in the file selector\n"
+" open_dialog.set_local_only(False)\n"
+" # dialog always on top of the textview window\n"
+" open_dialog.set_modal(True)\n"
+" # connect the dialog with the callback function open_response_cb()\n"
+" open_dialog.connect(\"response\", self.open_response_cb)\n"
+" # show the dialog\n"
+" open_dialog.show()\n"
+"\n"
+" # callback function for the dialog open_dialog\n"
+" def open_response_cb(self, dialog, response_id):\n"
+" open_dialog = dialog\n"
+" # if response is \"ACCEPT\" (the button \"Open\" has been clicked)\n"
+" if response_id == Gtk.ResponseType.ACCEPT:\n"
+" # self.file is the file that we get from the FileChooserDialog\n"
+" self.file = open_dialog.get_file()\n"
+" # an empty string (provisionally)\n"
+" content = \"\"\n"
+" try:\n"
+" # load the content of the file into memory:\n"
+" # success is a boolean depending on the success of the operation\n"
+" # content is self-explanatory\n"
+" # etags is an entity tag (can be used to quickly determine if the\n"
+" # file has been modified from the version on the file system)\n"
+" [success, content, etags] = self.file.load_contents(None)\n"
+" except GObject.GError as e:\n"
+" print(\"Error: \" + e.message)\n"
+" # set the content as the text into the buffer\n"
+" self.buffer.set_text(content, len(content))\n"
+" print(\"opened: \" + open_dialog.get_filename())\n"
+" # if response is \"CANCEL\" (the button \"Cancel\" has been clicked)\n"
+" elif response_id == Gtk.ResponseType.CANCEL:\n"
+" print(\"cancelled: FileChooserAction.OPEN\")\n"
+" # destroy the FileChooserDialog\n"
+" dialog.destroy()\n"
+"\n"
+" # callback function for save_as\n"
+" def save_as_callback(self, action, parameter):\n"
+" # create a filechooserdialog to save:\n"
+" # the arguments are: title of the window, parent_window, action,\n"
+" # (buttons, response)\n"
+" save_dialog = Gtk.FileChooserDialog(\"Pick a file\", self,\n"
+" Gtk.FileChooserAction.SAVE,\n"
+" (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,\n"
+" Gtk.STOCK_SAVE, Gtk.ResponseType.ACCEPT))\n"
+" # the dialog will present a confirmation dialog if the user types a file name that\n"
+" # already exists\n"
+" save_dialog.set_do_overwrite_confirmation(True)\n"
+" # dialog always on top of the textview window\n"
+" save_dialog.set_modal(True)\n"
+" # if self.file has already been saved\n"
+" if self.file is not None:\n"
+" try:\n"
+" # set self.file as the current filename for the file chooser\n"
+" save_dialog.set_file(self.file)\n"
+" except GObject.GError as e:\n"
+" print(\"Error: \" + e.message)\n"
+" # connect the dialog to the callback function save_response_cb()\n"
+" save_dialog.connect(\"response\", self.save_response_cb)\n"
+" # show the dialog\n"
+" save_dialog.show()\n"
+"\n"
+" # callback function for the dialog save_dialog\n"
+" def save_response_cb(self, dialog, response_id):\n"
+" save_dialog = dialog\n"
+" # if response is \"ACCEPT\" (the button \"Save\" has been clicked)\n"
+" if response_id == Gtk.ResponseType.ACCEPT:\n"
+" # self.file is the currently selected file\n"
+" self.file = save_dialog.get_file()\n"
+" # save to file (see below)\n"
+" self.save_to_file()\n"
+" # if response is \"CANCEL\" (the button \"Cancel\" has been clicked)\n"
+" elif response_id == Gtk.ResponseType.CANCEL:\n"
+" print(\"cancelled: FileChooserAction.SAVE\")\n"
+" # destroy the FileChooserDialog\n"
+" dialog.destroy()\n"
+"\n"
+" # callback function for save\n"
+" def save_callback(self, action, parameter):\n"
+" # if self.file is not already there\n"
+" if self.file is not None:\n"
+" self.save_to_file()\n"
+" # self.file is a new file\n"
+" else:\n"
+" # use save_as\n"
+" self.save_as_callback(action, parameter)\n"
+"\n"
+" # save_to_file\n"
+" def save_to_file(self):\n"
+" # get the content of the buffer, without hidden characters\n"
+" [start, end] = self.buffer.get_bounds()\n"
+" current_contents = self.buffer.get_text(start, end, False)\n"
+" # if there is some content\n"
+" if current_contents != \"\":\n"
+" # set the content as content of self.file.\n"
+" # arguments: contents, etags, make_backup, flags, GError\n"
+" try:\n"
+" self.file.replace_contents(current_contents,\n"
+" None,\n"
+" False,\n"
+" Gio.FileCreateFlags.NONE,\n"
+" None)\n"
+" print(\"saved: \" + self.file.get_path())\n"
+" except GObject.GError as e:\n"
+" print(\"Error: \" + e.message)\n"
+" # if the contents are empty\n"
+" else:\n"
+" # create (if the file does not exist) or overwrite the file in readwrite mode.\n"
+" # arguments: etags, make_backup, flags, GError\n"
+" try:\n"
+" self.file.replace_readwrite(None,\n"
+" False,\n"
+" Gio.FileCreateFlags.NONE,\n"
+" None)\n"
+" print(\"saved: \" + self.file.get_path())\n"
+" except GObject.GError as e:\n"
+" print(\"Error: \" + e.message)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # app action quit, connected to the callback function\n"
+" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
+" quit_action.connect(\"activate\", self.quit_callback)\n"
+" self.add_action(quit_action)\n"
+"\n"
+" # get the menu from the ui file with a builder\n"
+" builder = Gtk.Builder()\n"
+" try:\n"
+" builder.add_from_file(\"filechooserdialog.ui\")\n"
+" except:\n"
+" print(\"file not found\")\n"
+" sys.exit()\n"
+" menu = builder.get_object(\"appmenu\")\n"
+" self.set_app_menu(menu)\n"
+"\n"
+" # callback function for quit\n"
+" def quit_callback(self, action, parameter):\n"
+" self.quit()\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gdk\n"
+"from gi.repository import Gio\n"
+"from gi.repository import GObject\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(\n"
+" self, title=\"FileChooserDialog Example\", application=app)\n"
+" self.set_default_size(400, 400)\n"
+"\n"
+" # the actions for the window menu, connected to the callback functions\n"
+" new_action = Gio.SimpleAction.new(\"new\", None)\n"
+" new_action.connect(\"activate\", self.new_callback)\n"
+" self.add_action(new_action)\n"
+"\n"
+" open_action = Gio.SimpleAction.new(\"open\", None)\n"
+" open_action.connect(\"activate\", self.open_callback)\n"
+" self.add_action(open_action)\n"
+"\n"
+" save_action = Gio.SimpleAction.new(\"save\", None)\n"
+" save_action.connect(\"activate\", self.save_callback)\n"
+" self.add_action(save_action)\n"
+"\n"
+" save_as_action = Gio.SimpleAction.new(\"save-as\", None)\n"
+" save_as_action.connect(\"activate\", self.save_as_callback)\n"
+" self.add_action(save_as_action)\n"
+"\n"
+" # the file\n"
+" self.file = None\n"
+"\n"
+" # the textview with the buffer\n"
+" self.buffer = Gtk.TextBuffer()\n"
+" textview = Gtk.TextView(buffer=self.buffer)\n"
+" textview.set_wrap_mode(Gtk.WrapMode.WORD)\n"
+"\n"
+" # a scrolled window for the textview\n"
+" self.scrolled_window = Gtk.ScrolledWindow()\n"
+" self.scrolled_window.set_policy(\n"
+" Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)\n"
+" self.scrolled_window.add(textview)\n"
+" self.scrolled_window.set_border_width(5)\n"
+"\n"
+" # add the scrolled window to the window\n"
+" self.add(self.scrolled_window)\n"
+"\n"
+" # callback for new\n"
+" def new_callback(self, action, parameter):\n"
+" self.buffer.set_text(\"\")\n"
+" print(\"New file created\")\n"
+"\n"
+" # callback for open\n"
+" def open_callback(self, action, parameter):\n"
+" # create a filechooserdialog to open:\n"
+" # the arguments are: title of the window, parent_window, action,\n"
+" # (buttons, response)\n"
+" open_dialog = Gtk.FileChooserDialog(\"Pick a file\", self,\n"
+" Gtk.FileChooserAction.OPEN,\n"
+" (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,\n"
+" Gtk.STOCK_OPEN, Gtk.ResponseType.ACCEPT))\n"
+"\n"
+" # not only local files can be selected in the file selector\n"
+" open_dialog.set_local_only(False)\n"
+" # dialog always on top of the textview window\n"
+" open_dialog.set_modal(True)\n"
+" # connect the dialog with the callback function open_response_cb()\n"
+" open_dialog.connect(\"response\", self.open_response_cb)\n"
+" # show the dialog\n"
+" open_dialog.show()\n"
+"\n"
+" # callback function for the dialog open_dialog\n"
+" def open_response_cb(self, dialog, response_id):\n"
+" open_dialog = dialog\n"
+" # if response is \"ACCEPT\" (the button \"Open\" has been clicked)\n"
+" if response_id == Gtk.ResponseType.ACCEPT:\n"
+" # self.file is the file that we get from the FileChooserDialog\n"
+" self.file = open_dialog.get_file()\n"
+" # an empty string (provisionally)\n"
+" content = \"\"\n"
+" try:\n"
+" # load the content of the file into memory:\n"
+" # success is a boolean depending on the success of the operation\n"
+" # content is self-explanatory\n"
+" # etags is an entity tag (can be used to quickly determine if the\n"
+" # file has been modified from the version on the file system)\n"
+" [success, content, etags] = self.file.load_contents(None)\n"
+" except GObject.GError as e:\n"
+" print(\"Error: \" + e.message)\n"
+" # set the content as the text into the buffer\n"
+" self.buffer.set_text(content, len(content))\n"
+" print(\"opened: \" + open_dialog.get_filename())\n"
+" # if response is \"CANCEL\" (the button \"Cancel\" has been clicked)\n"
+" elif response_id == Gtk.ResponseType.CANCEL:\n"
+" print(\"cancelled: FileChooserAction.OPEN\")\n"
+" # destroy the FileChooserDialog\n"
+" dialog.destroy()\n"
+"\n"
+" # callback function for save_as\n"
+" def save_as_callback(self, action, parameter):\n"
+" # create a filechooserdialog to save:\n"
+" # the arguments are: title of the window, parent_window, action,\n"
+" # (buttons, response)\n"
+" save_dialog = Gtk.FileChooserDialog(\"Pick a file\", self,\n"
+" Gtk.FileChooserAction.SAVE,\n"
+" (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,\n"
+" Gtk.STOCK_SAVE, Gtk.ResponseType.ACCEPT))\n"
+" # the dialog will present a confirmation dialog if the user types a file name that\n"
+" # already exists\n"
+" save_dialog.set_do_overwrite_confirmation(True)\n"
+" # dialog always on top of the textview window\n"
+" save_dialog.set_modal(True)\n"
+" # if self.file has already been saved\n"
+" if self.file is not None:\n"
+" try:\n"
+" # set self.file as the current filename for the file chooser\n"
+" save_dialog.set_file(self.file)\n"
+" except GObject.GError as e:\n"
+" print(\"Error: \" + e.message)\n"
+" # connect the dialog to the callback function save_response_cb()\n"
+" save_dialog.connect(\"response\", self.save_response_cb)\n"
+" # show the dialog\n"
+" save_dialog.show()\n"
+"\n"
+" # callback function for the dialog save_dialog\n"
+" def save_response_cb(self, dialog, response_id):\n"
+" save_dialog = dialog\n"
+" # if response is \"ACCEPT\" (the button \"Save\" has been clicked)\n"
+" if response_id == Gtk.ResponseType.ACCEPT:\n"
+" # self.file is the currently selected file\n"
+" self.file = save_dialog.get_file()\n"
+" # save to file (see below)\n"
+" self.save_to_file()\n"
+" # if response is \"CANCEL\" (the button \"Cancel\" has been clicked)\n"
+" elif response_id == Gtk.ResponseType.CANCEL:\n"
+" print(\"cancelled: FileChooserAction.SAVE\")\n"
+" # destroy the FileChooserDialog\n"
+" dialog.destroy()\n"
+"\n"
+" # callback function for save\n"
+" def save_callback(self, action, parameter):\n"
+" # if self.file is not already there\n"
+" if self.file is not None:\n"
+" self.save_to_file()\n"
+" # self.file is a new file\n"
+" else:\n"
+" # use save_as\n"
+" self.save_as_callback(action, parameter)\n"
+"\n"
+" # save_to_file\n"
+" def save_to_file(self):\n"
+" # get the content of the buffer, without hidden characters\n"
+" [start, end] = self.buffer.get_bounds()\n"
+" current_contents = self.buffer.get_text(start, end, False)\n"
+" # if there is some content\n"
+" if current_contents != \"\":\n"
+" # set the content as content of self.file.\n"
+" # arguments: contents, etags, make_backup, flags, GError\n"
+" try:\n"
+" self.file.replace_contents(current_contents,\n"
+" None,\n"
+" False,\n"
+" Gio.FileCreateFlags.NONE,\n"
+" None)\n"
+" print(\"saved: \" + self.file.get_path())\n"
+" except GObject.GError as e:\n"
+" print(\"Error: \" + e.message)\n"
+" # if the contents are empty\n"
+" else:\n"
+" # create (if the file does not exist) or overwrite the file in readwrite mode.\n"
+" # arguments: etags, make_backup, flags, GError\n"
+" try:\n"
+" self.file.replace_readwrite(None,\n"
+" False,\n"
+" Gio.FileCreateFlags.NONE,\n"
+" None)\n"
+" print(\"saved: \" + self.file.get_path())\n"
+" except GObject.GError as e:\n"
+" print(\"Error: \" + e.message)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # app action quit, connected to the callback function\n"
+" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
+" quit_action.connect(\"activate\", self.quit_callback)\n"
+" self.add_action(quit_action)\n"
+"\n"
+" # get the menu from the ui file with a builder\n"
+" builder = Gtk.Builder()\n"
+" try:\n"
+" builder.add_from_file(\"filechooserdialog.ui\")\n"
+" except:\n"
+" print(\"file not found\")\n"
+" sys.exit()\n"
+" menu = builder.get_object(\"appmenu\")\n"
+" self.set_app_menu(menu)\n"
+"\n"
+" # callback function for quit\n"
+" def quit_callback(self, action, parameter):\n"
+" self.quit()\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/filechooserdialog.py.page:58
+msgid "Useful methods for a FileChooserDialog"
+msgstr "Métodos útiles para un «FileChooserDialog»"
+
+#. (itstool) path: section/p
+#: C/filechooserdialog.py.page:59
+msgid ""
+"Note that the action of the FileChooserDialog can be one of the following: "
+"<code>Gtk.FileChooserAction.OPEN</code> (the file chooser will only let the "
+"user pick an existing file) <code>Gtk.FileChooserAction.SAVE</code> (the "
+"file chooser will let the user pick an existing file, or type in a new "
+"filename), <code>Gtk.FileChooserAction.SELECT_FOLDER</code> (the file "
+"chooser will let the user pick an existing folder), <code>Gtk."
+"FileChooserAction.CREATE_FOLDER</code> (the file chooser will let the user "
+"name an existing or new folder)."
+msgstr ""
+"Tenga en cuenta que la acción del «FileChooserDialog» puede ser una de las "
+"siguientes: <code>Gtk.FileChooserAction.OPEN</code> (el selector de archivo "
+"sólo le permitirá al usuario elegir un archivo existente), <code>Gtk."
+"FileChooserAction.SAVE</code> (se le permitirá al usuario elegir un archivo "
+"existente, o introducir uno nuevo), <code>Gtk.FileChooserAction."
+"SELECT_FOLDER</code> se le permitirá al usuario elegir una carpeta "
+"existente), o <code>Gtk.FileChooserAction.CREATE_FOLDER</code> (se le "
+"permitirá al usuario elegir una carpeta nueva o existente)."
+
+#. (itstool) path: section/p
+#: C/filechooserdialog.py.page:60
+msgid "Besides the methods used in the <link xref=\"#code\"/>, we have:"
+msgstr "Además de los métodos usados en el <link xref=\"#code\"/>, existen:"
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:62
+msgid ""
+"<code>set_show_hidden(True)</code> is used to display hidden files and "
+"folders."
+msgstr ""
+"<code>set_show_hidden(True)</code> se usa para mostrar carpetas y archivos "
+"ocultos."
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:63
+msgid ""
+"<code>set_select_multiple(True)</code> sets that multiple files can be "
+"selected. This is only relevant if the mode is <code>Gtk.FileChooserAction."
+"OPEN</code> or <code>Gtk.FileChooserAction.SELECT_FOLDER</code>."
+msgstr ""
+"<code>set_select_multiple(True)</code> indica que se pueden seleccionar "
+"múltiples archivos. Esto sólo es relevante si el modo es <code>Gtk."
+"FileChooserAction.OPEN</code> o <code>Gtk.FileChooserAction.SELECT_FOLDER</"
+"code>."
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:64
+msgid ""
+"In a \"Save as\" dialog, <code>set_current_name(current_name)</code> sets "
+"<code>current_name</code> in the file selector, as if entered by the user; "
+"<code>current_name</code> can be something like <em>Untitled.txt</em>. This "
+"method should not be used except in a \"Save as\" dialog."
+msgstr ""
+"En el diálogo «Save as», <code>set_current_name(nombre_actual)</code> "
+"establece <code>nombre_actual</code> en el selector de archivo, como si lo "
+"hubiera introducido el usuario; <code>nombre_actual</code> puede ser algo "
+"como <code>Sin nombre.txt</code>. Este método no debe usarse excepto en un "
+"diálogo «Save as»."
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:65
+msgid ""
+"The default current folder is \"recent items\". To set another folder use "
+"<code>set_current_folder_uri(uri)</code>; but note you should use this "
+"method and cause the file chooser to show a specific folder only when you "
+"are doing a \"Save as\" command and you already have a file saved somewhere."
+msgstr ""
+"La carpeta actual predeterminada es «elementos recientes». Para establecer "
+"otra carpeta use <code>set_current_folder_uri(uri)</code>; pero tenga en "
+"cuenta que debe usar este método y hacer que el selector de archivo muestre "
+"una carpeta específica sólo cuando está ejecutando un comando «Save as» y ya "
+"tenga un archivo guardado en algún lado."
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:73
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkFileChooserDialog.html"
+"\">GtkFileChooserDialog</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkFileChooserDialog.html"
+"\">GtkFileChooserDialog</link>"
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:74
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkFileChooser.html"
+"\">GtkFileChooser</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkFileChooser.html"
+"\">GtkFileChooser</link>"
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:75 C/image.c.page:34 C/label.c.page:38
+#: C/menubar.c.page:38 C/scrolledwindow.c.page:35
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkWindow.html"
+"\">GtkWindow</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkWindow.html"
+"\">GtkWindow</link>"
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:76 C/textview.c.page:39
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkTextView.html"
+"\">GtkTextView</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkTextView.html"
+"\">GtkTextView</link>"
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:77 C/textview.c.page:38
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkTextBuffer.html"
+"\">GtkTextBuffer</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkTextBuffer.html"
+"\">GtkTextBuffer</link>"
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:78 C/scrolledwindow.c.page:36
+#: C/textview.c.page:40
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkScrolledWindow.html"
+"\">GtkScrolledWindow</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkScrolledWindow.html"
+"\">GtkScrolledWindow</link>"
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:79
+msgid ""
+"<link href=\"http://developer.gnome.org/gio/stable/GFile.html\">GFile</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gio/stable/GFile.html\">GFile</link>"
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.py.page:81
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkBuilder.html"
+"\">GtkBuilder</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkBuilder.html"
+"\">GtkBuilder</link>"
+
+#. (itstool) path: info/title
+#: C/filechooserdialog.vala.page:8
+msgctxt "text"
+msgid "FileChooserDialog (Vala)"
+msgstr "FileChooserDialog (Vala)"
+
+#. (itstool) path: info/desc
+#: C/filechooserdialog.vala.page:21
+msgid "A dialog suitable for \"Open\" and \"Save\" commands."
+msgstr "Un diálogo adecuado para comandos «Abrir» y «Guardar»."
+
+#. (itstool) path: section/title
+#: C/filechooserdialog.vala.page:26
+msgid "Overview of the example"
+msgstr "Visión general del ejemplo"
+
+#. (itstool) path: section/p
+#: C/filechooserdialog.vala.page:27
+msgid ""
+"This example demonstrates how the FileChooserDialog can be used. It is "
+"incorporated into a very simple text editor application. All the <link xref="
+"\"menubar.vala#win-app\">actions</link>, including the \"open\", \"save\" "
+"and \"save-as\" commands can be found in the <link xref=\"gmenu.vala\">app-"
+"menu</link>. Here, the app-menu is created using an XML UI file, which is "
+"then imported into the application using Gtk.Builder."
+msgstr ""
+"Este ejemplo demuestra cómo usar el «FileChooserDialog». Está incorporado en "
+"una aplicación de edición de texto muy simple. Todas las <link xref="
+"\"menubar.vala#win-app\">acciones</link>, incluyendo los comandos «open», "
+"«save» y «save-as» pueden encontrarse en el <link xref=\"gmenu.vala\">menú "
+"de la aplicación</link>. Aquí, el menú se crea usando un archivo de IU XML, "
+"que a su vez se importa a la aplicación usando «Gtk.Builder»."
+
+#. (itstool) path: section/title
+#: C/filechooserdialog.vala.page:29
+msgid "XML UI file which creates the app-menu"
+msgstr "Archivo de IU XML que crea el menú de la aplicación"
+
+#. (itstool) path: section/title
+#: C/filechooserdialog.vala.page:32
+msgid "Vala Code"
+msgstr "Código en Vala"
+
+#. (itstool) path: section/code
+#: C/filechooserdialog.vala.page:33
+#, no-wrap
+msgid ""
+"class MyWindow: Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* MyWindow instance variables. */\n"
+"\tGLib.File? file;\n"
+"\tGtk.TextBuffer buffer;\n"
+"\tGtk.TextView textview;\n"
+"\tGtk.ScrolledWindow scrolled_window;\n"
+"\n"
+"\t/* Create ActionEntries. */\n"
+"\tconst ActionEntry[] actions = {\n"
+"\t\t{ \"new\", new_cb },\n"
+"\t\t{ \"open\", open_cb },\n"
+"\t\t{ \"save\", save_cb },\n"
+"\t\t{ \"save-as\", save_as_cb }\n"
+"\t};\n"
+"\n"
+"\t/* Constructor creates MyWindow, and add the scrolled_window. */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"FileChooserDialog Example\");\n"
+"\t\tthis.set_default_size (400, 400);\n"
+"\n"
+"\t\t/* Add the ActionEntries to MyWindow. */\n"
+"\t\tthis.add_action_entries (actions, this);\n"
+"\n"
+"\t\tbuffer = new Gtk.TextBuffer (null); //stores text to be displayed\n"
+"\t\ttextview = new Gtk.TextView.with_buffer (buffer); //displays TextBuffer\n"
+"\t\ttextview.set_wrap_mode (Gtk.WrapMode.WORD); //sets line wrapping\n"
+"\n"
+"\t\tscrolled_window = new Gtk.ScrolledWindow (null, null);\n"
+"\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC,\n"
+"\t\t Gtk.PolicyType.AUTOMATIC);\n"
+"\n"
+"\t\tscrolled_window.add (textview);\n"
+"\t\tscrolled_window.set_border_width (5);\n"
+"\n"
+" this.add (scrolled_window);\n"
+"\t\tthis.show_all ();\n"
+"\t}\n"
+"\n"
+"\tvoid new_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tfile = null;\n"
+"\t\tbuffer.set_text (\"\");\n"
+"\t\tprint (\"New file created\\n\");\n"
+"\t}\n"
+"\n"
+"\t/* Create FileChooserDialog in OPEN mode. */\n"
+"\tvoid open_cb (SimpleAction action, Variant? parameter) {\n"
+"\n"
+"\t\tvar open_dialog = new Gtk.FileChooserDialog (\"Pick a file\",\n"
+"\t\t this as Gtk.Window,\n"
+"\t\t Gtk.FileChooserAction.OPEN,\n"
+"\t\t Gtk.Stock.CANCEL,\n"
+"\t\t Gtk.ResponseType.CANCEL,\n"
+"\t\t Gtk.Stock.OPEN,\n"
+"\t\t Gtk.ResponseType.ACCEPT);\n"
+"\n"
+"\t\topen_dialog.local_only = false; //allow for uri\n"
+"\t\topen_dialog.set_modal (true);\n"
+"\t\topen_dialog.response.connect (open_response_cb);\n"
+"\t\topen_dialog.show ();\n"
+"\t}\n"
+"\n"
+"\t/* Either open the file and load the file contents or cancel. */\n"
+"\tvoid open_response_cb (Gtk.Dialog dialog, int response_id) {\n"
+"\t\tvar open_dialog = dialog as Gtk.FileChooserDialog;\n"
+"\n"
+"\t\tswitch (response_id) {\n"
+"\t\t\tcase Gtk.ResponseType.ACCEPT: //open the file\n"
+"\t\t\t\tfile = open_dialog.get_file();\n"
+"\n"
+"\t\t\t\tuint8[] file_contents;\n"
+"\n"
+"\t\t\t\ttry {\n"
+"\t\t\t\t\tfile.load_contents (null, out file_contents, null);\n"
+"\t\t\t\t}\n"
+"\t\t\t\tcatch (GLib.Error err) { //handle the exception\n"
+"\t\t\t\t\terror (\"%s\\n\", err.message);\n"
+"\t\t\t\t}\n"
+"\t\t\t\t/* Set the buffer text to be the contents of the file. */\n"
+"\t\t\t\tbuffer.set_text ((string) file_contents,\n"
+"\t\t\t\t file_contents.length);\n"
+"\n"
+"\t\t\t\tprint (\"opened: %s\\n\", (open_dialog.get_filename ()));\n"
+"\t\t\t\tbreak;\n"
+"\n"
+"\t\t\tcase Gtk.ResponseType.CANCEL:\n"
+"\t\t\t\tprint (\"cancelled: FileChooserAction.OPEN\\n\");\n"
+"\t\t\t\tbreak;\n"
+"\t\t}\n"
+"\t\tdialog.destroy ();\n"
+"\t}\n"
+"\n"
+"\n"
+"\t/* Create FileChooserDialog in SAVE mode. */\n"
+"\tvoid save_as_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tvar save_dialog = new Gtk.FileChooserDialog (\"Pick a file\",\n"
+"\t\t this as Gtk.Window,\n"
+"\t\t Gtk.FileChooserAction.SAVE,\n"
+"\t\t Gtk.Stock.CANCEL,\n"
+"\t\t Gtk.ResponseType.CANCEL,\n"
+"\t\t Gtk.Stock.SAVE,\n"
+"\t\t Gtk.ResponseType.ACCEPT);\n"
+"\n"
+"\t\tsave_dialog.set_do_overwrite_confirmation (true);\n"
+"\t\tsave_dialog.set_modal (true);\n"
+"\t\tif (file != null) {\n"
+"\t\t\ttry {\n"
+"\t\t\t\t(save_dialog as Gtk.FileChooser).set_file (file);\n"
+"\t\t\t}\n"
+"\t\t\tcatch (GLib.Error error) {\n"
+"\t\t\t\tprint (\"%s\\n\", error.message);\n"
+"\t\t\t}\n"
+"\t\t}\n"
+"\t\tsave_dialog.response.connect (save_as_response_cb);\n"
+"\t\tsave_dialog.show ();\n"
+"\t}\n"
+"\n"
+"\tvoid save_as_response_cb (Gtk.Dialog dialog, int response_id) {\n"
+"\t\tvar save_dialog = dialog as Gtk.FileChooserDialog;\n"
+"\n"
+"\t\tswitch (response_id) {\n"
+"\t\t\tcase Gtk.ResponseType.ACCEPT:\n"
+"\t\t\t\tfile = save_dialog.get_file();\n"
+"\t\t\t\tthis.save_to_file ();\n"
+"\t\t\t\tbreak;\n"
+"\t\t\tdefault:\n"
+"\t\t\t\tbreak;\n"
+"\t\t}\n"
+"\t\t\tdialog.destroy ();\n"
+"\t}\n"
+"\n"
+"\t/* Save the existing contents to the file.\n"
+"\t * If file does not exist, call save_as_cb.\n"
+"\t */\n"
+"\tvoid save_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tif (file != null) {\n"
+"\t\t\tthis.save_to_file ();\n"
+"\t\t}\n"
+"\t\telse {\n"
+"\t\t\tsave_as_cb (action, parameter);\n"
+"\t\t}\n"
+"\t}\n"
+"\n"
+"\tvoid save_to_file (){\n"
+"\t\tGtk.TextIter start;\n"
+"\t\tGtk.TextIter end;\n"
+"\n"
+"\t\tbuffer.get_bounds (out start, out end);\n"
+"\t\tstring current_contents = buffer.get_text (start, end, false);\n"
+"\t\ttry {\n"
+"\t\t\t\tfile.replace_contents (current_contents.data, null, false,\n"
+"\t\t\t\t GLib.FileCreateFlags.NONE, null, null);\n"
+"\n"
+"\t\t\t\tprint (\"saved: %s\\n\", file.get_path ());\n"
+"\t\t}\n"
+"\t\tcatch (GLib.Error err) {\n"
+"\t\t\terror (\"%s\\n\", err.message);\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application */\n"
+"class MyApplication: Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show_all;\n"
+"\t}\n"
+"\n"
+"\tconst ActionEntry[] actions = {\n"
+"\t\t{ \"quit\", quit_cb }\n"
+"\t};\n"
+"\n"
+"\tvoid quit_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tthis.quit ();\n"
+"\t}\n"
+"\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\t/* Setup actions */\n"
+"\t\tthis.add_action_entries (actions, this);\n"
+"\n"
+"\t\t/* Setup menus */\n"
+"\t\tvar builder = new Gtk.Builder ();\n"
+"\t\ttry {\n"
+"\t\t\tbuilder.add_from_file (\"filechooserdialog.ui\");\n"
+"\t\t} catch (GLib.Error err) {\n"
+"\t\t\terror (\"Unable to load file: %s\\n\", err.message);\n"
+"\t\t}\n"
+"\t\tthis.app_menu = builder.get_object (\"appmenu\") as MenuModel;\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"class MyWindow: Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* MyWindow instance variables. */\n"
+"\tGLib.File? file;\n"
+"\tGtk.TextBuffer buffer;\n"
+"\tGtk.TextView textview;\n"
+"\tGtk.ScrolledWindow scrolled_window;\n"
+"\n"
+"\t/* Create ActionEntries. */\n"
+"\tconst ActionEntry[] actions = {\n"
+"\t\t{ \"new\", new_cb },\n"
+"\t\t{ \"open\", open_cb },\n"
+"\t\t{ \"save\", save_cb },\n"
+"\t\t{ \"save-as\", save_as_cb }\n"
+"\t};\n"
+"\n"
+"\t/* Constructor creates MyWindow, and add the scrolled_window. */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"FileChooserDialog Example\");\n"
+"\t\tthis.set_default_size (400, 400);\n"
+"\n"
+"\t\t/* Add the ActionEntries to MyWindow. */\n"
+"\t\tthis.add_action_entries (actions, this);\n"
+"\n"
+"\t\tbuffer = new Gtk.TextBuffer (null); //stores text to be displayed\n"
+"\t\ttextview = new Gtk.TextView.with_buffer (buffer); //displays TextBuffer\n"
+"\t\ttextview.set_wrap_mode (Gtk.WrapMode.WORD); //sets line wrapping\n"
+"\n"
+"\t\tscrolled_window = new Gtk.ScrolledWindow (null, null);\n"
+"\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC,\n"
+"\t\t Gtk.PolicyType.AUTOMATIC);\n"
+"\n"
+"\t\tscrolled_window.add (textview);\n"
+"\t\tscrolled_window.set_border_width (5);\n"
+"\n"
+" this.add (scrolled_window);\n"
+"\t\tthis.show_all ();\n"
+"\t}\n"
+"\n"
+"\tvoid new_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tfile = null;\n"
+"\t\tbuffer.set_text (\"\");\n"
+"\t\tprint (\"New file created\\n\");\n"
+"\t}\n"
+"\n"
+"\t/* Create FileChooserDialog in OPEN mode. */\n"
+"\tvoid open_cb (SimpleAction action, Variant? parameter) {\n"
+"\n"
+"\t\tvar open_dialog = new Gtk.FileChooserDialog (\"Pick a file\",\n"
+"\t\t this as Gtk.Window,\n"
+"\t\t Gtk.FileChooserAction.OPEN,\n"
+"\t\t Gtk.Stock.CANCEL,\n"
+"\t\t Gtk.ResponseType.CANCEL,\n"
+"\t\t Gtk.Stock.OPEN,\n"
+"\t\t Gtk.ResponseType.ACCEPT);\n"
+"\n"
+"\t\topen_dialog.local_only = false; //allow for uri\n"
+"\t\topen_dialog.set_modal (true);\n"
+"\t\topen_dialog.response.connect (open_response_cb);\n"
+"\t\topen_dialog.show ();\n"
+"\t}\n"
+"\n"
+"\t/* Either open the file and load the file contents or cancel. */\n"
+"\tvoid open_response_cb (Gtk.Dialog dialog, int response_id) {\n"
+"\t\tvar open_dialog = dialog as Gtk.FileChooserDialog;\n"
+"\n"
+"\t\tswitch (response_id) {\n"
+"\t\t\tcase Gtk.ResponseType.ACCEPT: //open the file\n"
+"\t\t\t\tfile = open_dialog.get_file();\n"
+"\n"
+"\t\t\t\tuint8[] file_contents;\n"
+"\n"
+"\t\t\t\ttry {\n"
+"\t\t\t\t\tfile.load_contents (null, out file_contents, null);\n"
+"\t\t\t\t}\n"
+"\t\t\t\tcatch (GLib.Error err) { //handle the exception\n"
+"\t\t\t\t\terror (\"%s\\n\", err.message);\n"
+"\t\t\t\t}\n"
+"\t\t\t\t/* Set the buffer text to be the contents of the file. */\n"
+"\t\t\t\tbuffer.set_text ((string) file_contents,\n"
+"\t\t\t\t file_contents.length);\n"
+"\n"
+"\t\t\t\tprint (\"opened: %s\\n\", (open_dialog.get_filename ()));\n"
+"\t\t\t\tbreak;\n"
+"\n"
+"\t\t\tcase Gtk.ResponseType.CANCEL:\n"
+"\t\t\t\tprint (\"cancelled: FileChooserAction.OPEN\\n\");\n"
+"\t\t\t\tbreak;\n"
+"\t\t}\n"
+"\t\tdialog.destroy ();\n"
+"\t}\n"
+"\n"
+"\n"
+"\t/* Create FileChooserDialog in SAVE mode. */\n"
+"\tvoid save_as_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tvar save_dialog = new Gtk.FileChooserDialog (\"Pick a file\",\n"
+"\t\t this as Gtk.Window,\n"
+"\t\t Gtk.FileChooserAction.SAVE,\n"
+"\t\t Gtk.Stock.CANCEL,\n"
+"\t\t Gtk.ResponseType.CANCEL,\n"
+"\t\t Gtk.Stock.SAVE,\n"
+"\t\t Gtk.ResponseType.ACCEPT);\n"
+"\n"
+"\t\tsave_dialog.set_do_overwrite_confirmation (true);\n"
+"\t\tsave_dialog.set_modal (true);\n"
+"\t\tif (file != null) {\n"
+"\t\t\ttry {\n"
+"\t\t\t\t(save_dialog as Gtk.FileChooser).set_file (file);\n"
+"\t\t\t}\n"
+"\t\t\tcatch (GLib.Error error) {\n"
+"\t\t\t\tprint (\"%s\\n\", error.message);\n"
+"\t\t\t}\n"
+"\t\t}\n"
+"\t\tsave_dialog.response.connect (save_as_response_cb);\n"
+"\t\tsave_dialog.show ();\n"
+"\t}\n"
+"\n"
+"\tvoid save_as_response_cb (Gtk.Dialog dialog, int response_id) {\n"
+"\t\tvar save_dialog = dialog as Gtk.FileChooserDialog;\n"
+"\n"
+"\t\tswitch (response_id) {\n"
+"\t\t\tcase Gtk.ResponseType.ACCEPT:\n"
+"\t\t\t\tfile = save_dialog.get_file();\n"
+"\t\t\t\tthis.save_to_file ();\n"
+"\t\t\t\tbreak;\n"
+"\t\t\tdefault:\n"
+"\t\t\t\tbreak;\n"
+"\t\t}\n"
+"\t\t\tdialog.destroy ();\n"
+"\t}\n"
+"\n"
+"\t/* Save the existing contents to the file.\n"
+"\t * If file does not exist, call save_as_cb.\n"
+"\t */\n"
+"\tvoid save_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tif (file != null) {\n"
+"\t\t\tthis.save_to_file ();\n"
+"\t\t}\n"
+"\t\telse {\n"
+"\t\t\tsave_as_cb (action, parameter);\n"
+"\t\t}\n"
+"\t}\n"
+"\n"
+"\tvoid save_to_file (){\n"
+"\t\tGtk.TextIter start;\n"
+"\t\tGtk.TextIter end;\n"
+"\n"
+"\t\tbuffer.get_bounds (out start, out end);\n"
+"\t\tstring current_contents = buffer.get_text (start, end, false);\n"
+"\t\ttry {\n"
+"\t\t\t\tfile.replace_contents (current_contents.data, null, false,\n"
+"\t\t\t\t GLib.FileCreateFlags.NONE, null, null);\n"
+"\n"
+"\t\t\t\tprint (\"saved: %s\\n\", file.get_path ());\n"
+"\t\t}\n"
+"\t\tcatch (GLib.Error err) {\n"
+"\t\t\terror (\"%s\\n\", err.message);\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application */\n"
+"class MyApplication: Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show_all;\n"
+"\t}\n"
+"\n"
+"\tconst ActionEntry[] actions = {\n"
+"\t\t{ \"quit\", quit_cb }\n"
+"\t};\n"
+"\n"
+"\tvoid quit_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tthis.quit ();\n"
+"\t}\n"
+"\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\t/* Setup actions */\n"
+"\t\tthis.add_action_entries (actions, this);\n"
+"\n"
+"\t\t/* Setup menus */\n"
+"\t\tvar builder = new Gtk.Builder ();\n"
+"\t\ttry {\n"
+"\t\t\tbuilder.add_from_file (\"filechooserdialog.ui\");\n"
+"\t\t} catch (GLib.Error err) {\n"
+"\t\t\terror (\"Unable to load file: %s\\n\", err.message);\n"
+"\t\t}\n"
+"\t\tthis.app_menu = builder.get_object (\"appmenu\") as MenuModel;\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: section/title
+#: C/filechooserdialog.vala.page:35 C/menubar.vala.page:187
+msgid "Relevant API documentation"
+msgstr "Documentación de la API relevante"
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.vala.page:40
+msgid ""
+"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.FileChooser.html\">FileChooser</"
+"link>"
+msgstr ""
+"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.FileChooser.html\">FileChooser</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.vala.page:41
+msgid ""
+"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.FileChooserDialog.html"
+"\">FileChooserDialog</link>"
+msgstr ""
+"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.FileChooserDialog.html"
+"\">FileChooserDialog</link>"
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.vala.page:42
+msgid ""
+"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.Builder.html\">Gtk.Builder</"
+"link>"
+msgstr ""
+"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.Builder.html\">Gtk.Builder</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/filechooserdialog.vala.page:43
+msgid ""
+"<link href=\"http://valadoc.org/gio-2.0/GLib.ActionEntry.html\">GLib."
+"ActionEntry</link>"
+msgstr ""
+"<link href=\"http://valadoc.org/gio-2.0/GLib.ActionEntry.html\">GLib."
+"ActionEntry</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/fontchooserwidget.js.page:23 C/fontchooserwidget.py.page:25
+#: C/fontchooserwidget.vala.page:23
+msgctxt "_"
+msgid ""
+"external ref='media/fontchooserwidget.png' "
+"md5='9161245e307b432ae1313e9a9941edae'"
+msgstr ""
+"external ref='media/fontchooserwidget.png' "
+"md5='9161245e307b432ae1313e9a9941edae'"
+
+#. (itstool) path: info/title
+#: C/fontchooserwidget.js.page:8
+msgctxt "text"
+msgid "FontChooserWidget (JavaScript)"
+msgstr "FontChooserWidget (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/fontchooserwidget.js.page:18 C/fontchooserwidget.py.page:20
+#: C/fontchooserwidget.vala.page:18
+msgid "A widget to choose a font"
+msgstr "Un widget para elegir la tipografía"
+
+#. (itstool) path: page/title
+#: C/fontchooserwidget.js.page:21 C/fontchooserwidget.py.page:23
+#: C/fontchooserwidget.vala.page:21
+msgid "FontChooserWidget"
+msgstr "FontChooserWidget"
+
+#. (itstool) path: page/p
+#: C/fontchooserwidget.js.page:24 C/fontchooserwidget.py.page:26
+msgid "A FontChooserWidget with a callback function."
+msgstr "Un FontChooserWidget con una función de retorno de llamada."
+
+#. (itstool) path: section/code
+#: C/fontchooserwidget.js.page:30
+#, no-wrap
+msgid ""
+"//!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const FontChooserWidgetExample = new Lang.Class ({\n"
+" Name: 'Font Chooser Widget Example',\n"
+"\n"
+" // Create the application itthis\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application({ application_id: 'org.example.fontchooserwidget' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this.window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+" // Create the application window\n"
+" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"FontChooserWidget\",\n"
+" default_width: 200,\n"
+" default_height: 200,\n"
+" border_width: 10 });\n"
+"\n"
+" this.fontChooser = new Gtk.FontChooserWidget();\n"
+" // a default font\n"
+" this.fontChooser.set_font(\"Sans\");\n"
+" // a text to preview the font\n"
+" this.fontChooser.set_preview_text(\"This is an example of preview text!\");\n"
+"\n"
+" // connect signal from the font chooser to the callback function\n"
+" this.fontChooser.connect(\"notify::font\", Lang.bind(this, this._fontCb));\n"
+"\n"
+" // add the font chooser to the window\n"
+" this.window.add(this.fontChooser);\n"
+" this.window.show_all();\n"
+" },\n"
+"\n"
+" // callback function:\n"
+" _fontCb: function() {\n"
+" // print in the terminal\n"
+" print(\"You chose the font \" + this.fontChooser.get_font());\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new FontChooserWidgetExample();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"//!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const FontChooserWidgetExample = new Lang.Class ({\n"
+" Name: 'Font Chooser Widget Example',\n"
+"\n"
+" // Create the application itthis\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application({ application_id: 'org.example.fontchooserwidget' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this.window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+" // Create the application window\n"
+" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"FontChooserWidget\",\n"
+" default_width: 200,\n"
+" default_height: 200,\n"
+" border_width: 10 });\n"
+"\n"
+" this.fontChooser = new Gtk.FontChooserWidget();\n"
+" // a default font\n"
+" this.fontChooser.set_font(\"Sans\");\n"
+" // a text to preview the font\n"
+" this.fontChooser.set_preview_text(\"This is an example of preview text!\");\n"
+"\n"
+" // connect signal from the font chooser to the callback function\n"
+" this.fontChooser.connect(\"notify::font\", Lang.bind(this, this._fontCb));\n"
+"\n"
+" // add the font chooser to the window\n"
+" this.window.add(this.fontChooser);\n"
+" this.window.show_all();\n"
+" },\n"
+"\n"
+" // callback function:\n"
+" _fontCb: function() {\n"
+" // print in the terminal\n"
+" print(\"You chose the font \" + this.fontChooser.get_font());\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new FontChooserWidgetExample();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/fontchooserwidget.js.page:37 C/fontchooserwidget.py.page:47
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkFontChooserWidget."
+"html\">GtkFontChooserWidget</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkFontChooserWidget."
+"html\">GtkFontChooserWidget</link>"
+
+#. (itstool) path: info/title
+#: C/fontchooserwidget.py.page:8
+msgctxt "text"
+msgid "FontChooserWidget (Python)"
+msgstr "FontChooserWidget (Python)"
+
+#. (itstool) path: section/code
+#: C/fontchooserwidget.py.page:32
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"FontChooserWidget\", application=app)\n"
+"\n"
+" # a font chooser\n"
+" self.font_chooser = Gtk.FontChooserWidget()\n"
+" # a default font\n"
+" self.font_chooser.set_font(\"Sans\")\n"
+" # a text to preview the font\n"
+" self.font_chooser.set_preview_text(\n"
+" \"This is an example of preview text!\")\n"
+"\n"
+" # connect signal from the font chooser to the callback function\n"
+" self.font_chooser.connect(\"notify::font\", self.font_cb)\n"
+"\n"
+" # add the font chooser to the window\n"
+" self.add(self.font_chooser)\n"
+"\n"
+" # callback function:\n"
+" def font_cb(self, event, user_data):\n"
+" # print in the terminal\n"
+" print(\"You chose the font \" + self.font_chooser.get_font())\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"FontChooserWidget\", application=app)\n"
+"\n"
+" # a font chooser\n"
+" self.font_chooser = Gtk.FontChooserWidget()\n"
+" # a default font\n"
+" self.font_chooser.set_font(\"Sans\")\n"
+" # a text to preview the font\n"
+" self.font_chooser.set_preview_text(\n"
+" \"This is an example of preview text!\")\n"
+"\n"
+" # connect signal from the font chooser to the callback function\n"
+" self.font_chooser.connect(\"notify::font\", self.font_cb)\n"
+"\n"
+" # add the font chooser to the window\n"
+" self.add(self.font_chooser)\n"
+"\n"
+" # callback function:\n"
+" def font_cb(self, event, user_data):\n"
+" # print in the terminal\n"
+" print(\"You chose the font \" + self.font_chooser.get_font())\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/fontchooserwidget.py.page:35
+msgid "Useful methods for a FontChooserWidget"
+msgstr "Métodos útiles para un «FontChooserWidget»"
+
+#. (itstool) path: section/p
+#: C/fontchooserwidget.py.page:36
+msgid ""
+"In line 16 the <code>\"notify::font\"</code> signal from the widget is "
+"connected to the callback function <code>font_cb()</code> using "
+"<code><var>widget</var>.connect(<var>signal</var>, <var>callback function</"
+"var>)</code>. See <link xref=\"signals-callbacks.py\"/> for a more detailed "
+"explanation."
+msgstr ""
+"En la línea 16, la señal <code>«notify::font»</code> del widget se conecta a "
+"la función de retorno de llamada <code>font_cb()</code> usando "
+"<code><var>widget</var>.connect(<var>señal</var>, <var>función de retorno de "
+"llamada</var>)</code>. Consulte la <link xref=\"signals-callbacks.py\"/> "
+"para obtener una explicación más detallada."
+
+#. (itstool) path: item/p
+#: C/fontchooserwidget.py.page:38
+msgid ""
+"To set the font which is initially selected, use <code>set_font(font)</code> "
+"(where <code>font</code> is the font name) or <code>set_font_desc(font)</"
+"code> (where <code>font</code> is the PangoFontDescription)."
+msgstr ""
+"Para establecer la tipografía seleccionada inicialmente, use "
+"<code>set_font(tipografía)</code> (donde <code>tipografía</code> es el "
+"nombre de la tipografía) o <code>set_font_desc(tipografía)</code> (donde "
+"<code>tipografía</code> es la PangoFontDescription)."
+
+#. (itstool) path: item/p
+#: C/fontchooserwidget.py.page:39
+msgid ""
+"To get the selected font use <code>get_font()</code> or "
+"<code>get_font_desc()</code>."
+msgstr ""
+"Para obtener la fuente seleccionada use <code>get_font()</code> o "
+"<code>get_font_desc()</code>."
+
+#. (itstool) path: item/p
+#: C/fontchooserwidget.py.page:40
+msgid ""
+"To change the text which is shown in the preview area, use "
+"<code>set_preview_text()</code>."
+msgstr ""
+"Para cambiar el texto que se muestra en el área de previsualización, use "
+"<code>set_preview_text()</code>."
+
+#. (itstool) path: info/title
+#: C/fontchooserwidget.vala.page:8
+msgctxt "text"
+msgid "FontChooserWidget (Vala)"
+msgstr "FontChooserWidget (Vala)"
+
+#. (itstool) path: credit/name
+#: C/fontchooserwidget.vala.page:13
+msgid "Tiffany Antpoolski"
+msgstr "Tiffany Antpoolski"
+
+#. (itstool) path: page/p
+#: C/fontchooserwidget.vala.page:24
+msgid "A FontChooserWidget with a lambda callback function."
+msgstr "Un FontChooserWidget con una función de retorno de llamada lambda."
+
+#. (itstool) path: section/code
+#: C/fontchooserwidget.vala.page:30
+#, no-wrap
+msgid ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+" internal MyWindow (MyApplication app) {\n"
+" Object (application: app, title: \"FontChooserWidget\");\n"
+"\n"
+"\t\tvar font_chooser = new Gtk.FontChooserWidget ();\n"
+"\t\tfont_chooser.set_font (\"Sans\");\n"
+"\t\tfont_chooser.set_preview_text (\"This is an example of preview text!\");\n"
+"\t\tthis.add (font_chooser);\n"
+"\n"
+"\t\tfont_chooser.notify[\"font\"].connect (() => {\n"
+"\t\t\tprint (\"font: %s\\n\", font_chooser.get_font ().to_string ());\n"
+"\t\t\tprint (\"desc: %s\\n\", font_chooser.get_font_desc ().to_string ());\n"
+"\t\t\tprint (\"face: %s\\n\", font_chooser.get_font_face ().get_face_name ());\n"
+"\t\t\tprint (\"size: %d\\n\", font_chooser.get_font_size ());\n"
+"\t\t\tprint (\"family: %s\\n\", font_chooser.get_font_family ().get_name ());\n"
+"\t\t\tprint (\"monospace: %s\\n\\n\", font_chooser.get_font_family ().is_monospace ().to_string ());\n"
+"\t\t});\n"
+"\n"
+" this.show_all ();\n"
+" }\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+" protected override void activate () {\n"
+" new MyWindow (this).show ();\n"
+" }\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+" return new MyApplication ().run (args);\n"
+"}\n"
+"\n"
+msgstr ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+" internal MyWindow (MyApplication app) {\n"
+" Object (application: app, title: \"FontChooserWidget\");\n"
+"\n"
+"\t\tvar font_chooser = new Gtk.FontChooserWidget ();\n"
+"\t\tfont_chooser.set_font (\"Sans\");\n"
+"\t\tfont_chooser.set_preview_text (\"This is an example of preview text!\");\n"
+"\t\tthis.add (font_chooser);\n"
+"\n"
+"\t\tfont_chooser.notify[\"font\"].connect (() => {\n"
+"\t\t\tprint (\"font: %s\\n\", font_chooser.get_font ().to_string ());\n"
+"\t\t\tprint (\"desc: %s\\n\", font_chooser.get_font_desc ().to_string ());\n"
+"\t\t\tprint (\"face: %s\\n\", font_chooser.get_font_face ().get_face_name ());\n"
+"\t\t\tprint (\"size: %d\\n\", font_chooser.get_font_size ());\n"
+"\t\t\tprint (\"family: %s\\n\", font_chooser.get_font_family ().get_name ());\n"
+"\t\t\tprint (\"monospace: %s\\n\\n\", font_chooser.get_font_family ().is_monospace ().to_string ());\n"
+"\t\t});\n"
+"\n"
+" this.show_all ();\n"
+" }\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+" protected override void activate () {\n"
+" new MyWindow (this).show ();\n"
+" }\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+" return new MyApplication ().run (args);\n"
+"}\n"
+"\n"
+
+#. (itstool) path: item/p
+#: C/fontchooserwidget.vala.page:37
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.FontChooserWidget.html"
+"\">GtkFontChooserWidget</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.FontChooserWidget.html"
+"\">GtkFontChooserWidget</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/gmenu.c.page:22
+msgctxt "_"
+msgid "external ref='media/gmenu.c.png' md5='f305fc3cae8d16d72b734ee53b559e33'"
+msgstr ""
+"external ref='media/gmenu.c.png' md5='f305fc3cae8d16d72b734ee53b559e33'"
+
+#. (itstool) path: info/title
+#: C/gmenu.c.page:8
+msgctxt "text"
+msgid "GMenu (C)"
+msgstr "GMenu (C)"
+
+#. (itstool) path: info/desc
+#: C/gmenu.c.page:18 C/gmenu.js.page:18 C/gmenu.vala.page:24
+msgid "A simple implementation of GMenuModel"
+msgstr "Una implementación sencilla del GMenuModel"
+
+#. (itstool) path: page/title
+#: C/gmenu.c.page:21 C/gmenu.js.page:21 C/gmenu.py.page:29
+#: C/gmenu.vala.page:27
+msgid "GMenu"
+msgstr "GMenu"
+
+#. (itstool) path: page/p
+#: C/gmenu.c.page:23 C/gmenu.js.page:23 C/gmenu.py.page:31
+#: C/gmenu.vala.page:32
+msgid "A GtkApplication with a simple GMenu and SimpleActions"
+msgstr "Una GtkApplication con un GMenu sencillo y SimpleActions"
+
+#. (itstool) path: page/code
+#: C/gmenu.c.page:26
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"static void\n"
+"new_window (GSimpleAction *action,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"This does nothing. It is only a demonstration.\\n\");\n"
+"}\n"
+"\n"
+"static void\n"
+"quit (GSimpleAction *action,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GApplication *application = user_data;\n"
+"\n"
+" g_application_quit (application);\n"
+"}\n"
+"\n"
+"static void\n"
+"startup (GtkApplication *application,\n"
+" gpointer user_data)\n"
+"{\n"
+" static const GActionEntry actions[] = {\n"
+" { \"new\", new_window },\n"
+" { \"quit\", quit }\n"
+" };\n"
+"\n"
+" GMenu *menu;\n"
+"\n"
+" g_action_map_add_action_entries (G_ACTION_MAP (application), actions, G_N_ELEMENTS (actions),
application);\n"
+"\n"
+" menu = g_menu_new ();\n"
+" g_menu_append (menu, \"New\", \"app.new\");\n"
+" g_menu_append (menu, \"Quit\", \"app.quit\");\n"
+" gtk_application_set_app_menu (application, G_MENU_MODEL (menu));\n"
+" g_object_unref (menu);\n"
+"}\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+"\n"
+" gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n"
+"\n"
+" gtk_widget_show_all (GTK_WIDGET (window));\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"static void\n"
+"new_window (GSimpleAction *action,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"This does nothing. It is only a demonstration.\\n\");\n"
+"}\n"
+"\n"
+"static void\n"
+"quit (GSimpleAction *action,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GApplication *application = user_data;\n"
+"\n"
+" g_application_quit (application);\n"
+"}\n"
+"\n"
+"static void\n"
+"startup (GtkApplication *application,\n"
+" gpointer user_data)\n"
+"{\n"
+" static const GActionEntry actions[] = {\n"
+" { \"new\", new_window },\n"
+" { \"quit\", quit }\n"
+" };\n"
+"\n"
+" GMenu *menu;\n"
+"\n"
+" g_action_map_add_action_entries (G_ACTION_MAP (application), actions, G_N_ELEMENTS (actions),
application);\n"
+"\n"
+" menu = g_menu_new ();\n"
+" g_menu_append (menu, \"New\", \"app.new\");\n"
+" g_menu_append (menu, \"Quit\", \"app.quit\");\n"
+" gtk_application_set_app_menu (application, G_MENU_MODEL (menu));\n"
+" g_object_unref (menu);\n"
+"}\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+"\n"
+" gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n"
+"\n"
+" gtk_widget_show_all (GTK_WIDGET (window));\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/gmenu.js.page:22
+msgctxt "_"
+msgid ""
+"external ref='media/gmenu.js.png' md5='16b8bee122197771ec8498dac42f196b'"
+msgstr ""
+"external ref='media/gmenu.js.png' md5='16b8bee122197771ec8498dac42f196b'"
+
+#. (itstool) path: info/title
+#: C/gmenu.js.page:8
+msgctxt "text"
+msgid "GMenu (JavaScript)"
+msgstr "GMenu (JavaScript)"
+
+#. (itstool) path: page/code
+#: C/gmenu.js.page:25
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const Application = new Lang.Class ({\n"
+" Name: 'Application',\n"
+"\n"
+" //create the application\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.myapp',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" //connect to 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" //create the UI (in this case it's just the ApplicationWindow\n"
+" _buildUI: function() {\n"
+" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Welcome to GNOME\" });\n"
+"\n"
+" //uncommenting the line below will change the window size\n"
+" //this._window.set_default_size(600, 400);\n"
+"\n"
+" //show the window and all child widgets (none in this case)\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" _showNew: function() {\n"
+" print (\"This doesn't do anything. It is only a demonstration.\");\n"
+" },\n"
+"\n"
+" _showAbout: function() {\n"
+" print (\"No AboutDialog here. This is only a demonstration.\");\n"
+" },\n"
+"\n"
+" //create the menu items and connect the signals to the callback functions.\n"
+" _initMenus: function() {\n"
+" let menu = new Gio.Menu();\n"
+" menu.append(\"New\",'app.new');\n"
+" menu.append(\"About\", 'app.about');\n"
+" menu.append(\"Quit\",'app.quit');\n"
+" this.application.set_app_menu(menu);\n"
+"\n"
+" let newAction = new Gio.SimpleAction ({ name: 'new' });\n"
+" newAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showNew();\n"
+" }));\n"
+" this.application.add_action(newAction);\n"
+"\n"
+" let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n"
+" aboutAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showAbout();\n"
+" }));\n"
+" this.application.add_action(aboutAction);\n"
+"\n"
+" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+" },\n"
+"\n"
+" //callback function for 'activate' signal\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" //callback function for 'startup' signal\n"
+" _onStartup: function() {\n"
+" //You must call _initMenus() before calling _buildUI().\n"
+" this._initMenus();\n"
+" this._buildUI();\n"
+" }\n"
+"});\n"
+"\n"
+"//run the application\n"
+"let app = new Application ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const Application = new Lang.Class ({\n"
+" Name: 'Application',\n"
+"\n"
+" //create the application\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.myapp',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" //connect to 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" //create the UI (in this case it's just the ApplicationWindow\n"
+" _buildUI: function() {\n"
+" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Welcome to GNOME\" });\n"
+"\n"
+" //uncommenting the line below will change the window size\n"
+" //this._window.set_default_size(600, 400);\n"
+"\n"
+" //show the window and all child widgets (none in this case)\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" _showNew: function() {\n"
+" print (\"This doesn't do anything. It is only a demonstration.\");\n"
+" },\n"
+"\n"
+" _showAbout: function() {\n"
+" print (\"No AboutDialog here. This is only a demonstration.\");\n"
+" },\n"
+"\n"
+" //create the menu items and connect the signals to the callback functions.\n"
+" _initMenus: function() {\n"
+" let menu = new Gio.Menu();\n"
+" menu.append(\"New\",'app.new');\n"
+" menu.append(\"About\", 'app.about');\n"
+" menu.append(\"Quit\",'app.quit');\n"
+" this.application.set_app_menu(menu);\n"
+"\n"
+" let newAction = new Gio.SimpleAction ({ name: 'new' });\n"
+" newAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showNew();\n"
+" }));\n"
+" this.application.add_action(newAction);\n"
+"\n"
+" let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n"
+" aboutAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showAbout();\n"
+" }));\n"
+" this.application.add_action(aboutAction);\n"
+"\n"
+" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+" },\n"
+"\n"
+" //callback function for 'activate' signal\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" //callback function for 'startup' signal\n"
+" _onStartup: function() {\n"
+" //You must call _initMenus() before calling _buildUI().\n"
+" this._initMenus();\n"
+" this._buildUI();\n"
+" }\n"
+"});\n"
+"\n"
+"//run the application\n"
+"let app = new Application ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/gmenu.py.page:30
+msgctxt "_"
+msgid ""
+"external ref='media/gmenu.py.png' md5='52c68b34d5d566f37e9f803dedb6353a'"
+msgstr ""
+"external ref='media/gmenu.py.png' md5='52c68b34d5d566f37e9f803dedb6353a'"
+
+#. (itstool) path: info/title
+#: C/gmenu.py.page:8
+msgctxt "text"
+msgid "GMenu (Python)"
+msgstr "GMenu (Python)"
+
+#. (itstool) path: info/desc
+#: C/gmenu.py.page:26
+msgid "A simple implementation of GMenu"
+msgstr "Una implementación sencilla de GMenu"
+
+#. (itstool) path: section/code
+#: C/gmenu.py.page:37
+#, no-wrap
+msgid ""
+"\n"
+" from gi.repository import Gtk\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"GMenu Example\", application=app)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" # start the application\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # create a menu\n"
+" menu = Gio.Menu()\n"
+" # append to the menu three options\n"
+" menu.append(\"New\", \"app.new\")\n"
+" menu.append(\"About\", \"app.about\")\n"
+" menu.append(\"Quit\", \"app.quit\")\n"
+" # set the menu as menu of the application\n"
+" self.set_app_menu(menu)\n"
+"\n"
+" # create an action for the option \"new\" of the menu\n"
+" new_action = Gio.SimpleAction.new(\"new\", None)\n"
+" # connect it to the callback function new_cb\n"
+" new_action.connect(\"activate\", self.new_cb)\n"
+" # add the action to the application\n"
+" self.add_action(new_action)\n"
+"\n"
+" # option \"about\"\n"
+" about_action = Gio.SimpleAction.new(\"about\", None)\n"
+" about_action.connect(\"activate\", self.about_cb)\n"
+" self.add_action(about_action)\n"
+"\n"
+" # option \"quit\"\n"
+" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
+" quit_action.connect(\"activate\", self.quit_cb)\n"
+" self.add_action(quit_action)\n"
+"\n"
+" # callback function for \"new\"\n"
+" def new_cb(self, action, parameter):\n"
+" print(\"This does nothing. It is only a demonstration.\")\n"
+"\n"
+" # callback function for \"about\"\n"
+" def about_cb(self, action, parameter):\n"
+" print(\"No AboutDialog for you. This is only a demonstration.\")\n"
+"\n"
+" # callback function for \"quit\"\n"
+" def quit_cb(self, action, parameter):\n"
+" print(\"You have quit.\")\n"
+" self.quit()\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"\n"
+" from gi.repository import Gtk\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"GMenu Example\", application=app)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" # start the application\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # create a menu\n"
+" menu = Gio.Menu()\n"
+" # append to the menu three options\n"
+" menu.append(\"New\", \"app.new\")\n"
+" menu.append(\"About\", \"app.about\")\n"
+" menu.append(\"Quit\", \"app.quit\")\n"
+" # set the menu as menu of the application\n"
+" self.set_app_menu(menu)\n"
+"\n"
+" # create an action for the option \"new\" of the menu\n"
+" new_action = Gio.SimpleAction.new(\"new\", None)\n"
+" # connect it to the callback function new_cb\n"
+" new_action.connect(\"activate\", self.new_cb)\n"
+" # add the action to the application\n"
+" self.add_action(new_action)\n"
+"\n"
+" # option \"about\"\n"
+" about_action = Gio.SimpleAction.new(\"about\", None)\n"
+" about_action.connect(\"activate\", self.about_cb)\n"
+" self.add_action(about_action)\n"
+"\n"
+" # option \"quit\"\n"
+" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
+" quit_action.connect(\"activate\", self.quit_cb)\n"
+" self.add_action(quit_action)\n"
+"\n"
+" # callback function for \"new\"\n"
+" def new_cb(self, action, parameter):\n"
+" print(\"This does nothing. It is only a demonstration.\")\n"
+"\n"
+" # callback function for \"about\"\n"
+" def about_cb(self, action, parameter):\n"
+" print(\"No AboutDialog for you. This is only a demonstration.\")\n"
+"\n"
+" # callback function for \"quit\"\n"
+" def quit_cb(self, action, parameter):\n"
+" print(\"You have quit.\")\n"
+" self.quit()\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/gmenu.py.page:42
+msgid "Useful methods for a GSimpleAction and a GMenu"
+msgstr "Métodos útiles para una «GSimpleAction» y un GMenu"
+
+#. (itstool) path: section/p
+#: C/gmenu.py.page:44
+msgid ""
+"In line 33 the signal <code>\"activate\"</code> from the action "
+"<code>new_action</code> (not the menu!) is connected to the callback "
+"function <code>new_cb()</code> using <code><var>action</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 33, la señal <code>«activate»</code> de la acción "
+"<code>new_action</code> (no el menú) se conecta a la función de retorno de "
+"llamada <code>new_cb()</code> usando <code><var>action</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
+"explicación más detallada."
+
+#. (itstool) path: section/p
+#: C/gmenu.py.page:46
+msgid "Useful methods for a GSimpleAction:"
+msgstr "Métodos útiles para una «GSimpleAction»:"
+
+#. (itstool) path: item/p
+#: C/gmenu.py.page:48
+msgid ""
+"To create a new action that is <em>stateless</em>, that is, an action that "
+"do not retain or depend on a state given by the action itself, use"
+msgstr ""
+"Para crear una acción nueva que <em>no dependa del estado</em>, es decir, "
+"una acción que no retenga o dependa de un estado dado a la acción en sí, use"
+
+#. (itstool) path: item/code
+#: C/gmenu.py.page:49
+#, no-wrap
+msgid ""
+"\n"
+"action = Gio.SimpleAction.new(\"name\", parameter_type)"
+msgstr ""
+"\n"
+"action = Gio.SimpleAction.new(\"name\", parameter_type)"
+
+#. (itstool) path: item/p
+#: C/gmenu.py.page:51
+msgid ""
+"where <code>\"name\"</code> is the name of the action and "
+"<code>parameter_type</code> is the type of the parameters that the action "
+"receives when being activated. This can be <code>None</code>, or <code>GLib."
+"VariantType.new('s')</code> if the parameter is of type <code>str</code>, or "
+"instead of <code>'s'</code> a character as described <link href=\"http://"
+"developer.gnome.org/glib/unstable/glib-GVariantType.html\">here</link>. To "
+"create a new <em>stateful</em> (i.e. not stateless) action, use"
+msgstr ""
+"donde <code>\"name\"</code> es el nombre de la acción y "
+"<code>parameter_type</code> es el tipo de parámetro que recibe la acción "
+"cuando se activa. Este puede ser <code>None</code>, o <code>GLib.VariantType."
+"new('s')</code> si el parámetro es del tipo <code>str</code>, o en lugar de "
+"<code>'s'</code> un carácter como se describe <link href=\"http://developer."
+"gnome.org/glib/unstable/glib-GVariantType.html\">aquí</link>. Para crear una "
+"acción nueva <em>con estado</em>, use"
+
+#. (itstool) path: item/code
+#: C/gmenu.py.page:52
+#, no-wrap
+msgid ""
+"\n"
+"action = Gio.SimpleAction.new_stateful(\"name\", parameter_type, initial_state)"
+msgstr ""
+"\n"
+"action = Gio.SimpleAction.new_stateful(\"name\", parameter_type, initial_state)"
+
+#. (itstool) path: item/p
+#: C/gmenu.py.page:54
+msgid ""
+"where <code>initial_state</code> is defined as a GVariant - for instance "
+"<code>Glib.Variant.new_string('start')</code>; for a list of possibilities "
+"see <link href=\"http://developer.gnome.org/glib/unstable/glib-GVariant.html"
+"\">here</link>."
+msgstr ""
+"donde <code>initial_state</code> está definido como una GVariant: por "
+"ejemplo <code>Glib.Variant.new_string('start')</code>; para una lista de "
+"posibilidades consulte <link href=\"http://developer.gnome.org/glib/unstable/"
+"glib-GVariant.html\">aquí</link>."
+
+#. (itstool) path: item/p
+#: C/gmenu.py.page:55
+msgid ""
+"<code>set_enabled(True)</code> sets the action as enabled; an action must be "
+"enabled in order to be activated or in order to have its state changed from "
+"outside callers. This should only be called by the implementor of the "
+"action. Users of the action should not attempt to modify its enabled flag."
+msgstr ""
+"<code>set_enabled(True)</code> configura la acción como habilitada; una "
+"acción debe habilitarse para poder activarse o para que llamantes exteriores "
+"cambien su estado. Sólo el que implementa la acción debe llamarlo. Los "
+"usuarios de la acción no deben intentar modificar su opción «enabled»."
+
+#. (itstool) path: item/p
+#: C/gmenu.py.page:56
+msgid ""
+"<code>set_state(state)</code>, where <code>state</code> is a GVariant, sets "
+"the state of the action, updating the 'state' property to the given value. "
+"This should only be called by the implementor of the action; users of the "
+"action should instead call <code>change_state(state)</code> (where "
+"<code>state</code> is as above) to request the change."
+msgstr ""
+"<code>set_state(estado)</code>, donde <code>estado</code> es una GVariant, "
+"establece el estado de la acción, actualizando la propiedad «state» a un "
+"valor dado. Sólo el que implementa la acción debe llamarlo; los usuarios de "
+"la acción, en cambio, deben llamar a <code>change_state(estado)</code> "
+"(donde <code>estado</code> es como se mencionó) para solicitar el cambio."
+
+#. (itstool) path: section/p
+#: C/gmenu.py.page:59
+msgid "Useful methods for a GMenu:"
+msgstr "Métodos útiles para un GMenu:"
+
+#. (itstool) path: item/p
+#: C/gmenu.py.page:61
+msgid ""
+"To insert an item in the menu in position <code>position</code>, use "
+"<code>insert(position, label, detailed_action)</code>, where <code>label</"
+"code> is the label that will appear in the menu and <code>detailed_action</"
+"code> is a string composed of the name of the action to which we prepend the "
+"prefix <code>app.</code>. A more detailed discussion of this can be found in "
+"<link xref=\"menubar.py#win-app\"/>."
+msgstr ""
+"Para insertar un elemento en el menú en una <code>posición</code>, use "
+"<code>insert(posición, etiqueta, acción_detallada)</code>, donde "
+"<code>etiqueta</code> es la etiqueta que aparecerá en el menú y "
+"<code>acción_detallada</code> es una cadena compuesta por el nombre de la "
+"acción a la que se la agrega el prefijo <code>app.</code>. Puede encontrar "
+"una discusión más detallada de esto en la <link xref=\"menubar.py#win-app\"/"
+">."
+
+#. (itstool) path: item/p
+#: C/gmenu.py.page:62
+msgid ""
+"To append or prepend an item in the menu use respectively "
+"<code>append(label, detailed_action)</code> and <code>prepend(label, "
+"detailed_action)</code>."
+msgstr ""
+"Para agregar o anteponer un elemento en el menú use respectivamente "
+"<code>append(etiqueta, acción_detallada)</code> y <code>prepend(etiqueta, "
+"acción_detallada)</code>."
+
+#. (itstool) path: item/p
+#: C/gmenu.py.page:63
+msgid ""
+"Another way of adding items to the menu is to create them as "
+"<code>GMenuItem</code>s and use <code>insert_item(position, item)</code>, "
+"<code>append_item(item)</code>, or <code>prepend_item(item)</code>; so for "
+"instance we might have:"
+msgstr ""
+"Otra manera de añadir elementos al menú es crearlos como <code>GMenuItem</"
+"code> y usar <code>insert_item(posición, elemento)</code>, "
+"<code>append_item(elemento)</code>, o <code>prepend_item(elemento)</code>; "
+"por lo que por ejemplo se podría tener:"
+
+#. (itstool) path: item/code
+#: C/gmenu.py.page:64
+#, no-wrap
+msgid ""
+"\n"
+"about = Gio.MenuItem.new(\"About\", \"app.about\")\n"
+"menu.append_item(about)"
+msgstr ""
+"\n"
+"about = Gio.MenuItem.new(\"About\", \"app.about\")\n"
+"menu.append_item(about)"
+
+#. (itstool) path: item/p
+#: C/gmenu.py.page:68
+msgid ""
+"We can also add a whole subsection in a menu using "
+"<code>insert_section(position, label, section)</code>, "
+"<code>append_section(label, section)</code>, or <code>prepend_section(label, "
+"section)</code>, where <code>label</code> is the title of the subsection."
+msgstr ""
+"También se puede añadir una subsección completa a un menú usando "
+"<code>insert_section(posición, etiqueta, sección)</code>, "
+"<code>append_section(etiqueta, sección)</code>, o "
+"<code>prepend_section(etiqueta, sección)</code>, donde <code>etiqueta</code> "
+"es el título de la subsección."
+
+#. (itstool) path: item/p
+#: C/gmenu.py.page:69
+msgid ""
+"To add a submenu that will expand and collapse, use "
+"<code>insert_submenu(position, label, section)</code>, "
+"<code>append_submenu(label, section)</code>, or <code>prepend_submenu(label, "
+"section)</code>, where <code>label</code> is the title of the subsection."
+msgstr ""
+"Para añadir un submenú que se expanda y colapse, use "
+"<code>insert_submenu(posición, etiqueta, sección)</code>, "
+"<code>append_submenu(etiqueta, sección)</code>, o "
+"<code>prepend_submenu(etiqueta, sección)</code>, donde <code>etiqueta</code> "
+"es el título de la subsección."
+
+#. (itstool) path: item/p
+#: C/gmenu.py.page:70
+msgid "To remove an item from the menu, use <code>remove(position)</code>."
+msgstr "Para eliminar un elemento del menú, use <code>remove(posición)</code>."
+
+#. (itstool) path: item/p
+#: C/gmenu.py.page:71
+msgid "To set a label for the menu, use <code>set_label(label)</code>."
+msgstr ""
+"Para establecer una etiqueta para el menú, use <code>set_label(etiqueta)</"
+"code>."
+
+#. (itstool) path: item/p
+#: C/gmenu.py.page:82
+msgid ""
+"<link href=\"http://developer.gnome.org/glib/unstable/glib-GVariantType.html"
+"\">GVariantType</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/glib/unstable/glib-GVariantType.html"
+"\">GVariantType</link>"
+
+#. (itstool) path: item/p
+#: C/gmenu.py.page:83
+msgid ""
+"<link href=\"http://developer.gnome.org/glib/unstable/glib-GVariant.html"
+"\">GVariant</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/glib/unstable/glib-GVariant.html"
+"\">GVariant</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/gmenu.vala.page:28
+msgctxt "_"
+msgid ""
+"external ref='media/gmenu.vala.png' md5='7a9f381fc3ed5bf8d1c50d2acb095400'"
+msgstr ""
+"external ref='media/gmenu.vala.png' md5='7a9f381fc3ed5bf8d1c50d2acb095400'"
+
+#. (itstool) path: info/title
+#: C/gmenu.vala.page:8
+msgctxt "text"
+msgid "GMenu (Vala)"
+msgstr "GMenu (Vala)"
+
+#. (itstool) path: note/p
+#: C/gmenu.vala.page:30
+msgid ""
+"<em style=\"strong\">You need to be running GTK+-3.4 or later for this to "
+"work</em>"
+msgstr ""
+"<em style=\"strong\">Necesita ejecutar GTK+-3.4 o superior para que "
+"funcione</em>"
+
+#. (itstool) path: page/code
+#: C/gmenu.vala.page:34
+#, no-wrap
+msgid ""
+"/* A window in the application. */\n"
+"public class Window : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Constructor */\n"
+"\tpublic Window (Application app) {\n"
+"\t\tObject (application: app, title: \"Gmenu Example\");\n"
+"\n"
+"\t\tvar about_action = new SimpleAction (\"about\", null);\n"
+"\n"
+"\t\t/* Connect the 'activate' signal to the\n"
+"\t\t * signal handler (aka. callback).\n"
+"\t\t */\n"
+"\t\tabout_action.activate.connect (this.about_cb);\n"
+"\n"
+"\t\t/* Add the action to this window. */\n"
+"\t\tthis.add_action (about_action);\n"
+"\n"
+"\t\tthis.show ();\n"
+"\t}\n"
+"\n"
+"\t/* Signal handler for 'activate' signal of the SimpleAction. */\n"
+"\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n"
+"\t\tprint (\"This does nothing. It is only a demonstration.\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the Application. */\n"
+"public class Application : Gtk.Application {\n"
+"\n"
+"\t/* Constructor */\n"
+"\tpublic Application () {\n"
+"\t\tObject (application_id: \"org.example.application\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t/* Create a new window for this application. */\n"
+"\t\tnew Window (this);\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'startup' signal of GLib.Application. */\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\tvar menu = new Menu ();\n"
+"\t\tmenu.append (\"About\", \"win.about\");\n"
+"\t\tmenu.append (\"Quit\", \"app.quit\");\n"
+"\t\tthis.app_menu = menu;\n"
+"\n"
+"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
+"\t\tquit_action.activate.connect (this.quit);\n"
+"\t\tthis.add_action (quit_action);\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main function creates Application and runs it. */\n"
+"int main (string[] args) {\n"
+"\treturn new Application ().run (args);\n"
+"}\n"
+msgstr ""
+"/* A window in the application. */\n"
+"public class Window : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Constructor */\n"
+"\tpublic Window (Application app) {\n"
+"\t\tObject (application: app, title: \"Gmenu Example\");\n"
+"\n"
+"\t\tvar about_action = new SimpleAction (\"about\", null);\n"
+"\n"
+"\t\t/* Connect the 'activate' signal to the\n"
+"\t\t * signal handler (aka. callback).\n"
+"\t\t */\n"
+"\t\tabout_action.activate.connect (this.about_cb);\n"
+"\n"
+"\t\t/* Add the action to this window. */\n"
+"\t\tthis.add_action (about_action);\n"
+"\n"
+"\t\tthis.show ();\n"
+"\t}\n"
+"\n"
+"\t/* Signal handler for 'activate' signal of the SimpleAction. */\n"
+"\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n"
+"\t\tprint (\"This does nothing. It is only a demonstration.\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the Application. */\n"
+"public class Application : Gtk.Application {\n"
+"\n"
+"\t/* Constructor */\n"
+"\tpublic Application () {\n"
+"\t\tObject (application_id: \"org.example.application\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t/* Create a new window for this application. */\n"
+"\t\tnew Window (this);\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'startup' signal of GLib.Application. */\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\tvar menu = new Menu ();\n"
+"\t\tmenu.append (\"About\", \"win.about\");\n"
+"\t\tmenu.append (\"Quit\", \"app.quit\");\n"
+"\t\tthis.app_menu = menu;\n"
+"\n"
+"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
+"\t\tquit_action.activate.connect (this.quit);\n"
+"\t\tthis.add_action (quit_action);\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main function creates Application and runs it. */\n"
+"int main (string[] args) {\n"
+"\treturn new Application ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/gmenu.vala.page:41
+msgid ""
+"<link href=\"http://www.valadoc.org/gio-2.0/GLib.Menu.Menu.html\">Menu</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gio-2.0/GLib.Menu.Menu.html\">Menu</link>"
+
+#. (itstool) path: item/p
+#: C/gmenu.vala.page:42
+msgid ""
+"<link href=\"http://www.valadoc.org/gio-2.0/GLib.Menu.append.html\">append</"
+"link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gio-2.0/GLib.Menu.append.html\">append</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/gmenu.vala.page:43
+msgid ""
+"<link href=\"http://www.valadoc.org/gio-2.0/GLib.SimpleAction.html"
+"\">SimpleAction</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gio-2.0/GLib.SimpleAction.html"
+"\">SimpleAction</link>"
+
+#. (itstool) path: item/p
+#: C/gmenu.vala.page:44
+msgid ""
+"<link href=\"http://www.valadoc.org/gio-2.0/GLib.ActionMap.add_action.html"
+"\">add_action</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gio-2.0/GLib.ActionMap.add_action.html"
+"\">add_action</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/grid.c.page:23 C/grid.js.page:26 C/grid.vala.page:24
+msgctxt "_"
+msgid "external ref='media/grid.png' md5='27d45da115401127456a3b854dcfc5be'"
+msgstr "external ref='media/grid.png' md5='27d45da115401127456a3b854dcfc5be'"
+
+#. (itstool) path: info/title
+#: C/grid.c.page:8
+msgctxt "text"
+msgid "Grid (C)"
+msgstr "Grid (C)"
+
+#. (itstool) path: info/desc
+#: C/grid.c.page:18 C/grid.js.page:22 C/grid.py.page:26 C/grid.vala.page:20
+msgid "Pack widgets in rows and columns"
+msgstr "Empaquetar widgets en filas y columnas"
+
+#. (itstool) path: page/title
+#: C/grid.c.page:21 C/grid.js.page:25 C/grid.py.page:29
+msgid "Grid"
+msgstr "Rejilla"
+
+#. (itstool) path: page/p
+#: C/grid.c.page:24 C/grid.vala.page:25
+msgid "A button widget connected to a progress bar."
+msgstr "Un widget de botón conectado a una barra de progreso."
+
+#. (itstool) path: page/code
+#: C/grid.c.page:26
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/*Signal handler for the \"clicked\" signal of the Button. Each\n"
+"click generates a progress bar pulse*/\n"
+"static void\n"
+"on_button_click (GtkButton *button,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkProgressBar *progress_bar = user_data;\n"
+" gtk_progress_bar_pulse (progress_bar);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *grid;\n"
+" GtkWidget *window;\n"
+" GtkWidget *button;\n"
+" GtkWidget *progress_bar;\n"
+"\n"
+" /*Create the window and set a title*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Grid Example\");\n"
+"\n"
+" /*Create a button with a label*/\n"
+" button = gtk_button_new_with_label (\"Button\");\n"
+"\n"
+" /*Create the progress bar*/\n"
+" progress_bar = gtk_progress_bar_new ();\n"
+"\n"
+" /*Create a grid and attach the button and progress bar\n"
+" accordingly*/\n"
+" grid = gtk_grid_new ();\n"
+" gtk_grid_attach (GTK_GRID (grid), button, 1, 1, 1, 1);\n"
+" gtk_grid_attach_next_to (GTK_GRID (grid), \n"
+" progress_bar, \n"
+" button, \n"
+" GTK_POS_BOTTOM, 1, 1);\n"
+"\n"
+" /*Connecting the clicked signal to the callback function*/\n"
+" g_signal_connect (GTK_BUTTON (button), \"clicked\", \n"
+" G_CALLBACK (on_button_click), progress_bar);\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/*Signal handler for the \"clicked\" signal of the Button. Each\n"
+"click generates a progress bar pulse*/\n"
+"static void\n"
+"on_button_click (GtkButton *button,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkProgressBar *progress_bar = user_data;\n"
+" gtk_progress_bar_pulse (progress_bar);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *grid;\n"
+" GtkWidget *window;\n"
+" GtkWidget *button;\n"
+" GtkWidget *progress_bar;\n"
+"\n"
+" /*Create the window and set a title*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Grid Example\");\n"
+"\n"
+" /*Create a button with a label*/\n"
+" button = gtk_button_new_with_label (\"Button\");\n"
+"\n"
+" /*Create the progress bar*/\n"
+" progress_bar = gtk_progress_bar_new ();\n"
+"\n"
+" /*Create a grid and attach the button and progress bar\n"
+" accordingly*/\n"
+" grid = gtk_grid_new ();\n"
+" gtk_grid_attach (GTK_GRID (grid), button, 1, 1, 1, 1);\n"
+" gtk_grid_attach_next_to (GTK_GRID (grid), \n"
+" progress_bar, \n"
+" button, \n"
+" GTK_POS_BOTTOM, 1, 1);\n"
+"\n"
+" /*Connecting the clicked signal to the callback function*/\n"
+" g_signal_connect (GTK_BUTTON (button), \"clicked\", \n"
+" G_CALLBACK (on_button_click), progress_bar);\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/grid.c.page:34 C/progressbar.c.page:35
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkProgressBar.html"
+"\">GtkProgressBar</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkProgressBar.html"
+"\">GtkProgressBar</link>"
+
+#. (itstool) path: info/title
+#: C/grid.js.page:8
+msgctxt "text"
+msgid "Grid (JavaScript)"
+msgstr "Grid (JavaScript)"
+
+#. (itstool) path: page/p
+#: C/grid.js.page:27
+msgid ""
+"A button widget connected to a progress bar, inside of a grid which handles "
+"the layout."
+msgstr ""
+"Un widget de botón conectado a una barra de progreso., dentro de una rejilla "
+"que gestiona la distribución."
+
+#. (itstool) path: page/code
+#: C/grid.js.page:29
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const GridExample = new Lang.Class ({\n"
+" Name: 'Grid Example',\n"
+"\n"
+" /* Create the application itself\n"
+" This boilerplate code is needed to build any GTK+ application. */\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jsgrid',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal initializes menus and builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Grid Example\"});\n"
+"\n"
+" // Create the grid\n"
+" this.Grid = new Gtk.Grid ();\n"
+"\n"
+" // Create the widgets inside the grid\n"
+" this.progressBar = new Gtk.ProgressBar ();\n"
+" this.Button = new Gtk.Button ({ label: \"Button\" });\n"
+" this.Button.connect (\"clicked\", Lang.bind(this, this._clickHandler));\n"
+"\n"
+" // Assemble the grid\n"
+" this._window.add (this.Grid);\n"
+" this.Grid.attach (this.Button, 1, 1, 1, 1);\n"
+" this.Grid.attach_next_to (this.progressBar, this.Button, Gtk.PositionType.BOTTOM, 1, 1);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" // Here's the function that says what happens when the button is clicked\n"
+" _clickHandler: function () {\n"
+" this.progressBar.pulse ();\n"
+" }\n"
+"\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new GridExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const GridExample = new Lang.Class ({\n"
+" Name: 'Grid Example',\n"
+"\n"
+" /* Create the application itself\n"
+" This boilerplate code is needed to build any GTK+ application. */\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jsgrid',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal initializes menus and builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Grid Example\"});\n"
+"\n"
+" // Create the grid\n"
+" this.Grid = new Gtk.Grid ();\n"
+"\n"
+" // Create the widgets inside the grid\n"
+" this.progressBar = new Gtk.ProgressBar ();\n"
+" this.Button = new Gtk.Button ({ label: \"Button\" });\n"
+" this.Button.connect (\"clicked\", Lang.bind(this, this._clickHandler));\n"
+"\n"
+" // Assemble the grid\n"
+" this._window.add (this.Grid);\n"
+" this.Grid.attach (this.Button, 1, 1, 1, 1);\n"
+" this.Grid.attach_next_to (this.progressBar, this.Button, Gtk.PositionType.BOTTOM, 1, 1);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" // Here's the function that says what happens when the button is clicked\n"
+" _clickHandler: function () {\n"
+" this.progressBar.pulse ();\n"
+" }\n"
+"\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new GridExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/grid.js.page:37
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html"
+"\">Gtk.Grid</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html"
+"\">Gtk.Grid</link>"
+
+#. (itstool) path: item/p
+#: C/grid.js.page:38 C/progressbar.js.page:42
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ProgressBar."
+"html\">Gtk.ProgressBar</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.ProgressBar."
+"html\">Gtk.ProgressBar</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/grid.py.page:31
+msgctxt "_"
+msgid ""
+"external ref='media/grid_simple.png' md5='c806f2e69b30373d4d2e08b41d6cc1f6'"
+msgstr ""
+"external ref='media/grid_simple.png' md5='c806f2e69b30373d4d2e08b41d6cc1f6'"
+
+#. (itstool) path: info/title
+#: C/grid.py.page:8
+msgctxt "text"
+msgid "Grid (Python)"
+msgstr "Grid (Python)"
+
+#. (itstool) path: page/p
+#: C/grid.py.page:32
+msgid "Some labels in a grid."
+msgstr "Algunas etiquetas en una rejilla."
+
+#. (itstool) path: section/code
+#: C/grid.py.page:38
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Grid Example\", application=app)\n"
+"\n"
+" # three labels\n"
+" label_top_left = Gtk.Label(label=\"This is Top Left\")\n"
+" label_top_right = Gtk.Label(label=\"This is Top Right\")\n"
+" label_bottom = Gtk.Label(label=\"This is Bottom\")\n"
+"\n"
+" # a grid\n"
+" grid = Gtk.Grid()\n"
+"\n"
+" # some space between the columns of the grid\n"
+" grid.set_column_spacing(20)\n"
+"\n"
+" # in the grid:\n"
+" # attach the first label in the top left corner\n"
+" grid.attach(label_top_left, 0, 0, 1, 1)\n"
+" # attach the second label\n"
+" grid.attach(label_top_right, 1, 0, 1, 1)\n"
+" # attach the third label below the first label\n"
+" grid.attach_next_to(\n"
+" label_bottom, label_top_left, Gtk.PositionType.BOTTOM, 2, 1)\n"
+"\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Grid Example\", application=app)\n"
+"\n"
+" # three labels\n"
+" label_top_left = Gtk.Label(label=\"This is Top Left\")\n"
+" label_top_right = Gtk.Label(label=\"This is Top Right\")\n"
+" label_bottom = Gtk.Label(label=\"This is Bottom\")\n"
+"\n"
+" # a grid\n"
+" grid = Gtk.Grid()\n"
+"\n"
+" # some space between the columns of the grid\n"
+" grid.set_column_spacing(20)\n"
+"\n"
+" # in the grid:\n"
+" # attach the first label in the top left corner\n"
+" grid.attach(label_top_left, 0, 0, 1, 1)\n"
+" # attach the second label\n"
+" grid.attach(label_top_right, 1, 0, 1, 1)\n"
+" # attach the third label below the first label\n"
+" grid.attach_next_to(\n"
+" label_bottom, label_top_left, Gtk.PositionType.BOTTOM, 2, 1)\n"
+"\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/grid.py.page:42
+msgid "Useful methods for a Grid widget"
+msgstr "Métodos útiles para un widget «Grid»"
+
+#. (itstool) path: item/p
+#: C/grid.py.page:45
+msgid ""
+"To attach a widget <code>child</code> in position <code>left, top</code> in "
+"a slot of given <code>width, height</code> use <code>attach(child, top, "
+"left, width, height)</code>. If a widget <code>sibling</code> is already in "
+"place, we can also use <code>attach_next_to(child, sibling, side, width, "
+"height)</code>, where <code>side</code> is one of <code>Gtk.PositionType."
+"LEFT, Gtk.PositionType.RIGHT, Gtk.PositionType.TOP, Gtk.PositionType.BOTTOM</"
+"code>."
+msgstr ""
+"Para añadir un widget <code>hijo</code> en la posición <code>izquierda, "
+"arriba</code> en un espacio de una <code>anchura, altura</code> dada use "
+"<code>attach(hijo, arriba, izquierda, anchura, altura</code>. Si un widget "
+"<code>hermano</code> ya está en posición, también se puede usar "
+"<code>attach_next_to(hijo, hermano, lado, anchura, altura)</code>, donde "
+"<code>lado</code> puede ser <code>Gtk.PositionType.LEFT, Gtk.PositionType."
+"RIGHT, Gtk.PositionType.TOP, Gtk.PositionType.BOTTOM</code>."
+
+#. (itstool) path: item/p
+#: C/grid.py.page:46
+msgid ""
+"<code>insert_row(position)</code> and <code>insert_column(position)</code> "
+"do exactly what they say; children which are attached at or below this "
+"position are moved one row down, and children which span across this "
+"position are grown to span the new row. <code>insert_next_to(sibling, side)</"
+"code> inserts a row or column at the specified position. The new row or "
+"column is placed next to <code>sibling</code>, on the side determined by "
+"<code>side</code>; if side is <code>Gtk.PositionType.TOP</code> or <code>Gtk."
+"PositionType.BOTTOM</code>, a row is inserted, if side is <code>Gtk."
+"PositionType.LEFT</code> or <code>Gtk.PositionType.RIGHT</code>, a column is "
+"inserted."
+msgstr ""
+"<code>insert_row(posición)</code> e <code>insert_column(posición)</code> "
+"hacen que los hijos añadidos en esa posición o por debajo se muevan una fila "
+"hacia abajo, y que los hijos que se extienden a lo largo de esta posición "
+"crezcan para ocupar la siguiente fila. <code>insert_next_to(hermano, lado)</"
+"code> inserta una fila o columna en la posición especificada. La fila o "
+"columna nueva se pone al lado del <code>hermano</code>, a su <code>lado</"
+"code>; si es <code>Gtk.PositionType.TOP</code> or <code>Gtk.PositionType."
+"BOTTOM</code>, se inserta una fila; si es <code>Gtk.PositionType.LEFT</code> "
+"o <code>Gtk.PositionType.RIGHT</code>, se inserta una columna."
+
+#. (itstool) path: item/p
+#: C/grid.py.page:47
+msgid ""
+"<code>set_row_homogeneous(True)</code> and "
+"<code>set_column_homogeneous(True)</code> ensure that (respectively) every "
+"row or every column has the same width or height."
+msgstr ""
+"<code>set_row_homogeneous(True)</code> y <code>set_column_homogeneous(True)</"
+"code> se aseguran de que (respectivamente) cada fila o cada columna tengan "
+"la misma anchura o altura."
+
+#. (itstool) path: item/p
+#: C/grid.py.page:48
+msgid ""
+"<code>set_row_spacing(spacing)</code> and <code>set_column_spacing(spacing)</"
+"code> force a spacing between (respectively) rows or columns. The value of "
+"<code>spacing</code> can be between <code>0</code>, which is the default "
+"value, and <code>32767</code>."
+msgstr ""
+"<code>set_row_spacing(espaciado)</code> y "
+"<code>set_column_spacing(espaciado)</code> fuerzan un espaciado entre "
+"(respectivamente) filas o columnas. El valor de <code>espaciado</code> puede "
+"estar entre <code>0</code>, que es el valor predeterminado, y <code>32767</"
+"code>."
+
+#. (itstool) path: item/p
+#: C/grid.py.page:59 C/label.py.page:105 C/separator.c.page:41
+#: C/separator.py.page:42 C/switch.py.page:46
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkLabel.html"
+"\">GtkLabel</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkLabel.html"
+"\">GtkLabel</link>"
+
+#. (itstool) path: item/p
+#: C/grid.py.page:60 C/paned.c.page:38 C/paned.py.page:44
+#: C/scrolledwindow.py.page:47
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkImage.html"
+"\">GtkImage</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkImage.html"
+"\">GtkImage</link>"
+
+#. (itstool) path: item/p
+#: C/grid.py.page:61 C/radiobutton.py.page:50 C/separator.c.page:40
+#: C/separator.py.page:41 C/switch.py.page:47 C/toolbar_builder.py.page:196
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkGrid.html"
+"\">GtkGrid</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkGrid.html"
+"\">GtkGrid</link>"
+
+#. (itstool) path: info/title
+#: C/grid.vala.page:8
+msgctxt "text"
+msgid "Grid (Vala)"
+msgstr "Grid (Vala)"
+
+#. (itstool) path: page/title
+#: C/grid.vala.page:23
+msgid "Grid widget"
+msgstr "Widget de rejilla"
+
+#. (itstool) path: page/code
+#: C/grid.vala.page:27
+#, no-wrap
+msgid ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tGtk.Widget progress_bar;\n"
+"\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Grid Example\");\n"
+"\t\tvar grid = new Gtk.Grid();\n"
+"\t\tprogress_bar = new Gtk.ProgressBar ();\n"
+"\t\tprogress_bar.show ();\n"
+"\n"
+"\t\tvar button = new Gtk.Button.with_label (\"Button\");\n"
+"\t\tbutton.clicked.connect (on_button_click);\n"
+"\t\tbutton.show ();\n"
+"\n"
+"\t\tthis.add(grid);\n"
+"\t\tgrid.attach(button, 0, 1, 1, 1);\n"
+"\t\tgrid.attach_next_to (progress_bar, button, Gtk.PositionType.BOTTOM, 1, 1);\n"
+"\t\tgrid.show ();\n"
+"\t}\n"
+"\n"
+"\tvoid on_button_click (Gtk.Button button) {\n"
+"\t\t(progress_bar as Gtk.ProgressBar).pulse ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tGtk.Widget progress_bar;\n"
+"\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Grid Example\");\n"
+"\t\tvar grid = new Gtk.Grid();\n"
+"\t\tprogress_bar = new Gtk.ProgressBar ();\n"
+"\t\tprogress_bar.show ();\n"
+"\n"
+"\t\tvar button = new Gtk.Button.with_label (\"Button\");\n"
+"\t\tbutton.clicked.connect (on_button_click);\n"
+"\t\tbutton.show ();\n"
+"\n"
+"\t\tthis.add(grid);\n"
+"\t\tgrid.attach(button, 0, 1, 1, 1);\n"
+"\t\tgrid.attach_next_to (progress_bar, button, Gtk.PositionType.BOTTOM, 1, 1);\n"
+"\t\tgrid.show ();\n"
+"\t}\n"
+"\n"
+"\tvoid on_button_click (Gtk.Button button) {\n"
+"\t\t(progress_bar as Gtk.ProgressBar).pulse ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/grid.vala.page:32
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Grid.html\">Gtk.Grid</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Grid.html\">Gtk.Grid</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/GtkApplicationWindow.c.page:22 C/GtkApplicationWindow.js.page:22
+#: C/GtkApplicationWindow.py.page:29 C/GtkApplicationWindow.vala.page:22
+#: C/window.c.page:22 C/window.js.page:25 C/window.py.page:33
+#: C/window.vala.page:25
+msgctxt "_"
+msgid "external ref='media/window.png' md5='eb0cde3530978619c25bddfaeb453345'"
+msgstr "external ref='media/window.png' md5='eb0cde3530978619c25bddfaeb453345'"
+
+#. (itstool) path: info/title
+#: C/GtkApplicationWindow.c.page:8
+msgctxt "text"
+msgid "ApplicationWindow (C)"
+msgstr "ApplicationWindow (C)"
+
+#. (itstool) path: info/desc
+#: C/GtkApplicationWindow.c.page:18
+msgid "A toplevel window which can contain other widgets, and support GMenu"
+msgstr ""
+"Una ventana de nivel superior que puede contener otros widgets, y que "
+"soporta GMenu"
+
+#. (itstool) path: page/title
+#: C/GtkApplicationWindow.c.page:21 C/GtkApplicationWindow.js.page:21
+#: C/GtkApplicationWindow.py.page:28 C/GtkApplicationWindow.vala.page:21
+msgid "ApplicationWindow"
+msgstr "ApplicationWindow"
+
+#. (itstool) path: page/p
+#: C/GtkApplicationWindow.c.page:23
+msgid "A minimal GtkApplication with a GtkApplicationWindow"
+msgstr "Una GtkApplication con una GtkApplicationWindow"
+
+#. (itstool) path: page/code
+#: C/GtkApplicationWindow.c.page:25
+#, no-wrap
+msgid ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/GtkApplicationWindow.c.page:31
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkApplicationWindow.html"
+"\">GtkApplicationWindow</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkApplicationWindow.html"
+"\">GtkApplicationWindow</link>"
+
+#. (itstool) path: info/title
+#: C/GtkApplicationWindow.js.page:8
+msgctxt "text"
+msgid "ApplicationWindow (JavaScript)"
+msgstr "ApplicationWindow (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/GtkApplicationWindow.js.page:18 C/GtkApplicationWindow.py.page:25
+#: C/GtkApplicationWindow.vala.page:18
+msgid "GtkWindow subclass with GtkApplication support"
+msgstr "Subclase GtkWindow con soporte de GtkApplication"
+
+#. (itstool) path: page/p
+#: C/GtkApplicationWindow.js.page:23
+msgid "A simple GtkApplicationWindow which can support Menus."
+msgstr "Una GtkApplicationWindow sencilla que soporta menús."
+
+#. (itstool) path: page/code
+#: C/GtkApplicationWindow.js.page:25
+#, no-wrap
+msgid ""
+"\n"
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const Application = new Lang.Class ({\n"
+" Name: 'Application',\n"
+"\n"
+" //create the application\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.myapp',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" //connect to 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" //create the UI (in this case it's just the ApplicationWindow\n"
+" _buildUI: function () {\n"
+" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Welcome to GNOME\" });\n"
+"\n"
+" //uncommenting the line below will change the window size\n"
+" //this._window.set_default_size(600, 400);\n"
+"\n"
+" //show the window and all child widgets (none in this case)\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" //callback function for 'activate' signal\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" //callback function for 'startup' signal\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" }\n"
+"});\n"
+"\n"
+"//run the application\n"
+"let app = new Application ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const Application = new Lang.Class ({\n"
+" Name: 'Application',\n"
+"\n"
+" //create the application\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.myapp',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" //connect to 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" //create the UI (in this case it's just the ApplicationWindow\n"
+" _buildUI: function () {\n"
+" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Welcome to GNOME\" });\n"
+"\n"
+" //uncommenting the line below will change the window size\n"
+" //this._window.set_default_size(600, 400);\n"
+"\n"
+" //show the window and all child widgets (none in this case)\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" //callback function for 'activate' signal\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" //callback function for 'startup' signal\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" }\n"
+"});\n"
+"\n"
+"//run the application\n"
+"let app = new Application ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: info/title
+#: C/GtkApplicationWindow.py.page:8
+msgctxt "text"
+msgid "ApplicationWindow (Python)"
+msgstr "ApplicationWindow (Python)"
+
+#. (itstool) path: page/p
+#: C/GtkApplicationWindow.py.page:30
+msgid ""
+"The simplest GtkApplication Window which can support <link xref=\"gmenu.py\"/"
+">."
+msgstr ""
+"La ventana de GtkApplication más sencilla que puede soportar <link xref="
+"\"gmenu.py\"/>."
+
+#. (itstool) path: section/code
+#: C/GtkApplicationWindow.py.page:37
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"# a Gtk ApplicationWindow\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # constructor: the title is \"Welcome to GNOME\" and the window belongs\n"
+" # to the application app\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+" # constructor of the Gtk Application\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" # create and activate a MyWindow, with self (the MyApplication) as\n"
+" # application the window belongs to.\n"
+" # Note that the function in C activate() becomes do_activate() in Python\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" # show the window and all its content\n"
+" # this line could go in the constructor of MyWindow as well\n"
+" win.show_all()\n"
+"\n"
+" # start up the application\n"
+" # Note that the function in C startup() becomes do_startup() in Python\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"# create and run the application, exit with the value returned by\n"
+"# running the program\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"# a Gtk ApplicationWindow\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # constructor: the title is \"Welcome to GNOME\" and the window belongs\n"
+" # to the application app\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+" # constructor of the Gtk Application\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" # create and activate a MyWindow, with self (the MyApplication) as\n"
+" # application the window belongs to.\n"
+" # Note that the function in C activate() becomes do_activate() in Python\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" # show the window and all its content\n"
+" # this line could go in the constructor of MyWindow as well\n"
+" win.show_all()\n"
+"\n"
+" # start up the application\n"
+" # Note that the function in C startup() becomes do_startup() in Python\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"# create and run the application, exit with the value returned by\n"
+"# running the program\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/GtkApplicationWindow.py.page:41
+msgid "Useful methods for a Gtk.ApplicationWindow widget"
+msgstr "Métodos útiles para un widget «Gtk.ApplicationWindow»"
+
+#. (itstool) path: item/p
+#: C/GtkApplicationWindow.py.page:44 C/window.py.page:54
+msgid ""
+"<code>set_default_size(200, 100)</code> sets the default size of the window "
+"to a width of <code>200</code> and a height of <code>100</code>; if instead "
+"of a positive number we pass <code>-1</code> we have the default size."
+msgstr ""
+"<code>set_default_size(200, 100)</code> establece el tamaño predeterminado "
+"de la ventana a una anchura de <code>200</code> y una altura de <code>100</"
+"code>; si en lugar de un número positivo le pasa <code>-1</code> tendrá el "
+"tamaño predeterminado."
+
+#. (itstool) path: item/p
+#: C/GtkApplicationWindow.py.page:45 C/window.py.page:55
+msgid ""
+"<code>set_position(Gtk.WindowPosition.CENTER)</code> centers the window. "
+"Other options are <code>Gtk.WindowPosition.NONE, Gtk.WindowPosition.MOUSE, "
+"Gtk.WindowPosition.CENTER_ALWAYS, Gtk.WindowPosition.CENTER_ON_PARENT</code>."
+msgstr ""
+"<code>set_position(Gtk.WindowPosition.CENTER)</code> centra la ventana. "
+"Otras opciones son <code>Gtk.WindowPosition.NONE, Gtk.WindowPosition.MOUSE, "
+"Gtk.WindowPosition.CENTER_ALWAYS, Gtk.WindowPosition.CENTER_ON_PARENT</code>."
+
+#. (itstool) path: info/title
+#: C/GtkApplicationWindow.vala.page:8
+msgctxt "text"
+msgid "ApplicationWindow (Vala)"
+msgstr "ApplicationWindow (Vala)"
+
+#. (itstool) path: page/p
+#: C/GtkApplicationWindow.vala.page:23
+msgid "The simplest GtkApplication Window which can support Menus."
+msgstr "La ventana de GtkApplication más sencilla que puede soportar menús."
+
+#. (itstool) path: page/code
+#: C/GtkApplicationWindow.vala.page:25
+#, no-wrap
+msgid ""
+"\n"
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\t\t/* Create the window of this application and show it. */\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"Welcome to GNOME\";\n"
+"\t\twindow.show ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"\n"
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\t\t/* Create the window of this application and show it. */\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"Welcome to GNOME\";\n"
+"\t\twindow.show ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/GtkApplicationWindow.vala.page:31 C/label.vala.page:31
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Application.html.content.tpl"
+"\">Gtk.Application</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Application.html.content.tpl"
+"\">Gtk.Application</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/guitar-tuner.c.page:45 C/guitar-tuner.cpp.page:43
+#: C/guitar-tuner.js.page:37 C/guitar-tuner.py.page:50
+#: C/guitar-tuner.vala.page:48
+msgctxt "_"
+msgid ""
+"external ref='media/guitar-tuner.png' md5='35e615e0f5e293671d00c5c414ac2f6b'"
+msgstr ""
+"external ref='media/guitar-tuner.png' md5='35e615e0f5e293671d00c5c414ac2f6b'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/guitar-tuner.c.page:100 C/guitar-tuner.cpp.page:94
+#: C/guitar-tuner.py.page:101 C/guitar-tuner.vala.page:101
+msgctxt "_"
+msgid ""
+"external ref='media/guitar-tuner-glade.png' "
+"md5='f6606525443ab2160f53a87a454364d0'"
+msgstr ""
+"external ref='media/guitar-tuner-glade.png' "
+"md5='f6606525443ab2160f53a87a454364d0'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/guitar-tuner.c.page:145 C/guitar-tuner.cpp.page:123
+#: C/guitar-tuner.js.page:43 C/guitar-tuner.py.page:144
+#: C/guitar-tuner.vala.page:135
+msgctxt "_"
+msgid ""
+"external ref='media/guitar-tuner-pipeline.png' "
+"md5='5adc952909d92af5dae6954781b4ad5f'"
+msgstr ""
+"external ref='media/guitar-tuner-pipeline.png' "
+"md5='5adc952909d92af5dae6954781b4ad5f'"
+
+#. (itstool) path: info/title
+#: C/guitar-tuner.c.page:8
+msgctxt "text"
+msgid "Guitar tuner (C)"
+msgstr "Afinador de guitarra (C)"
+
+#. (itstool) path: info/desc
+#: C/guitar-tuner.c.page:11 C/guitar-tuner.py.page:11
+msgid ""
+"Use GTK+ and GStreamer to build a simple guitar tuner application for GNOME. "
+"Shows off how to use the interface designer."
+msgstr ""
+"Usar GTK+ y GStreamer para construir un sencillo afinador de guitarra para "
+"GNOME. Muestra cómo usar el diseñador de interfaces."
+
+#. (itstool) path: credit/name
+#: C/guitar-tuner.c.page:19 C/guitar-tuner.cpp.page:17
+#: C/guitar-tuner.py.page:19 C/guitar-tuner.vala.page:18
+#: C/image-viewer.c.page:19 C/image-viewer.cpp.page:17
+#: C/image-viewer.js.page:19 C/image-viewer.py.page:19
+#: C/image-viewer.vala.page:19 C/index.page:18 C/magic-mirror.vala.page:19
+#: C/photo-wall.c.page:18 C/record-collection.js.page:19
+msgid "Johannes Schmid"
+msgstr "Johannes Schmid"
+
+#. (itstool) path: page/title
+#: C/guitar-tuner.c.page:29 C/guitar-tuner.cpp.page:27
+#: C/guitar-tuner.js.page:20 C/guitar-tuner.py.page:34
+#: C/guitar-tuner.vala.page:32
+msgid "Guitar tuner"
+msgstr "Afinador de guitarra"
+
+#. (itstool) path: synopsis/p
+#: C/guitar-tuner.c.page:32 C/guitar-tuner.cpp.page:30
+#: C/guitar-tuner.py.page:37
+msgid ""
+"In this tutorial, we're going to make a program which plays tones that you "
+"can use to tune a guitar. You will learn how to:"
+msgstr ""
+"En este tutorial se va a hacer un programa que reproduce tonos que puede "
+"usar para afinar su guitarra. Aprenderá a:"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:34 C/guitar-tuner.cpp.page:32
+#: C/guitar-tuner.py.page:39
+msgid "Set up a basic project in Anjuta"
+msgstr "Configurar un proyecto básico en Anjuta"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:35 C/guitar-tuner.cpp.page:33
+#: C/guitar-tuner.py.page:40
+msgid "Create a simple GUI with Anjuta's UI designer"
+msgstr "Crear una IGU sencilla con el diseñador IU de Anjuta"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:36 C/guitar-tuner.cpp.page:34
+#: C/guitar-tuner.py.page:41
+msgid "Use GStreamer to play sounds"
+msgstr "Usar GStreamer para reproducir sonidos"
+
+#. (itstool) path: synopsis/p
+#: C/guitar-tuner.c.page:38 C/guitar-tuner.cpp.page:36
+#: C/guitar-tuner.py.page:43 C/guitar-tuner.vala.page:41
+#: C/image-viewer.js.page:39 C/image-viewer.py.page:39
+#: C/image-viewer.vala.page:46 C/magic-mirror.vala.page:39
+msgid "You'll need the following to be able to follow this tutorial:"
+msgstr "Necesitará lo siguiente para poder seguir este tutorial:"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:40 C/guitar-tuner.cpp.page:38
+#: C/guitar-tuner.py.page:45 C/image-viewer.js.page:41
+#: C/image-viewer.py.page:41 C/magic-mirror.vala.page:41
+msgid "An installed copy of the <link xref=\"getting-ready\">Anjuta IDE</link>"
+msgstr "Una copia instalada del <link xref=\"getting-ready\">EID Anjuta</link>"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:41
+msgid "Basic knowledge of the C programming language"
+msgstr "Conocimiento básico del lenguaje de programación C"
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.c.page:48 C/guitar-tuner.cpp.page:46
+#: C/guitar-tuner.py.page:53 C/image-viewer.c.page:42
+#: C/image-viewer.cpp.page:40 C/image-viewer.js.page:50
+#: C/image-viewer.py.page:49 C/image-viewer.vala.page:57
+#: C/magic-mirror.vala.page:50 C/message-board.c.page:46
+#: C/photo-wall.c.page:52 C/record-collection.js.page:53
+msgid "Create a project in Anjuta"
+msgstr "Crear un proyecto en Anjuta"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:49 C/guitar-tuner.cpp.page:47
+#: C/guitar-tuner.py.page:54 C/guitar-tuner.vala.page:52
+#: C/image-viewer.c.page:43 C/image-viewer.cpp.page:41
+#: C/image-viewer.js.page:51 C/image-viewer.py.page:50
+#: C/image-viewer.vala.page:58 C/magic-mirror.vala.page:51
+#: C/photo-wall.c.page:53 C/record-collection.js.page:54
+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. "
+"It's also useful for keeping everything together."
+msgstr ""
+"Antes de empezar a programar, deberá configurar un proyecto nuevo en Anjuta. "
+"Esto creará todos los archivos que necesite para construir y ejecutar el "
+"código más adelante. También es útil para mantener todo ordenado."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:52 C/guitar-tuner.cpp.page:50
+#: C/guitar-tuner.py.page:57 C/image-viewer.c.page:46
+#: C/image-viewer.cpp.page:44 C/image-viewer.js.page:54
+#: C/image-viewer.py.page:53 C/magic-mirror.vala.page:54
+#: C/photo-wall.c.page:56 C/record-collection.js.page:57
+msgid ""
+"Start Anjuta and click <guiseq><gui>File</gui><gui>New</gui><gui>Project</"
+"gui></guiseq> to open the project wizard."
+msgstr ""
+"Inicie Anjuta y pulse <guiseq><gui>Archivo</gui><gui>Nuevo</"
+"gui><gui>Proyecto</gui></guiseq> para abrir el asistente de proyectos."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:55
+msgid ""
+"Choose <gui>GTK+ (Simple)</gui> from the <gui>C</gui> tab, click "
+"<gui>Continue</gui>, and fill out your details on the next few pages. Use "
+"<file>guitar-tuner</file> as project name and directory."
+msgstr ""
+"Seleccione <gui>GTK+ (simple)</gui> en la pestaña <gui>C</gui>, pulse "
+"<gui>Continuar</gui>, y rellene sus detalles en las siguientes páginas. Use "
+"<file>afinador-guitarra</file> como nombre del proyecto y de la carpeta."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:58
+msgid ""
+"Make sure that <gui>Configure external packages</gui> is switched <gui>ON</"
+"gui>. On the next page, select <em>gstreamer-0.10</em> from the list to "
+"include the GStreamer library in your project."
+msgstr ""
+"Asegúrese de que <gui>Configurar paquetes externos</gui> está <gui>activada</"
+"gui>. En la siguiente página, seleccione <em>gstreamer-0.10</em> de la lista "
+"para incluir la biblioteca GStreamer en su proyecto."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:62 C/image-viewer.c.page:57 C/photo-wall.c.page:71
+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:"
+msgstr ""
+"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:"
+
+#. (itstool) path: item/code
+#: C/guitar-tuner.c.page:63 C/image-viewer.c.page:58 C/photo-wall.c.page:72
+#, no-wrap
+msgid ""
+"\n"
+"#include <config.h>\n"
+"#include <gtk/gtk.h>"
+msgstr ""
+"\n"
+"#include <config.h>\n"
+"#include <gtk/gtk.h>"
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.c.page:71 C/guitar-tuner.cpp.page:69
+#: C/guitar-tuner.vala.page:74 C/image-viewer.c.page:66
+#: C/image-viewer.cpp.page:66 C/image-viewer.vala.page:113
+#: C/magic-mirror.vala.page:78
+msgid "Build the code for the first time"
+msgstr "Construir el código por primera vez"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:72
+msgid ""
+"C is a rather verbose language, so don't be surprised that the file contains "
+"quite a lot of code. Most of it is template code. It loads an (empty) window "
+"from the user interface description file and shows it. More details are "
+"given below; skip this list if you understand the basics:"
+msgstr ""
+"C es un lenguaje más detallado, por lo que no se sorprenda de que el archivo "
+"contiene un gran cantidad de código. La mayor parte es código de plantilla. "
+"Carga una ventana (vacía) desde el archivo de descripción de la interfaz de "
+"usuario y la muestra. A continuación se ofrecen más detalles; omita esta "
+"lista si entiende los conceptos básicos:"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:76 C/image-viewer.c.page:71
+msgid ""
+"The three <code>#include</code> lines at the top include the <code>config</"
+"code> (useful autoconf build defines), <code>gtk</code> (user interface) and "
+"<code>gi18n</code> (internationalization) libraries. Functions from these "
+"libraries are used in the rest of the code."
+msgstr ""
+"Las tres líneas <code>#include</code> en la parte superior incluyen las "
+"bibliotecas <code>config</code> (útil para definiciones de construcción de "
+"autoconf), <code>gtk</code> (interfaz de usuario) y <code>gi18n</code> "
+"(internacionalización). Las funciones de estas bibliotecas se usan en el "
+"resto del código."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:79
+msgid ""
+"The <code>create_window</code> function creates a new window by opening a "
+"GtkBuilder file (<file>src/guitar-tuner.ui</file>, defined a few lines "
+"above), connecting its signals and then displaying it in a window. The "
+"GtkBuilder file contains a description of a user interface and all of its "
+"elements. You can use Anjuta's editor to design GtkBuilder user interfaces."
+msgstr ""
+"La función <code>create_window</code> crea una ventana nueva abriendo un "
+"archivo de GtkBuilder (<file>src/guitar-tuner.ui</file>, definido unas pocas "
+"líneas más arriba), conectando sus señales y mostrándolo en una ventana. El "
+"archivo de GtkBuilder contiene una descripción de una interfaz de usuario y "
+"de todos sus elementos. Puede usar el editor Anjuta para diseñar interfaces "
+"de usuario con GtkBuilder."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:80 C/image-viewer.c.page:75
+#: C/image-viewer.vala.page:123
+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."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:83 C/image-viewer.c.page:78
+msgid ""
+"The <code>main</code> function is run by default when you start a C "
+"application. It calls a few functions which set up and then run the "
+"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 ""
+"La función <code>main</code> se ejecuta de manera predeterminada cuando "
+"inicia una aplicación en C. Llama a unas pocas funciones que 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 comienza a escuchar "
+"eventos (como pulsaciones del ratón y del teclado)."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:86 C/image-viewer.c.page:81
+msgid ""
+"The <code>ENABLE_NLS</code> conditional definition sets up <code>gettext</"
+"code>, which is a framework for translating applications. These functions "
+"specify how translation tools should handle your app when you run them."
+msgstr ""
+"La definición condicional <code>ENABLE_NLS</code> configura <code>gettext</"
+"code>, que es un entorno de trabajo para traducir aplicaciones. Estas "
+"funciones especifican cómo deben manejar su aplicación las herramientas de "
+"traducción cuando las ejecuta."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:90 C/guitar-tuner.cpp.page:84
+#: C/image-viewer.c.page:85 C/image-viewer.cpp.page:82
+#: C/image-viewer.vala.page:133 C/magic-mirror.vala.page:93
+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 "
+"<keyseq><key>Shift</key><key>F7</key></keyseq>)."
+msgstr ""
+"Este código está listo para usarse, por lo que puede compilarlo pulsando "
+"<guiseq><gui>Construir</gui><gui>Construir proyecto</gui></guiseq> (o "
+"pulsando <keyseq><key>Mayús</key><key>F7</key></keyseq>)."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:91 C/guitar-tuner.cpp.page:85
+#: C/image-viewer.c.page:86 C/image-viewer.cpp.page:83
+msgid ""
+"Press <gui>Execute</gui> on the next window that appears to configure a "
+"debug build. You only need to do this once, for the first build."
+msgstr ""
+"Pulse <gui>Ejecutar</gui> en la siguiente ventana que aparece para "
+"configurar una construcción de depuración. Esto sólo necesita hacer una vez "
+"para la primera construcción."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.c.page:95 C/guitar-tuner.cpp.page:89
+#: C/guitar-tuner.py.page:96 C/guitar-tuner.vala.page:96
+msgid "Create the user interface"
+msgstr "Crear la interfaz de usuario"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:96 C/guitar-tuner.cpp.page:90
+msgid ""
+"A description of the user interface (UI) is contained in the GtkBuilder "
+"file. To edit the user interface, open <file>src/guitar_tuner.ui</file>. "
+"This will switch to the interface designer. The design window is in the "
+"center; widgets and widgets' properties are on the left, and the palette of "
+"available widgets is on the right."
+msgstr ""
+"El archivo de GtkBuilder contiene una descripción de la interfaz de usuario "
+"(IU). Para editar la interfaz de usuario, abra <file>src/guitar_tuner.ui</"
+"file>. Esto cambiará al diseñador de interfaces. La ventana de diseño está "
+"en el centro; los widgets y sus propiedades están a la izquierda, y la "
+"paleta de los widgets disponibles está a la derecha."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:98 C/guitar-tuner.cpp.page:92
+#: C/guitar-tuner.py.page:99
+msgid ""
+"The layout of every UI in GTK+ is organized using boxes and tables. Let's "
+"use a vertical <gui>GtkButtonBox</gui> here to assign six <gui>GtkButtons</"
+"gui>, one for each of the six guitar strings."
+msgstr ""
+"La distribución de cualquier IU en GTK+ se organiza usando cajas y tablas. "
+"Aquí se usará una <gui>GtkButtonBox</gui> vertical para asignar seis "
+"<gui>GtkButtons</gui>, uno para cada una de las cuerdas de la guitarra."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:104 C/guitar-tuner.cpp.page:98
+#: C/guitar-tuner.py.page:105
+msgid ""
+"Select a <gui>GtkButtonBox</gui> from the <gui>Container</gui> section of "
+"the <gui>Palette</gui> on the right and put it into the window. In the "
+"<gui>Properties</gui> pane, set the number of elements to 6 (for the six "
+"strings) and the orientation to vertical."
+msgstr ""
+"Seleccione una <gui>GtkButtonBox</gui> de la sección <gui>Contenedor</gui> "
+"de la <gui>Paleta</gui> de la derecha y póngalo en la ventana. En el panel "
+"de <gui>Propiedades</gui>, establezca el número de elementos a «6» (para las "
+"seis cuerdas) y la orientación a «vertical»."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:108 C/guitar-tuner.cpp.page:102
+#: C/guitar-tuner.py.page:109
+msgid ""
+"Now, choose a <gui>GtkButton</gui> from the palette and put it into the "
+"first part of the box."
+msgstr ""
+"Ahora, elija un <gui>GtkButton</gui> de la paleta y póngalo en la primera "
+"parte de la caja."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:111 C/guitar-tuner.py.page:112
+msgid ""
+"While the button is still selected, change the <gui>Label</gui> property in "
+"the <gui>Widgets</gui> tab to <gui>E</gui>. This will be the low E string."
+msgstr ""
+"Mientras el botón esté seleccionado, cambie la propiedad <gui>Etiqueta</gui> "
+"en la pestaña <gui>Widgets</gui> a <gui>E</gui>. Esta será la cuerda Mi "
+"grave."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:114 C/guitar-tuner.py.page:115
+msgid ""
+"Switch to the <gui>Signals</gui> tab (inside the <gui>Widgets</gui> tab) and "
+"look for the <code>clicked</code> signal of the button. You can use this to "
+"connect a signal handler that will be called when the button is clicked by "
+"the user. To do this, click on the signal and type <code>on_button_clicked</"
+"code> in the <gui>Handler</gui> column and press <key>Return</key>."
+msgstr ""
+"Cambie a la pestaña <gui>Señales</gui> (dentro de la pestaña <gui>Widgets</"
+"gui>) y busque la señal <code>clicked</code> del botón. Puede usar esto para "
+"conectar un manejador de señal al que se llamará cuando el usuario pulse el "
+"botón. Para hacer esto, pulse sobre la señal, escriba "
+"<code>on_button_clicked</code> en la columna <gui>Manejador</gui> y pulse "
+"<key>Intro</key>."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:117 C/guitar-tuner.py.page:118
+#: C/guitar-tuner.vala.page:122
+msgid ""
+"Repeat the above steps for the other buttons, adding the next 5 strings with "
+"the names <em>A</em>, <em>D</em>, <em>G</em>, <em>B</em>, and <em>e</em>."
+msgstr ""
+"Repita los pasos anteriores para el resto de botones, añadiendo las 5 "
+"cuerdas restantes con los nombres <em>A</em>, <em>D</em>, <em>G</em>, <em>B</"
+"em>, y <em>e</em>."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:120 C/guitar-tuner.py.page:121
+#: C/guitar-tuner.vala.page:125
+msgid ""
+"Save the UI design (by clicking <guiseq><gui>File</gui><gui>Save</gui></"
+"guiseq>) and keep it open."
+msgstr ""
+"Guarde el diseño de la IU (pulsando <guiseq><gui>Archivo</gui><gui>Guardar</"
+"gui></guiseq>) y déjelo abierto."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.c.page:126 C/guitar-tuner.vala.page:203
+msgid "Creating the signal handler"
+msgstr "Crear el manejador de señales"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:127 C/guitar-tuner.py.page:128
+msgid ""
+"In the UI designer, you made it so that all of the buttons will call the "
+"same function, <gui>on_button_clicked</gui>, when they are clicked. We need "
+"to add that function in the source file."
+msgstr ""
+"El el diseñador de interfaces, se ha hecho que todos los botones llamen a la "
+"misma función, <gui>on_button_clicked</gui>, cuando se pulsan. Se debe "
+"añadir esta función al archivo de código fuente."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:128
+msgid ""
+"To do this, open <file>main.c</file> while the user interface file is still "
+"open. Switch to the <gui>Signals</gui> tab, which you already used to set "
+"the signal name. Now take the row where you set the <gui>clicked</gui> "
+"signal and drag it into to the source file at a position that is outside any "
+"function. The following code will be added to your source file:"
+msgstr ""
+"Para hacer esto, abra <file>main.c</file> mientras el archivo de la interfaz "
+"de usuario está abierto. Cambie a la pestaña <gui>Señales</gui>, que ya ha "
+"usado para establecer el nombre de la señal. Ahora vaya a la fila en la que "
+"estableció la señal <gui>clicked</gui> y arrástrela al archivo de código "
+"fuente, fuera de cualquier función. Se añadirá el siguiente código a su "
+"archivo de código fuente:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.c.page:131
+#, no-wrap
+msgid ""
+"\n"
+"void on_button_clicked (GtkWidget* button, gpointer user_data)\n"
+"{\n"
+"\n"
+"}"
+msgstr ""
+"\n"
+"void on_button_clicked (GtkWidget* button, gpointer user_data)\n"
+"{\n"
+"\n"
+"}"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:136
+msgid ""
+"This signal handler has two arguments: a pointer to the <code>GtkWidget</"
+"code> that called the function (in our case, always a <code>GtkButton</"
+"code>), and a pointer to some \"user data\" that you can define, but which "
+"we won't be using here. (You can set the user data by calling "
+"<code>gtk_builder_connect_signals</code>; it is normally used to pass a "
+"pointer to a data structure that you might need to access inside the signal "
+"handler.)"
+msgstr ""
+"El manejador de la señal tiene dos argumentos. un puntero al "
+"<code>GtkWidget</code> que llamó a la función (en este caso, siempre es un "
+"<code>GtkButton</code>), y un puntero a ciertos «datos de usuario» que puede "
+"definir, pero que aquí no se usan. (Puede establecer los datos de usuario "
+"llamando a <code>gtk_builder_connect_signals</code>; normalmente se usa para "
+"pasar un puntero a una estructura de datos a la que puede necesitar acceder "
+"dentro del manejador de la señal.)"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:137 C/guitar-tuner.py.page:136
+msgid ""
+"For now, we'll leave the signal handler empty while we work on writing the "
+"code to produce sounds."
+msgstr ""
+"Por ahora, se dejará el manejador de la señal vacío mientras se escribe el "
+"código para producir sonidos."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.c.page:141 C/guitar-tuner.cpp.page:118
+#: C/guitar-tuner.js.page:39 C/guitar-tuner.py.page:140
+#: C/guitar-tuner.vala.page:131
+msgid "GStreamer pipelines"
+msgstr "Tuberías de Gstreamer"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:142 C/guitar-tuner.js.page:40
+#: C/guitar-tuner.py.page:141
+msgid ""
+"GStreamer is GNOME's multimedia framework — you can use it for playing, "
+"recording, and processing video, audio, webcam streams and the like. Here, "
+"we'll be using it to produce single-frequency tones."
+msgstr ""
+"GStreamer es el entorno multimedia de trabajo de GNOME: puede usarlo para "
+"reproducir, grabar y procesar vídeo, sonido, flujos de la cámara web y "
+"similares. En este caso, se usará para generar tonos de frecuencia única."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:143 C/guitar-tuner.cpp.page:121
+#: C/guitar-tuner.js.page:41 C/guitar-tuner.py.page:142
+msgid ""
+"Conceptually, GStreamer works as follows: You create a <em>pipeline</em> "
+"containing several processing elements going from the <em>source</em> to the "
+"<em>sink</em> (output). The source can be an image file, a video, or a music "
+"file, for example, and the output could be a widget or the soundcard."
+msgstr ""
+"Conceptualmente. GStreamer funciona de la siguiente manera: puede crear una "
+"<em>tubería</em> que contenga varios elementos de procesado que van desde la "
+"<em>fuente</em> hasta el <em>sumidero</em> (salida). La fuente puede ser, "
+"por ejemplo, un archivo de imagen, un vídeo o un archivo de música, y la "
+"salida puede ser un widget o la tarjeta de sonido."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:144 C/guitar-tuner.cpp.page:122
+#: C/guitar-tuner.js.page:42 C/guitar-tuner.py.page:143
+#: C/guitar-tuner.vala.page:134
+msgid ""
+"Between source and sink, you can apply various filters and converters to "
+"handle effects, format conversions and so on. Each element of the pipeline "
+"has properties which can be used to change its behaviour."
+msgstr ""
+"Entre la fuente y el sumidero, puede aplicar varios filtros y conversores "
+"para manejar efectos, conversiones de formato, etc. Cada elemento de la "
+"tubería tiene propiedades que se pueden usar para cambiar este "
+"comportamiento."
+
+#. (itstool) path: media/p
+#: C/guitar-tuner.c.page:146 C/guitar-tuner.cpp.page:124
+#: C/guitar-tuner.js.page:44 C/guitar-tuner.py.page:145
+#: C/guitar-tuner.vala.page:136
+msgid "An example GStreamer pipeline."
+msgstr "Un ejemplo de tubería de GStreamer."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.c.page:151 C/guitar-tuner.py.page:150
+#: C/guitar-tuner.vala.page:141
+msgid "Set up the pipeline"
+msgstr "Configurar la tubería"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:152 C/guitar-tuner.cpp.page:135
+#: C/guitar-tuner.py.page:151
+msgid ""
+"In this simple example we will use a tone generator source called "
+"<code>audiotestsrc</code> and send the output to the default system sound "
+"device, <code>autoaudiosink</code>. We only need to configure the frequency "
+"of the tone generator; this is accessible through the <code>freq</code> "
+"property of <code>audiotestsrc</code>."
+msgstr ""
+"En este sencillo ejemplo se usará un generador de tonos llamado "
+"<code>audiotestsrc</code> y se enviará la salida al dispositivo de sonido "
+"predeterminado del sistema, <code>autoaudiosink</code>. Sólo es necesario "
+"configurar la frecuencia del generador de tonos; esto es accesible a través "
+"de la propiedad <code>freq</code> de <code>audiotestsrc</code>."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:154
+msgid ""
+"Insert the following line into <file>main.c</file>, just below the "
+"<code>#include <gtk/gtk.h></code> line:"
+msgstr ""
+"Inserte la siguiente línea en <file>main.c</file>, justo a continuación de "
+"la línea <code>#include <gtk/gtk.h></code>:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.c.page:155
+#, no-wrap
+msgid "#include <gst/gst.h>"
+msgstr "#include <gst/gst.h>"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:156
+msgid ""
+"This includes the GStreamer library. You also need to add a line to "
+"initialize GStreamer; put the following code on the line above the "
+"<code>gtk_init</code> call in the <code>main</code> function:"
+msgstr ""
+"Esto incluye la bilbioteca GStreamer. También necesita añadir una línea para "
+"inicializar GStreamer; ponga la siguiente línea de código antes de la "
+"llamada <code>gtk_init</code> en la función <code>main</code>:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.c.page:157
+#, no-wrap
+msgid "gst_init (&argc, &argv);"
+msgstr "gst_init (&argc, &argv);"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:158
+msgid ""
+"Then, copy the following function into <file>main.c</file> above the empty "
+"<code>on_button_clicked</code> function:"
+msgstr ""
+"Después, copie la siguiente función en <file>main.c</file> encima de la "
+"función <code>on_button_clicked</code> vacía:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.c.page:159
+#, no-wrap
+msgid ""
+"static void\n"
+"play_sound (gdouble frequency)\n"
+"{\n"
+"\tGstElement *source, *sink;\n"
+"\tGstElement *pipeline;\n"
+"\n"
+"\tpipeline = gst_pipeline_new (\"note\");\n"
+"\tsource = gst_element_factory_make (\"audiotestsrc\",\n"
+"\t \"source\");\n"
+"\tsink = gst_element_factory_make (\"autoaudiosink\",\n"
+"\t \"output\");\n"
+"\n"
+"\t/* set frequency */\n"
+"\tg_object_set (source, \"freq\", frequency, NULL);\n"
+"\n"
+"\tgst_bin_add_many (GST_BIN (pipeline), source, sink, NULL);\n"
+"\tgst_element_link (source, sink);\n"
+"\n"
+"\tgst_element_set_state (pipeline, GST_STATE_PLAYING);\n"
+"\n"
+"\t/* stop it after 500ms */\n"
+"\tg_timeout_add (LENGTH, (GSourceFunc) pipeline_stop, pipeline);\n"
+"}"
+msgstr ""
+"static void\n"
+"play_sound (gdouble frequency)\n"
+"{\n"
+"\tGstElement *source, *sink;\n"
+"\tGstElement *pipeline;\n"
+"\n"
+"\tpipeline = gst_pipeline_new (\"note\");\n"
+"\tsource = gst_element_factory_make (\"audiotestsrc\",\n"
+"\t \"source\");\n"
+"\tsink = gst_element_factory_make (\"autoaudiosink\",\n"
+"\t \"output\");\n"
+"\n"
+"\t/* set frequency */\n"
+"\tg_object_set (source, \"freq\", frequency, NULL);\n"
+"\n"
+"\tgst_bin_add_many (GST_BIN (pipeline), source, sink, NULL);\n"
+"\tgst_element_link (source, sink);\n"
+"\n"
+"\tgst_element_set_state (pipeline, GST_STATE_PLAYING);\n"
+"\n"
+"\t/* stop it after 500ms */\n"
+"\tg_timeout_add (LENGTH, (GSourceFunc) pipeline_stop, pipeline);\n"
+"}"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:185
+msgid ""
+"The first five lines create source and sink GStreamer elements "
+"(<code>GstElement</code>), and a pipeline element (which will be used as a "
+"container for the other two elements). The pipeline is given the name \"note"
+"\"; the source is named \"source\" and is set to the <code>audiotestsrc</"
+"code> source; and the sink is named \"output\" and set to the "
+"<code>autoaudiosink</code> sink (default sound card output)."
+msgstr ""
+"Las cinco primeras líneas crean los elementos «fuente» y «sumidero» de "
+"GStreamer (<code>GstElement</code>), y un elemento de tubería (que se usará "
+"como contenedor de los otros dos elementos). 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 <code>autoaudiosink</code> (la salida de la tarjeta de sonido "
+"predeterminada)."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:188
+msgid ""
+"The call to <code>g_object_set</code> sets the <code>freq</code> property of "
+"the source element to <code>frequency</code>, which is passed as an argument "
+"to the <code>play_sound</code> function. This is just the frequency of the "
+"note in Hertz; some useful frequencies will be defined later on."
+msgstr ""
+"La llamada a <code>g_object_set</code> establece la propiedad <code>freq</"
+"code> del elemento fuente a <code>frequency</code>, que se pasa como "
+"argumento a la función <code>play_sound</code>. Esto sólo es la frecuencia "
+"de la nota en Hercios; más adelante se definirán algunas frecuencias útiles."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:191
+msgid ""
+"<code>gst_bin_add_many</code> puts the source and sink into the pipeline. "
+"The pipeline is a <code>GstBin</code>, which is just an element that can "
+"contain multiple other GStreamer elements. In general, you can add as many "
+"elements as you like to the pipeline by adding more arguments to "
+"<code>gst_bin_add_many</code>."
+msgstr ""
+"<code>gst_bin_add_many</code> añade la fuente y el sumidero a la tubería. La "
+"tubería es un <code>GstBin</code>, que es un elemento que puede contener "
+"otros muchos elementos de GStreamer. En general, puede añadir tantos "
+"elementos como quiera a una tubería añadiendo más argumentos a "
+"<code>gst_bin_add_many</code>."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:194
+msgid ""
+"Next, <code>gst_element_link</code> is used to connect the elements "
+"together, so the output of <code>source</code> (a tone) goes into the input "
+"of <code>sink</code> (which is then output to the sound card). "
+"<code>gst_element_set_state</code> is then used to start playback, by "
+"setting the state of the pipeline to playing (<code>GST_STATE_PLAYING</"
+"code>)."
+msgstr ""
+"Después, se usa <code>gst_element_link</code> para conectar los elementos de "
+"forma conjunta, de tal forma que la salida de <code>source</code> (un tono) "
+"va a la entrada de <code>sink</code> (que es después la salida de la tarjeta "
+"de sonido). <code>gst_element_set_state</code> se usa al iniciar la "
+"reproducción, configurando el estado de la tubería a reproduciendo "
+"(<code>GST_STATE_PLAYING</code>)."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.c.page:201 C/guitar-tuner.py.page:191
+msgid "Stopping playback"
+msgstr "Detener la reproducción"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:202
+msgid ""
+"We don't want to play an annoying tone forever, so the last thing "
+"<code>play_sound</code> does is to call <code>g_timeout_add</code>. This "
+"sets a timeout for stopping the sound; it waits for <code>LENGTH</code> "
+"milliseconds before calling the function <code>pipeline_stop</code>, and "
+"will keep calling it until <code>pipeline_stop</code> returns <code>FALSE</"
+"code>."
+msgstr ""
+"No se quiere reproducir un tono molesto para siempre, por lo que lo último "
+"que <code>play_sound</code> hace es llamar a <code>g_timeout_add</code>. "
+"Esto establece un tiempo de expiración para detener el sonido; espera "
+"<code>LENGTH</code> milisegundos antes de llamar a la función "
+"<code>pipeline_stop</code>, y se queda llamando a <code>pipeline_stop</code> "
+"hasta que devuelve <code>FALSE</code>."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:203
+msgid ""
+"Now, we'll write the <code>pipeline_stop</code> function which is called by "
+"<code>g_timeout_add</code>. Insert the following code <em>above</em> the "
+"<code>play_sound</code> function:"
+msgstr ""
+"Ahora, se escribirá el código de la función <code>pipeline_stop</code>, "
+"llamada por <code>g_timeout_add</code>. Inserte el código siguiente "
+"<em>encima</em> de la función <code>play_sound</code>:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.c.page:204
+#, no-wrap
+msgid ""
+"\n"
+"#define LENGTH 500 /* Length of playing in ms */\n"
+"\n"
+"static gboolean\n"
+"pipeline_stop (GstElement* pipeline)\n"
+"{\n"
+"\tgst_element_set_state (pipeline, GST_STATE_NULL);\n"
+"\tg_object_unref (pipeline);\n"
+"\n"
+"\treturn FALSE;\n"
+"}"
+msgstr ""
+"\n"
+"#define LENGTH 500 /* Length of playing in ms */\n"
+"\n"
+"static gboolean\n"
+"pipeline_stop (GstElement* pipeline)\n"
+"{\n"
+"\tgst_element_set_state (pipeline, GST_STATE_NULL);\n"
+"\tg_object_unref (pipeline);\n"
+"\n"
+"\treturn FALSE;\n"
+"}"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:215
+msgid ""
+"The call to <code>gst_element_set_state</code> stops the playback of the "
+"pipeline and <code>g_object_unref</code> unreferences the pipeline, "
+"destroying it and freeing its memory."
+msgstr ""
+"La llamada a <code>gst_element_set_state</code> detiene la reproducción de "
+"la tubería y <code>g_object_unref</code> desreferencia la tubería, la "
+"destruye y libera su memoria."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.c.page:219 C/guitar-tuner.py.page:208
+msgid "Define the tones"
+msgstr "Definir los tonos"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:220
+msgid ""
+"We want to play the correct sound when the user clicks a button. First of "
+"all, we need to know the frequencies for the six guitar strings, which are "
+"defined (at the top of <file>main.c</file>) as follows:"
+msgstr ""
+"Se quiere reproducir el sonido correcto cuando un usuario pulsa un botón. En "
+"primer lugar, se necesita conocer las frecuencias de las seis cuerdas de la "
+"guitarra, que están definidas (al principio de <file>main.c</file>) de la "
+"siguiente manera:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.c.page:221
+#, no-wrap
+msgid ""
+"\n"
+"/* Frequencies of the strings */\n"
+"#define NOTE_E 329.63\n"
+"#define NOTE_A 440\n"
+"#define NOTE_D 587.33\n"
+"#define NOTE_G 783.99\n"
+"#define NOTE_B 987.77\n"
+"#define NOTE_e 1318.5"
+msgstr ""
+"\n"
+"/* Frequencies of the strings */\n"
+"#define NOTE_E 329.63\n"
+"#define NOTE_A 440\n"
+"#define NOTE_D 587.33\n"
+"#define NOTE_G 783.99\n"
+"#define NOTE_B 987.77\n"
+"#define NOTE_e 1318.5"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:229 C/guitar-tuner.py.page:222
+msgid ""
+"Now to flesh out the signal handler that we defined earlier, "
+"<code>on_button_clicked</code>. We could have connected every button to a "
+"different signal handler, but that would lead to a lot of code duplication. "
+"Instead, we can use the label of the button to figure out which button was "
+"clicked:"
+msgstr ""
+"Ahora se se profundiza en el manejador de la señal definido anteriormente, "
+"<code>on_button_clicked</code>. Se podría haber conectado cada botón a un "
+"manejador de la señal diferente, pero esto había supuesto duplicar mucho "
+"código. En su lugar, se puede usar la etiqueta del botón para saber cuál de "
+"ellos se ha pulsado:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.c.page:230
+#, no-wrap
+msgid ""
+"\n"
+"/* Callback for the buttons */\n"
+"void on_button_clicked (GtkButton* button,\n"
+" gpointer user_data)\n"
+"{\n"
+"\tconst gchar* text = gtk_button_get_label (button);\n"
+"\n"
+"\tif (g_str_equal (text, _(\"E\")))\n"
+"\t play_sound (NOTE_E);\n"
+"\telse if (g_str_equal (text, _(\"A\")))\n"
+"\t play_sound (NOTE_A);\n"
+"\telse if (g_str_equal (text, _(\"G\")))\n"
+"\t play_sound (NOTE_G);\n"
+"\telse if (g_str_equal (text, _(\"D\")))\n"
+"\t play_sound (NOTE_D);\n"
+"\telse if (g_str_equal (text, _(\"B\")))\n"
+"\t play_sound (NOTE_B);\n"
+"\telse if (g_str_equal (text, _(\"e\")))\n"
+"\t play_sound (NOTE_e);\n"
+"}\n"
+msgstr ""
+"\n"
+"/* Callback for the buttons */\n"
+"void on_button_clicked (GtkButton* button,\n"
+" gpointer user_data)\n"
+"{\n"
+"\tconst gchar* text = gtk_button_get_label (button);\n"
+"\n"
+"\tif (g_str_equal (text, _(\"E\")))\n"
+"\t play_sound (NOTE_E);\n"
+"\telse if (g_str_equal (text, _(\"A\")))\n"
+"\t play_sound (NOTE_A);\n"
+"\telse if (g_str_equal (text, _(\"G\")))\n"
+"\t play_sound (NOTE_G);\n"
+"\telse if (g_str_equal (text, _(\"D\")))\n"
+"\t play_sound (NOTE_D);\n"
+"\telse if (g_str_equal (text, _(\"B\")))\n"
+"\t play_sound (NOTE_B);\n"
+"\telse if (g_str_equal (text, _(\"e\")))\n"
+"\t play_sound (NOTE_e);\n"
+"}\n"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:251
+msgid ""
+"A pointer to the <code>GtkButton</code> that was clicked is passed as an "
+"argument (<code>button</code>) to <code>on_button_clicked</code>. We can get "
+"the text of that button using <code>gtk_button_get_label</code>."
+msgstr ""
+"A <code>on_button_clicked</code> se le pasa como argumento (<code>button</"
+"code>) un puntero al <code>GtkButton</code> que se ha pulsado. Se puede "
+"obtener el texto de este botón usando <code>gtk_label_get_label</code>."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:252
+msgid ""
+"The text is then compared to the notes that we have using <code>g_str_equal</"
+"code>, and <code>play_sound</code> is called with the frequency appropriate "
+"for that note. This plays the tone; we have a working guitar tuner!"
+msgstr ""
+"El texto se compara con las notas que se tiene usando <code>g_str_equal</"
+"code>, y se llama a <code>play_sound</code> con la frecuencia "
+"correspondiente a cada nota. Esto reproduce el tono; el afinador de guitarra "
+"ya está funcionando."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.c.page:256 C/guitar-tuner.cpp.page:255
+#: C/guitar-tuner.vala.page:253 C/image-viewer.c.page:222
+#: C/image-viewer.cpp.page:210 C/image-viewer.vala.page:280
+#: C/photo-wall.c.page:392
+msgid "Build and run the application"
+msgstr "Construir y ejecutar la aplicación"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:257 C/guitar-tuner.vala.page:254
+#: C/image-viewer.c.page:223 C/image-viewer.cpp.page:211
+#: C/image-viewer.vala.page:281
+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."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:258 C/guitar-tuner.cpp.page:257
+#: C/guitar-tuner.vala.page:255
+msgid ""
+"If you haven't already done so, choose the <file>Debug/src/guitar-tuner</"
+"file> application in the dialog that appears. Finally, hit <gui>Run</gui> "
+"and enjoy!"
+msgstr ""
+"Si todavía no lo ha hecho, elija la aplicación <file>Debug/src/afinador-"
+"guitarra</file> en el diálogo que aparece. Finalmente, pulse <gui>Ejecutar</"
+"gui> y disfrute."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.c.page:262 C/guitar-tuner.cpp.page:261
+#: C/guitar-tuner.js.page:242 C/guitar-tuner.py.page:240
+#: C/guitar-tuner.vala.page:259 C/image-viewer.c.page:228
+#: C/image-viewer.cpp.page:216 C/image-viewer.js.page:316
+#: C/image-viewer.py.page:230 C/image-viewer.vala.page:288
+#: C/magic-mirror.vala.page:150 C/photo-wall.c.page:400
+#: C/record-collection.js.page:297
+msgid "Reference Implementation"
+msgstr "Implementación de referencia"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:263
+msgid ""
+"If you run into problems with the tutorial, compare your code with this "
+"<link href=\"guitar-tuner/guitar-tuner.c\">reference code</link>."
+msgstr ""
+"Si tiene problemas con este tutorial, compare su código con este <link href="
+"\"guitar-tuner/guitar-tuner.c\">código de referencia</link>."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.c.page:267 C/guitar-tuner.cpp.page:274
+#: C/guitar-tuner.py.page:245 C/guitar-tuner.vala.page:270
+#: C/image-viewer.c.page:233 C/image-viewer.cpp.page:221
+#: C/image-viewer.js.page:321 C/image-viewer.py.page:235
+#: C/image-viewer.vala.page:293
+msgid "Next steps"
+msgstr "Siguientes pasos"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.c.page:268 C/guitar-tuner.cpp.page:275
+#: C/guitar-tuner.py.page:246 C/guitar-tuner.vala.page:271
+#: C/image-viewer.c.page:234 C/image-viewer.cpp.page:222
+#: C/image-viewer.js.page:322 C/image-viewer.py.page:236
+#: C/image-viewer.vala.page:294
+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:"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:271 C/guitar-tuner.cpp.page:278
+#: C/guitar-tuner.py.page:249 C/guitar-tuner.vala.page:274
+msgid "Have the program automatically cycle through the notes."
+msgstr "Hacer que el programa recorra las notas automáticamente."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:274 C/guitar-tuner.cpp.page:281
+#: C/guitar-tuner.py.page:252 C/guitar-tuner.vala.page:277
+msgid "Make the program play recordings of real guitar strings being plucked."
+msgstr ""
+"Hacer que el programa reproduzca grabaciones de cuerdas de guitarras que se "
+"están afinando."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:275 C/guitar-tuner.cpp.page:282
+#: C/guitar-tuner.py.page:253 C/guitar-tuner.vala.page:278
+msgid ""
+"To do this, you would need to set up a more complicated GStreamer pipeline "
+"which allows you to load and play back music files. You'll have to choose "
+"<link href=\"http://gstreamer.freedesktop.org/documentation/plugins.html"
+"\">decoder and demuxer</link> GStreamer elements based on the file format of "
+"your recorded sounds — MP3s use different elements to Ogg Vorbis files, for "
+"example."
+msgstr ""
+"PAra hacer esto, debe configurar una tubería de GStreamer más complicada, "
+"que le permite cargar y reproducir archivos de música. Deberá elegir un los "
+"elementos <link href=\"http://gstreamer.freedesktop.org/documentation/"
+"plugins.html\">decodificador y demultiplexor</link> de GStreamer basándose "
+"en el formato del archivo de sus sonidos grabados; los MP3 usan elementos "
+"diferentes de los de los archivos Ogg Vorbis, por ejemplo."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:276 C/guitar-tuner.cpp.page:283
+#: C/guitar-tuner.py.page:254 C/guitar-tuner.vala.page:279
+msgid ""
+"You might need to connect the elements in more complicated ways too. This "
+"could involve using <link href=\"http://gstreamer.freedesktop.org/data/doc/"
+"gstreamer/head/manual/html/chapter-intro-basics.html\">GStreamer concepts</"
+"link> that we didn't cover in this tutorial, such as <link href=\"http://"
+"gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-intro-"
+"basics-pads.html\">pads</link>. You may also find the <cmd>gst-inspect</cmd> "
+"command useful."
+msgstr ""
+"Puede querer conectar los elementos de maneras más complicadas. Esto puede "
+"implicar usar <link href=\"http://gstreamer.freedesktop.org/data/doc/"
+"gstreamer/head/manual/html/chapter-intro-basics.html\">conceptos de "
+"GStreamer</link> que no se han comentado en este tutorial, tales como <link "
+"href=\"http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/"
+"section-intro-basics-pads.html\">interfaces</link>. Es posible que encuentre "
+"útil el comando <cmd>gst-inspect</cmd>."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:279 C/guitar-tuner.cpp.page:286
+#: C/guitar-tuner.py.page:257 C/guitar-tuner.vala.page:282
+msgid "Automatically analyze notes that the user plays."
+msgstr "Analizar automáticamente las notas que toca el músico."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.c.page:280 C/guitar-tuner.cpp.page:287
+#: C/guitar-tuner.py.page:258 C/guitar-tuner.vala.page:283
+msgid ""
+"You could connect a microphone and record sounds from it using an <link href="
+"\"http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-"
+"plugins/html/gst-plugins-good-plugins-autoaudiosrc.html\">input source</"
+"link>. Perhaps some form of <link href=\"http://gstreamer.freedesktop.org/"
+"data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-"
+"plugins-plugin-spectrum.html\">spectrum analysis</link> would allow you to "
+"figure out what notes are being played?"
+msgstr ""
+"Puede conectar un micrófono y grabar sonidos con él usando una <link href="
+"\"http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-"
+"plugins/html/gst-plugins-good-plugins-autoaudiosrc.html\">fuente de entrada</"
+"link>. ¿Es posible que algún tipo de <link href=\"http://gstreamer."
+"freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-"
+"plugins-good-plugins-plugin-spectrum.html\">análisis de espectro</link> le "
+"permita saber qué notas se están reproduciendo?"
+
+#. (itstool) path: info/desc
+#: C/guitar-tuner.cpp.page:9
+msgid ""
+"Use GTKmm and GStreamermm to build a simple guitar tuner application for "
+"GNOME. Shows off how to use the interface designer."
+msgstr ""
+"Usar GTKmm y GStreamermm para construir un sencillo afinador de guitarra "
+"para GNOME. Muestra cómo usar el diseñador de interfaces."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:39
+msgid "Basic knowledge of the C++ programming language"
+msgstr "Conocimiento básico del lenguaje de programación C++"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:53
+msgid ""
+"Choose <gui>GTKmm (Simple)</gui> from the <gui>C++</gui> tab, click "
+"<gui>Forward</gui>, and fill out your details on the next few pages. Use "
+"<file>guitar-tuner</file> as project name and directory."
+msgstr ""
+"Elija <gui>GTKmm (simple)</gui> de la pestaña <gui>C++</gui>, pulse "
+"<gui>Adelante</gui> y rellene los detalles en las siguientes páginas. Use "
+"<file>afinador-guitarra</file> como nombre de proyecto y de carpeta."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:56
+msgid ""
+"Make sure that <gui>Configure external packages</gui> is selected. On the "
+"next page, select <em>gstreamermm-0.10</em> from the list to include the "
+"GStreamermm library in your project."
+msgstr ""
+"Asegúrese de que <gui>Configurar paquetes externos</gui> está seleccionada. "
+"En la siguiente página, seleccione <em>gstreamermm-0.10</em> de la lista "
+"para incluir la biblioteca GStreamermm en su proyecto."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:60
+msgid ""
+"Click <gui>Finished</gui> and the project will be created for you. Open "
+"<file>src/main.cc</file> from the <gui>Project</gui> or <gui>File</gui> "
+"tabs. You should see some code which starts with the lines:"
+msgstr ""
+"Pulse <gui>Terminado</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:"
+
+#. (itstool) path: item/code
+#: C/guitar-tuner.cpp.page:61
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtkmm.h>\n"
+"#include <iostream>"
+msgstr ""
+"\n"
+"#include <gtkmm.h>\n"
+"#include <iostream>"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.cpp.page:70 C/image-viewer.cpp.page:67
+msgid ""
+"This is a very basic C++ code setting up GTKmm. More details are given "
+"below; skip this list if you understand the basics:"
+msgstr ""
+"Esto es una configuración de código C++ usando GTKmm. Se ofrecen más "
+"detalles a continuación; omita esta lista si entiende los conceptos básicos:"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:74
+msgid ""
+"The three <code>#include</code> lines at the top include the <code>config</"
+"code> (useful autoconf build defines), <code>gtkmm</code> (user interface) "
+"and <code>iostream</code> (STL). Functions from these libraries are used in "
+"the rest of the code."
+msgstr ""
+"Las tres líneas <code>#include</code> en la parte superior incluyen las "
+"bibliotecas <code>config</code> (definiciones últiles para construcción con "
+"autoconf), <code>gtkmm</code> (interfaz de usuario) <code>iostream</code> "
+"(STL). Las funciones de estas bibliotecas se usan en el resto del código."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:77
+msgid ""
+"The <code>main</code> function creates a new window by opening a GtkBuilder "
+"file (<file>src/guitar-tuner.ui</file>, defined a few lines above) and then "
+"displaying it in a window. The GtkBuilder file contains a description of a "
+"user interface and all of its elements. You can use Anjuta's editor to "
+"design GtkBuilder user interfaces."
+msgstr ""
+"La función <code>main</code> crea una ventana nueva abriendo un archivo de "
+"GtkBuilder (<file>src/guitar-tuner.ui</file>, definido unas pocas líneas más "
+"arriba) y mostrándolo en una ventana. El archivo de GtkBuilder contiene una "
+"descripción de la interfaz de usuario y de todos sus elementos. Puede usar "
+"el editor Anjuta para diseñar interfaces de usuario con GtkBuilder."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:80
+msgid ""
+"Afterwards it calls a few functions which set up and then run the "
+"application. The <code>kit.run</code> function starts the GTKmm main loop, "
+"which runs the user interface and starts listening for events (like clicks "
+"and key presses)."
+msgstr ""
+"Después llama a algunas funciones que configuran y después ejecutan la "
+"aplicación. La función <code>kit.run</code> inicia el bucle principal de "
+"GTKmm, que ejecuta la interfaz de usuario y empieza a escuchar eventos (como "
+"pulsaciones del ratón y del teclado)."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:105
+msgid ""
+"While the button is still selected, change the <gui>Label</gui> property in "
+"the <gui>Widgets</gui> tab to <gui>E</gui>. This will be the low E string. "
+"Also change the <gui>Name</gui> property to <gui>button_E</gui>. This is the "
+"name we will refer to the widget later in code."
+msgstr ""
+"Mientras el botón esté seleccionado, cambie la propiedad <gui>Etiqueta</gui> "
+"en la pestaña <gui>Widgets</gui> a <gui>E</gui>. Esta será la cuerda Mi "
+"grave. Cambie también la propiedad <gui>Nombre</gui> a <gui>button_E</gui>. "
+"Este es el nombre al que se hará referencia más tarde en el código."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:109
+msgid ""
+"Repeat the above steps for the other buttons, adding the next 5 strings with "
+"the labels <em>A</em>, <em>D</em>, <em>G</em>, <em>B</em>, and <em>e</em> "
+"and the names <em>button_A</em>, etc."
+msgstr ""
+"Repita los pasos anteriores para el resto de botones, añadiendo las 5 "
+"cuerdas restantes con las etiquetas <em>A</em>, <em>D</em>, <em>G</em>, "
+"<em>B</em>, y <em>e</em> y los nombres <em>boton_A</em>, etc."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:112
+msgid ""
+"Save the UI design (by clicking <guiseq><gui>File</gui><gui>Save</gui></"
+"guiseq>) and close the file."
+msgstr ""
+"Guarde el diseño de la IU (pulsando <guiseq><gui>Archivo</gui><gui>Guardar</"
+"gui></guiseq>) y cierre el archivo."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.cpp.page:119
+msgid ""
+"GStreamer is GNOME's multimedia framework — you can use it for playing, "
+"recording, and processing video, audio, webcam streams and the like. Here, "
+"we'll be using it to produce single-frequency tones. GStreamermm is the C++ "
+"binding to GStreamer which we will use here."
+msgstr ""
+"GStreamer es el entorno multimedia de trabajo de GNOME: puede usarlo para "
+"reproducir, grabar y procesar vídeo, sonido, flujos de la cámara web y "
+"similares. En este caso, se usará para generar tonos de frecuencia única. "
+"GStreamermm es la implementación de GStreamer en C++ que se usará aquí."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.cpp.page:129
+msgid "Using GStreamermm"
+msgstr "Usar GStreamermm"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.cpp.page:130
+msgid ""
+"To use GStreamermm, it has to be initialised. We do that by adding the "
+"following line of code next to the <code>Gtk::Main kit(argc, argv);</code> "
+"line in <file>main.cc</file>:"
+msgstr ""
+"Para usar GStreamermm, se debe inicializar. Esto se hace añadiendo la "
+"siguiente línea de código junto a la línea <code>Gtk::Main kit(argc, argv);</"
+"code> en <file>main.cc</file>:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.cpp.page:132
+#, no-wrap
+msgid "\tGst::init (argc, argv);"
+msgstr "\tGst::init (argc, argv);"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.cpp.page:133
+msgid ""
+"While we are on it, also make sure that the <file>gstreamermm.h</file> is "
+"included in <file>main.cc</file> properly."
+msgstr ""
+"Mientras está con esto, asegúrese de que <file>gstreamermm.h</file> se "
+"incluye correctamente en <file>main.cc</file>."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.cpp.page:137
+msgid ""
+"To simplify the handling of the pipeline we will define a helper class "
+"<code>Sound</code>. We do that in <file>main.cc</file> in order to keep this "
+"example simple, whereas you might usually want to use a separate file:"
+msgstr ""
+"Para simplificar el manejo de la tubería, se definirá una clase <code>Sound</"
+"code> auxiliar. Esto se hace en <file>main.cc</file> para mantener la "
+"sencillez de este ejemplo, pero puede querer usar un archivo aparte."
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.cpp.page:140
+#, no-wrap
+msgid ""
+"\n"
+"class Sound\n"
+"{\n"
+"\tpublic:\n"
+"\t\tSound();\n"
+"\n"
+"\t\tvoid start_playing(double frequency);\n"
+"\t\tbool stop_playing();\n"
+"\n"
+"\tprivate:\n"
+"\t\tGlib::RefPtr<Gst::Pipeline> m_pipeline;\n"
+"\t\tGlib::RefPtr<Gst::Element> m_source;\n"
+"\t\tGlib::RefPtr<Gst::Element> m_sink;\n"
+"};\n"
+"\n"
+"Sound::Sound()\n"
+"{\n"
+"\tm_pipeline = Gst::Pipeline::create(\"note\");\n"
+"\tm_source = Gst::ElementFactory::create_element(\"audiotestsrc\",\n"
+"\t \"source\");\n"
+"\tm_sink = Gst::ElementFactory::create_element(\"autoaudiosink\",\n"
+"\t \"output\");\n"
+"\tm_pipeline->add(m_source);\n"
+"\tm_pipeline->add(m_sink);\n"
+"\tm_source->link(m_sink);\n"
+"}\n"
+"\n"
+"void Sound::start_playing (double frequency)\n"
+"{\n"
+"\tm_source->set_property(\"freq\", frequency);\n"
+"\tm_pipeline->set_state(Gst::STATE_PLAYING);\n"
+"\n"
+"\t/* stop it after 200ms */\n"
+"\tGlib::signal_timeout().connect(sigc::mem_fun(*this, &Sound::stop_playing),\n"
+"\t 200);\n"
+"}\n"
+"\n"
+"bool Sound::stop_playing()\n"
+"{\n"
+"\tm_pipeline->set_state(Gst::STATE_NULL);\n"
+"\treturn false;\n"
+"}\n"
+msgstr ""
+"\n"
+"class Sound\n"
+"{\n"
+"\tpublic:\n"
+"\t\tSound();\n"
+"\n"
+"\t\tvoid start_playing(double frequency);\n"
+"\t\tbool stop_playing();\n"
+"\n"
+"\tprivate:\n"
+"\t\tGlib::RefPtr<Gst::Pipeline> m_pipeline;\n"
+"\t\tGlib::RefPtr<Gst::Element> m_source;\n"
+"\t\tGlib::RefPtr<Gst::Element> m_sink;\n"
+"};\n"
+"\n"
+"Sound::Sound()\n"
+"{\n"
+"\tm_pipeline = Gst::Pipeline::create(\"note\");\n"
+"\tm_source = Gst::ElementFactory::create_element(\"audiotestsrc\",\n"
+"\t \"source\");\n"
+"\tm_sink = Gst::ElementFactory::create_element(\"autoaudiosink\",\n"
+"\t \"output\");\n"
+"\tm_pipeline->add(m_source);\n"
+"\tm_pipeline->add(m_sink);\n"
+"\tm_source->link(m_sink);\n"
+"}\n"
+"\n"
+"void Sound::start_playing (double frequency)\n"
+"{\n"
+"\tm_source->set_property(\"freq\", frequency);\n"
+"\tm_pipeline->set_state(Gst::STATE_PLAYING);\n"
+"\n"
+"\t/* stop it after 200ms */\n"
+"\tGlib::signal_timeout().connect(sigc::mem_fun(*this, &Sound::stop_playing),\n"
+"\t 200);\n"
+"}\n"
+"\n"
+"bool Sound::stop_playing()\n"
+"{\n"
+"\tm_pipeline->set_state(Gst::STATE_NULL);\n"
+"\treturn false;\n"
+"}\n"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.cpp.page:184
+msgid "The code has the following purpose:"
+msgstr "El código tiene el propósito siguiente:"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:187
+msgid ""
+"In the constructor, source and sink GStreamer elements (<code>Gst::Element</"
+"code>) are created, and a pipeline element (which will be used as a "
+"container for the other two elements). The pipeline is given the name \"note"
+"\"; the source is named \"source\" and is set to the <code>audiotestsrc</"
+"code> source; and the sink is named \"output\" and set to the "
+"<code>autoaudiosink</code> sink (default sound card output). After the "
+"elements have been added to the pipeline and linked together, the pipeline "
+"is ready to run."
+msgstr ""
+"En el constructor se crean los elementos «fuente» y «sumidero» de GStreamer "
+"(<code>GstElement</code>), y un elemento de tubería (que se usará como "
+"contenedor de los otros dos elementos). 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 <code>autoaudiosink</code> (la salida de la tarjeta de sonido "
+"predeterminada). Después de añadir los elementos a la tubería y de "
+"enlazarlos unos con otros, la tubería está lista para ejecutarse."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:190
+msgid ""
+"<code>start_playing</code> sets the source element to play a particular "
+"frequency and then starts the pipeline so the sound actually starts playing. "
+"As we don't want to have the annoying sound for ages, a timeout is set up to "
+"stop the pipeline after 200 ms by calling <code>stop_playing</code>."
+msgstr ""
+"<code>start_playing</code> configura el elemento fuente para reproducir una "
+"frecuencia determinada e inicia la tubería, por lo que el sonido empieza a "
+"reproducirse. Como no se quiere reproducir un sonido molesto durante mucho "
+"tiempo, se establece un tiempo de expiración para detener la tubería después "
+"de 200 ms, llamando a <code>stop_playing</code>."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:195
+msgid ""
+"In <code>stop_playing</code> which is called when the timeout has elapsed, "
+"the pipeline is stopped and as such there isn't any sound output anymore. As "
+"GStreamermm uses reference counting through the <code>Glib::RefPtr</code> "
+"object, the memory is automatically freed once the <code>Sound</code> class "
+"is destroyed."
+msgstr ""
+"En <code>stop_playing</code> a la que se llama cuando ha transcurrido el "
+"tiempo, se detiene la tubería y como tal, ya no habrá ninguna salida de "
+"sonido. Ya que GStreamermm usa una referencia continua a traves del objeto "
+"<code>Glib::RefPtr</code>, la memoria se libera automáticamente una vez que "
+"la clase <code>Sound</code> se ha destruido."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.cpp.page:203
+msgid "Connecting the signals"
+msgstr "Conectar las señales"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.cpp.page:204
+msgid ""
+"We want to play the correct sound when the user clicks a button. That means "
+"that we have to connect to the signal that is fired when the user clicks the "
+"button. We also want to provide information to the called function which "
+"tone to play. GTKmm makes that quite easy as we can easily bind information "
+"with the <em>sigc</em> library."
+msgstr ""
+"Se quiere reproducir el sonido correcto cuando el usuario pulsa un botón. Lo "
+"que significa que hay que conectar la señal disparada cuando el usuario "
+"pulsa el botón. También se quiere proporcionar información a la función "
+"llamada dependiendo del tono que reproducir. GTKmm hace que esto sea fácil "
+"ya que se puede vincular información con la biblioteca <em>sigc</em>."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.cpp.page:209
+msgid ""
+"The function that is called when the user clicks a button can be pretty "
+"simple, as all the interesting stuff is done in the helper class now:"
+msgstr ""
+"La función a la que se llama cuando el usuario pulsa un botón puede ser muy "
+"sencilla, ya que todo lo interesante se hace ahora en la clase auxiliar:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.cpp.page:211
+#, no-wrap
+msgid ""
+"\n"
+"static void\n"
+"on_button_clicked(double frequency, Sound* sound)\n"
+"{\n"
+"\tsound->start_playing (frequency);\n"
+"}\n"
+msgstr ""
+"\n"
+"static void\n"
+"on_button_clicked(double frequency, Sound* sound)\n"
+"{\n"
+"\tsound->start_playing (frequency);\n"
+"}\n"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.cpp.page:218
+msgid ""
+"It only calls the helper class we defined before to play the correct "
+"frequencies. With some more clever code we would also have been able to "
+"directly connect to the class without using the function but we will leave "
+"that to use as an exercise."
+msgstr ""
+"Sólo llama a la clase auxiliar definida anteriormente para reproducir las "
+"frecuencias correctas. Con algo de código más inteligente, se podría haber "
+"conectado directamente con la clase sin usar la función, pero esto se dejará "
+"como ejercicio."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.cpp.page:222
+msgid ""
+"The code to set up the signals should be added to the <code>main()</code> "
+"function just after the <code>builder->get_widget(\"main_window\", "
+"main_win);</code> line:"
+msgstr ""
+"El código para configurar las señales de debe añadir a la función "
+"<code>main()</code>, justo después de la línea <code>builder->"
+"get_widget(\"main_window\", main_win);</code>:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.cpp.page:224
+#, no-wrap
+msgid ""
+"\n"
+"Sound sound;\n"
+"Gtk::Button* button;\n"
+"\n"
+"builder->get_widget(\"button_E\", button);\n"
+"button->signal_clicked().connect (sigc::bind<double,
Sound*>(sigc::ptr_fun(&on_button_clicked),\n"
+" 329.63, &sound));\n"
+msgstr ""
+"\n"
+"Sound sound;\n"
+"Gtk::Button* button;\n"
+"\n"
+"builder->get_widget(\"button_E\", button);\n"
+"button->signal_clicked().connect (sigc::bind<double,
Sound*>(sigc::ptr_fun(&on_button_clicked),\n"
+" 329.63, &sound));\n"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:234
+msgid ""
+"At first we create an instance of our helper class that we want to use now "
+"and declare a variable for the button we want to connect to."
+msgstr ""
+"En primer lugar, se crea una instancia de la clase auxiliar que se quiere "
+"usar ahora y se declara una variable para el botón al que se quiere conectar."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:238
+msgid ""
+"Next, we receive the button object from the user interface that was created "
+"out of the user interface file. Remember that <em>button_E</em> is the name "
+"we gave to the first button."
+msgstr ""
+"Después se recibe el objeto de botón desde la interfaz de usuario que se "
+"creó fuera del archivo de la interfaz de usuario. Recuerde que <em>button_E</"
+"em> es el nombre que se dio al primer botón."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.cpp.page:242
+msgid ""
+"Finally we connect the <em>clicked</em> signal. This isn't fully "
+"straightforward because this is done in a fully type-safe way and we "
+"actually want to pass the frequency and our helper class to the signal "
+"handler. <code>sigc::ptr_fun(&on_button_clicked)</code> creates a "
+"<em>slot</em> for the <code>on_button_clicked</code> method we defined "
+"above. With <code>sigc::bind</code> we are able to pass additional arguments "
+"to the slot and in this case we pass the frequency (as double) and our "
+"helper class."
+msgstr ""
+"Por último, se conecta la señal <em>clicked</em>. Esto no es del todo "
+"sencillo porque se hace de manera completamente segura para el tipo, y "
+"actualmente se quiere pasar la frecuencia y la clase auxiliar al manejador "
+"de la señal. <code>sigc::ptr_fun(&on_button_clicked)</code> crea un "
+"<em>slot</em> para el método <code>on_button_clicked</code> definido "
+"anteriormente. Con <code>sigc::bind</code> es posible pasar argumentos "
+"adicionales al slot y, en este caso, se pasa la frecuencia (como «double») y "
+"la clase auxiliar."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.cpp.page:249
+msgid ""
+"Now that we have set up the <em>E</em> button we also need to connect the "
+"other buttons according to their frequencies: 440 for A, 587.33 for D, "
+"783.99 for G, 987.77 for B and 1318.5 for the high E. This is done in the "
+"same way, just passing a different frequency to the handler."
+msgstr ""
+"Ahora que se ha establecido el botón <em>E</em>, se debe conectar el resto "
+"de botones de acuerdo con sus frecuencias: 440 para A, 587.33 para D, 783.99 "
+"para G, 987.77 para B y 1318.5 para E agudo. Esto se hace de la misma "
+"manera, pasando simplemente una frecuencia diferente al manejador."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.cpp.page:256
+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>Run</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."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.cpp.page:262
+msgid ""
+"If you run into problems with the tutorial, compare your code with this "
+"<link href=\"guitar-tuner/guitar-tuner.cc\">reference code</link>."
+msgstr ""
+"Si tiene problemas con este tutorial, compare su código con este <link href="
+"\"guitar-tuner/guitar-tuner.cc\">código de referencia</link>."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.cpp.page:266
+msgid "Further Reading"
+msgstr "Lecturas adicionales"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.cpp.page:267
+msgid ""
+"Many of the things shown above are explained in detail in the <link href="
+"\"http://library.gnome.org/devel/gtkmm-tutorial/stable/\">GTKmm book</link> "
+"which also covers a lot more key concept for using the full power of GTKmm. "
+"You might also be interested in the <link href=\"http://library.gnome.org/"
+"devel/gstreamermm/\">GStreamermm reference documentation</link>."
+msgstr ""
+"La mayor parte de lo que se ha visto anteriormente se explica detalladamente "
+"en el <link href=\"http://library.gnome.org/devel/gtkmm-tutorial/stable/"
+"\">libro de GTKmm</link> que también cubre muchos más conceptos clave para "
+"usar todo el potencial de GTKmm. Es posible que también le interese la <link "
+"href=\"http://library.gnome.org/devel/gstreamermm/\">documentación de "
+"referencia de GStreamermm</link>."
+
+#. (itstool) path: info/title
+#: C/guitar-tuner.js.page:7
+msgctxt "text"
+msgid "Guitar tuner (JavaScript)"
+msgstr "Afinador de guitarra (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/guitar-tuner.js.page:17
+msgid ""
+"Use GTK+ and GStreamer to build a simple guitar tuner application for GNOME."
+msgstr ""
+"Usar GTK+ y GStreamer para construir un sencillo afinador de guitarra para "
+"GNOME."
+
+#. (itstool) path: synopsis/p
+#: C/guitar-tuner.js.page:23
+msgid ""
+"In this tutorial we'll construct a small application, Guitar Tuner, using "
+"JavaScript and GTK+ and GStreamer. To do and run all the code examples "
+"yourself, you need an editor to write code in, terminal and GNOME 3. or "
+"higher installed into your computer."
+msgstr ""
+"En este tutorial se construirá una pequeña aplicación, «Afinador de "
+"guitarra», usando JavaScript, GTK+ y GStreamer. Para escribirla y poder "
+"ejecutar los ejemplos, necesitará un editor en el que escribir el código, "
+"una terminal y GNOME 3 o superior instalado en su equipo."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.js.page:25
+msgid "<link xref=\"#gstreamer\">GStreamer pipelines</link>"
+msgstr "<link xref=\"#gstreamer\">Tuberías de GStreamer</link>"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.js.page:26 C/weatherAppMain.js.page:23
+msgid "<link xref=\"#script\">Script for running the application</link>"
+msgstr "<link xref=\"#script\">Script para ejecutar la aplicación</link>"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.js.page:27 C/weatherAppMain.js.page:24
+msgid "<link xref=\"#imports\">Libraries to import</link>"
+msgstr "<link xref=\"#imports\">Bibliotecas que importar</link>"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.js.page:28 C/weatherAppMain.js.page:25
+msgid ""
+"<link xref=\"#mainwindow\">Creating the main window for the application</"
+"link>"
+msgstr ""
+"<link xref=\"#mainwindow\">Crear la ventana principal de la aplicación</link>"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.js.page:29
+msgid "<link xref=\"#buttons\">Buttons for the tunes</link>"
+msgstr "<link xref=\"#buttons\">Botones para las melodías</link>"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.js.page:30
+msgid "<link xref=\"#playSound\">Making the sounds with GStreamer</link>"
+msgstr "<link xref=\"#playSound\">Crear sonidos con GStreamer</link>"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.js.page:31
+msgid "<link xref=\"#connecting\">Connecting buttons to playSound</link>"
+msgstr "<link xref=\"#connecting\">Conectar los botones a playSound</link>"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.js.page:32
+msgid "<link xref=\"#guitarjs\">The whole program</link>"
+msgstr "<link xref=\"#guitarjs\">El programa completo</link>"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.js.page:33
+msgid "<link xref=\"#terminal\">Running the application form Terminal</link>"
+msgstr ""
+"<link xref=\"#terminal\">Ejecutar la aplicación desde la terminal</link>"
+
+#. (itstool) path: page/p
+#: C/guitar-tuner.js.page:36 C/weatherApp.js.page:40
+msgid "After reading this tutorial, you should see this in your screen:"
+msgstr "Después de leer este tutorial, debería ver esto en su pantalla:"
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.js.page:48 C/hello-world.js.page:46
+#: C/weatherAppMain.js.page:33
+msgid "Script for running the application"
+msgstr "Script para ejecutar la aplicación"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.js.page:49 C/weatherAppMain.js.page:34
+#, no-wrap
+msgid ""
+"\n"
+" #!/usr/bin/gjs"
+msgstr ""
+"\n"
+" #!/usr/bin/gjs"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.js.page:51
+msgid ""
+"This line tells how to run the script. It needs to be the first line of the "
+"code and it needs to be executable. To get the execution rights go to "
+"terminal and run in right folder: chmod +x scriptname. Or you can use the "
+"graphical filemanager. Just go to the right folder where your code is, right "
+"click you code file, choose properties, click the permissions tab and check "
+"the box for allow executing file as a program"
+msgstr ""
+"Esta línea indica cómo ejecutar el script. Debe ser la primera línea del "
+"código y debe ser ejecutable. Para obtener permisos de ejecución vaya a la "
+"terminal y ejecute lo siguiente en la carpeta adecuada: chmod +x "
+"nombrescript. También puede usar el gestor de archivo. Simplemente vaya a la "
+"carpeta donde está el código, pulse con el botón derecho sobre el archivo de "
+"código y elija «Propiedades», pulse en la pestaña «Permisos» y marque la "
+"casilla para permitir ejecutar el archivo como un programa."
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.js.page:56
+#, no-wrap
+msgid ""
+"\n"
+"var Gtk = imports.gi.Gtk;\n"
+"var Gst = imports.gi.Gst;\n"
+"\n"
+"const Mainloop = imports.mainloop;"
+msgstr ""
+"\n"
+"var Gtk = imports.gi.Gtk;\n"
+"var Gst = imports.gi.Gst;\n"
+"\n"
+"const Mainloop = imports.mainloop;"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.js.page:61
+msgid ""
+"In order to have a working program we need to import a few GObject "
+"Introspection -libraries to our use. For working UI, we need Gtk and for "
+"Gstreamer to work we need Gst. These are imported in the beginning so we "
+"have them at use everywhere. Also in the beginning we import a construct "
+"Mainloop to handle the timeout to be used with the tuning sounds."
+msgstr ""
+"Para que el programa funcione se debe importar una biblioteca de "
+"introspección de GObject. Para que funcione la IU se necesita GTK+ y, para "
+"que funcione GStreamer se necesita GST. Estas bibliotecas se importan al "
+"inicio, por lo que están en uso en todos los sitios. También, al principio, "
+"se importa el constructor Mainloop para gestionar el tiempo de espera que "
+"usar para los tonos de afinación."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.js.page:64 C/hello-world.js.page:59 C/hello-world.py.page:52
+#: C/hello-world.vala.page:44 C/weatherAppMain.js.page:49
+msgid "Creating the main window for the application"
+msgstr "Crear la ventana principal de la aplicación"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.js.page:65
+#, no-wrap
+msgid ""
+"\n"
+"Gtk.init(null, 0);\n"
+"Gst.init(null, 0);\n"
+"\n"
+"var guitarwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL, border_width: 100});\n"
+"guitarwindow.title = \"Guitar Tuner\";\n"
+"guitarwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
+"\n"
+"guitarwindow.show();\n"
+"Gtk.main();"
+msgstr ""
+"\n"
+"Gtk.init(null, 0);\n"
+"Gst.init(null, 0);\n"
+"\n"
+"var guitarwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL, border_width: 100});\n"
+"guitarwindow.title = \"Guitar Tuner\";\n"
+"guitarwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
+"\n"
+"guitarwindow.show();\n"
+"Gtk.main();"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.js.page:75
+msgid ""
+"Importing Gtk and Gst is not enough, we need to initialize them in order to "
+"get them working. When Gtk and Gst are up and running we need to create the "
+"window for the application. Later we are going to put all the buttons for "
+"making sounds inside this window. In order to get the window showing, we "
+"need to tell it to show and we need also to run the code with the Gtk.main()"
+msgstr ""
+"Importar GTK+ y Gst no es suficiente. Se necesita inicializarlos para que "
+"funcionen juntos. Cuando GTK+ y Gst estén funcionando, se debe crear la "
+"ventana para la aplicación. Más adelante se pondrán los botones para "
+"reproducir sonidos en esta ventana. Para que la ventana se muestre, es "
+"necesario decirle que se muestre y se debe ejecutar el código con la función "
+"Gtk.main()."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.js.page:78
+msgid "Buttons for the tunes"
+msgstr "Botones para los tonos"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.js.page:79
+#, no-wrap
+msgid ""
+"\n"
+"var guitar_box = new Gtk.ButtonBox ({orientation: Gtk.Orientation.VERTICAL, spacing: 10});\n"
+"\n"
+"var E = new Gtk.Button({label: \"E\"});\n"
+"var A = new Gtk.Button({label: \"A\"});\n"
+"var D = new Gtk.Button({label: \"D\"});\n"
+"var G = new Gtk.Button({label: \"G\"});\n"
+"var B = new Gtk.Button({label: \"B\"});\n"
+"var e = new Gtk.Button({label: \"e\"});\n"
+"\n"
+"guitar_box.add(E);\n"
+"guitar_box.add(A);\n"
+"guitar_box.add(D);\n"
+"guitar_box.add(G);\n"
+"guitar_box.add(B);\n"
+"guitar_box.add(e);\n"
+"\n"
+"guitarwindow.add(guitar_box);\n"
+"\n"
+"guitar_box.show_all();"
+msgstr ""
+"\n"
+"var guitar_box = new Gtk.ButtonBox ({orientation: Gtk.Orientation.VERTICAL, spacing: 10});\n"
+"\n"
+"var E = new Gtk.Button({label: \"E\"});\n"
+"var A = new Gtk.Button({label: \"A\"});\n"
+"var D = new Gtk.Button({label: \"D\"});\n"
+"var G = new Gtk.Button({label: \"G\"});\n"
+"var B = new Gtk.Button({label: \"B\"});\n"
+"var e = new Gtk.Button({label: \"e\"});\n"
+"\n"
+"guitar_box.add(E);\n"
+"guitar_box.add(A);\n"
+"guitar_box.add(D);\n"
+"guitar_box.add(G);\n"
+"guitar_box.add(B);\n"
+"guitar_box.add(e);\n"
+"\n"
+"guitarwindow.add(guitar_box);\n"
+"\n"
+"guitar_box.show_all();"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.js.page:99
+msgid ""
+"Because Gtk.Window can only contain a single widget, we need to create "
+"something under it to be able to add all the necessary buttons inside it. In "
+"this example we use Buttonbox. After creating the Buttonbox we create "
+"buttons with necessary labels. After we have the buttons we need to add them "
+"to the Buttonbox and the Buttonbox must be added to the Gtk.Window and "
+"everything in the Buttonbox must be shown."
+msgstr ""
+"Dado que Gtk.Window sólo puede contener un único widget, se debe crear algo "
+"que pueda contener todos los botones necesarios. En este ejemplo se usa "
+"Buttonbox. Después de crear la Buttonbox, se crean los botones con las "
+"etiquetas necesarias. Una vez creados los botones necesarios, es necesario "
+"añadirlos a la Buttonbox, que se debe añadir a la Gtk.Window, y se mostrará "
+"todo el contenido de la Buttonbox."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.js.page:100
+msgid ""
+"After this stage you should have a window appearing to your screen showing 6 "
+"buttons. Right now the buttons don't do anything and we shall address that "
+"issue later. Before we can connect the button signals to something we need "
+"to code that something first."
+msgstr ""
+"Después de esto debería tener en su pantalla una ventana con 6 botones. De "
+"momento, los botones no hacen nada, esto se corregirá más adelante. Antes de "
+"poder conectar las señales de los botones a algo, es necesario codificar eso "
+"primero."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.js.page:103
+msgid "Making the sounds with GStreamer"
+msgstr "Crear sonidos con GStreamer"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.js.page:104
+#, no-wrap
+msgid ""
+"\n"
+"var frequencies = {E: 329.63, A: 440,\tD: 587.33,\tG: 783.99,\tB: 987.77,\te: 1318.5}\n"
+"\n"
+"function playSound(frequency){\n"
+" var pipeline = new Gst.Pipeline({name: \"note\"});\n"
+" var source = Gst.ElementFactory.make(\"audiotestsrc\",\"source\");\n"
+" var sink = Gst.ElementFactory.make(\"autoaudiosink\",\"output\");\n"
+"\n"
+" source.set_property('freq', frequency);\n"
+" pipeline.add(source);\n"
+" pipeline.add(sink);\n"
+" source.link(sink);\n"
+" pipeline.set_state(Gst.State.PLAYING);\n"
+"\n"
+" Mainloop.timeout_add(500, function () {\n"
+" pipeline.set_state(Gst.State.NULL);\n"
+"\t return false;\n"
+" });\n"
+"}"
+msgstr ""
+"\n"
+"var frequencies = {E: 329.63, A: 440,\tD: 587.33,\tG: 783.99,\tB: 987.77,\te: 1318.5}\n"
+"\n"
+"function playSound(frequency){\n"
+" var pipeline = new Gst.Pipeline({name: \"note\"});\n"
+" var source = Gst.ElementFactory.make(\"audiotestsrc\",\"source\");\n"
+" var sink = Gst.ElementFactory.make(\"autoaudiosink\",\"output\");\n"
+"\n"
+" source.set_property('freq', frequency);\n"
+" pipeline.add(source);\n"
+" pipeline.add(sink);\n"
+" source.link(sink);\n"
+" pipeline.set_state(Gst.State.PLAYING);\n"
+"\n"
+" Mainloop.timeout_add(500, function () {\n"
+" pipeline.set_state(Gst.State.NULL);\n"
+"\t return false;\n"
+" });\n"
+"}"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.js.page:123
+msgid ""
+"The first thing we need to do is decide what tunes we want to make when we "
+"push a button. The frequencies list takes care of that. After that we get to "
+"actually making the sounds with the function playSound. For function "
+"playSound we give as an input a frequency (that we just defined in the "
+"frequencies variable). First thing we need to construct is a pipeline, a "
+"source and a sink. For the source we set the frequency. To the pipeline we "
+"add both the source and the sink and then we tell it to keep playing. As a "
+"last thing we use the const Mainloop to get the pipeline to stop after a "
+"500ms."
+msgstr ""
+"Lo primero que se debe hacer es decidir qué tonos se quieren reproducir con "
+"la función playSound. A la función playSound se le pasa como argumento una "
+"frecuencia (que se ha definido en la lista de variables). Lo primero que se "
+"debe hacer es construir una tubería, con una fuente y un sumidero. Para la "
+"fuente se establece la frecuencia. A la tubería se añaden la fuente y el "
+"sumidero y se indica que la reproduzca. El último paso es usar la constante "
+"Mainloop para hacer que la tubería se pare después de 500ms."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.js.page:124
+msgid ""
+"Now we have the method of playing a tune when clicking a button. Next well "
+"make the connections between pushing a button and playing the correct sound "
+"from that button."
+msgstr ""
+"Ahora ya funciona el método para reproducir un sonido cuando se pulsa un "
+"botón. Lo siguiente es hacer las conexiones para que al pulsar un botón se "
+"reproduzca el sonido correcto para ese botón."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.js.page:127
+msgid "Connecting buttons to playSound"
+msgstr "Conectar los botones a playSound"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.js.page:128
+#, no-wrap
+msgid ""
+"\n"
+"E.connect(\"clicked\", function() {\n"
+" playSound(frequencies.E);\n"
+"});\n"
+"A.connect(\"clicked\", function(){\n"
+" playSound(frequencies.A);\n"
+"});\n"
+"D.connect(\"clicked\", function(){\n"
+" playSound(frequencies.D);\n"
+"});\n"
+"G.connect(\"clicked\", function(){\n"
+" playSound(frequencies.G);\n"
+"});\n"
+"B.connect(\"clicked\", function(){\n"
+" playSound(frequencies.B);\n"
+"});\n"
+"e.connect(\"clicked\", function(){\n"
+" playSound(frequencies.e);\n"
+"});"
+msgstr ""
+"\n"
+"E.connect(\"clicked\", function() {\n"
+" playSound(frequencies.E);\n"
+"});\n"
+"A.connect(\"clicked\", function(){\n"
+" playSound(frequencies.A);\n"
+"});\n"
+"D.connect(\"clicked\", function(){\n"
+" playSound(frequencies.D);\n"
+"});\n"
+"G.connect(\"clicked\", function(){\n"
+" playSound(frequencies.G);\n"
+"});\n"
+"B.connect(\"clicked\", function(){\n"
+" playSound(frequencies.B);\n"
+"});\n"
+"e.connect(\"clicked\", function(){\n"
+" playSound(frequencies.e);\n"
+"});"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.js.page:147
+msgid ""
+"The method of connecting button clicks to playSound with the correct tune is "
+"by using the connect method of the button widget. So we choose a button to "
+"be connected and type <code>E.connect(\"clicked\", function()"
+"{playSound(frequencies.E);});</code> The <code>connect</code> tells that "
+"when pushing E, something should happen. The <code>clicked</code> tells the "
+"type of the signal happening to E and then in the <code>function(){};</code> "
+"we call playSound with the correct note that should be associated with the "
+"button."
+msgstr ""
+"La forma de conectar pulsaciones del ratón a «playSound» con la melodía "
+"correcta es usar el método «connect» del widget botón. Por lo que se elije "
+"un botón que conectar y se introduce <code>E.connect(\"clicked\", function()"
+"{playSound(frequencies.E);});</code> El <code>connect</code> indica que "
+"cuando se pulsa «E», algo debe pasar. El <code>clicked</code> indica el tipo "
+"de acción sucediendo sobre «E» y después en la <code>function(){};</code> se "
+"llama a «playSound» con la melodía correcta que debe asociarse al botón."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.js.page:157
+msgid "The whole program"
+msgstr "El programa completo"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.js.page:158
+msgid ""
+"So this is what all the parts combined looks like. When running this code, "
+"you should be able to tune your guitar (if you have correctly calibrated "
+"speakers)."
+msgstr ""
+"A esto se parecen todas las partes combinadas. Al ejecutar este código, "
+"debería poder afinar su guitarra (si tiene sus altavoces calibrados "
+"correctamente)."
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.js.page:159
+#, no-wrap
+msgid ""
+"\n"
+"#!/usr/bin/gjs\n"
+"var Gtk = imports.gi.Gtk;\n"
+"var Gst = imports.gi.Gst;\n"
+"\n"
+"const Mainloop = imports.mainloop;\n"
+"\n"
+"Gtk.init(null, 0);\n"
+"Gst.init(null, 0);\n"
+"\n"
+"var guitarwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL, border_width: 100});\n"
+"guitarwindow.title = \"Guitar Tuner\";\n"
+"guitarwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
+"\n"
+"var guitar_box = new Gtk.ButtonBox ({orientation: Gtk.Orientation.VERTICAL, spacing: 10});\n"
+"\n"
+"var E = new Gtk.Button({label: \"E\"});\n"
+"var A = new Gtk.Button({label: \"A\"});\n"
+"var D = new Gtk.Button({label: \"D\"});\n"
+"var G = new Gtk.Button({label: \"G\"});\n"
+"var B = new Gtk.Button({label: \"B\"});\n"
+"var e = new Gtk.Button({label: \"e\"});\n"
+"\n"
+"var frequencies = {E: 329.63, A: 440,\tD: 587.33,\tG: 783.99,\tB: 987.77,\te: 1318.5}\n"
+"\n"
+"\n"
+"function playSound(frequency){\n"
+" var pipeline = new Gst.Pipeline({name: \"note\"});\n"
+"\n"
+" var source = Gst.ElementFactory.make(\"audiotestsrc\",\"source\");\n"
+" var sink = Gst.ElementFactory.make(\"autoaudiosink\",\"output\");\n"
+"\n"
+" source.set_property('freq', frequency);\n"
+" pipeline.add(source);\n"
+" pipeline.add(sink);\n"
+" source.link(sink);\n"
+" pipeline.set_state(Gst.State.PLAYING);\n"
+"\n"
+" Mainloop.timeout_add(500, function () {\n"
+" pipeline.set_state(Gst.State.NULL);\n"
+"\t return false;\n"
+"});\n"
+"}\n"
+"\n"
+"E.connect(\"clicked\", function() {\n"
+" playSound(frequencies.E);\n"
+"});\n"
+"A.connect(\"clicked\", function(){\n"
+" playSound(frequencies.A);\n"
+"});\n"
+"D.connect(\"clicked\", function(){\n"
+" playSound(frequencies.D);\n"
+"});\n"
+"G.connect(\"clicked\", function(){\n"
+" playSound(frequencies.G);\n"
+"});\n"
+"B.connect(\"clicked\", function(){\n"
+" playSound(frequencies.B);\n"
+"});\n"
+"e.connect(\"clicked\", function(){\n"
+" playSound(frequencies.e);\n"
+"});\n"
+"\n"
+"guitar_box.add(E);\n"
+"guitar_box.add(A);\n"
+"guitar_box.add(D);\n"
+"guitar_box.add(G);\n"
+"guitar_box.add(B);\n"
+"guitar_box.add(e);\n"
+"\n"
+"guitarwindow.add(guitar_box);\n"
+"\n"
+"guitar_box.show_all();\n"
+"guitarwindow.show();\n"
+"Gtk.main();"
+msgstr ""
+"\n"
+"#!/usr/bin/gjs\n"
+"var Gtk = imports.gi.Gtk;\n"
+"var Gst = imports.gi.Gst;\n"
+"\n"
+"const Mainloop = imports.mainloop;\n"
+"\n"
+"Gtk.init(null, 0);\n"
+"Gst.init(null, 0);\n"
+"\n"
+"var guitarwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL, border_width: 100});\n"
+"guitarwindow.title = \"Guitar Tuner\";\n"
+"guitarwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
+"\n"
+"var guitar_box = new Gtk.ButtonBox ({orientation: Gtk.Orientation.VERTICAL, spacing: 10});\n"
+"\n"
+"var E = new Gtk.Button({label: \"E\"});\n"
+"var A = new Gtk.Button({label: \"A\"});\n"
+"var D = new Gtk.Button({label: \"D\"});\n"
+"var G = new Gtk.Button({label: \"G\"});\n"
+"var B = new Gtk.Button({label: \"B\"});\n"
+"var e = new Gtk.Button({label: \"e\"});\n"
+"\n"
+"var frequencies = {E: 329.63, A: 440,\tD: 587.33,\tG: 783.99,\tB: 987.77,\te: 1318.5}\n"
+"\n"
+"\n"
+"function playSound(frequency){\n"
+" var pipeline = new Gst.Pipeline({name: \"note\"});\n"
+"\n"
+" var source = Gst.ElementFactory.make(\"audiotestsrc\",\"source\");\n"
+" var sink = Gst.ElementFactory.make(\"autoaudiosink\",\"output\");\n"
+"\n"
+" source.set_property('freq', frequency);\n"
+" pipeline.add(source);\n"
+" pipeline.add(sink);\n"
+" source.link(sink);\n"
+" pipeline.set_state(Gst.State.PLAYING);\n"
+"\n"
+" Mainloop.timeout_add(500, function () {\n"
+" pipeline.set_state(Gst.State.NULL);\n"
+"\t return false;\n"
+"});\n"
+"}\n"
+"\n"
+"E.connect(\"clicked\", function() {\n"
+" playSound(frequencies.E);\n"
+"});\n"
+"A.connect(\"clicked\", function(){\n"
+" playSound(frequencies.A);\n"
+"});\n"
+"D.connect(\"clicked\", function(){\n"
+" playSound(frequencies.D);\n"
+"});\n"
+"G.connect(\"clicked\", function(){\n"
+" playSound(frequencies.G);\n"
+"});\n"
+"B.connect(\"clicked\", function(){\n"
+" playSound(frequencies.B);\n"
+"});\n"
+"e.connect(\"clicked\", function(){\n"
+" playSound(frequencies.e);\n"
+"});\n"
+"\n"
+"guitar_box.add(E);\n"
+"guitar_box.add(A);\n"
+"guitar_box.add(D);\n"
+"guitar_box.add(G);\n"
+"guitar_box.add(B);\n"
+"guitar_box.add(e);\n"
+"\n"
+"guitarwindow.add(guitar_box);\n"
+"\n"
+"guitar_box.show_all();\n"
+"guitarwindow.show();\n"
+"Gtk.main();"
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.js.page:237
+msgid "Running the application form Terminal"
+msgstr "Ejecutar la aplicación desde la terminal"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.js.page:238
+msgid ""
+"To run this application open Terminal, go to the folder where your "
+"application is stored and then run"
+msgstr ""
+"Para ejecutar esta aplicación ,abra una terminal, vaya a la carpeta donde "
+"está la aplicación y ejecute"
+
+#. (itstool) path: section/screen
+#: C/guitar-tuner.js.page:238
+#, no-wrap
+msgid " <output style=\"prompt\">$ </output><input> GJS_PATH=`pwd` gjs guitarTuner.js</input> "
+msgstr " <output style=\"prompt\">$ </output><input> GJS_PATH=`pwd` gjs guitarTuner.js</input> "
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.js.page:243
+msgid ""
+"If you run into problems with the tutorial, compare your code with this "
+"<link href=\"guitar-tuner/guitar-tuner.js\">reference code</link>."
+msgstr ""
+"Si tiene problemas con este tutorial, compare su código con este <link href="
+"\"guitar-tuner/guitar-tuner.js\">código de referencia</link>."
+
+#. (itstool) path: info/title
+#: C/guitar-tuner.py.page:8
+msgctxt "text"
+msgid "Guitar tuner (Python)"
+msgstr "Afinador de guitarra (Python)"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.py.page:46
+msgid "Basic knowledge of the Python programming language"
+msgstr "Conocimiento básico del lenguaje de programación Python"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.py.page:60
+msgid ""
+"Choose <gui>PyGTK (automake)</gui> from the <gui>Python</gui> tab, click "
+"<gui>Continue</gui>, and fill out your details on the next few pages. Use "
+"<file>guitar-tuner</file> as project name and directory."
+msgstr ""
+"Seleccione <gui>PyGTK (automake)</gui> en la pestaña <gui>Python</gui>, "
+"pulse <gui>Continuar</gui>, y rellene los detalles en las siguientes "
+"páginas. Use <file>afinador-guiterra</file> como nombre del proyecto y de la "
+"carpeta."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.py.page:63
+msgid ""
+"Click <gui>Apply</gui> and the project will be created for you. Open "
+"<file>src/guitar_tuner.py</file> from the <gui>Project</gui> or <gui>File</"
+"gui> tabs. You should see some code which starts with the lines:"
+msgstr ""
+"Pulse <gui>Aplicar</gui> y se creará el proyecto. Abra <file>src/afinador-"
+"guitarra.py</file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</"
+"gui>. Debería ver algo de código que comience con las líneas:"
+
+#. (itstool) path: item/code
+#: C/guitar-tuner.py.page:64
+#, no-wrap
+msgid ""
+"\n"
+"from gi.repository import Gtk, GdkPixbuf, Gdk\n"
+"import os, sys"
+msgstr ""
+"\n"
+"from gi.repository import Gtk, GdkPixbuf, Gdk\n"
+"import os, sys"
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.py.page:72
+msgid "Run the code for the first time"
+msgstr "Ejecutar el código por primera vez"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:73
+msgid ""
+"Most of the code in the file is template code. It loads an (empty) window "
+"from the user interface description file and shows it. More details are "
+"given below; skip this list if you understand the basics:"
+msgstr ""
+"La mayor parte del código del archivo se usa como plantilla. 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:"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.py.page:77
+msgid ""
+"The <code>import</code> lines at the top include the tell Python to load the "
+"user interface and system libraries needed."
+msgstr ""
+"Las líneas <code>import</code> en la parte superior indican a Python que "
+"cargue la interfaz de usuario y las bibliotecas del sistema necesarias."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.py.page:81
+msgid ""
+"A class is declared that will be the main class for our application. In the "
+"<code>__init__</code> method the main window is loaded from the GtkBuilder "
+"file (<file>src/guitar-tuner.ui</file>) and the signals are connected."
+msgstr ""
+"Se declara una clase que estará en la clase principal de la aplicación. En "
+"el método <code>__init__</code> se carga la ventana principal desde el "
+"archivo de GtkBuilder (<file>src/guitar-tuner.ui</file>) y se conectan las "
+"señales."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.py.page:84
+msgid ""
+"Connecting signals is how you define what happens when you push a button, or "
+"when some other event happens. Here, the <code>destroy</code> method is "
+"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 al método <code>destroy</"
+"code> (y se sale de la aplicación) cuando cierra la ventana."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.py.page:87
+msgid ""
+"The <code>main</code> function is run by default when you start a Python "
+"application. It just creates an instance of the main class and starts the "
+"main loop to bring up the window."
+msgstr ""
+"La función <code>main</code> se ejecuta de manera predeterminada cuando "
+"inicia una aplicación Python. Simplemente crea una instancia de la clase "
+"principal e inicia el bucle principal para mostrar la ventana."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:92
+msgid ""
+"This code is ready to be used, so you can run it by clicking "
+"<guiseq><gui>Run</gui><gui>Execute</gui></guiseq>."
+msgstr ""
+"Este código está listo para usarse, por lo que puede ejecutarlo pulsando "
+"<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq>."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:97
+msgid ""
+"A description of the user interface (UI) is contained in the GtkBuilder "
+"file. To edit the user interface, open <file>src/guitar_tuner.ui</file>. "
+"This will switch to the interface designer. The design window is in the "
+"center; widgets and widgets' properties are on the right, and the palette of "
+"available widgets is on the left."
+msgstr ""
+"El archivo de GtkBuilder contiene una descripción de la interfaz de usuario "
+"(IU). Para editar la interfaz de usuario, abra <file>src/guitar_tuner.ui</"
+"file>. Esto cambiará al diseñador de interfaces. La ventana de diseño está "
+"en el centro; los widgets y sus propiedades están a la derecha, y la paleta "
+"de los widgets disponibles está a la izquierda."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.py.page:127
+msgid "Write the signal handler"
+msgstr "Escribir el manejador de señales"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:129
+msgid ""
+"To do this, open <file>guitar_tuner.py</file> while the user interface file "
+"is still open. Switch to the <gui>Signals</gui> tab, which you already used "
+"to set the signal name. Now take the row where you set the <gui>clicked</"
+"gui> signal and drag it into to the source file inside the class. The "
+"following code will be added to your source file:"
+msgstr ""
+"Para hacer esto, abra <file>guitar_tuner.py</file> mientras el archivo de la "
+"interfaz de usuario está abierto. Cambie a la pestaña <gui>Señales</gui>, "
+"que ya ha usado para establecer el nombre de la señal. Ahora vaya a la fila "
+"en la que estableció la señal <gui>clicked</gui> y arrástrela al archivo de "
+"código fuente, dentro de la clase principal. Se añadirá el siguiente código "
+"a su archivo de código fuente:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.py.page:131
+#, no-wrap
+msgid ""
+"\n"
+"def on_button_clicked (self, button):\n"
+msgstr ""
+"\n"
+"def on_button_clicked (self, button):\n"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:135
+msgid ""
+"This signal handler has two arguments: the usual Python class pointer, and "
+"the <code>Gtk.Button</code> that called the function."
+msgstr ""
+"Este manejador de la señal tiene dos argumentos: el puntero de clase Python "
+"habitual y el <code>Gtk.Button</code> que llamó a la función."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:153
+msgid ""
+"Change the import line in <file>guitar_tuner.py</file>, just at the "
+"beginning to :"
+msgstr ""
+"Cambie la línea de importación en <file>afinador_guitarra.py</file>, justo "
+"al principio, por:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.py.page:154
+#, no-wrap
+msgid "from gi.repository import Gtk, Gst, GObject "
+msgstr "from gi.repository import Gtk, Gst, GObject "
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:155
+msgid ""
+"The <code>Gst</code> includes the GStreamer library. You also need to "
+"initialise GStreamer properly which is done in the <code>main()</code> "
+"method with this call added above the <code>app = GUI()</code> line:"
+msgstr ""
+"El <code>Gst</code> incluye la biblioteca GStreamer. También debe debe "
+"inicializar GStreamer correctamente, lo que se ha hecho en el método "
+"<code>main()</code> con esta llamada añadida encima de la línea <code>app = "
+"GUI()</code>:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.py.page:158
+#, no-wrap
+msgid "Gst.init_check(sys.argv)"
+msgstr "Gst.init_check(sys.argv)"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:159
+msgid ""
+"Then, copy the following function into the class in <file>guitar_tuner.py</"
+"file> somewhere:"
+msgstr ""
+"Después, copie la siguiente función en la de <file>guitar_tuner.py</file>, "
+"en cualquier sitio:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.py.page:160
+#, no-wrap
+msgid ""
+"\n"
+"def play_sound(self, frequency):\n"
+"\tpipeline = Gst.Pipeline(name='note')\n"
+"\tsource = Gst.ElementFactory.make('audiotestsrc', 'src')\n"
+"\tsink = Gst.ElementFactory.make('autoaudiosink', 'output')\n"
+"\n"
+"\tsource.set_property('freq', frequency)\n"
+"\tpipeline.add(source)\n"
+"\tpipeline.add(sink)\n"
+"\tsource.link(sink)\n"
+"\tpipeline.set_state(Gst.State.PLAYING)\n"
+"\n"
+"\tGObject.timeout_add(self.LENGTH, self.pipeline_stop, pipeline)"
+msgstr ""
+"\n"
+"def play_sound(self, frequency):\n"
+"\tpipeline = Gst.Pipeline(name='note')\n"
+"\tsource = Gst.ElementFactory.make('audiotestsrc', 'src')\n"
+"\tsink = Gst.ElementFactory.make('autoaudiosink', 'output')\n"
+"\n"
+"\tsource.set_property('freq', frequency)\n"
+"\tpipeline.add(source)\n"
+"\tpipeline.add(sink)\n"
+"\tsource.link(sink)\n"
+"\tpipeline.set_state(Gst.State.PLAYING)\n"
+"\n"
+"\tGObject.timeout_add(self.LENGTH, self.pipeline_stop, pipeline)"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.py.page:175
+msgid ""
+"The first three lines create source and sink GStreamer elements and a "
+"pipeline element (which will be used as a container for the other two "
+"elements). The pipeline is given the name \"note\"; the source is named "
+"\"source\" and is set to the <code>audiotestsrc</code> source; and the sink "
+"is named \"output\" and set to the <code>autoaudiosink</code> sink (default "
+"sound card output)."
+msgstr ""
+"Las tres primeras líneas crean los elementos «fuente» y «sumidero» de "
+"GStreamer y un elemento de tubería (que se usará como contenedor de los "
+"otros dos elementos). 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 <code>autoaudiosink</"
+"code> (la salida de la tarjeta de sonido predeterminada)."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.py.page:178
+msgid ""
+"The call to <code>source.set_property</code> sets the <code>freq</code> "
+"property of the source element to <code>frequency</code>, which was passed "
+"as an argument to the <code>play_sound</code> function. This is just the "
+"frequency of the note in Hertz; some useful frequencies will be defined "
+"later on."
+msgstr ""
+"La llamada a <code>source.set_property</code> establece la propiedad "
+"<code>freq</code> del elemento fuente a <code>frequency</code>, que se pasa "
+"como argumento a la función <code>play_sound</code>. Esto sólo es la "
+"frecuencia de la nota en Hercios; más adelante se definirán algunas "
+"frecuencias útiles."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.py.page:181
+msgid ""
+"The next two lines call <code>pipeline.add</code>, putting the source and "
+"sink into the pipeline. The pipeline can contain multiple other GStreamer "
+"elements. In general, you can add as many elements as you like to the "
+"pipeline by calling its <code>add</code> method repeatedly."
+msgstr ""
+"Las dos siguientes líneas llaman a <code>pipeline.add</code>, poniendo la "
+"fuente y el sumidero en la tubería. La tubería puede contener muchos otros "
+"elementos de GStreamer. En general, puede añadir tantos elementos como "
+"quiera a una tubería llamando al método <code>add</code> repetidamente."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.py.page:184
+msgid ""
+"Next <code>pipeline.set_state</code> is used to start playback, by setting "
+"the state of the pipeline to playing (<code>Gst.State.PLAYING</code>)."
+msgstr ""
+"El siguiente <code>pipeline.set_state</code> se usar para iniciar la "
+"reproducción, estableciendo el estado de la tubería a «playing» (<code>Gst."
+"State.PLAYING</code>)."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:192
+msgid ""
+"We don't want to play an annoying tone forever, so the last thing "
+"<code>play_sound</code> does is to call <code>GObject.timeout_add</code>. "
+"This sets a timeout for stopping the sound; it waits for <code>LENGTH</code> "
+"milliseconds before calling the function <code>pipeline_stop</code>, and "
+"will keep calling it until <code>pipeline_stop</code> returns <code>False</"
+"code>."
+msgstr ""
+"No se quiere reproducir un tono molesto para siempre, por lo que lo último "
+"que <code>play_sound</code> hace es llamar a <code>GObject.timeout_add</"
+"code>. Esto establece un tiempo de expiración para detener el sonido; espera "
+"<code>LENGTH</code> milisegundos antes de llamar a la función "
+"<code>pipeline_stop</code>, y se queda llamando a <code>pipeline_stop</code> "
+"hasta que devuelve <code>False</code>."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:193
+msgid ""
+"Now, we'll write the <code>pipeline_stop</code> function which is called by "
+"<code>GObject.timeout_add</code>. Insert the following code <em>above</em> "
+"the <code>play_sound</code> function:"
+msgstr ""
+"Ahora se escribirá el código de la función <code>pipeline_stop</code>, "
+"llamada por <code>GObject.timeout_add</code>. Inserte el código siguiente "
+"<em>encima</em> de la función <code>play_sound</code>:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.py.page:194
+#, no-wrap
+msgid ""
+"\n"
+"def pipeline_stop(self, pipeline):\n"
+"\tpipeline.set_state(Gst.State.NULL)\n"
+"\treturn False\n"
+msgstr ""
+"\n"
+"def pipeline_stop(self, pipeline):\n"
+"\tpipeline.set_state(Gst.State.NULL)\n"
+"\treturn False\n"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:199
+msgid ""
+"You need to define the <code>LENGTH</code> constant inside the class, so add "
+"this code at the beginning of the main class:"
+msgstr ""
+"Necesita definir la constante <code>LENGTH</code> dentro de la clase, por lo "
+"que debe añadir este código al principio de la clase principal:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.py.page:201
+#, no-wrap
+msgid ""
+"\n"
+"LENGTH = 500\n"
+msgstr ""
+"\n"
+"LENGTH = 500\n"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:204
+msgid ""
+"The call to <code>pipeline.set_state</code> stops the playback of the "
+"pipeline."
+msgstr ""
+"La llamada a <code>pipeline.set_state</code> detiene la reproducción de la "
+"tubería."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:209
+msgid ""
+"We want to play the correct sound when the user clicks a button. First of "
+"all, we need to know the frequencies for the six guitar strings, which are "
+"defined (at the beginning of the main class) inside a dictionary so we can "
+"easily map them to the names of the strings:"
+msgstr ""
+"Se quiere reproducir el sonido correcto cuando un usuario pulsa un botón. En "
+"primer lugar, se necesita conocer las frecuencias de las seis cuerdas de la "
+"guitarra, que están definidas (al principio de la clase principal) dentro de "
+"un diccionario, por lo que se pueden mapear fácilmente con los nombres de "
+"las cuerdas:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.py.page:211
+#, no-wrap
+msgid ""
+"\n"
+"# Frequencies of the strings\n"
+"frequencies = {\n"
+"\t'E': 329.63,\n"
+"\t'A': 440,\n"
+"\t'D': 587.33,\n"
+"\t'G': 783.99,\n"
+"\t'B': 987.77,\n"
+"\t'e': 1318.5\n"
+"}\n"
+msgstr ""
+"\n"
+"# Frequencies of the strings\n"
+"frequencies = {\n"
+"\t'E': 329.63,\n"
+"\t'A': 440,\n"
+"\t'D': 587.33,\n"
+"\t'G': 783.99,\n"
+"\t'B': 987.77,\n"
+"\t'e': 1318.5\n"
+"}\n"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.py.page:223
+#, no-wrap
+msgid ""
+"\n"
+"def on_button_clicked(self, button):\n"
+"\tlabel = button.get_child()\n"
+"\ttext = label.get_label()\n"
+"\n"
+"\tself.play_sound (self.frequencies[text])\n"
+msgstr ""
+"\n"
+"def on_button_clicked(self, button):\n"
+"\tlabel = button.get_child()\n"
+"\ttext = label.get_label()\n"
+"\n"
+"\tself.play_sound (self.frequencies[text])\n"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:230
+msgid ""
+"The button that was clicked is passed as an argument (<code>button</code>) "
+"to <code>on_button_clicked</code>. We can get the label of that button by "
+"using <code>button.get_child</code>, and then get the text from that label "
+"using <code>label.get_label</code>."
+msgstr ""
+"El botón que se ha pulsado se pasa como argumento (<code>button</code>) a "
+"<code>on_button_clicked</code>. Se puede obtener la etiqueta de ese botón "
+"usando <code>button.get_child</code>, y obteniendo entonces el texto de esa "
+"etiqueta usando <code>label.get_label</code>."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:231
+msgid ""
+"The label text is then used as a key for the dictionary and "
+"<code>play_sound</code> is called with the frequency appropriate for that "
+"note. This plays the tone; we have a working guitar tuner!"
+msgstr ""
+"La etiqueta de texto se usa como clave para el diccionario, y se llama a "
+"<code>play_sound</code> con la frecuencia correspondiente a esa nota. Esto "
+"reproduce el tono; el afinador de guitarra ya está funcionando."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.py.page:235 C/image-viewer.js.page:311
+#: C/image-viewer.py.page:225 C/record-collection.js.page:292
+msgid "Run the application"
+msgstr "Ejecutar la aplicación"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:236
+msgid ""
+"All of the code should now be ready to go. Click <guiseq><gui>Run</"
+"gui><gui>Execute</gui></guiseq> to start the application. Enjoy!"
+msgstr ""
+"Todo el código debería estar listo para ejecutarse. Pulse "
+"<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq> para iniciar la "
+"aplicación y disfrute."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.py.page:241
+msgid ""
+"If you run into problems with the tutorial, compare your code with this "
+"<link href=\"guitar-tuner/guitar-tuner.py\">reference code</link>."
+msgstr ""
+"Si tiene problemas con este tutorial, compare su código con este <link href="
+"\"guitar-tuner/guitar-tuner.py\">código de referencia</link>."
+
+#. (itstool) path: info/desc
+#: C/guitar-tuner.vala.page:10
+msgid ""
+"Use <link href=\"http://developer.gnome.org/platform-overview/stable/gtk"
+"\">GTK+</link> and <link href=\"http://developer.gnome.org/platform-overview/"
+"stable/gstreamer\">GStreamer</link> to build a simple guitar tuner "
+"application for GNOME. Shows off how to use the interface designer."
+msgstr ""
+"Usar <link href=\"http://developer.gnome.org/platform-overview/stable/gtk"
+"\">GTK+</link> y <link href=\"http://developer.gnome.org/platform-overview/"
+"stable/gstreamer\">GStreamer</link> para construir una sencilla aplicación "
+"de afinador de guitarra para GNOME. Muestra cómo usar el diseñador de "
+"interfaces."
+
+#. (itstool) path: synopsis/p
+#: C/guitar-tuner.vala.page:35
+msgid ""
+"In this tutorial you will create an application which plays tones that you "
+"can use to tune a guitar. You will learn how to:"
+msgstr ""
+"En este tutorial se va a hacer un programa que reproduce tonos que puede "
+"usar para afinar su guitarra. Aprenderá a:"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:37
+msgid ""
+"Set up a basic project using the <link xref=\"getting-ready\">Anjuta IDE</"
+"link>."
+msgstr ""
+"Configurar un proyecto básico usando el <link xref=\"getting-ready\">EID "
+"Anjuta</link>."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:38
+msgid "Create a simple GUI with <app>Anjuta</app>'s UI designer."
+msgstr "Crear una IGU sencilla con el diseñador de IU de <app>Anjuta</app>."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:39
+msgid ""
+"Use the <link href=\"http://developer.gnome.org/platform-overview/stable/"
+"gstreamer\">GStreamer</link> library to play sounds."
+msgstr ""
+"Usar la biblioteca <link href=\"http://developer.gnome.org/platform-overview/"
+"stable/gstreamer\">GStreamer</link> para reproducir sonidos."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:43 C/image-viewer.vala.page:48
+msgid ""
+"Basic knowledge of the <link href=\"https://live.gnome.org/Vala/Tutorial"
+"\">Vala</link> programming language."
+msgstr ""
+"Conocimiento básico del lenguaje de programación <link href=\"https://live."
+"gnome.org/Vala/Tutorial\">Vala</link>."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:44 C/image-viewer.vala.page:49
+msgid "An installed copy of <app>Anjuta</app>."
+msgstr "Una copia instalada de <app>Anjuta</app>."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.vala.page:51
+msgid "Create a project in <app>Anjuta</app>"
+msgstr "Crear un proyecto en <app>Anjuta</app>"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:55 C/image-viewer.vala.page:63
+msgid ""
+"Start <app>Anjuta</app> and click <gui>Create a new project</gui> or "
+"<guiseq><gui>File</gui><gui>New</gui><gui>Project</gui></guiseq> to open the "
+"project wizard."
+msgstr ""
+"Inicie <app>Anjuta</app> y pulse <gui>Crear un proyecto nuevo</gui> o "
+"<guiseq><gui>Archivo</gui><gui>Nuevo</gui><gui>Proyecto</gui></guiseq> para "
+"abrir el asistente de proyectos."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:58
+msgid ""
+"Click on the <gui>Vala</gui> tab and select <gui>GTK+ (Simple)</gui>. Click "
+"<gui>Continue</gui>, and fill out your details on the next few pages. Use "
+"<file>guitar-tuner</file> as project name and directory."
+msgstr ""
+"Pulse en la pestaña <gui>Vala</gui> y seleccione <gui>GTK+ (simple)</gui>. "
+"Pulse <gui>Continuar</gui>, y rellene los detalles en las siguientes "
+"páginas. Use <file>afinador-guitarra</file> como nombre del proyecto y de la "
+"carpeta."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:61
+msgid ""
+"Make sure that <gui>Configure external packages</gui> is switched <gui>ON</"
+"gui>. On the next page, select <link href=\"http://valadoc.org/"
+"gstreamer-0.10/index.htm\"><em>gstreamer-0.10</em></link> from the list to "
+"include the GStreamer library in your project. Click <gui>Continue</gui>"
+msgstr ""
+"Asegúrese de que <gui>Configurar paquetes externos</gui> está <gui>activada</"
+"gui>. En la siguiente página, seleccione <link href=\"http://valadoc.org/"
+"gstreamer-0.10/index.htm\"><em>gstreamer-0.10</em></link> de la lista para "
+"incluir la biblioteca GStreamer en su proyecto. Pulse <gui>Continuar</gui>"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:65
+msgid ""
+"Click <gui>Apply</gui> and the project will be created for you. From the "
+"<gui>Project</gui> or <gui>Files</gui> tab, open <file>src/guitar_tuner."
+"vala</file> by double-clicking on it. You should see some code which starts "
+"with the lines:"
+msgstr ""
+"Pulse <gui>Aplicar</gui> y se creará el proyecto. Abra <file>src/"
+"guitar_tuner.vala</file> desde las pestañas <gui>Proyecto</gui> o "
+"<gui>Archivo</gui> pulsando dos veces sobre él. Debería ver algo de código "
+"que comience con las líneas:"
+
+#. (itstool) path: item/code
+#: C/guitar-tuner.vala.page:66 C/magic-mirror.vala.page:70
+#, no-wrap
+msgid ""
+"\n"
+"using GLib;\n"
+"using Gtk;"
+msgstr ""
+"\n"
+"using GLib;\n"
+"using Gtk;"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:75
+msgid ""
+"The code loads an (empty) window from the user interface description file "
+"and displays it. More details are given below; you may choose to skip this "
+"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:"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:79 C/magic-mirror.vala.page:82
+msgid ""
+"The two <code>using</code> lines import namespaces so we don't have to name "
+"them explicitly."
+msgstr ""
+"Las dos líneas <code>using</code> importan espacios de nombres, por lo que "
+"no hay que nombrarlas explícitamente."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:82
+msgid ""
+"The constructor of the <code>Main</code> class creates a new window by "
+"opening a GtkBuilder file (<file>src/guitar-tuner.ui</file>, defined a few "
+"lines above), connecting its signals and then displaying it in a window. "
+"This GtkBuilder file contains a description of a user interface and all of "
+"its elements. You can use Anjuta's editor to design GtkBuilder user "
+"interfaces."
+msgstr ""
+"El constructor de la clase <code>Main</code> crea una ventana nueva abriendo "
+"un archivo de GtkBuilder (<file>src/guitar-tuner.ui</file>, definido unas "
+"pocas líneas más arriba), conectando sus señales y mostrándolo en una "
+"ventana. El archivo de GtkBuilder contiene una descripción de una interfaz "
+"de usuario y de todos sus elementos. Puede usar el editor Anjuta para "
+"diseñar interfaces de usuario con GtkBuilder."
+
+#. (itstool) path: note/p
+#: C/guitar-tuner.vala.page:84
+msgid ""
+"Connecting signals is how you define what happens when you push a button, or "
+"when some other event happens. Here, the <code>on_destroy</code> function is "
+"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>on_destroy</code> (y se sale de la aplicación) cuando cierra la "
+"ventana."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:88
+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)."
+msgstr ""
+"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)."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:92
+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 "
+"<keyseq><key>Shift</key><key>F7</key></keyseq>). When you do this, a dialog "
+"will appear. Change the <gui>Configuration</gui> to <gui>Default</gui> and "
+"then click <gui>Execute</gui> to configure the build directory. You only "
+"need to do this once, for the first build."
+msgstr ""
+"Este código está listo para usarse, por lo que puede compilarlo pulsando "
+"<guiseq><gui>Construir</gui><gui>Construir proyecto</gui></guiseq> (o "
+"pulsando <keyseq><key>Mayús</key><key>F7</key></keyseq>). Cuando lo haga, "
+"aparecerá un diálogo. Cambie la <gui>Configuración</gui> a "
+"<gui>Predeterminada</gui> y pulse <gui>Ejecutar</gui> para configurar la "
+"carpeta de construcción. Sólo tendrá que hacer esto una vez, para la primera "
+"construcción."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:97
+msgid ""
+"A description of the user interface (UI) is contained in the GtkBuilder file "
+"<file>src/guitar_tuner.ui</file> defined at the top of the class. To edit "
+"the user interface, open <file>src/guitar_tuner.ui</file> by double-clicking "
+"on it in the <gui>Project</gui> or <gui>Files</gui> section. This will "
+"switch to the interface designer. The design window is in the center; "
+"<gui>Widgets</gui> and the widget properties are on the right, and the "
+"<gui>Palette</gui> of available widgets is on the left."
+msgstr ""
+"El archivo de GtkBuilder <file>src/guitar_tuner.ui</file> contiene una "
+"descripción de la interfaz de usuario (IU), definida en la parte superior de "
+"la clase. Para editar la interfaz de usuario, abra <file>src/guitar_tuner."
+"ui</file> pulsando dos veces sobre el archivo en las secciones "
+"<gui>Proyecto</gui> or <gui>Archivos</gui>. Esto cambiará al diseñador de "
+"interfaces. La ventana de diseño está en el centro; los <gui>Widgets</gui> y "
+"sus propiedades están a la izquierda, y la <gui>Paleta</gui> de los widgets "
+"disponibles está a la derecha."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:99
+msgid ""
+"The layout of every UI in GTK+ is organized using boxes and tables. Let's "
+"use a vertical GtkButtonBox here to assign six GtkButtons, one for each of "
+"the six guitar strings."
+msgstr ""
+"La distribución de cualquier IU en GTK+ se organiza usando cajas y tablas. "
+"Aquí se usará una GtkButtonBox vertical para asignar seis GtkButtons, uno "
+"para cada una de las cuerdas de la guitarra."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:105
+msgid ""
+"In the <gui>Palette</gui> tab, from the <gui>Containers</gui> section, "
+"select a <gui>Button Box</gui> (GtkButtonBox) by clicking on the icon. Then "
+"click on the design window in the center to place it into the window. A "
+"dialog will display where you can set the <gui>Number of items</gui> to "
+"<input>6</input>. Then click <gui>Create</gui>."
+msgstr ""
+"En la pestaña <gui>Paleta</gui>, en la sección <gui>Contenedores</gui>, "
+"seleccione una <gui>Caja de botones</gui> (GtkButtonBox) pulsando sobre el "
+"icono. Pulse en el centro del diseño de la ventana para colocarla en la "
+"ventana. Se mostrará un diálogo donde puede establecer el <gui>Número de "
+"elementos</gui> a <input>6</input>. Luego pulse en <gui>Crear</gui>."
+
+#. (itstool) path: note/p
+#: C/guitar-tuner.vala.page:106
+msgid ""
+"You can also change the <gui>Number of elements</gui> and the "
+"<gui>Orientation</gui> in the <gui>General</gui> tab on the right."
+msgstr ""
+"También puede cambiar el <gui>Número de elementos</gui> y la "
+"<gui>Orientación</gui> en la pestaña <gui>General</gui> a la derecha."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:110
+msgid ""
+"Now, from the <gui>Control and Display</gui> section of the <gui>Palette</"
+"gui> choose a <gui>Button</gui> (GtkButton) by clicking on it. Place it into "
+"the first section of the GtkButtonBox by clicking in the first section."
+msgstr ""
+"Ahora, desde la sección <gui>Controlar y mostrar</gui> de la <gui>Paleta</"
+"gui> elija un <gui>Botón</gui> (GtkButton) pulsando sobre él. Sitúelo en la "
+"primera sección de la GtkButtonBox pulsando sobre ella."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:113
+msgid ""
+"While the button is still selected, scroll down in the <gui>General</gui> "
+"tab on the right to the <gui>Label</gui> property, and change it to <gui>E</"
+"gui>. This will be the low E guitar string."
+msgstr ""
+"Mientras el botón esté seleccionado, cambie la propiedad <gui>Etiqueta</gui> "
+"en la pestaña <gui>General</gui> a <gui>E</gui>. Esta será la cuerda Mi "
+"grave de la guitarra."
+
+#. (itstool) path: note/p
+#: C/guitar-tuner.vala.page:114
+msgid ""
+"The <gui>General</gui> tab is located in the <gui>Widgets</gui> section on "
+"the right."
+msgstr ""
+"La pestaña <gui>General</gui> se encuentra en la sección <gui>Widgets</gui> "
+"de la derecha."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:119
+msgid ""
+"Click on the <gui>Signals</gui> tab in the <gui>Widgets</gui> section on the "
+"right, and look for the <code>clicked</code> signal of the button. You can "
+"use this to connect a signal handler that will be called when the button is "
+"clicked by the user. To do this, click on the signal and type "
+"<code>main_on_button_clicked</code> in the <gui>Handler</gui> column and "
+"press the <key>Enter</key>."
+msgstr ""
+"Cambie a la pestaña <gui>Señales</gui> dentro de la sección <gui>Widgets</"
+"gui> a la derecha y busque la señal <code>clicked</code> del botón. Puede "
+"usar esto para conectar un manejador de señal al que se llamará cuando el "
+"usuario pulse el botón. Para hacer esto, pulse sobre la señal, escriba "
+"<code>main_on_button_clicked</code> en la columna <gui>Manejador</gui> y "
+"pulse <key>Intro</key>."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:132
+msgid ""
+"This section will show you how to create the code to produce sounds. <link "
+"href=\"http://developer.gnome.org/platform-overview/stable/gstreamer"
+"\">GStreamer</link> is GNOME's multimedia framework — you can use it for "
+"playing, recording, and processing video, audio, webcam streams and the "
+"like. Here, we'll be using it to produce single-frequency tones."
+msgstr ""
+"En esta sección se mostrará cómo crear el código para generar sonidos. <link "
+"href=\"http://developer.gnome.org/platform-overview/stable/gstreamer"
+"\">GStreamer</link> es el entorno multimedia de trabajo de GNOME: puede "
+"usarlo para reproducir, grabar y procesar vídeo, sonido, flujos de la cámara "
+"web y similares. En este caso, se usará para generar tonos de frecuencia "
+"única."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:133
+msgid ""
+"Conceptually, GStreamer works as follows: You create a <link href=\"http://"
+"gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-intro-"
+"basics-bins.html\"><em>pipeline</em></link> containing several processing "
+"elements going from the <em>source</em> to the <em>sink</em> (output). The "
+"source can be an image file, a video, or a music file, for example, and the "
+"output could be a widget or the soundcard."
+msgstr ""
+"Conceptualmente. GStreamer funciona de la siguiente manera: puede crear una "
+"<link href=\"http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/"
+"html/section-intro-basics-bins.html\"><em>tubería</em></link> que contenga "
+"varios elementos de procesado que van desde la <em>fuente</em> hasta el "
+"<em>sumidero</em> (salida). La fuente puede ser, por ejemplo, un archivo de "
+"imagen, un vídeo o un archivo de música, y la salida puede ser un widget o "
+"la tarjeta de sonido."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:142
+msgid ""
+"In this example we will use a tone generator source called "
+"<code>audiotestsrc</code> and send the output to the default system sound "
+"device, <code>autoaudiosink</code>. We only need to configure the frequency "
+"of the tone generator; this is accessible through the <code>freq</code> "
+"property of <code>audiotestsrc</code>."
+msgstr ""
+"En este ejemplo se usará un generador de tonos llamado <code>audiotestsrc</"
+"code> y se enviará la salida al dispositivo de sonido predeterminado del "
+"sistema, <code>autoaudiosink</code>. Sólo es necesario configurar la "
+"frecuencia del generador de tonos; esto es accesible a través de la "
+"propiedad <code>freq</code> de <code>audiotestsrc</code>."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:144
+msgid ""
+"We need to add a line to initialize GStreamer; put the following code on the "
+"line above the <code>Gtk.init</code> call in the <code>main</code> function:"
+msgstr ""
+"Se debe añadir una línea para inicializar GStreamer; ponga el siguiente "
+"código encima de la llamada a <code>Gtk.init</code>, en la función "
+"<code>main</code>:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.vala.page:145
+#, no-wrap
+msgid "Gst.init (ref args);"
+msgstr "Gst.init (ref args);"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:146
+msgid ""
+"Then, copy the following function into <file>guitar_tuner.vala</file> inside "
+"our <code>Main</code> class:"
+msgstr ""
+"Después, copie la siguiente función en <file>guitar_tuner.vala</file> dentro "
+"de la clase <code>Main</code>:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.vala.page:147
+#, no-wrap
+msgid ""
+"\n"
+"Gst.Element sink;\n"
+"Gst.Element source;\n"
+"Gst.Pipeline pipeline;\n"
+"\n"
+"private void play_sound(double frequency)\n"
+"{\n"
+"\tpipeline = new Gst.Pipeline (\"note\");\n"
+"\tsource = Gst.ElementFactory.make (\"audiotestsrc\",\n"
+"\t \"source\");\n"
+"\tsink = Gst.ElementFactory.make (\"autoaudiosink\",\n"
+"\t \"output\");\n"
+"\n"
+"\t/* set frequency */\n"
+"\tsource.set (\"freq\", frequency);\n"
+"\n"
+"\tpipeline.add (source);\n"
+"\tpipeline.add (sink);\n"
+"\tsource.link (sink);\n"
+"\n"
+"\tpipeline.set_state (Gst.State.PLAYING);\n"
+"\n"
+"\t/* stop it after 200ms */\n"
+"\tvar time = new TimeoutSource(200);\n"
+"\n"
+"\ttime.set_callback(() => {\n"
+"\t\tpipeline.set_state (Gst.State.NULL);\n"
+"\t\treturn false;\n"
+"\t});\n"
+"\ttime.attach(null);\n"
+"}"
+msgstr ""
+"\n"
+"Gst.Element sink;\n"
+"Gst.Element source;\n"
+"Gst.Pipeline pipeline;\n"
+"\n"
+"private void play_sound(double frequency)\n"
+"{\n"
+"\tpipeline = new Gst.Pipeline (\"note\");\n"
+"\tsource = Gst.ElementFactory.make (\"audiotestsrc\",\n"
+"\t \"source\");\n"
+"\tsink = Gst.ElementFactory.make (\"autoaudiosink\",\n"
+"\t \"output\");\n"
+"\n"
+"\t/* set frequency */\n"
+"\tsource.set (\"freq\", frequency);\n"
+"\n"
+"\tpipeline.add (source);\n"
+"\tpipeline.add (sink);\n"
+"\tsource.link (sink);\n"
+"\n"
+"\tpipeline.set_state (Gst.State.PLAYING);\n"
+"\n"
+"\t/* stop it after 200ms */\n"
+"\tvar time = new TimeoutSource(200);\n"
+"\n"
+"\ttime.set_callback(() => {\n"
+"\t\tpipeline.set_state (Gst.State.NULL);\n"
+"\t\treturn false;\n"
+"\t});\n"
+"\ttime.attach(null);\n"
+"}"
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:181
+msgid ""
+"The first three lines create source and sink GStreamer elements (<link href="
+"\"http://valadoc.org/gstreamer-0.10/Gst.Element.html\"><code>Gst.Element</"
+"code></link>), and a <link href=\"http://valadoc.org/gstreamer-0.10/Gst."
+"Pipeline.html\">pipeline element</link> (which will be used as a container "
+"for the other two elements). Those are class variables so they are defined "
+"outside the method. The pipeline is given the name \"note\"; the source is "
+"named \"source\" and is set to the <code>audiotestsrc</code> source; and the "
+"sink is named \"output\" and set to the <code>autoaudiosink</code> sink "
+"(default sound card output)."
+msgstr ""
+"Las cinco primeras líneas crean los elementos «fuente» y «sumidero» de "
+"GStreamer (<link href=\"http://valadoc.org/gstreamer-0.10/Gst.Element.html"
+"\"><code>Gst.Element</code></link>), y un <link href=\"http://valadoc.org/"
+"gstreamer-0.10/Gst.Pipeline.html\">elemento de tubería</link> (que se usará "
+"como contenedor de los otros dos elementos). Son variables de clase, por lo "
+"que se definen fuera del método. A la tubería se le asigna el nombre «note»; "
+"la fuente se llama «source» y se asocia a la fuente <code>audiotestsrc</"
+"code> y el sumidero se llama «output» y se asocia con el sumidero "
+"<code>autoaudiosink</code> (la salida de la tarjeta de sonido "
+"predeterminada)."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:184
+msgid ""
+"The call to <link href=\"http://valadoc.org/gobject-2.0/GLib.Object.set.html"
+"\"><code>source.set</code></link> sets the <code>freq</code> property of the "
+"source element to <code>frequency</code>, which is passed in as an argument "
+"to the <code>play_sound</code> function. This is just the frequency of the "
+"note in Hertz; some useful frequencies will be defined later on."
+msgstr ""
+"La llamada a <link href=\"http://valadoc.org/gobject-2.0/GLib.Object.set.html"
+"\"><code>source.set</code></link> establece la propiedad <code>freq</code> "
+"del elemento fuente a <code>frequency</code>, que se pasa como argumento a "
+"la función <code>play_sound</code>. Esto sólo es la frecuencia de la nota en "
+"Hercios; más adelante se definirán algunas frecuencias útiles."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:187
+msgid ""
+"<link href=\"http://valadoc.org/gstreamer-0.10/Gst.Bin.add.html"
+"\"><code>pipeline.add</code></link> puts the source and sink into the "
+"pipeline. The pipeline is a <link href=\"http://valadoc.org/gstreamer-0.10/"
+"Gst.Bin.html\"><code>Gst.Bin</code></link>, which is just an element that "
+"can contain multiple other GStreamer elements. In general, you can add as "
+"many elements as you like to the pipeline by adding more calls to "
+"<code>pipeline.add</code>."
+msgstr ""
+"<link href=\"http://valadoc.org/gstreamer-0.10/Gst.Bin.add.html"
+"\"><code>pipeline.add</code></link> añade la fuente y el sumidero a la "
+"tubería. La tubería es un <link href=\"http://valadoc.org/gstreamer-0.10/Gst."
+"Bin.html\"><code>Gst.Bin</code></link>, que es un elemento que puede "
+"contener otros muchos elementos de GStreamer. En general, puede añadir "
+"tantos elementos como quiera a una tubería añadiendo más argumentos a "
+"<code>pipeline.add</code>."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:190
+msgid ""
+"Next, <link href=\"http://valadoc.org/gstreamer-0.10/Gst.Element.link.html"
+"\"><code>sink.link</code></link> is used to connect the elements together, "
+"so the output of source (a tone) goes into the input of sink (which is then "
+"output to the sound card). <link href=\"http://www.valadoc.org/"
+"gstreamer-0.10/Gst.Element.set_state.html\"><code>pipeline.set_state</code></"
+"link> is then used to start playback, by setting the <link href=\"http://www."
+"valadoc.org/gstreamer-0.10/Gst.State.html\">state of the pipeline</link> to "
+"playing (<code>Gst.State.PLAYING</code>)."
+msgstr ""
+"Ahora, el código <link href=\"http://valadoc.org/gstreamer-0.10/Gst.Element."
+"link.html\"><code>sink.link</code></link> se usa para conectar los elementos "
+"entre sí, por lo que la salida de la fuente (un tono) va a la entrada del "
+"sumidero (y entonces sale por la tarjeta de sonido). <link href=\"http://www."
+"valadoc.org/gstreamer-0.10/Gst.Element.set_state.html\"><code>pipeline."
+"set_state</code></link> se usa para iniciar la reproducción estableciendo el "
+"<link href=\"http://www.valadoc.org/gstreamer-0.10/Gst.State.html\">estado "
+"de la tubería</link> a «playing» (<code>Gst.State.PLAYING</code>)."
+
+#. (itstool) path: item/p
+#: C/guitar-tuner.vala.page:193
+msgid ""
+"We don't want to play an annoying tone forever, so the last thing "
+"<code>play_sound</code> does is to add a <link href=\"http://www.valadoc.org/"
+"glib-2.0/GLib.TimeoutSource.html\"><code>TimeoutSource</code></link>. This "
+"sets a timeout for stopping the sound; it waits for 200 milliseconds before "
+"calling a signal handler defined inline that stops and destroys the "
+"pipeline. It returns <code>false</code> to remove itself from the timeout, "
+"otherwise it would continue to be called every 200 ms."
+msgstr ""
+"No se quiere reproducir un tono molesto para siempre, por lo que lo último "
+"que <code>play_sound</code> hace es añadir un <link href=\"http://www."
+"valadoc.org/glib-2.0/GLib.TimeoutSource.html\"><code>TimeoutSource</code></"
+"link>. Esto establece un tiempo de expiración para detener el sonido; espera "
+"200 milisegundos antes de llamar a un manejador de la señal definido en "
+"línea y destruye la tubería. Devuelve<code>false</code> para quitarse a sí "
+"mismo del tiempo de expiración, ya que de otro modo, seguiría llamándose "
+"cada 200ms,"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:204
+msgid ""
+"In the UI designer, you made it so that all of the buttons will call the "
+"same function, <gui>on_button_clicked</gui>, when they are clicked. Actually "
+"we type <gui>main_on_button_clicked</gui> which tells the UI designer that "
+"this method is part of our <code>Main</code>. We need to add that function "
+"in the source file."
+msgstr ""
+"El el diseñador de interfaces se hizo que todos los botones llamaran a la "
+"misma función, <gui>on_button_clicked</gui> cuando se pulsasen. Ahora se "
+"escribe <gui>main_on_button_clicked</gui>, lo que indica al diseñador de "
+"interfaces que este método es parte de la función <code>Main</code>. Se debe "
+"añadir esta función al archivo de código fuente."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:205
+msgid ""
+"To do this, in the user interface file (guitar_tuner.ui) select one of the "
+"buttons by clicking on it, then open <file>guitar_tuner.vala</file> (by "
+"clicking on the tab in the center). Switch to the <gui>Signals</gui> tab on "
+"the right, which you used to set the signal name. Now take the row where you "
+"set the <gui>clicked</gui> signal and drag and drop it into to the source "
+"file at the beginning of the class. The following code will be added to your "
+"source file:"
+msgstr ""
+"Para hacer esto, en el archivo de interfaz del usuario (guitar_tuner.ui), "
+"seleccione uno de los botones pulsando sobre él, abra <file>guitar_tuner."
+"vala</file> (pulsando en la pestaña en el centro). Cambie a la pestaña "
+"<gui>Señales</gui> de la derecha, que ya ha usado para establecer el nombre "
+"de la señal. Ahora vaya a la fila en la que estableció la señal "
+"<gui>clicked</gui> y arrástrela al archivo de código fuente, al principio de "
+"la clase. Se añadirá el siguiente código a su archivo de código fuente:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.vala.page:207
+#, no-wrap
+msgid ""
+"\n"
+"public void on_button_clicked (Gtk.Button sender) {\n"
+"\n"
+"}"
+msgstr ""
+"\n"
+"public void on_button_clicked (Gtk.Button sender) {\n"
+"\n"
+"}"
+
+#. (itstool) path: note/p
+#: C/guitar-tuner.vala.page:212
+msgid ""
+"You can also just type the code at the beginning of the class instead of "
+"using the drag and drop."
+msgstr ""
+"También puede escribir simplemente el texto al principio de la clase en vez "
+"de arrastrar y soltar."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:213
+msgid ""
+"This signal handler has only one argument: the <link href=\"http://valadoc."
+"org/gtk+-3.0/Gtk.Widget.html\"><code>Gtk.Widget</code></link> that called "
+"the function (in our case, always a <link href=\"http://valadoc.org/gtk+-3.0/"
+"Gtk.Button.html\"><code>Gtk.Button</code></link>)."
+msgstr ""
+"El manejador de la señal sólo tiene un argumento: el <link href=\"http://"
+"valadoc.org/gtk+-3.0/Gtk.Widget.html\"><code>Gtk.Widget</code></link> que "
+"llama a la función (en este caso, siempre es un <link href=\"http://valadoc."
+"org/gtk+-3.0/Gtk.Button.html\"><code>Gtk.Button</code></link>)."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.vala.page:219
+msgid "Define the signal handler"
+msgstr "Definir el manejador de señales"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:220
+msgid ""
+"We want to play the correct sound when the user clicks a button. For this, "
+"we flesh out the signal handler which we defined above, "
+"<code>on_button_clicked</code>. We could have connected every button to a "
+"different signal handler, but that would lead to a lot of code duplication. "
+"Instead, we can use the label of the button to figure out which button was "
+"clicked:"
+msgstr ""
+"Se quiere reproducir el sonido correcto cuando el usuario pulsa un botón. "
+"Para esto, se profundiza en el manejador de la señal definido anteriormente, "
+"<code>on_button_clicked</code>. Se podría haber conectado cada botón a un "
+"manejador de la señal diferente, pero esto había supuesto duplicar mucho "
+"código. En su lugar, se puede usar la etiqueta del botón para saber cuál de "
+"ellos se ha pulsado:"
+
+#. (itstool) path: section/code
+#: C/guitar-tuner.vala.page:221
+#, no-wrap
+msgid ""
+"\n"
+"public void on_button_clicked (Gtk.Button sender) {\n"
+"\tvar label = sender.get_child () as Gtk.Label;\n"
+"\tswitch (label.get_label()) {\n"
+"\t\tcase \"E\":\n"
+"\t\t\tplay_sound (329.63);\n"
+"\t\t\tbreak;\n"
+"\t\tcase \"A\":\n"
+"\t\t\tplay_sound (440);\n"
+"\t\t\tbreak;\n"
+"\t\tcase \"D\":\n"
+"\t\t\tplay_sound (587.33);\n"
+"\t\t\tbreak;\n"
+"\t\tcase \"G\":\n"
+"\t\t\tplay_sound (783.99);\n"
+"\t\t\tbreak;\n"
+"\t\tcase \"B\":\n"
+"\t\t\tplay_sound (987.77);\n"
+"\t\t\tbreak;\n"
+"\t\tcase \"e\":\n"
+"\t\t\tplay_sound (1318);\n"
+"\t\t\tbreak;\n"
+"\t\tdefault:\n"
+"\t\t\tbreak;\n"
+"\t}\n"
+"}\n"
+msgstr ""
+"\n"
+"public void on_button_clicked (Gtk.Button sender) {\n"
+"\tvar label = sender.get_child () as Gtk.Label;\n"
+"\tswitch (label.get_label()) {\n"
+"\t\tcase \"E\":\n"
+"\t\t\tplay_sound (329.63);\n"
+"\t\t\tbreak;\n"
+"\t\tcase \"A\":\n"
+"\t\t\tplay_sound (440);\n"
+"\t\t\tbreak;\n"
+"\t\tcase \"D\":\n"
+"\t\t\tplay_sound (587.33);\n"
+"\t\t\tbreak;\n"
+"\t\tcase \"G\":\n"
+"\t\t\tplay_sound (783.99);\n"
+"\t\t\tbreak;\n"
+"\t\tcase \"B\":\n"
+"\t\t\tplay_sound (987.77);\n"
+"\t\t\tbreak;\n"
+"\t\tcase \"e\":\n"
+"\t\t\tplay_sound (1318);\n"
+"\t\t\tbreak;\n"
+"\t\tdefault:\n"
+"\t\t\tbreak;\n"
+"\t}\n"
+"}\n"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:248
+msgid ""
+"The <code>Gtk.Button</code> that was clicked is passed as an argument "
+"(<code>sender</code>) to <code>on_button_clicked</code>. We can get the "
+"label of that button by using <code>get_child</code>, and then get the text "
+"from that label using <code>get_label</code>."
+msgstr ""
+"El <code>Gtk.Button</code> que se ha pulsado se pasa como argumento "
+"(<code>sender</code>) a <code>on_button_clicked</code>. Se puede obtener la "
+"etiqueta de ese botón usando <code>get_child</code>, y entonces obtener el "
+"texto de esa etiqueta usando <code>get_label</code>."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:249
+msgid ""
+"The switch statement compares the label text to the notes that we can play, "
+"and <code>play_sound</code> is called with the frequency appropriate for "
+"that note. This plays the tone; we have a working guitar tuner!"
+msgstr ""
+"La sentencia «switch» compara la etiqueta de texto con las notas que se "
+"pueden reproducir, y se llama a <code>play_sound</code> con la frecuencia "
+"correspondiente a esa nota. Esto reproduce el tono; el afinador de guitarra "
+"ya está funcionando."
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:260
+msgid ""
+"If you run into problems with the tutorial, compare your code with this "
+"<link href=\"guitar-tuner/guitar-tuner.vala\">reference code</link>."
+msgstr ""
+"Si tiene problemas con este tutorial, compare su código con este <link href="
+"\"guitar-tuner/guitar-tuner.vala\">código de referencia</link>."
+
+#. (itstool) path: section/title
+#: C/guitar-tuner.vala.page:264 C/magic-mirror.vala.page:157
+msgid "Further reading"
+msgstr "Lectura complementaria"
+
+#. (itstool) path: section/p
+#: C/guitar-tuner.vala.page:265
+msgid ""
+"To find out more about the Vala programming language you might want to check "
+"out the <link href=\"http://live.gnome.org/Vala/Tutorial\">Vala Tutorial</"
+"link> and the <link href=\"http://valadoc.org/\">Vala API Documentation</"
+"link>"
+msgstr ""
+"Para obtener más información sobre el lenguaje de programación Vala, puede "
+"querer revisar el <link href=\"http://live.gnome.org/Vala/Tutorial"
+"\">Tutorial de Vala</link> y la <link href=\"http://valadoc.org/"
+"\">documentación de la API de Vala</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/hellognome.js.page:65
+msgctxt "_"
+msgid ""
+"external ref='media/hellognomewebapp.png' "
+"md5='948efb6148ede3bc6b47b4b0bbe4a74f'"
+msgstr ""
+"external ref='media/hellognomewebapp.png' "
+"md5='948efb6148ede3bc6b47b4b0bbe4a74f'"
+
+#. (itstool) path: info/desc
+#: C/hellognome.js.page:17
+msgid "Your first GNOME application!"
+msgstr "Su primera aplicación de GNOME"
+
+#. (itstool) path: page/title
+#: C/hellognome.js.page:20
+msgid "1. Hello, GNOME!"
+msgstr "1. ¡Hola, GNOME!"
+
+#. (itstool) path: synopsis/p
+#: C/hellognome.js.page:22
+msgid ""
+"This tutorial will show you how to write your first GNOME application in "
+"JavaScript. You will use JavaScript to write for GNOME the same way you "
+"would for the web. Afterwards, you will learn how to use \"native\" widgets, "
+"to write applications that look and feel like other GNOME apps."
+msgstr ""
+"Este tutorial le mostrará cómo escribir su primera aplicación de GNOME en "
+"JavaScript. Usará JavaScript para escribir para GNOME de la misma manera que "
+"lo haría para la web. Después, aprenderá cómo usar widgets «nativos», para "
+"escribir aplicaciones que se ven como otras aplicaciones de GNOME."
+
+#. (itstool) path: note/p
+#: C/hellognome.js.page:23
+msgid ""
+"Have you gotten GNOME installed on your computer, and <link xref=\"set-up-"
+"gedit.js\">gedit</link> set up to write code with? You'll want to do these "
+"things first."
+msgstr ""
+"¿Ya tiene GNOME instalado en su equipo, y <link xref=\"set-up-gedit.js"
+"\">gedit</link> configurado para escribir código? Querrá hacer estas cosas "
+"primero."
+
+#. (itstool) path: section/title
+#: C/hellognome.js.page:29
+msgid "Let's start with a web page"
+msgstr "Comience con una página web"
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:31
+msgid ""
+"Here's some basic HTML, CSS, and JavaScript code. Does this look familiar?"
+msgstr "Aquí hay código HTML, CSS, y JavaScript básico. ¿Le resulta familiar?"
+
+#. (itstool) path: section/code
+#: C/hellognome.js.page:32
+#, no-wrap
+msgid ""
+"\n"
+"<!DOCTYPE html>\n"
+"<html>\n"
+" <head>\n"
+" <title>Hello, GNOME!</title>\n"
+"\n"
+" <!-- Use JavaScript to show a greeting when someone clicks the button -->\n"
+" <script type=\"application/javascript\">\n"
+" function greeting () {\n"
+" document.getElementById (\"greeting\").innerHTML = (\"O hai!\");\n"
+" }\n"
+" </script>\n"
+"\n"
+" <!-- Very basic CSS style using the GNOME font -->\n"
+" <style type=\"text/css\">\n"
+" body {\n"
+" font-face: Cantarell, sans-serif;\n"
+" text-align: center; }\n"
+" </style>\n"
+"\n"
+" </head>\n"
+" <body>\n"
+" <br /> <br />\n"
+" <button type=\"button\" onclick=\"greeting()\">Hello, GNOME!</button>\n"
+"\n"
+" <!-- Empty H1 element gets filled in when the button is clicked -->\n"
+" <h1 id=\"greeting\"></h1>\n"
+" </body>\n"
+"</html>\n"
+msgstr ""
+"\n"
+"<!DOCTYPE html>\n"
+"<html>\n"
+" <head>\n"
+" <title>Hello, GNOME!</title>\n"
+"\n"
+" <!-- Use JavaScript to show a greeting when someone clicks the button -->\n"
+" <script type=\"application/javascript\">\n"
+" function greeting () {\n"
+" document.getElementById (\"greeting\").innerHTML = (\"O hai!\");\n"
+" }\n"
+" </script>\n"
+"\n"
+" <!-- Very basic CSS style using the GNOME font -->\n"
+" <style type=\"text/css\">\n"
+" body {\n"
+" font-face: Cantarell, sans-serif;\n"
+" text-align: center; }\n"
+" </style>\n"
+"\n"
+" </head>\n"
+" <body>\n"
+" <br /> <br />\n"
+" <button type=\"button\" onclick=\"greeting()\">Hello, GNOME!</button>\n"
+"\n"
+" <!-- Empty H1 element gets filled in when the button is clicked -->\n"
+" <h1 id=\"greeting\"></h1>\n"
+" </body>\n"
+"</html>\n"
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:63
+msgid ""
+"Let's save this as <file>hellognome.html</file>, and see what it looks like "
+"when we run it!"
+msgstr ""
+"Guarde esto como <file>hellognome.html</file>, y observe cómo se ve cuando "
+"lo ejecuta."
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:67
+msgid ""
+"You <em>can</em> run the above code by opening <file>hellognome.html</file> "
+"in a web browser. But here, we're going to create a GNOME application that "
+"runs our web app inside of it, just like you see in the screenshot. You'll "
+"be able to resize and maximize the window, and click the X in the corner to "
+"close it, just like you'd expect from any other GNOME app. The difference is "
+"that this one will run our web code inside of it."
+msgstr ""
+"<em>Puede</em> ejecutar el código anterior abriendo <file>hellognome.html</"
+"file> en un navegador web. Pero aquí, se va a crear una aplicación de GNOME "
+"que ejecute la aplicación web de dentro, como ve en la captura de pantalla. "
+"Podrá redimensionar y maximizar la ventana, y pulsar en la «X» en la esquina "
+"para cerrarla, al igual que esperaría de cualquier otra aplicación de GNOME. "
+"La diferencia es que esta ejecutará el código web de dentro."
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:68
+msgid ""
+"The best part? We're going to continue to use JavaScript, to write all the "
+"parts that make our app work with GNOME. Let's look at the code, and see how "
+"it's done!"
+msgstr ""
+"¿La mejor parte? Se va a continuar usando JavaScript para escribir todas las "
+"partes que hacen que la aplicación funcione con GNOME. Échele un vistazo al "
+"código y vea cómo se hace."
+
+#. (itstool) path: section/title
+#: C/hellognome.js.page:72
+msgid "Creating a GNOME window to frame our web app"
+msgstr "Crear una ventana de GNOME para enmarcar la aplicación web"
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:74
+msgid ""
+"First, we need to tell GNOME that this is a JavaScript application, which "
+"uses gjs. Gjs is GNOME's way of turning your JavaScript code into "
+"instructions it understands, so this line always has to go at the start of "
+"your applications."
+msgstr ""
+"Primero, se necesita decirle a GNOME que esta es una aplicación de "
+"JavaScript, que usa gjs. gjs es la forma de GNOME de convertir su código de "
+"JavaScript en instrucciones que entiende, por lo que esta línea siempre debe "
+"ir al principio de sus aplicaciones."
+
+#. (itstool) path: section/code
+#: C/hellognome.js.page:75
+#, no-wrap
+msgid ""
+"\n"
+"#!/usr/bin/gjs\n"
+msgstr ""
+"\n"
+"#!/usr/bin/gjs\n"
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:78
+msgid "After that, we need to tell GNOME which libraries we want to import."
+msgstr ""
+"Después de eso, necesita decirle a GNOME qué bibliotecas quiere importar."
+
+#. (itstool) path: section/code
+#: C/hellognome.js.page:79
+#, no-wrap
+msgid ""
+"\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"const Webkit = imports.gi.WebKit;\n"
+msgstr ""
+"\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"const Webkit = imports.gi.WebKit;\n"
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:85
+msgid ""
+"Just like how add-on libraries like jQuery let us do extra things with "
+"JavaScript, each of these libraries gives us new capabilities for our GNOME "
+"apps:"
+msgstr ""
+"Al igual que las bibliotecas adicionales como jQuery, que permiten hacer "
+"cosas adicionales con JavaScript, cada una de estas bibliotecas le da "
+"capacidades nuevas a las aplicaciones de GNOME:"
+
+#. (itstool) path: item/p
+#: C/hellognome.js.page:87
+msgid ""
+"<file>Gtk</file> and <file>Lang</file> are basic parts of any GNOME "
+"application, which let you create windows and widgets and tie them together."
+msgstr ""
+"<file>Gtk</file> y <file>Lang</file> son partes básicas de cualquier "
+"aplicación de GNOME, que le permiten crear ventanas y widgets, y juntarlos."
+
+#. (itstool) path: item/p
+#: C/hellognome.js.page:88
+msgid ""
+"<file>GLib</file> is a helper library, which lets us do things like tell "
+"GNOME where the <file>hellognome.html</file> file we created is."
+msgstr ""
+"<file>GLib</file> es una biblioteca de ayuda, que permite hacer cosas como "
+"decirle a GNOME dónde está el archivo <file>hellognome.html</file> que creó."
+
+#. (itstool) path: item/p
+#: C/hellognome.js.page:89
+msgid ""
+"And <file>Webkit</file> is a web rendering engine, which we'll use to "
+"basically create a browser window to open our HTML file with."
+msgstr ""
+"Y <file>Webkit</file> es un motor de procesamiento web, que usará "
+"básicamente para crear una ventana de navegador con la que abrir el archivo "
+"HTML."
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:92
+msgid "Now we create the application itself:"
+msgstr "Ahora se crea la aplicación en sí:"
+
+#. (itstool) path: section/code
+#: C/hellognome.js.page:93
+#, no-wrap
+msgid ""
+"\n"
+"const HelloGNOME = new Lang.Class ({\n"
+" Name: 'Hello GNOME',\n"
+msgstr ""
+"\n"
+"const HelloGNOME = new Lang.Class ({\n"
+" Name: 'Hello GNOME',\n"
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:97
+msgid ""
+"This will look familiar to you if you've worked with object-oriented "
+"JavaScript before. That's right; our whole application is a class called "
+"HelloGNOME. And as you can see, we've given it a property that says what its "
+"name is."
+msgstr ""
+"Esto le resultará familiar si ha trabajado con JavaScript orientado a "
+"objetos anteriormente. Así es; toda la aplicación es una clase llamada "
+"«HelloGNOME». Y como puede ver, se le ha dado una propiedad que dice cuál es "
+"su nombre."
+
+#. (itstool) path: section/code
+#: C/hellognome.js.page:99
+#, no-wrap
+msgid ""
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:119
+msgid ""
+"Here's some code you will more or less copy-and-paste for every JavaScript "
+"application you build. It creates a new Application, and then binds its "
+"activate and startup signals to functions that make the window show itself "
+"and build its user interface, respectively."
+msgstr ""
+"Aquí hay código que prácticamente copiará y pegará por cada aplicación que "
+"construya en JavaScript. Crea una «Application» nueva, y después enlaza sus "
+"señales «activate» y «startup» a funciones que muestran la ventana y "
+"construyen su interfaz de usuario, respectivamente."
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:120
+msgid ""
+"What does that mean? Well, everything in a GNOME application sends out a "
+"signal when something important happens. A button might send out the clicked "
+"signal when you click on it, for instance. Our job is to connect the signals "
+"to functions which handle them, and make the things that we want to have "
+"happen occur. We do this using each object's connect method, which takes two "
+"arguments: The signal we want to handle, and the Lang.bind function, which "
+"we have to use to tell connect which function we want to have handle the "
+"signal."
+msgstr ""
+"¿Qué significa eso? Bueno, todo en una aplicación de GNOME envía una señal "
+"cuando algo importante sucede. Un botón puede enviar la señal «clicked» "
+"cuando lo pulsa, por ejemplo. Su trabajo es conectar las señales a funciones "
+"que las manejen, y hagan las cosas que quiere que ocurran. Esto se hace "
+"usando el método «connect» de cada objeto, que toma dos argumentos: la señal "
+"que quiere manejar, y la función «Lang.bind», que hay que usar para decirle "
+"a «connect» qué función quiere que maneje la señal."
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:121
+msgid ""
+"In this case, we want _onActivate to handle the activate signal, and "
+"_onStartup to handle the startup signal. _onActivate just tells the window "
+"to present itself; so basically, whenever you <keyseq><key>Alt</key> "
+"<key>Tab</key></keyseq> to the application it appears, like you would expect "
+"it to. _onStartup calls _buildUI, which is the function that creates our "
+"user interface and is the next part that we will look at."
+msgstr ""
+"En este caso, se quiere que «_onActivate» maneje la señal «activate», y "
+"«_onStartup» la señal «startup». «_onActivate» sólo le dice a la ventana que "
+"se presente; para que, básicamente, cada vez que haga <keyseq><key>Alt</key> "
+"<key>Tab</key></keyseq> a la aplicación, aparezca como uno espera. "
+"«_onStartup» llama a «_buildUI», que es la función que crea la interfaz de "
+"usuario y que verá a continuación."
+
+#. (itstool) path: note/p
+#: C/hellognome.js.page:122
+msgid ""
+"When you copy and paste the above code for your own applications, be sure to "
+"change the name to a unique one each time."
+msgstr ""
+"Cuando copie y pegue el código anterior para sus propias aplicaciones, "
+"asegúrese de cambiar el nombre por uno único cada vez."
+
+#. (itstool) path: section/title
+#: C/hellognome.js.page:126
+msgid "Designing our window's UI"
+msgstr "Diseñar la IU de la ventana"
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:127
+msgid ""
+"In the _buildUI function, we're going to tell GNOME about our window and the "
+"things inside it, one at a time. After that, we're going to connect "
+"everything together and put it all on display."
+msgstr ""
+"En la función «_buildUI», se le describirá a GNOME la ventana y sus "
+"elementos, uno a la vez. Después de eso, se conectará y se mostrará todo "
+"junto."
+
+#. (itstool) path: section/code
+#: C/hellognome.js.page:129
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" title: \"Welcome to GNOME\",\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" window_position: Gtk.WindowPosition.CENTER });\n"
+msgstr ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" title: \"Welcome to GNOME\",\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" window_position: Gtk.WindowPosition.CENTER });\n"
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:142
+msgid ""
+"The first object we create is an ApplicationWindow. It needs a title to go "
+"in the title bar, and its application property needs to be the application "
+"that we created, above. Beyond that, there are various ways of customizing "
+"how it looks, which the <link xref=\"GtkApplicationWindow.js"
+"\">ApplicationWindow</link> reference page will go into more detail about. "
+"As you can see here, we gave it a default height and width (measured in "
+"pixels), and told GNOME we want our window to appear in the center of the "
+"screen."
+msgstr ""
+"El primer objeto que se crea es una «ApplicationWindow». Necesita un texto "
+"para la barra de título, y su propiedad «application» tiene que ser la "
+"aplicación que se creó anteriormente. Más allá de eso, hay varias maneras de "
+"personalizar su apariencia. Podrá encontrar más detalles en la página de "
+"referencia <link xref=\"GtkApplicationWindow.js\">ApplicationWindow</link>. "
+"Como puede ver aquí, se le dio una altura y anchura predeterminada (medidas "
+"en píxeles), y se le dijo a GNOME que se quiere que la ventana aparezca en "
+"el centro de la pantalla."
+
+#. (itstool) path: section/code
+#: C/hellognome.js.page:143
+#, no-wrap
+msgid ""
+"\n"
+" // Create a webview to show the web app\n"
+" this._webView = new Webkit.WebView ();\n"
+"\n"
+" // Put the web app into the webview\n"
+" this._webView.load_uri (GLib.filename_to_uri (GLib.get_current_dir() +\n"
+" \"/hellognome.html\", null));\n"
+msgstr ""
+"\n"
+" // Create a webview to show the web app\n"
+" this._webView = new Webkit.WebView ();\n"
+"\n"
+" // Put the web app into the webview\n"
+" this._webView.load_uri (GLib.filename_to_uri (GLib.get_current_dir() +\n"
+" \"/hellognome.html\", null));\n"
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:151
+msgid ""
+"Remember how we imported Webkit right at the start? Here we're creating a "
+"new instance of a Webkit class called a WebView, which is more or less a "
+"browser window you can put inside of your app. After that, we then give it "
+"the URI that we want it to load when the application starts up."
+msgstr ""
+"¿Recuerda cómo se importó «Webkit» al comienzo? Aquí se está creando una "
+"instancia nueva de la clase «Webkit» llamada «WebView», que es más o menos "
+"una ventana de navegador que puede poner dentro de su aplicación. Después de "
+"eso, se le da el URI que quiere que cargue cuando la aplicación inicia."
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:152
+msgid ""
+"We <em>could</em> just give it a web URI, like <link href=\"http://gnome.org"
+"\">http://gnome.org</link>. Instead, here we use a couple of GLib helper "
+"functions to tell the WebView where our <file>hellognome.html</file> file "
+"is. GLib.get_current_dir returns the directory that our app's running in, "
+"and GLib.filename_to_uri turns our file's path and filename into a URI that "
+"the WebView's load_uri function understands. (filename_to_uri's second "
+"parameter should be null unless you know what it's used for and have a "
+"reason for changing it.)"
+msgstr ""
+"Se <em>podría</em> darle sólo un URI web, como <link href=\"http://gnome.org"
+"\">http://gnome.org</link>. En su lugar, aquí se usan algunas funciones de "
+"ayuda de GLib para decirle a «WebView» dónde está el archivo "
+"<file>hellognome.html</file>. «GLib.get_current_dir» devuelve la carpeta en "
+"la que se está ejecutando la aplicación, y «GLib.filename_to_uri» convierte "
+"la ruta del archivo y su nombre en un URI que la función «load_uri» del "
+"«WebView» entiende (el segundo parámetro de «filename_to_uri» debe ser "
+"«null» a menos que sepa para qué se usa y tenga una razón para cambiarlo)."
+
+#. (itstool) path: section/code
+#: C/hellognome.js.page:153
+#, no-wrap
+msgid ""
+"\n"
+" // Put the webview into the window\n"
+" this._window.add (this._webView);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"});\n"
+msgstr ""
+"\n"
+" // Put the webview into the window\n"
+" this._window.add (this._webView);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"});\n"
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:163
+msgid ""
+"Each window can hold one, and only one, widget. Normally, we'd use a "
+"container widget like a <link xref=\"grid.js\">Grid</link> to put multiple "
+"widgets into, then use the window's add function to add the Grid to it. "
+"Here, we just need the WebView, so that's all we add to the window. After "
+"that, as the last part of the _buildUI function that creates our window, we "
+"tell the window to show itself and its contents."
+msgstr ""
+"Cada ventana puede contener un, y sólo un, widget. Normalmente usaría un "
+"widget contenedor como una <link xref=\"grid.js\">Rejilla</link> para poner "
+"dentro múltiples widgets, y después usar la función «add» de la ventana para "
+"añadírsela. Aquí, sólo se necesita el «WebView», por lo que es todo lo que "
+"se añade. Después de eso, al final de la función «_buildUI» que crea la "
+"ventana, se le dice que se muestre con su contenido."
+
+#. (itstool) path: section/code
+#: C/hellognome.js.page:164
+#, no-wrap
+msgid ""
+"\n"
+"// Run the application\n"
+"let app = new HelloGNOME ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"// Run the application\n"
+"let app = new HelloGNOME ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:169
+msgid ""
+"Finally, we create a new instance of our HelloGNOME class, and tell GNOME to "
+"run it."
+msgstr ""
+"Finalmente, se crea una instancia nueva de la clase «HelloGNOME» y se le "
+"dice a GNOME que la ejecute."
+
+#. (itstool) path: section/title
+#: C/hellognome.js.page:173
+msgid "Running your GNOME application"
+msgstr "Ejecutar la aplicación de GNOME"
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:175
+msgid ""
+"Now that we've created our first GNOME application, it's time to test it "
+"out! You don't need to compile your app or install any special software for "
+"this; GNOME has gjs built in, to let it run GNOME Shell. Just save "
+"<file>hellognome.html</file> and our actual application, <file>hellognome."
+"js</file>, to a directory you can get to with the terminal. (They usually "
+"open onto your home directory, the one that's called by your username.) "
+"After that, open a terminal, go there, and type:"
+msgstr ""
+"Ahora que ha creado su primera aplicación de GNOME, es hora de probarla. No "
+"necesita compilarla o instalar algún software especial, GNOME tiene incluido "
+"gjs para permitirle ejecutar GNOME Shell. Sólo guarde <file>hellognome.html</"
+"file> y la aplicación en sí, <file>hellognome.js</file> en una carpeta a la "
+"que pueda acceder con la terminal (generalmente se abren en su carpeta "
+"personal, la que se llama como su usuario). Después de eso, abra una "
+"terminal, vaya allí, e introduzca:"
+
+#. (itstool) path: section/screen
+#: C/hellognome.js.page:176
+#, no-wrap
+msgid " <output style=\"prompt\">$ </output>gjs hellognome.js "
+msgstr " <output style=\"prompt\">$ </output>gjs hellognome.js "
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:177
+msgid ""
+"You should see more or less the same screenshot as before, with a button "
+"that you can click to make a short message appear."
+msgstr ""
+"Debería ver más o menos la misma captura de pantalla de antes, con un botón "
+"que puede pulsar para hacer aparecer un mensaje corto."
+
+#. (itstool) path: note/p
+#: C/hellognome.js.page:180
+msgid "You can use the terminal command"
+msgstr "Puede usar el comando de la terminal"
+
+#. (itstool) path: note/screen
+#: C/hellognome.js.page:181
+#, no-wrap
+msgid " <output style=\"prompt\">$ </output>cd <var>(directory name)</var> "
+msgstr " <output style=\"prompt\">$ </output>cd <var>(nombre de la carpeta)</var> "
+
+#. (itstool) path: note/p
+#: C/hellognome.js.page:182
+msgid ""
+"to navigate between directories inside the Terminal, in order to get to "
+"where you saved the files. There is also an extension for Nautilus, GNOME's "
+"file manager, which lets you right-click anywhere inside it to open a "
+"terminal window right there. Check the app you use to install new software "
+"(like Add/Remove Programs or the Software Center) for it."
+msgstr ""
+"para navegar entre carpetas dentro de la terminal, y llegar donde guardó los "
+"archivos. También hay una extensión para Nautilus, el gestor de archivos de "
+"GNOME, que le permite pulsar en cualquier lado con el botón derecho para "
+"abrir una terminal allí. Búsquela en la aplicación que usa para instalar "
+"software nuevo (como «Añadir/Quitar programas» o el «Centro de software»)."
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:189
+msgid ""
+"<link xref=\"02_welcome_to_the_grid.js\">Continue on to the next tutorial</"
+"link> to learn how to build \"native\" GNOME applications that look and feel "
+"like the others, instead of a webview with HTML code inside. Or take a look "
+"at some <link xref=\"beginner.js#samples\">code samples</link>, if you'd "
+"like to see example code for each Gtk widget."
+msgstr ""
+"<link xref=\"02_welcome_to_the_grid.js\">Siga con el próximo tutorial</link> "
+"para aprender cómo construir aplicaciones de GNOME «nativas» que se ven como "
+"las otras, en lugar de una vista web con código HTML dentro. O échele un "
+"vistazo a algunas <link xref=\"beginner.js#samples\">muestras de código</"
+"link>, si quiere ver código de ejemplo para cada widget de GTK+."
+
+#. (itstool) path: section/p
+#: C/hellognome.js.page:190
+msgid ""
+"Finally, if you want to just build GNOME applications using JavaScript "
+"libraries designed for the web, you can basically stop here and go do that! "
+"Check out <link xref=\"beginner.js#tutorials\">the later tutorials</link> if "
+"you'd like to see how to create a .desktop file for your application, which "
+"will let it appear in your desktop's Activities menu with all your other "
+"apps."
+msgstr ""
+"Finalmente, si sólo quiere construir aplicaciones de GNOME usando "
+"bibliotecas de JavaScript diseñadas para la web, puede simplemente parar "
+"aquí y hacerlo. Échele un vistazo a los <link xref=\"beginner.js#tutorials"
+"\">últimos tutoriales</link> para aprender a crear un archivo «.desktop» "
+"para su aplicación, que le permitirá aparecer en el menú de actividades de "
+"su escritorio junto a las otras."
+
+#. (itstool) path: section/code
+#: C/hellognome.js.page:195
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"const Webkit = imports.gi.WebKit;\n"
+"\n"
+"const HelloGNOME = new Lang.Class ({\n"
+" Name: 'Hello GNOME',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" title: \"Welcome to GNOME\",\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" window_position: Gtk.WindowPosition.CENTER });\n"
+"\n"
+" // Create a webview to show the web app\n"
+" this._webView = new Webkit.WebView ();\n"
+"\n"
+" // Put the web app into the webview\n"
+" this._webView.load_uri (GLib.filename_to_uri (GLib.get_current_dir() +\n"
+" \"/hellognome.html\", null));\n"
+"\n"
+" // Put the webview into the window\n"
+" this._window.add (this._webView);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new HelloGNOME ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"const Webkit = imports.gi.WebKit;\n"
+"\n"
+"const HelloGNOME = new Lang.Class ({\n"
+" Name: 'Hello GNOME',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ();\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" title: \"Welcome to GNOME\",\n"
+" default_height: 200,\n"
+" default_width: 400,\n"
+" window_position: Gtk.WindowPosition.CENTER });\n"
+"\n"
+" // Create a webview to show the web app\n"
+" this._webView = new Webkit.WebView ();\n"
+"\n"
+" // Put the web app into the webview\n"
+" this._webView.load_uri (GLib.filename_to_uri (GLib.get_current_dir() +\n"
+" \"/hellognome.html\", null));\n"
+"\n"
+" // Put the webview into the window\n"
+" this._window.add (this._webView);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new HelloGNOME ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/hello-world.c.page:51 C/hello-world.js.page:28 C/hello-world.py.page:28
+#: C/hello-world.vala.page:28
+msgctxt "_"
+msgid ""
+"external ref='media/hello-world.png' md5='4c88a27211dfd1b33e504c9f78602f2d'"
+msgstr ""
+"external ref='media/hello-world.png' md5='4c88a27211dfd1b33e504c9f78602f2d'"
+
+#. (itstool) path: info/title
+#: C/hello-world.c.page:10
+msgctxt "link"
+msgid "Hello World (C)"
+msgstr "Hola mundo (C)"
+
+#. (itstool) path: credit/name
+#: C/hello-world.c.page:24
+msgid "Bastian Ilsø"
+msgstr "Bastian Ilsø"
+
+#. (itstool) path: info/desc
+#: C/hello-world.c.page:28
+msgid "Creating a small \"Hello, World\" application using GTK+."
+msgstr "Crear una pequeña aplicación «Hola, mundo» usando GTK+."
+
+#. (itstool) path: page/title
+#: C/hello-world.c.page:31
+msgid "Hello world"
+msgstr "Hola mundo"
+
+#. (itstool) path: note/p
+#: C/hello-world.c.page:34
+msgid ""
+"For a detailed walk-through of creating a GTK+ dialog in C, see <link href="
+"\"https://developer.gnome.org/gtk3/stable/gtk-getting-started.html\">Getting "
+"Started with GTK+</link>"
+msgstr ""
+"Para obtener una explicación paso a paso sobre cómo crear un diálogo de GTK+ "
+"en C, consulte <link href=\"https://developer.gnome.org/gtk3/stable/gtk-"
+"getting-started.html\">Primeros pasos con GTK+</link>"
+
+#. (itstool) path: page/p
+#: C/hello-world.c.page:38
+msgid ""
+"Writing a hello world GTK+ dialog in C can be done as seen in the code "
+"sample below:"
+msgstr ""
+"Escribir un diálogo Hola mundo de GTK+ en C se puede hacer como se ve en "
+"siguiente código de ejemplo:"
+
+#. (itstool) path: page/code
+#: C/hello-world.c.page:39
+#, no-wrap
+msgid ""
+"\n"
+" #include <gtk/gtk.h>\n"
+"\n"
+"static void\n"
+"activate (GtkApplication* app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *label;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+" label = gtk_label_new (\"Hello GNOME!\");\n"
+" gtk_container_add (GTK_CONTAINER (window), label);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 200, 100);\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc,\n"
+" char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (NULL, G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+"\n"
+" "
+msgstr ""
+"\n"
+" #include <gtk/gtk.h>\n"
+"\n"
+"static void\n"
+"activate (GtkApplication* app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *label;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+" label = gtk_label_new (\"Hello GNOME!\");\n"
+" gtk_container_add (GTK_CONTAINER (window), label);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 200, 100);\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc,\n"
+" char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (NULL, G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+"\n"
+" "
+
+#. (itstool) path: page/p
+#: C/hello-world.c.page:43
+msgid ""
+"GtkApplication initializes GTK+. It also connects the <gui>x</gui> button "
+"that's automatically generated along with the window to the \"destroy\" "
+"signal. We can start building our first window. We do this by creating a "
+"variable called <var>window</var> and assigning it a "
+"gtk_application_window_new. The window title can be any string you want it "
+"to be. To be on the safe side, it's best to stick to UTF-8 encoding. The "
+"code above will create a dialog window similar to what can be seen below:"
+msgstr ""
+"GtkApplication inicializa GTK+. También conecta el botón <gui>x</gui> que se "
+"genera automáticamente junto con la ventana a la señal «destroy». Puede "
+"empezar a construir su primera ventana. PAra hacer esto, cree una variable "
+"llamada <var>window</var> y asígnela a gtk_application_window_new. El título "
+"de la ventana puede ser la cadena que quiera. Para asegurarse, es mejor usar "
+"la codificación UTF-8. El código anterior creará una ventana de diálogo "
+"similar a la que se ve a continuación:"
+
+#. (itstool) path: info/title
+#: C/hello-world.js.page:9
+msgctxt "text"
+msgid "Hello World (JavaScript)"
+msgstr "Hola mundo (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/hello-world.js.page:24 C/hello-world.py.page:24
+#: C/hello-world.vala.page:24
+msgid "A basic \"hello, world\" application"
+msgstr "Una aplicación «Hola mundo» básica"
+
+#. (itstool) path: page/title
+#: C/hello-world.js.page:27 C/hello-world.py.page:27
+#: C/hello-world.vala.page:27
+msgid ""
+"How to build, install and create a <file>tar.xz</file> of a Hello World "
+"program"
+msgstr ""
+"Cómo construir, instalar y crear un <file>tar.xz</file> de un programa Hola "
+"mundo"
+
+#. (itstool) path: synopsis/p
+#: C/hello-world.js.page:30 C/hello-world.py.page:30
+#: C/hello-world.vala.page:30
+msgid "This tutorial will demonstrate how to:"
+msgstr "Este tutorial le demostrará cómo:"
+
+#. (itstool) path: item/p
+#: C/hello-world.js.page:32
+msgid "create a small \"Hello, World\" application using JavaScript and GTK+"
+msgstr "crear una pequeña aplicación «Hola, mundo» usando JavaScript y GTK+"
+
+#. (itstool) path: item/p
+#: C/hello-world.js.page:33 C/hello-world.py.page:33
+#: C/hello-world.vala.page:33
+msgid "make the <file>.desktop</file> file"
+msgstr "hacer el archivo <file>.desktop</file>"
+
+#. (itstool) path: item/p
+#: C/hello-world.js.page:34 C/hello-world.py.page:34
+#: C/hello-world.vala.page:34
+msgid "how to set up the build system"
+msgstr "configurar el sistema de construcción"
+
+#. (itstool) path: section/title
+#: C/hello-world.js.page:42 C/hello-world.py.page:42
+#: C/hello-world.vala.page:40
+msgid "Create the program"
+msgstr "Crear el programa"
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:47
+msgid "This needs to be the first line of your script:"
+msgstr "Esta tiene que ser la primera línea de su script:"
+
+#. (itstool) path: section/code
+#: C/hello-world.js.page:48
+#, no-wrap
+msgid "#!/usr/bin/gjs"
+msgstr "#!/usr/bin/gjs"
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:49
+msgid ""
+"It tells the script to use <link href=\"https://live.gnome.org/Gjs/\">Gjs</"
+"link>. Gjs is a JavaScript binding for GNOME."
+msgstr ""
+"Le dice al script que use <link href=\"https://live.gnome.org/Gjs/\">Gjs</"
+"link>. Gjs es una vinculación de JavaScript para GNOME."
+
+#. (itstool) path: section/code
+#: C/hello-world.js.page:54
+#, no-wrap
+msgid ""
+"const Lang = imports.lang;\n"
+"const Gtk = imports.gi.Gtk;"
+msgstr ""
+"const Lang = imports.lang;\n"
+"const Gtk = imports.gi.Gtk;"
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:56 C/hello-world.py.page:49
+msgid ""
+"In order for our script to work with GNOME, we need to import GNOME "
+"libraries via GObject Introspection. Here we import the language bindings "
+"and GTK+, the library which contains the graphical widgets used to make "
+"GNOME applications."
+msgstr ""
+"Para que su script funcione con GNOME, se deben importar las bibliotecas de "
+"GNOME mediante introspección de GObject. En este caso, se están importando "
+"las vinculaciones de lenguaje y GTK+, la biblioteca que contiene los widgets "
+"gráficos usados para crear aplicaciones de GNOME."
+
+#. (itstool) path: section/code
+#: C/hello-world.js.page:60
+#, no-wrap
+msgid ""
+"const Application = new Lang.Class({\n"
+" //A Class requires an explicit Name parameter. This is the Class Name.\n"
+" Name: 'Application',\n"
+"\n"
+" //create the application\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" //connect to 'activate' and 'startup' signals to handlers.\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" //create the UI\n"
+" _buildUI: function() {\n"
+" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
+" title: \"Hello World!\" });\n"
+" },\n"
+"\n"
+" //handler for 'activate' signal\n"
+" _onActivate: function() {\n"
+" //show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" //handler for 'startup' signal\n"
+" _onStartup: function() {\n"
+" this._buildUI();\n"
+" }\n"
+"});\n"
+msgstr ""
+"const Application = new Lang.Class({\n"
+" //A Class requires an explicit Name parameter. This is the Class Name.\n"
+" Name: 'Application',\n"
+"\n"
+" //create the application\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" //connect to 'activate' and 'startup' signals to handlers.\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" //create the UI\n"
+" _buildUI: function() {\n"
+" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
+" title: \"Hello World!\" });\n"
+" },\n"
+"\n"
+" //handler for 'activate' signal\n"
+" _onActivate: function() {\n"
+" //show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" //handler for 'startup' signal\n"
+" _onStartup: function() {\n"
+" this._buildUI();\n"
+" }\n"
+"});\n"
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:92
+msgid ""
+"GtkApplication initializes GTK+. It also connects the <gui>x</gui> button "
+"that's automatically generated along with the window to the \"destroy\" "
+"signal."
+msgstr ""
+"«GtkApplication» inicializa GTK+. También conecta el botón <gui>x</gui> que "
+"se genera automáticamente junto con la ventana a la señal «destroy»."
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:93
+msgid ""
+"We can start building our first window. We do this by creating a variable "
+"called <var>_window</var> and assigning it a new Gtk.ApplicationWindow."
+msgstr ""
+"Se puede empezar a construir la primera ventana. Esto se hace creando una "
+"variable llamada <var>_window</var> y asignándole una «Gtk."
+"ApplicationWindow» nueva."
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:94 C/hello-world.py.page:73
+msgid ""
+"We give the window a property called <var>title</var>. The title can be any "
+"string you want it to be. To be on the safe side, it's best to stick to "
+"UTF-8 encoding."
+msgstr ""
+"Se le asignara una propiedad llamada <var>title</var>. El título puede ser "
+"la cadena que quiera pero, para estar seguro, es conveniente que tenga una "
+"codificación UTF-8."
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:95 C/hello-world.py.page:74
+#: C/hello-world.vala.page:57
+msgid ""
+"Now we have a window which has a title and a working \"close\" button. Let's "
+"add the actual \"Hello World\" text."
+msgstr ""
+"Ya tiene una ventana que contiene un título y un botón «cerrar» que "
+"funciona. Ahora, añada el texto «Hola mundo»."
+
+#. (itstool) path: section/title
+#: C/hello-world.js.page:98 C/hello-world.py.page:77
+#: C/hello-world.vala.page:60
+msgid "Label for the window"
+msgstr "Etiqueta para la ventana"
+
+#. (itstool) path: section/code
+#: C/hello-world.js.page:99
+#, no-wrap
+msgid ""
+"// Add a label widget to your window\n"
+"this.label = new Gtk.Label({ label: \"Hello World\" });\n"
+"this._window.add(this.label);\n"
+"this._window.set_default_size(200, 200);"
+msgstr ""
+"// Add a label widget to your window\n"
+"this.label = new Gtk.Label({ label: \"Hello World\" });\n"
+"this._window.add(this.label);\n"
+"this._window.set_default_size(200, 200);"
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:104
+msgid ""
+"A text label is one of the GTK+ widgets we can use, on account of having "
+"imported the GTK+ library. To use it, we create a new variable called label, "
+"and assign it a new Gtk.Label. Then we give it properties inside the curly "
+"braces {}. In this case, we're setting the text that the label will hold. "
+"Finally, we create and run the application:"
+msgstr ""
+"Una etiqueta de texto es uno de los widgets de GTK+ que puede usar si "
+"importó la biblioteca GTK+. Para usarlo, cree una variable nueva llamada "
+"«label» y asígnele una Gtk.Label nueva. Después dele propiedades dentro de "
+"las llaves «{}». En este caso, se está estableciendo el texto que la "
+"etiqueta contendrá. Finalmente, se crea y ejecuta la aplicación:"
+
+#. (itstool) path: section/code
+#: C/hello-world.js.page:106
+#, no-wrap
+msgid ""
+"//run the application\n"
+"let app = new Application();\n"
+"app.application.run(ARGV);"
+msgstr ""
+"//run the application\n"
+"let app = new Application();\n"
+"app.application.run(ARGV);"
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:110 C/hello-world.py.page:97
+#: C/hello-world.vala.page:71
+msgid ""
+"Gtk.ApplicationWindow can only hold one widget at a time. To construct more "
+"elaborate programs you need to create a holder widget like Gtk.Grid inside "
+"the window, and then add all the other widgets to it."
+msgstr ""
+"«Gtk.ApplicationWindow» sólo puede contener un widget a la vez. Para "
+"construir programas más elaborados necesita crear un widget contenedor como "
+"«Gtk.Grid» dentro de la ventana, y después añadirle los otros."
+
+#. (itstool) path: section/title
+#: C/hello-world.js.page:114
+msgid "hello-world.js"
+msgstr "hello-world.js"
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:115 C/hello-world.py.page:102
+#: C/hello-world.vala.page:76
+msgid "The complete file:"
+msgstr "El archivo completo:"
+
+#. (itstool) path: section/code
+#: C/hello-world.js.page:116
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Lang = imports.lang;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"\n"
+"const Application = new Lang.Class({\n"
+" //A Class requires an explicit Name parameter. This is the Class Name.\n"
+" Name: 'Application',\n"
+"\n"
+" //create the application\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" //connect to 'activate' and 'startup' signals to handlers.\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" //create the UI\n"
+" _buildUI: function() {\n"
+" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
+" title: \"Hello World!\" });\n"
+" this._window.set_default_size(200, 200);\n"
+" this.label = new Gtk.Label({ label: \"Hello World\" });\n"
+" this._window.add(this.label);\n"
+" },\n"
+"\n"
+" //handler for 'activate' signal\n"
+" _onActivate: function() {\n"
+" //show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" //handler for 'startup' signal\n"
+" _onStartup: function() {\n"
+" this._buildUI();\n"
+" }\n"
+"});\n"
+"\n"
+"//run the application\n"
+"let app = new Application();\n"
+"app.application.run(ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Lang = imports.lang;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"\n"
+"const Application = new Lang.Class({\n"
+" //A Class requires an explicit Name parameter. This is the Class Name.\n"
+" Name: 'Application',\n"
+"\n"
+" //create the application\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application();\n"
+"\n"
+" //connect to 'activate' and 'startup' signals to handlers.\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" //create the UI\n"
+" _buildUI: function() {\n"
+" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
+" title: \"Hello World!\" });\n"
+" this._window.set_default_size(200, 200);\n"
+" this.label = new Gtk.Label({ label: \"Hello World\" });\n"
+" this._window.add(this.label);\n"
+" },\n"
+"\n"
+" //handler for 'activate' signal\n"
+" _onActivate: function() {\n"
+" //show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" //handler for 'startup' signal\n"
+" _onStartup: function() {\n"
+" this._buildUI();\n"
+" }\n"
+"});\n"
+"\n"
+"//run the application\n"
+"let app = new Application();\n"
+"app.application.run(ARGV);\n"
+
+#. (itstool) path: section/title
+#: C/hello-world.js.page:119 C/hello-world.py.page:106
+#: C/hello-world.vala.page:80
+msgid "Running the application from terminal"
+msgstr "Ejecutar la aplicación desde la terminal"
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:120
+msgid ""
+"To run this application, first save it as hello-world.js. Then open "
+"Terminal, go to the folder where your application is stored and run:"
+msgstr ""
+"Para ejecutar esta aplicación, primero guárdela como hello-world.js. Luego, "
+"abra una terminal, vaya a la carpeta donde está la aplicación y ejecute:"
+
+#. (itstool) path: section/screen
+#: C/hello-world.js.page:121
+#, no-wrap
+msgid "<output style=\"prompt\">$ </output><input>gjs hello-world.js</input>"
+msgstr "<output style=\"prompt\">$ </output><input>gjs hello-world.js</input>"
+
+#. (itstool) path: section/title
+#: C/hello-world.js.page:127 C/hello-world.py.page:112
+#: C/hello-world.vala.page:89
+msgid "The <file>.desktop.in</file> file"
+msgstr "El archivo <file>.desktop.in</file>"
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:128 C/hello-world.py.page:113
+#: C/hello-world.vala.page:90
+msgid ""
+"Running applications from the Terminal is useful at the beginning of the "
+"application making process. To have fully working <link href=\"https://"
+"developer.gnome.org/integration-guide/stable/mime.html.en\">application "
+"integration</link> in GNOME 3 requires a desktop launcher. For this you need "
+"to create a <file>.desktop</file> file. The <file>.desktop</file> file "
+"describes the application name, the used icon and various integration bits. "
+"A deeper insight into the <file>.desktop</file> file can be found <link href="
+"\"http://developer.gnome.org/desktop-entry-spec/\">here</link>. The <file>."
+"desktop.in</file> file will create the <file>.desktop</file>."
+msgstr ""
+"Ejecutar aplicaciones desde la terminal es útil al principio del proceso de "
+"crear la aplicación. Para tener una <link href=\"https://developer.gnome.org/"
+"integration-guide/stable/mime.html.en\">integración con la aplicación</link> "
+"completa en GNOME 3, se necesita un lanzador en el escritorio. Para esto, "
+"necesita crear un archivo <file>.desktop</file>. El archivo «.desktop» "
+"describe el nombre de la aplicación, el icono que usa y varios campos de "
+"integración. Puede encontrar una descripción de los archivos <file>.desktop</"
+"file> <link href=\"http://developer.gnome.org/desktop-entry-spec/\">aquí</"
+"link>. El archivo <file>.desktop.in</file> creará el <file>.desktop</file>."
+
+#. (itstool) path: note/p
+#: C/hello-world.js.page:131
+msgid ""
+"Before continuing, resave <file>hello-world.js</file> as <file>hello-world</"
+"file>. Then run this in the command line:"
+msgstr ""
+"Antes de continuar, guarde nuevamente <file>hello-world.js</file> como "
+"<file>hello-world</file>. Después ejecute esto en la terminal:"
+
+#. (itstool) path: note/screen
+#: C/hello-world.js.page:132
+#, no-wrap
+msgid "<output style=\"prompt\">$ </output><input>chmod +x hello-world</input>"
+msgstr "<output style=\"prompt\">$ </output><input>chmod +x hello-world</input>"
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:135 C/hello-world.py.page:115
+#: C/hello-world.vala.page:92
+msgid ""
+"The example shows you the minimum requirements for a <code>.desktop.in</"
+"code> file."
+msgstr ""
+"El ejemplo muestra los requerimientos mínimos de un archivo <code>.desktop."
+"in</code>."
+
+#. (itstool) path: section/code
+#: C/hello-world.js.page:136 C/hello-world.py.page:116
+#: C/hello-world.vala.page:93
+#, no-wrap
+msgid ""
+"[Desktop Entry]\n"
+"Version=1.0\n"
+"Encoding=UTF-8\n"
+"Name=Hello World\n"
+"Comment=Say Hello\n"
+"Exec= prefix@/bin/hello-world\n"
+"Icon=application-default-icon\n"
+"Terminal=false\n"
+"Type=Application\n"
+"StartupNotify=true\n"
+"Categories=GNOME;GTK;Utility;\n"
+msgstr ""
+"[Desktop Entry]\n"
+"Version=1.0\n"
+"Encoding=UTF-8\n"
+"Name=Hello World\n"
+"Comment=Say Hello\n"
+"Exec= prefix@/bin/hello-world\n"
+"Icon=application-default-icon\n"
+"Terminal=false\n"
+"Type=Application\n"
+"StartupNotify=true\n"
+"Categories=GNOME;GTK;Utility;\n"
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:138 C/hello-world.py.page:118
+#: C/hello-world.vala.page:95
+msgid "Now let's go through some parts of the <code>.desktop.in</code> file."
+msgstr "Ahora se verán algunas partes del archivo <code>.desktop.in</code>."
+
+#. (itstool) path: item/title
+#. (itstool) path: td/p
+#: C/hello-world.js.page:140 C/hello-world.py.page:120
+#: C/hello-world.vala.page:97 C/toolbar_builder.py.page:95
+#: C/toolbar_builder.vala.page:78
+msgid "Name"
+msgstr "Name"
+
+#. (itstool) path: item/p
+#: C/hello-world.js.page:140 C/hello-world.py.page:120
+#: C/hello-world.vala.page:97
+msgid "The application name."
+msgstr "El nombre de la aplicación."
+
+#. (itstool) path: item/title
+#: C/hello-world.js.page:141 C/hello-world.py.page:121
+#: C/hello-world.vala.page:98
+msgid "Comment"
+msgstr "Comment"
+
+#. (itstool) path: item/p
+#: C/hello-world.js.page:141 C/hello-world.py.page:121
+#: C/hello-world.vala.page:98
+msgid "A short description of the application."
+msgstr "Una descripción corta de la aplicación."
+
+#. (itstool) path: item/title
+#: C/hello-world.js.page:142 C/hello-world.py.page:122
+#: C/hello-world.vala.page:99
+msgid "Exec"
+msgstr "Exec"
+
+#. (itstool) path: item/p
+#: C/hello-world.js.page:142 C/hello-world.py.page:122
+#: C/hello-world.vala.page:99
+msgid ""
+"Specifies a command to execute when you choose the application from the "
+"menu. In this example exec just tells where to find the <file>hello-world</"
+"file> file and the file takes care of the rest."
+msgstr ""
+"Especifica un comando que ejecutar cuando se elige la aplicación en el menú. "
+"En este ejemplo, «exec» sólo indica dónde encontrar el archivo <code>hello-"
+"world</code> y el archivo se hace cargo del resto."
+
+#. (itstool) path: item/title
+#: C/hello-world.js.page:143 C/hello-world.py.page:123
+#: C/hello-world.vala.page:100
+msgid "Terminal"
+msgstr "Terminal"
+
+#. (itstool) path: item/p
+#: C/hello-world.js.page:143 C/hello-world.py.page:123
+#: C/hello-world.vala.page:100
+msgid ""
+"Specifies whether the command in the Exec key runs in a terminal window."
+msgstr ""
+"Especifica si el comando del campo «Exec» se ejecuta en una ventana de la "
+"terminal."
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:146 C/hello-world.py.page:126
+#: C/hello-world.vala.page:103
+msgid ""
+"To put your application into the appropriate category, you need to add the "
+"necessary categories to the Categories line. More information on the "
+"different categories can be found in the <link href=\"http://standards."
+"freedesktop.org/menu-spec/latest/apa.html\">menu specification</link>."
+msgstr ""
+"Para incluir su aplicación en la categoría correcta, debe añadir las "
+"categorías necesarias a la línea «Categories». Puede encontrar más "
+"información sobre las distintas categorías en la <link href=\"http://"
+"standards.freedesktop.org/menu-spec/latest/apa.html\">especificación del "
+"menú</link>."
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:147 C/hello-world.py.page:127
+#: C/hello-world.vala.page:104
+msgid ""
+"In this example we use an existing icon. For a custom icon you need to have "
+"a .svg file of your icon, stored in <file>/usr/share/icons/hicolor/scalable/"
+"apps</file>. Write the name of your icon file to the .desktop.in file, on "
+"line 7. More information on icons in: <link href=\"https://live.gnome.org/"
+"GnomeGoals/AppIcon\">Installing Icons for Themes</link> and <link href="
+"\"http://freedesktop.org/wiki/Specifications/icon-theme-spec\">on "
+"freedesktop.org: Specifications/icon-theme-spec</link>."
+msgstr ""
+"En este ejemplo se ha usado un icono existente. Para usar un icono "
+"personalizado, necesita un archivo «.svg» con su icono guardado en <file>/"
+"usr/share/icons/hicolor/scalable/apps</file>. Escriba el nombre del archivo "
+"del icono en el archivo «.desktop.in», en la línea 7. Puede obtener más "
+"información sobre los iconos en <link href=\"http://freedesktop.org/wiki/"
+"Specifications/icon-theme-spec\">Instalar iconos para temas</link>, <link "
+"href=\"https://live.gnome.org/GnomeGoals/AppIcon\">Instalar iconos para "
+"temas</link> y en <link href=\"http://freedesktop.org/wiki/Specifications/"
+"icon-theme-spec\">freedesktop.org: especificaciones/icon-theme-spec</link>."
+
+#. (itstool) path: section/title
+#: C/hello-world.js.page:150 C/hello-world.py.page:130
+#: C/hello-world.vala.page:107
+msgid "The build system"
+msgstr "El sistema de construcción"
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:151 C/hello-world.py.page:131
+#: C/hello-world.vala.page:108
+msgid ""
+"To make your application truly a part of the GNOME 3 system you need to "
+"install it with the help of autotools. The autotools build will install all "
+"the necessary files to all the right places."
+msgstr ""
+"Para que su aplicación forme parte realmente del sistema GNOME 3 debe "
+"instalarla con la ayuda de autotools. La construcción autotools instalará "
+"todos los archivos necesarios en las ubicaciones correctas."
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:152 C/hello-world.py.page:132
+#: C/hello-world.vala.page:109
+msgid "For this you need to have the following files:"
+msgstr "Para esto deberá tener los siguientes archivos:"
+
+#. (itstool) path: section/title
+#. (itstool) path: item/p
+#. (itstool) path: section/p
+#: C/hello-world.js.page:155 C/hello-world.py.page:135
+#: C/hello-world.vala.page:112 C/weatherAutotools.js.page:40
+#: C/weatherAutotools.js.page:138
+msgid "autogen.sh"
+msgstr "autogen.sh"
+
+#. (itstool) path: section/code
+#: C/hello-world.js.page:156 C/hello-world.py.page:136
+#: C/hello-world.vala.page:113
+#, no-wrap
+msgid ""
+"#!/bin/sh\n"
+"\n"
+"set -e\n"
+"\n"
+"test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n"
+"test -n \"$srcdir\" || srcdir=.\n"
+"\n"
+"olddir=`pwd`\n"
+"cd \"$srcdir\"\n"
+"\n"
+"# This will run autoconf, automake, etc. for us\n"
+"autoreconf --force --install\n"
+"\n"
+"cd \"$olddir\"\n"
+"\n"
+"if test -z \"$NOCONFIGURE\"; then\n"
+" \"$srcdir\"/configure \"$ \"\n"
+"fi\n"
+msgstr ""
+"#!/bin/sh\n"
+"\n"
+"set -e\n"
+"\n"
+"test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n"
+"test -n \"$srcdir\" || srcdir=.\n"
+"\n"
+"olddir=`pwd`\n"
+"cd \"$srcdir\"\n"
+"\n"
+"# This will run autoconf, automake, etc. for us\n"
+"autoreconf --force --install\n"
+"\n"
+"cd \"$olddir\"\n"
+"\n"
+"if test -z \"$NOCONFIGURE\"; then\n"
+" \"$srcdir\"/configure \"$ \"\n"
+"fi\n"
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:158 C/hello-world.py.page:138
+#: C/hello-world.vala.page:115
+msgid "After the <file>autogen.sh</file> file is ready and saved, run:"
+msgstr ""
+"Una vez que el archivo <file>autogen.sh</file> esté listo y guardado, "
+"ejecute:"
+
+#. (itstool) path: section/screen
+#: C/hello-world.js.page:159 C/hello-world.py.page:139
+#: C/hello-world.vala.page:116
+#, no-wrap
+msgid "<output style=\"prompt\">$ </output><input>chmod +x autogen.sh</input>"
+msgstr "<output style=\"prompt\">$ </output><input>chmod +x autogen.sh</input>"
+
+#. (itstool) path: section/title
+#. (itstool) path: item/p
+#. (itstool) path: section/p
+#: C/hello-world.js.page:163 C/hello-world.py.page:143
+#: C/hello-world.vala.page:120 C/weatherAutotools.js.page:38
+#: C/weatherAutotools.js.page:64
+msgid "Makefile.am"
+msgstr "Makefile.am"
+
+#. (itstool) path: section/code
+#: C/hello-world.js.page:164
+#, no-wrap
+msgid ""
+"# The actual runnable program is set to the SCRIPTS primitive.\n"
+"# # Prefix bin_ tells where to copy this\n"
+"bin_SCRIPTS = hello-world\n"
+"# # List of files to be distributed\n"
+"EXTRA_DIST = \\\n"
+"\t$(bin_SCRIPTS)\n"
+"#\n"
+"# # The desktop files\n"
+"desktopdir = $(datadir)/applications\n"
+"desktop_DATA = \\\n"
+"\thello-world.desktop\n"
+msgstr ""
+"# The actual runnable program is set to the SCRIPTS primitive.\n"
+"# # Prefix bin_ tells where to copy this\n"
+"bin_SCRIPTS = hello-world\n"
+"# # List of files to be distributed\n"
+"EXTRA_DIST = \\\n"
+"\t$(bin_SCRIPTS)\n"
+"#\n"
+"# # The desktop files\n"
+"desktopdir = $(datadir)/applications\n"
+"desktop_DATA = \\\n"
+"\thello-world.desktop\n"
+
+#. (itstool) path: section/title
+#. (itstool) path: item/p
+#. (itstool) path: section/p
+#: C/hello-world.js.page:168 C/hello-world.py.page:148
+#: C/hello-world.vala.page:125 C/weatherAutotools.js.page:39
+#: C/weatherAutotools.js.page:131
+msgid "configure.ac"
+msgstr "configure.ac"
+
+#. (itstool) path: section/code
+#: C/hello-world.js.page:169 C/hello-world.py.page:149
+#, no-wrap
+msgid ""
+"# This file is processed by autoconf to create a configure script\n"
+"AC_INIT([Hello World], 1.0)\n"
+"AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
+"AC_CONFIG_FILES([Makefile hello-world.desktop])\n"
+"AC_OUTPUT\n"
+msgstr ""
+"# This file is processed by autoconf to create a configure script\n"
+"AC_INIT([Hello World], 1.0)\n"
+"AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
+"AC_CONFIG_FILES([Makefile hello-world.desktop])\n"
+"AC_OUTPUT\n"
+
+#. (itstool) path: section/title
+#: C/hello-world.js.page:173 C/hello-world.py.page:153
+#: C/hello-world.vala.page:130
+msgid "README"
+msgstr "README"
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:174 C/hello-world.py.page:154
+#: C/hello-world.vala.page:131
+msgid "Information users should read first. This file can be blank."
+msgstr ""
+"Información que los usuarios deben leer primero. Este archivo puede estar "
+"vacío."
+
+#. (itstool) path: section/p
+#: C/hello-world.js.page:176 C/hello-world.py.page:156
+msgid ""
+"When you have the <file>hello-world</file>, <file>hello-world.desktop.in</"
+"file>, <file>Makefile.am</file>, <file>configure.ac</file> and <file>autogen."
+"sh</file> files with correct information and rights, the <file>README</file> "
+"file can include the following instructions:"
+msgstr ""
+"Cuando tenga los archivos <file>hello-world</file>, <file>hello-world."
+"desktop.in</file>, <file>Makefile.am</file>, <file>configure.ac</file> y "
+"<file>autogen.sh</file> con la información y los permisos correctos, el "
+"archivo <file>README</file> puede incluir las siguientes instrucciones:"
+
+#. (itstool) path: section/code
+#: C/hello-world.js.page:177 C/hello-world.py.page:157
+#, no-wrap
+msgid ""
+"To build and install this program:\n"
+"\n"
+"./autogen.sh --prefix=/home/your_username/.local\n"
+"make install\n"
+"\n"
+"-------------\n"
+"Running the first line above creates the following files:\n"
+"\n"
+"aclocal.m4\n"
+"autom4te.cache\n"
+"config.log\n"
+"config.status\n"
+"configure\n"
+"hello-world.desktop\n"
+"install-sh\n"
+"missing\n"
+"Makefile.in\n"
+"Makefile\n"
+"\n"
+"Running \"make install\", installs the application in /home/your_username/.local/bin\n"
+"and installs the hello-world.desktop file in /home/your_username/.local/share/applications\n"
+"\n"
+"You can now run the application by typing \"Hello World\" in the Overview.\n"
+"\n"
+"----------------\n"
+"To uninstall, type:\n"
+"\n"
+"make uninstall\n"
+"\n"
+"----------------\n"
+"To create a tarball type:\n"
+"\n"
+"make distcheck\n"
+"\n"
+"This will create hello-world-1.0.tar.xz\n"
+msgstr ""
+"Para construir e instalar este programa:\n"
+"\n"
+"./autogen.sh --prefix=/home/usuario/.local\n"
+"make install\n"
+"\n"
+"-------------\n"
+"Al ejecutar la primera línea se crean los siguientes archivos:\n"
+"\n"
+"aclocal.m4\n"
+"autom4te.cache\n"
+"config.log\n"
+"config.status\n"
+"configure\n"
+"helloWorld.desktop\n"
+"install-sh\n"
+"missing\n"
+"Makefile.in\n"
+"Makefile\n"
+"\n"
+"Al ejecutar «make install», se instala la aplicación en /home/usuario/.local/bin\n"
+"y se instala el archivo helloWorld.desktop en /home/usuario/.local/share/applications\n"
+"\n"
+"Ahora puede ejecutar la aplicación escribiendo «Hello World» en la vista general.\n"
+"\n"
+"----------------\n"
+"Para desinstalarla, escriba:\n"
+"\n"
+"make uninstall\n"
+"\n"
+"----------------\n"
+"Para crear un archivador tar escriba:\n"
+"\n"
+"make distcheck\n"
+"\n"
+"Esto creará el archivo hello-world-1.0.tar.xz\n"
+"\n"
+
+#. (itstool) path: info/title
+#: C/hello-world.py.page:9
+msgctxt "text"
+msgid "Hello World (Python)"
+msgstr "Hola mundo (Python)"
+
+#. (itstool) path: item/p
+#: C/hello-world.py.page:32
+msgid "create a small \"Hello, World\" application using Python and GTK+"
+msgstr "crear una pequeña aplicación «Hola, mundo» usando Python y GTK+"
+
+#. (itstool) path: section/code
+#: C/hello-world.py.page:47
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys"
+
+#. (itstool) path: section/code
+#: C/hello-world.py.page:53
+#, no-wrap
+msgid ""
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" # constructor for a Gtk.ApplicationWindow\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Hello World!\", application=app)\n"
+" self.set_default_size(200, 100)\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)"
+msgstr ""
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" # constructor for a Gtk.ApplicationWindow\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Hello World!\", application=app)\n"
+" self.set_default_size(200, 100)\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)"
+
+#. (itstool) path: section/p
+#: C/hello-world.py.page:71 C/hello-world.vala.page:54
+msgid ""
+"Gtk.Application initializes GTK+. It also connects the <gui>x</gui> button "
+"that's automatically generated along with the window to the \"destroy\" "
+"signal."
+msgstr ""
+"«Gtk.Application» inicializa GTK+. También conecta el botón <gui>x</gui>, "
+"que se genera automáticamente junto con la ventana, a la señal «destroy»."
+
+#. (itstool) path: section/p
+#: C/hello-world.py.page:72
+msgid ""
+"We can start building our first window. We do this by creating a class "
+"called <var>MyWindow</var> and assigning it a Gtk.ApplicationWindow."
+msgstr ""
+"Se puede empezar a construir la primera ventana. Esto se hace creando una "
+"clase llamada <var>MyWindow</var> y asignándole una «Gtk.ApplicationWindow»."
+
+#. (itstool) path: section/code
+#: C/hello-world.py.page:78
+#, no-wrap
+msgid ""
+"# Add a label widget to your window\n"
+"\n"
+" # create a label\n"
+" label = Gtk.Label()\n"
+"\n"
+" # set the text of the label\n"
+" label.set_text(\"Hello GNOME!\")\n"
+"\n"
+" # add the label to the window\n"
+" self.add(label)"
+msgstr ""
+"# Add a label widget to your window\n"
+"\n"
+" # create a label\n"
+" label = Gtk.Label()\n"
+"\n"
+" # set the text of the label\n"
+" label.set_text(\"Hello GNOME!\")\n"
+"\n"
+" # add the label to the window\n"
+" self.add(label)"
+
+#. (itstool) path: section/p
+#: C/hello-world.py.page:89
+msgid ""
+"A text label is one of the GTK+ widgets we can use, on account of having "
+"imported the GTK+ library. To use it, we create a variable called "
+"<var>label</var> and set the text that the label will hold. Finally, we "
+"create and run the application:"
+msgstr ""
+"Una etiqueta de texto es uno de los widgets de GTK+ que puede usar si "
+"importó la biblioteca GTK+. Para usarlo, cree una variable nueva llamada "
+"<var>label</var> y establezca el texto que la etiqueta contendrá. "
+"Finalmente, se crea y ejecuta la aplicación:"
+
+#. (itstool) path: section/code
+#: C/hello-world.py.page:91
+#, no-wrap
+msgid ""
+"#run the application\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)"
+msgstr ""
+"#run the application\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)"
+
+#. (itstool) path: section/title
+#: C/hello-world.py.page:101
+msgid "hello-world.py"
+msgstr "hola-mundo.py"
+
+#. (itstool) path: section/code
+#: C/hello-world.py.page:103 C/label.py.page:39
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # constructor for a Gtk.ApplicationWindow\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+" self.set_default_size(200, 100)\n"
+"\n"
+" # create a label\n"
+" label = Gtk.Label()\n"
+" # set the text of the label\n"
+" label.set_text(\"Hello GNOME!\")\n"
+" # add the label to the window\n"
+" self.add(label)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # constructor for a Gtk.ApplicationWindow\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+" self.set_default_size(200, 100)\n"
+"\n"
+" # create a label\n"
+" label = Gtk.Label()\n"
+" # set the text of the label\n"
+" label.set_text(\"Hello GNOME!\")\n"
+" # add the label to the window\n"
+" self.add(label)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/p
+#: C/hello-world.py.page:107
+msgid ""
+"To run this application, first save it as hello-world.py. Then open "
+"Terminal, go to the folder where your application is stored and run:"
+msgstr ""
+"Para ejecutar esta aplicación, primero guárdela como hello-world.py. Luego, "
+"vaya a la carpeta donde está la aplicación."
+
+#. (itstool) path: section/screen
+#: C/hello-world.py.page:108
+#, no-wrap
+msgid "<output style=\"prompt\">$ </output><input>python hello-world.py</input>"
+msgstr "<output style=\"prompt\">$ </output><input>python hola-mundo.py</input>"
+
+#. (itstool) path: section/code
+#: C/hello-world.py.page:144
+#, no-wrap
+msgid ""
+"# The actual runnable program is set to the SCRIPTS primitive.\n"
+"# # Prefix bin_ tells where to copy this\n"
+"bin_SCRIPTS = hello-world.py\n"
+"# # List of files to be distributed\n"
+"EXTRA_DIST= \\\n"
+"\t$(bin_SCRIPTS)\n"
+"#\n"
+"# # The desktop files\n"
+"desktopdir = $(datadir)/applications\n"
+"desktop_DATA = \\\n"
+"\thello-world.desktop\n"
+msgstr ""
+"# The actual runnable program is set to the SCRIPTS primitive.\n"
+"# # Prefix bin_ tells where to copy this\n"
+"bin_SCRIPTS = hello-world.py\n"
+"# # List of files to be distributed\n"
+"EXTRA_DIST= \\\n"
+"\t$(bin_SCRIPTS)\n"
+"#\n"
+"# # The desktop files\n"
+"desktopdir = $(datadir)/applications\n"
+"desktop_DATA = \\\n"
+"\thello-world.desktop\n"
+
+#. (itstool) path: info/title
+#: C/hello-world.vala.page:9
+msgctxt "text"
+msgid "Hello World (Vala)"
+msgstr "Hola mundo (Vala)"
+
+#. (itstool) path: item/p
+#: C/hello-world.vala.page:32
+msgid "create a small \"Hello, World\" application using GTK+"
+msgstr "crear una pequeña aplicación «Hola, mundo» usando GTK+"
+
+#. (itstool) path: section/code
+#: C/hello-world.vala.page:45
+#, no-wrap
+msgid ""
+"class MyApplication : Gtk.Application {\n"
+" protected override void activate () {\n"
+" var window = new Gtk.ApplicationWindow (this);\n"
+" window.set_title (\"Welcome to GNOME\");\n"
+" window.set_default_size (200, 100);\n"
+" window.show_all ();\n"
+" }\n"
+"}"
+msgstr ""
+"class MyApplication : Gtk.Application {\n"
+" protected override void activate () {\n"
+" var window = new Gtk.ApplicationWindow (this);\n"
+" window.set_title (\"Welcome to GNOME\");\n"
+" window.set_default_size (200, 100);\n"
+" window.show_all ();\n"
+" }\n"
+"}"
+
+#. (itstool) path: section/p
+#: C/hello-world.vala.page:55
+msgid ""
+"We can start building our first window. We do this by creating a variable "
+"called <var>window</var> and assigning it a new Gtk.ApplicationWindow."
+msgstr ""
+"Se puede empezar a construir la primera ventana. Esto se hace creando una "
+"variable llamada <var>window</var> y asignándole una «Gtk.ApplicationWindow»."
+
+#. (itstool) path: section/p
+#: C/hello-world.vala.page:56
+msgid ""
+"We give the window a title using <code>set_title</code>. The title can be "
+"any string you want it to be. To be on the safe side, it's best to stick to "
+"UTF-8 encoding."
+msgstr ""
+"Se le asignara una propiedad llamada <code>set_title</code>. El título puede "
+"ser la cadena que quiera pero, para estar seguro, es conveniente que tenga "
+"una codificación UTF-8."
+
+#. (itstool) path: section/code
+#: C/hello-world.vala.page:61
+#, no-wrap
+msgid ""
+"var label = new Gtk.Label (\"Hello GNOME!\");\n"
+" window.add (label);\n"
+msgstr ""
+"var label = new Gtk.Label (\"Hello GNOME!\");\n"
+" window.add (label);\n"
+
+#. (itstool) path: section/p
+#: C/hello-world.vala.page:65
+msgid "Finally, we create and run the application:"
+msgstr "Por último, se crea y ejecuta la aplicación"
+
+#. (itstool) path: section/code
+#: C/hello-world.vala.page:67
+#, no-wrap
+msgid ""
+"int main (string[] args) {\n"
+" return new MyApplication ().run (args);\n"
+"}"
+msgstr ""
+"int main (string[] args) {\n"
+" return new MyApplication ().run (args);\n"
+"}"
+
+#. (itstool) path: section/title
+#: C/hello-world.vala.page:75
+msgid "hello-world.vala"
+msgstr "hello-world.vala"
+
+#. (itstool) path: section/code
+#: C/hello-world.vala.page:77
+#, no-wrap
+msgid ""
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\tvar label = new Gtk.Label (\"Hello GNOME!\");\n"
+"\t\twindow.add (label);\n"
+"\t\twindow.set_title (\"Welcome to GNOME\");\n"
+"\t\twindow.set_default_size (200, 100);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\tvar label = new Gtk.Label (\"Hello GNOME!\");\n"
+"\t\twindow.add (label);\n"
+"\t\twindow.set_title (\"Welcome to GNOME\");\n"
+"\t\twindow.set_default_size (200, 100);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: section/p
+#: C/hello-world.vala.page:81
+msgid ""
+"To run this application, first save it as hello-world.vala. Then open "
+"Terminal, go to the folder where your application is stored."
+msgstr ""
+"Para ejecutar esta aplicación, primero guárdela como hello-world.vala. "
+"Luego, vaya a la carpeta donde está la aplicación."
+
+#. (itstool) path: section/p
+#: C/hello-world.vala.page:82
+msgid "Compile the program:"
+msgstr "Compilar el programa:"
+
+#. (itstool) path: section/screen
+#: C/hello-world.vala.page:83
+#, no-wrap
+msgid "valac --pkg gtk+-3.0 <file>hello-world.vala</file>"
+msgstr "valac --pkg gtk+-3.0 <file>hello-world.vala</file>"
+
+#. (itstool) path: section/p
+#: C/hello-world.vala.page:84
+msgid "Run the program:"
+msgstr "Ejecutar el programa:"
+
+#. (itstool) path: section/screen
+#: C/hello-world.vala.page:85
+#, no-wrap
+msgid "./<var>hello-world</var>"
+msgstr "./<var>hello-world</var>"
+
+#. (itstool) path: section/code
+#: C/hello-world.vala.page:121
+#, no-wrap
+msgid ""
+"# The actual runnable program is set to the SCRIPTS primitive.\n"
+"# # Prefix bin_ tells where to copy this\n"
+"bin_PROGRAMS = hello-world\n"
+"hello_world_CFLAGS = $(gtk_CFLAGS)\n"
+"hello_world_LDADD = $(gtk_LIBS)\n"
+"hello_world_VALAFLAGS = --pkg gtk+-3.0\n"
+"hello_world_SOURCES = hello-world.vala\n"
+"\n"
+"desktopdir = $(datadir)/applications\n"
+"desktop_DATA = \\\n"
+"\thello-world.desktop\n"
+msgstr ""
+"# The actual runnable program is set to the SCRIPTS primitive.\n"
+"# # Prefix bin_ tells where to copy this\n"
+"bin_PROGRAMS = hello-world\n"
+"hello_world_CFLAGS = $(gtk_CFLAGS)\n"
+"hello_world_LDADD = $(gtk_LIBS)\n"
+"hello_world_VALAFLAGS = --pkg gtk+-3.0\n"
+"hello_world_SOURCES = hello-world.vala\n"
+"\n"
+"desktopdir = $(datadir)/applications\n"
+"desktop_DATA = \\\n"
+"\thello-world.desktop\n"
+
+#. (itstool) path: section/code
+#: C/hello-world.vala.page:126
+#, no-wrap
+msgid ""
+"# This file is processed by autoconf to create a configure script\n"
+"AC_INIT([Hello World], 1.0)\n"
+"AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
+"AC_PROG_CC\n"
+"AM_PROG_VALAC([0.16])\n"
+"PKG_CHECK_MODULES(gtk, gtk+-3.0)\n"
+"AC_CONFIG_FILES([Makefile hello-world.desktop])\n"
+"\n"
+"AC_OUTPUT\n"
+msgstr ""
+"# This file is processed by autoconf to create a configure script\n"
+"AC_INIT([Hello World], 1.0)\n"
+"AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n"
+"AC_PROG_CC\n"
+"AM_PROG_VALAC([0.16])\n"
+"PKG_CHECK_MODULES(gtk, gtk+-3.0)\n"
+"AC_CONFIG_FILES([Makefile hello-world.desktop])\n"
+"\n"
+"AC_OUTPUT\n"
+
+#. (itstool) path: section/p
+#: C/hello-world.vala.page:133
+msgid ""
+"When you have the <file>hello-world.c</file>, <file>hello-world.desktop.in</"
+"file>, <file>Makefile.am</file>, <file>configure.ac</file> and <file>autogen."
+"sh</file> files with correct information and rights, the <file>README</file> "
+"file can include the following instructions:"
+msgstr ""
+"Cuando tenga los archivos <file>hello-world</file>, <file>hello-world."
+"desktop.in</file>, <file>Makefile.am</file>, <file>configure.ac</file> y "
+"<file>autogen.sh</file> con la información y los permisos correctos, el "
+"archivo <file>README</file> puede incluir las siguientes instrucciones:"
+
+#. (itstool) path: section/code
+#: C/hello-world.vala.page:134
+#, no-wrap
+msgid ""
+"To build and install this program:\n"
+"\n"
+"./autogen.sh --prefix=/home/your_username/.local\n"
+"make\n"
+"make install\n"
+"\n"
+"-------------\n"
+"Running the first line above creates the following files:\n"
+"\n"
+"aclocal.m4\n"
+"autom4te.cache\n"
+"config.log\n"
+"config.status\n"
+"configure\n"
+"depcomp\n"
+"hello-world\n"
+"hello-world.c\n"
+"hello-world.desktop\n"
+"hello_world-hello-world.o\n"
+"hello_world_vala.stamp\n"
+"install-sh\n"
+"missing\n"
+"Makefile.in\n"
+"Makefile\n"
+"\n"
+"Running \"make\" links all the appropriate libraries.\n"
+"\n"
+"Running \"make install\", installs the application in /home/your_username/.local/bin\n"
+"and installs the hello-world.desktop file in /home/your_username/.local/share/applications\n"
+"\n"
+"You can now run the application by typing \"Hello World\" in the Overview.\n"
+"\n"
+"----------------\n"
+"To uninstall, type:\n"
+"\n"
+"make uninstall\n"
+"\n"
+"----------------\n"
+"To create a tarball type:\n"
+"\n"
+"make distcheck\n"
+"\n"
+"This will create hello-world-1.0.tar.xz\n"
+msgstr ""
+"Para compilar e instalar este programa:\n"
+"\n"
+"./autogen.sh --prefix=/home/usuario/.local\n"
+"make install\n"
+"\n"
+"-------------\n"
+"Al ejecutar la primera línea se crean los siguientes archivos:\n"
+"\n"
+"aclocal.m4\n"
+"autom4te.cache\n"
+"config.log\n"
+"config.status\n"
+"configure\n"
+"helloWorld.desktop\n"
+"install-sh\n"
+"missing\n"
+"Makefile.in\n"
+"Makefile\n"
+"\n"
+"Al ejecutar «make install», se instala la aplicación en /home/usuario/.local/bin\n"
+"y se instala el archivo helloWorld.desktop en /home/usuario/.local/share/applications\n"
+"\n"
+"ahora puede ejecutar la aplicación escribiendo «Hello World» en la vista general.\n"
+"\n"
+"----------------\n"
+"Para desinstalarla, escriba:\n"
+"\n"
+"make uninstall\n"
+"\n"
+"----------------\n"
+"Para crear un archivador tar, escriba:\n"
+"\n"
+"make distcheck\n"
+"\n"
+"Esto creará el archivo hello-world-1.0.tar.xz\n"
+"\n"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/image.c.page:22 C/image.js.page:21 C/image.py.page:29
+#: C/image.vala.page:22
+msgctxt "_"
+msgid "external ref='media/image.png' md5='9416aa74d9d6a857783f7a36338e7a02'"
+msgstr "external ref='media/image.png' md5='9416aa74d9d6a857783f7a36338e7a02'"
+
+#. (itstool) path: info/title
+#: C/image.c.page:8
+msgctxt "text"
+msgid "Image (C)"
+msgstr "Image (C)"
+
+#. (itstool) path: info/desc
+#: C/image.c.page:18 C/image.js.page:17 C/image.py.page:25
+#: C/image.vala.page:18
+msgid "A widget displaying an image"
+msgstr "Un widget que muestra una imagen"
+
+#. (itstool) path: page/title
+#: C/image.c.page:21 C/image.js.page:20 C/image.py.page:28
+#: C/image.vala.page:21
+msgid "Image"
+msgstr "Image"
+
+#. (itstool) path: page/p
+#: C/image.c.page:23 C/image.js.page:22 C/image.py.page:30
+#: C/image.vala.page:23
+msgid "This GtkApplication displays an image file from the current directory."
+msgstr ""
+"Esta GtkApplication muestra una archivo de imagen de la carpeta actual."
+
+#. (itstool) path: note/p
+#: C/image.c.page:24 C/image.js.page:23 C/image.vala.page:24
+msgid ""
+"If the image file isn't loaded successfully, the image will contain a "
+"\"broken image\" icon. The <file>filename.png</file> needs to be in the "
+"current directory for this code to work. Use your favorite picture!"
+msgstr ""
+"Si el archivo de imagen no se ha cargado correctamente, la imagen tendrá un "
+"icono de «imagen rota» El archivo <file>nombre_archivo.png</file> debe estar "
+"en la carpeta actual para que este código funcione. Use su imagen favorita."
+
+#. (itstool) path: page/code
+#: C/image.c.page:28
+#, no-wrap
+msgid ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *image;\n"
+"\n"
+" /*Create a window with a title and a default size*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);\n"
+"\n"
+" image = gtk_image_new_from_file (\"gnome-image.png\");\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (image));\n"
+"\n"
+" gtk_widget_show_all (GTK_WIDGET (window));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *image;\n"
+"\n"
+" /*Create a window with a title and a default size*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);\n"
+"\n"
+" image = gtk_image_new_from_file (\"gnome-image.png\");\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (image));\n"
+"\n"
+" gtk_widget_show_all (GTK_WIDGET (window));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/image.c.page:35
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkImage.html"
+"\">GtkImage</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkImage.html"
+"\">GtkImage</link>"
+
+#. (itstool) path: info/title
+#: C/image.js.page:7
+msgctxt "text"
+msgid "Image (JavaScript)"
+msgstr "Image (JavaScript)"
+
+#. (itstool) path: page/code
+#: C/image.js.page:27
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ImageExample = new Lang.Class ({\n"
+"\tName: 'Image Example',\n"
+"\n"
+"\t/* Create the application itself\n"
+"\t This boilerplate code is needed to build any GTK+ application. */\n"
+" _init: function () {\n"
+" \t this.application = new Gtk.Application ({\n"
+" \t application_id: 'org.example.jsimage',\n"
+" \t flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" \t });\n"
+"\n"
+"\t// Connect 'activate' and 'startup' signals to the callback functions\n"
+"\tthis.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+"\tthis.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+"\t},\n"
+"\n"
+"\t// Callback function for 'activate' signal presents windows when active\n"
+"\t_onActivate: function () {\n"
+"\t\tthis._window.present ();\n"
+"\t},\n"
+"\n"
+"\t// Callback function for 'startup' signal initializes menus and builds the UI\n"
+"\t_onStartup: function () {\n"
+"\t\tthis._buildUI ();\n"
+"\t},\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\t// Build the application's UI\n"
+"\t_buildUI: function () {\n"
+"\n"
+"\t\t// Create the application window\n"
+" \tthis._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" \t window_position: Gtk.WindowPosition.CENTER,\n"
+" \t title: \"Welcome to GNOME\",\n"
+" \t default_height: 300,\n"
+" \t default_width: 300 });\n"
+"\n"
+"\t\t// Create the label\n"
+"\t\tthis.jsimage = new Gtk.Image ({file: \"gnome-image.png\"});\n"
+"\t\tthis._window.add (this.jsimage);\n"
+"\n"
+" \t \t// Show the window and all child widgets\n"
+" \t \tthis._window.show_all();\n"
+"\t}\n"
+"\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ImageExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ImageExample = new Lang.Class ({\n"
+"\tName: 'Image Example',\n"
+"\n"
+"\t/* Create the application itself\n"
+"\t This boilerplate code is needed to build any GTK+ application. */\n"
+" _init: function () {\n"
+" \t this.application = new Gtk.Application ({\n"
+" \t application_id: 'org.example.jsimage',\n"
+" \t flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" \t });\n"
+"\n"
+"\t// Connect 'activate' and 'startup' signals to the callback functions\n"
+"\tthis.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+"\tthis.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+"\t},\n"
+"\n"
+"\t// Callback function for 'activate' signal presents windows when active\n"
+"\t_onActivate: function () {\n"
+"\t\tthis._window.present ();\n"
+"\t},\n"
+"\n"
+"\t// Callback function for 'startup' signal initializes menus and builds the UI\n"
+"\t_onStartup: function () {\n"
+"\t\tthis._buildUI ();\n"
+"\t},\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\t// Build the application's UI\n"
+"\t_buildUI: function () {\n"
+"\n"
+"\t\t// Create the application window\n"
+" \tthis._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" \t window_position: Gtk.WindowPosition.CENTER,\n"
+" \t title: \"Welcome to GNOME\",\n"
+" \t default_height: 300,\n"
+" \t default_width: 300 });\n"
+"\n"
+"\t\t// Create the label\n"
+"\t\tthis.jsimage = new Gtk.Image ({file: \"gnome-image.png\"});\n"
+"\t\tthis._window.add (this.jsimage);\n"
+"\n"
+" \t \t// Show the window and all child widgets\n"
+" \t \tthis._window.show_all();\n"
+"\t}\n"
+"\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ImageExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/image.js.page:34
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html"
+"\">Gtk.Image</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html"
+"\">Gtk.Image</link>"
+
+#. (itstool) path: info/title
+#: C/image.py.page:8
+msgctxt "text"
+msgid "Image (Python)"
+msgstr "Image (Python)"
+
+#. (itstool) path: credit/name
+#: C/image.py.page:20
+msgid "Sindhu S"
+msgstr "Sindhu S"
+
+#. (itstool) path: credit/years
+#: C/image.py.page:22
+msgid "2014"
+msgstr "2014"
+
+#. (itstool) path: note/p
+#: C/image.py.page:32
+msgid ""
+"If the image file is not loaded successfully, the image will contain a "
+"\"broken image\" icon. <file>filename.png</file> needs to be in the current "
+"directory for this code to work."
+msgstr ""
+"Si el archivo de imagen no se carga correctamente, la imagen tendrá un icono "
+"de «imagen rota». El archivo <file>nombre_archivo.png</file> debe estar en "
+"la carpeta actual para que este código funcione."
+
+#. (itstool) path: section/code
+#: C/image.py.page:43
+#, no-wrap
+msgid ""
+"\n"
+" from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # create a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+" self.set_default_size(300, 300)\n"
+"\n"
+" # create an image\n"
+" image = Gtk.Image()\n"
+" # set the content of the image as the file filename.png\n"
+" image.set_from_file(\"gnome-image.png\")\n"
+" # add the image to the window\n"
+" self.add(image)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+"\n"
+" "
+msgstr ""
+"\n"
+" from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # create a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+" self.set_default_size(300, 300)\n"
+"\n"
+" # create an image\n"
+" image = Gtk.Image()\n"
+" # set the content of the image as the file filename.png\n"
+" image.set_from_file(\"gnome-image.png\")\n"
+" # add the image to the window\n"
+" self.add(image)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+"\n"
+" "
+
+#. (itstool) path: section/p
+#: C/image.py.page:47
+msgid ""
+"Another way to obtain what we have in the example is to create the image as "
+"an instance of another class and add it to the instance of <code>MyWindow</"
+"code> in the <code>do_activate(self)</code> method:"
+msgstr ""
+"Otra manera de obtener lo que se tiene en el ejemplo es crear la imagen como "
+"una instancia de otra clase y añadírsela a la instancia de <code>MyWindow</"
+"code> en el método <code>do_activate(self)</code>:"
+
+#. (itstool) path: section/code
+#: C/image.py.page:51
+#, no-wrap
+msgid ""
+"\n"
+" # a class to create a window\n"
+" class MyWindow(Gtk.ApplicationWindow):\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+" self.set_default_size(300, 300)\n"
+"\n"
+" # a class to create an image\n"
+" class MyImage(Gtk.Image):\n"
+" def __init__(self):\n"
+" Gtk.Image.__init__(self)\n"
+" self.set_from_file(\"gnome-image.png\")\n"
+"\n"
+" class MyApplication(Gtk.Application):\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" # create an instance of MyWindow\n"
+" win = MyWindow(self)\n"
+" # create an instance of MyImage and add it to the window\n"
+" win.add(MyImage())\n"
+" # show the window and everything on it\n"
+" win.show_all()\n"
+" "
+msgstr ""
+"\n"
+" # a class to create a window\n"
+" class MyWindow(Gtk.ApplicationWindow):\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+" self.set_default_size(300, 300)\n"
+"\n"
+" # a class to create an image\n"
+" class MyImage(Gtk.Image):\n"
+" def __init__(self):\n"
+" Gtk.Image.__init__(self)\n"
+" self.set_from_file(\"gnome-image.png\")\n"
+"\n"
+" class MyApplication(Gtk.Application):\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" # create an instance of MyWindow\n"
+" win = MyWindow(self)\n"
+" # create an instance of MyImage and add it to the window\n"
+" win.add(MyImage())\n"
+" # show the window and everything on it\n"
+" win.show_all()\n"
+" "
+
+#. (itstool) path: note/p
+#: C/image.py.page:78
+msgid ""
+"To use this code snippet, you will need to add the code that imports "
+"<code>Gtk</code> and <code>GdkPixbuf</code> from <code>gi.repository</code> "
+"and lines that instantiate the <code>MyApplication</code> window."
+msgstr ""
+"Para usar este fragmento de código necesitará aádir el código que importa "
+"<code>Gtk</code> y <code>GdkPixbuf</code> desde <code>gi.repository</code> y "
+"las líneas que crean una instancia de la ventana <code>MyApplication</code>."
+
+#. (itstool) path: section/title
+#: C/image.py.page:85
+msgid "Useful methods for an Image widget"
+msgstr "Métodos útiles para un widget «Image»"
+
+#. (itstool) path: item/p
+#: C/image.py.page:89
+msgid ""
+"To load an image over a network use <code>set_from_pixbuf(pixbuf)</code>, "
+"where <code>pixbuf</code> is a <link href=\"https://developer.gnome.org/gdk-"
+"pixbuf/unstable/index.html\"> GdkPixbuf</link>."
+msgstr ""
+"Para cargar una imagen por red, use <code>set_from_pixbuf(pixbuf)</code>, "
+"donde <code>pixbuf</code> es un <link href=\"http://developer.gnome.org/gdk-"
+"pixbuf/unstable//index.html\"> GdkPixbuf</link>."
+
+#. (itstool) path: item/code
+#: C/image.py.page:93
+#, no-wrap
+msgid ""
+"\n"
+" from gi.repository import Gtk\n"
+" from gi.repository import GdkPixbuf\n"
+" import sys\n"
+"\n"
+" class MyWindow(Gtk.ApplicationWindow):\n"
+" # create a window\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+" self.set_default_size(300, 300)\n"
+"\n"
+" # create a pixbuf from file filename=\"gnome-image.png\", with width=32\n"
+" # and height=64 amd boolean preserve_aspect_ratio=False.\n"
+" pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(\"gnome-image.png\", 64, 128, False)\n"
+"\n"
+" # create an image\n"
+" image = Gtk.Image()\n"
+" # set the content of the image as the pixbuf\n"
+" image.set_from_pixbuf(pixbuf)\n"
+" # add the image to the window\n"
+" self.add(image)\n"
+" "
+msgstr ""
+"\n"
+" from gi.repository import Gtk\n"
+" from gi.repository import GdkPixbuf\n"
+" import sys\n"
+"\n"
+" class MyWindow(Gtk.ApplicationWindow):\n"
+" # create a window\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+" self.set_default_size(300, 300)\n"
+"\n"
+" # create a pixbuf from file filename=\"gnome-image.png\", with width=32\n"
+" # and height=64 amd boolean preserve_aspect_ratio=False.\n"
+" pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(\"gnome-image.png\", 64, 128, False)\n"
+"\n"
+" # create an image\n"
+" image = Gtk.Image()\n"
+" # set the content of the image as the pixbuf\n"
+" image.set_from_pixbuf(pixbuf)\n"
+" # add the image to the window\n"
+" self.add(image)\n"
+" "
+
+#. (itstool) path: item/p
+#: C/image.py.page:115
+msgid ""
+"If <code>preserve_aspect_ratio=True</code> we can use "
+"<code>new_from_file_at_size(filename, width, height)</code>. If <code>width</"
+"code> or <code>height</code> is <code>-1</code>, it is not constrained."
+msgstr ""
+"Si <code>preserve_aspect_ratio=True</code> puede usar "
+"<code>new_from_file_at_size(nombre_archivo, anchura, altura)</code>. Si "
+"<code>anchura</code> o <code>altura</code> son <code>-1</code>, no se "
+"restringen."
+
+#. (itstool) path: item/p
+#: C/image.py.page:119
+msgid ""
+"For loading from an input stream, see <code>new_from_stream()</code> and "
+"<code>new_from_stream_at_scale()</code> in the documentation."
+msgstr ""
+"Para cargar de un flujo de entrada, consulte <code>new_from_stream()</code> "
+"y <code>new_from_stream_at_scale()</code> en la documentación."
+
+#. (itstool) path: item/p
+#: C/image.py.page:131
+msgid ""
+"<link href=\"https://developer.gnome.org/gtk3/unstable/GtkImage.html\"> "
+"GtkImage</link>"
+msgstr ""
+"<link href=\"https://developer.gnome.org/gtk3/unstable/GtkImage.html\"> "
+"GtkImage</link>"
+
+#. (itstool) path: item/p
+#: C/image.py.page:135
+msgid ""
+"<link href=\"https://developer.gnome.org/gtk3/unstable/GtkWindow.html\"> "
+"GtkWindow</link>"
+msgstr ""
+"<link href=\"https://developer.gnome.org/gtk3/unstable/GtkWindow.html\"> "
+"GtkWindow</link>"
+
+#. (itstool) path: info/title
+#: C/image.vala.page:8
+msgctxt "text"
+msgid "Image (Vala)"
+msgstr "Imagen (Vala)"
+
+#. (itstool) path: page/code
+#: C/image.vala.page:27
+#, no-wrap
+msgid ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
+"\n"
+"\t\tvar image = new Gtk.Image ();\n"
+"\t\timage.set_from_file (\"gnome-image.png\");\n"
+"\t\tthis.add (image);\n"
+"\t\tthis.set_default_size (300, 300);\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show_all ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
+"\n"
+"\t\tvar image = new Gtk.Image ();\n"
+"\t\timage.set_from_file (\"gnome-image.png\");\n"
+"\t\tthis.add (image);\n"
+"\t\tthis.set_default_size (300, 300);\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show_all ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/image.vala.page:32 C/separator.vala.page:40
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Application.html"
+"\">GtkApplication</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Application.html"
+"\">GtkApplication</link>"
+
+#. (itstool) path: item/p
+#: C/image.vala.page:33
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ApplicationWindow.html"
+"\">GtkApplicationWindow</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ApplicationWindow.html"
+"\">GtkApplicationWindow</link>"
+
+#. (itstool) path: item/p
+#: C/image.vala.page:34 C/paned.vala.page:38
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Image.html\">GtkImage</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Image.html\">GtkImage</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/image-viewer.c.page:39 C/image-viewer.cpp.page:37
+#: C/image-viewer.js.page:47 C/image-viewer.py.page:46
+#: C/image-viewer.vala.page:54
+msgctxt "_"
+msgid ""
+"external ref='media/image-viewer.png' md5='7720360611243b14283b83527be968c2'"
+msgstr ""
+"external ref='media/image-viewer.png' md5='7720360611243b14283b83527be968c2'"
+
+#. (itstool) path: info/title
+#: C/image-viewer.c.page:8
+msgctxt "text"
+msgid "Image viewer (C)"
+msgstr "Visor de imágenes (C)"
+
+#. (itstool) path: info/desc
+#: C/image-viewer.c.page:11
+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."
+
+#. (itstool) path: page/title
+#: C/image-viewer.c.page:29 C/image-viewer.cpp.page:27
+#: C/image-viewer.js.page:29 C/image-viewer.py.page:29
+#: C/image-viewer.vala.page:37
+msgid "Image viewer"
+msgstr "Visor de imágenes"
+
+#. (itstool) path: synopsis/p
+#: C/image-viewer.c.page:32 C/image-viewer.cpp.page:30
+#: C/message-board.c.page:29 C/record-collection.js.page:32
+msgid "In this tutorial, you will learn:"
+msgstr "En este tutorial aprenderá:"
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:34
+msgid "Some basic concepts of C/GObject programming"
+msgstr "Algunos conceptos básicos de programación en C/GObject"
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:35
+msgid "How to write a Gtk application in C"
+msgstr "Cómo escribir una aplicación GTK en C"
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:49
+msgid ""
+"Choose <gui>GTK+ (Simple)</gui> from the <gui>C</gui> tab, click "
+"<gui>Continue</gui>, and fill out your details on the next few pages. Use "
+"<file>image-viewer</file> as project name and directory."
+msgstr ""
+"Seleccione <gui>GTK+ (simple)</gui> en la pestaña <gui>C</gui>, pulse "
+"<gui>Continuar</gui>, y rellene los detalles en las siguientes páginas. Use "
+"<file>visor-imagenes</file> como nombre del proyecto y de la carpeta."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:52
+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."
+msgstr ""
+"Asegúrese de que <gui>Usar GtkBuilder para la interfaz del usuario</gui> "
+"está desactivado, ya que, en este tutorial, la IU se creará manualmente. "
+"Revise el tutorial del <link xref=\"guitar-tuner.c\">afinador de guitarra</"
+"link> si quiere aprender a usar el constructor de interfaces."
+
+#. (itstool) path: section/p
+#: C/image-viewer.c.page:67
+msgid ""
+"C is a rather verbose language, so don't be surprised that the file contains "
+"quite a lot of code. Most of it is template code. It loads an (empty) window "
+"and shows it. More details are given below; skip this list if you understand "
+"the basics:"
+msgstr ""
+"C es un lenguaje más detallado, por lo que no se sorprenda de que el archivo "
+"contiene un gran cantidad de código. La mayor parte es código de plantilla. "
+"Carga una ventana (vacía) y se muestra. A continuación se ofrecen más "
+"detalles; omita esta lista si entiende los conceptos básicos:"
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:74
+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."
+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."
+
+#. (itstool) path: section/title
+#: C/image-viewer.c.page:90 C/image-viewer.cpp.page:87
+#: C/image-viewer.vala.page:139
+msgid "Creating the user interface"
+msgstr "Crear la interfaz de usuario"
+
+#. (itstool) path: section/p
+#: C/image-viewer.c.page:91
+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>:"
+msgstr ""
+"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>:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.c.page:94
+#, no-wrap
+msgid ""
+"\n"
+"static GtkWidget*\n"
+"create_window (void)\n"
+"{\n"
+"\tGtkWidget *window;\n"
+"\tGtkWidget *button;\n"
+"\tGtkWidget *image;\n"
+"\tGtkWidget *box;\n"
+"\n"
+"\t/* Set up the UI */\n"
+"\twindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n"
+"\tgtk_window_set_title (GTK_WINDOW (window), \"image-viewer-c\");\n"
+"\n"
+"\tbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);\n"
+"\tbutton = gtk_button_new_with_label (_(\"Open image\"));\n"
+"\timage = gtk_image_new ();\n"
+"\n"
+"\tgtk_box_pack_start (GTK_BOX (box), image, TRUE, TRUE, 0);\n"
+"\tgtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);\n"
+"\n"
+"\tgtk_container_add (GTK_CONTAINER (window), box);\n"
+"\n"
+"\t/* Connect signals */\n"
+"\n"
+"\t/* Show open dialog when opening a file */\n"
+"\tg_signal_connect (button, \"clicked\", G_CALLBACK (on_open_image), image);\n"
+"\n"
+"\t/* Exit when the window is closed */\n"
+"\tg_signal_connect (window, \"destroy\", G_CALLBACK (gtk_main_quit), NULL);\n"
+"\n"
+"\treturn window;\n"
+"}\n"
+msgstr ""
+"\n"
+"static GtkWidget*\n"
+"create_window (void)\n"
+"{\n"
+"\tGtkWidget *window;\n"
+"\tGtkWidget *button;\n"
+"\tGtkWidget *image;\n"
+"\tGtkWidget *box;\n"
+"\n"
+"\t/* Set up the UI */\n"
+"\twindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n"
+"\tgtk_window_set_title (GTK_WINDOW (window), \"image-viewer-c\");\n"
+"\n"
+"\tbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);\n"
+"\tbutton = gtk_button_new_with_label (_(\"Open image\"));\n"
+"\timage = gtk_image_new ();\n"
+"\n"
+"\tgtk_box_pack_start (GTK_BOX (box), image, TRUE, TRUE, 0);\n"
+"\tgtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);\n"
+"\n"
+"\tgtk_container_add (GTK_CONTAINER (window), box);\n"
+"\n"
+"\t/* Connect signals */\n"
+"\n"
+"\t/* Show open dialog when opening a file */\n"
+"\tg_signal_connect (button, \"clicked\", G_CALLBACK (on_open_image), image);\n"
+"\n"
+"\t/* Exit when the window is closed */\n"
+"\tg_signal_connect (window, \"destroy\", G_CALLBACK (gtk_main_quit), NULL);\n"
+"\n"
+"\treturn window;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:129
+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. The macros like <code>GTK_BOX</code> are used for dynamic type "
+"checking and casting which is needed as C doesn't support object-orientation "
+"out-of-the-box."
+msgstr ""
+"La primera línea crea los widgets que se quieren usar: un botón para abrir "
+"una imagen, el widget para ver la imagen y la caja que se usará como "
+"contenedor. Las macros como <code>GTK_BOX</code> se usan para comprobaciones "
+"de tipos dinámicos y conversiones de tipos necesarias, ya que C no soporta "
+"orientación a objetos."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:134
+msgid ""
+"The calls to <code>gtk_box_pack_start</code> add the two widgets to the box "
+"and define their behaviour. The image will expand into any available space "
+"while 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 ""
+"Las llamadas a <code>gtk_box_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 GTK+ 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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:140
+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."
+msgstr ""
+"Se debe definir qué sucede cuando el usuario pulsa el botón. GTK+ usa el "
+"concepto de <em>señales</em>. Cuando se pulsa el botón, emite la señal "
+"<em>clicked</em>, que se puede conectar a alguna acción. Esto se ha hecho "
+"usando el método <code>g_signal_connect</code>, que indica a GTK+ que llame "
+"a la función <code>on_image_open</code> cuando se pulsa el botón y que pase "
+"la imagen como un argumento adicional a la función. El <em>retorno de la "
+"llamada</em> se definirá en la siguiente sección."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:145
+msgid ""
+"The last <code>g_signal_connect()</code> makes sure that the application "
+"exits when the window is closed."
+msgstr ""
+"La última <code>g_signal_connect()</code> se asegura de que la aplicación "
+"finaliza al cerrar la ventana."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:148
+msgid ""
+"As a last step, make sure to replace the <code>gtk_widget_show</code> call "
+"in the <code>main()</code> function by <code>gtk_widget_show_all()</code> to "
+"show the window and all the widgets it contains."
+msgstr ""
+"Como último paso, asegúrese de reemplazar la llamada <code>gtk_widget_show</"
+"code>, en la función <code>main()</code>, por <code>gtk_widget_show_all()</"
+"code>, para mostrar todos los widgets que contiene la ventana."
+
+#. (itstool) path: section/title
+#: C/image-viewer.c.page:155 C/image-viewer.cpp.page:142
+#: C/image-viewer.vala.page:210
+msgid "Showing the image"
+msgstr "Mostrar la imagen"
+
+#. (itstool) path: section/p
+#: C/image-viewer.c.page:156
+msgid ""
+"We will now define the signal handler for the <em>clicked</em> signal or the "
+"button we mentioned before. Add this code before the <code>create_window()</"
+"code> method."
+msgstr ""
+"Ahora se definirá el manejador de la señal para la señal <em>clicked</em> en "
+"el botón mencionado anteriormente. Añada este código antes del método "
+"<code>create_window()</code>."
+
+#. (itstool) path: section/code
+#: C/image-viewer.c.page:159
+#, no-wrap
+msgid ""
+"\n"
+"static void\n"
+"on_open_image (GtkButton* button, gpointer user_data)\n"
+"{\n"
+"\tGtkWidget *image = GTK_WIDGET (user_data);\n"
+"\tGtkWidget *toplevel = gtk_widget_get_toplevel (image);\n"
+"\tGtkFileFilter *filter = gtk_file_filter_new ();\n"
+"\tGtkWidget *dialog = gtk_file_chooser_dialog_new (_(\"Open image\"),\n"
+"\t GTK_WINDOW (toplevel),\n"
+"\t GTK_FILE_CHOOSER_ACTION_OPEN,\n"
+"\t GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,\n"
+"\t GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,\n"
+"\t NULL);\n"
+"\n"
+"\tgtk_file_filter_add_pixbuf_formats (filter);\n"
+"\tgtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog),\n"
+"\t filter);\n"
+"\n"
+"\tswitch (gtk_dialog_run (GTK_DIALOG (dialog)))\n"
+"\t{\n"
+"\t\tcase GTK_RESPONSE_ACCEPT:\n"
+"\t\t{\n"
+"\t\t\tgchar *filename =\n"
+"\t\t\t\tgtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));\n"
+"\t\t\tgtk_image_set_from_file (GTK_IMAGE (image), filename);\n"
+"\t\t\tbreak;\n"
+"\t\t}\n"
+"\t\tdefault:\n"
+"\t\t\tbreak;\n"
+"\t}\n"
+"\tgtk_widget_destroy (dialog);\n"
+"}\n"
+msgstr ""
+"\n"
+"static void\n"
+"on_open_image (GtkButton* button, gpointer user_data)\n"
+"{\n"
+"\tGtkWidget *image = GTK_WIDGET (user_data);\n"
+"\tGtkWidget *toplevel = gtk_widget_get_toplevel (image);\n"
+"\tGtkFileFilter *filter = gtk_file_filter_new ();\n"
+"\tGtkWidget *dialog = gtk_file_chooser_dialog_new (_(\"Open image\"),\n"
+"\t GTK_WINDOW (toplevel),\n"
+"\t GTK_FILE_CHOOSER_ACTION_OPEN,\n"
+"\t GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,\n"
+"\t GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,\n"
+"\t NULL);\n"
+"\n"
+"\tgtk_file_filter_add_pixbuf_formats (filter);\n"
+"\tgtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog),\n"
+"\t filter);\n"
+"\n"
+"\tswitch (gtk_dialog_run (GTK_DIALOG (dialog)))\n"
+"\t{\n"
+"\t\tcase GTK_RESPONSE_ACCEPT:\n"
+"\t\t{\n"
+"\t\t\tgchar *filename =\n"
+"\t\t\t\tgtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));\n"
+"\t\t\tgtk_image_set_from_file (GTK_IMAGE (image), filename);\n"
+"\t\t\tbreak;\n"
+"\t\t}\n"
+"\t\tdefault:\n"
+"\t\t\tbreak;\n"
+"\t}\n"
+"\tgtk_widget_destroy (dialog);\n"
+"}\n"
+
+#. (itstool) path: section/p
+#: C/image-viewer.c.page:192 C/image-viewer.cpp.page:178
+#: C/image-viewer.js.page:283 C/image-viewer.py.page:197
+msgid ""
+"This is a bit more complicated than anything we've attempted so far, so "
+"let's break it down:"
+msgstr ""
+"Esto es un poco más complicado que todo lo que se ha intentado hasta ahora, "
+"así que se puede desglosar:"
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:194
+msgid ""
+"The first argument of the signal is always the widget that sent the signal. "
+"Sometimes other arguments related to the signal come after that, but "
+"<em>clicked</em> doesn't have any. Next is the <code>user_data</code> "
+"argument which is a pointer to the data we passed when connecting the "
+"signal. In this case it is our <code>GtkImage</code> object."
+msgstr ""
+"El primer argumento de la señal es siempre el widget que envía la señal. "
+"Algunas veces se añaden otros argumentos relativos a la señal, pero "
+"<em>clicked</em> no tiene ninguno. Lo siguiente es el argumento "
+"<code>user_data</code>, que es un puntero a los datos que se han pasado al "
+"conectar la señal. En este caso, es el objeto <code>GtkImage</code>."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:200
+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."
+msgstr ""
+"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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:204 C/image-viewer.cpp.page:186
+#: C/image-viewer.js.page:290 C/image-viewer.py.page:204
+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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:207
+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."
+msgstr ""
+"Las dos líneas siguientes restringen el diálogo <gui>Abrir</gui> para que "
+"sólo muestre archivos que se puedan abrir con «GtkImage». Primero se crea un "
+"objeto de filtro; luego se añaden los tipos de archivos soportados por el "
+"<code>GdkPixbuf</code> (que incluye la mayoría de los 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>."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:210
+msgid ""
+"<code>gtk_dialog_run</code> displays the <gui>Open</gui> dialog. The dialog "
+"will wait for the user to choose an image; when they do, "
+"<code>gtk_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."
+msgstr ""
+"<code>gtk_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>gtk_dialog_run</code> devolverá el valor <code>GTK_RESPONSE_ACCEPT</"
+"code> (devolvería <code>GTK_RESPONSE_CANCEL</code> si el usuario pulsara "
+"<gui>Cancelar</gui>). La sentencia <code>switch</code> comprueba esto."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:212
+msgid ""
+"Assuming that the user did click <gui>Open</gui>, the next line sets the "
+"<code>file</code> property of the GtkImage to the filename of the image "
+"selected by the user. The GtkImage will then load and display the chosen "
+"image."
+msgstr ""
+"Asumiendo que el usuario pulsó <gui>Abrir</gui>, la siguiente línea "
+"establece la propiedad <code>file</code> de la «GtkImage» con el nombre del "
+"archivo de imagen seleccionado por el usuario. La «GtkImage» cargará y "
+"mostrará la imagen elegida."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:215
+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."
+
+#. (itstool) path: section/p
+#: C/image-viewer.c.page:224 C/image-viewer.cpp.page:212
+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!"
+msgstr ""
+"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."
+
+#. (itstool) path: section/p
+#: C/image-viewer.c.page:229
+msgid ""
+"If you run into problems with the tutorial, compare your code with this "
+"<link href=\"image-viewer/image-viewer.c\">reference code</link>."
+msgstr ""
+"Si tiene problemas con este tutorial, compare su código con este <link href="
+"\"image-viewer/image-viewer.c\">código de referencia</link>."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:237 C/image-viewer.cpp.page:225
+#: C/image-viewer.js.page:325 C/image-viewer.py.page:239
+#: C/image-viewer.vala.page:298
+msgid ""
+"Have the user select a directory rather than a file, and provide controls to "
+"cycle through all of the images in a 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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:240 C/image-viewer.cpp.page:228
+#: C/image-viewer.js.page:328 C/image-viewer.py.page:242
+#: C/image-viewer.vala.page:301
+msgid ""
+"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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:241 C/image-viewer.cpp.page:229
+#: C/image-viewer.js.page:329 C/image-viewer.py.page:243
+#: C/image-viewer.vala.page:302
+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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:244 C/image-viewer.cpp.page:232
+#: C/image-viewer.js.page:332 C/image-viewer.py.page:246
+#: C/image-viewer.vala.page:305
+msgid ""
+"Allow the user to load images from network shares, scanners, and other more "
+"complicated sources."
+msgstr ""
+"Permitir al usuario cargar imágenes desde recursos de red compartidos, "
+"escáneres y otras fuentes más complicadas."
+
+#. (itstool) path: item/p
+#: C/image-viewer.c.page:245 C/image-viewer.cpp.page:233
+#: C/image-viewer.js.page:333 C/image-viewer.py.page:247
+#: C/image-viewer.vala.page:306
+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."
+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."
+
+#. (itstool) path: info/desc
+#: C/image-viewer.cpp.page:9
+msgid "A little bit more than a simple \"Hello world\" GTKmm application."
+msgstr "Algo más que una sencilla aplicación «Hola mundo» en GTKmm."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:32
+msgid "Some basic concepts of C++/GObject programming"
+msgstr "Algunos conceptos básicos de programación en C++/GObject"
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:33
+msgid "How to write a Gtk application in C++"
+msgstr "Cómo escribir una aplicación GTK en C++"
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:47
+msgid ""
+"Choose <gui>GTKmm (Simple)</gui> from the <gui>C++</gui> tab, click "
+"<gui>Forward</gui>, and fill out your details on the next few pages. Use "
+"<file>image-viewer</file> as project name and directory."
+msgstr ""
+"Elija <gui>GTKmm (simple)</gui> de la pestaña <gui>C++</gui>, pulse "
+"<gui>Adelante</gui> y rellene los detalles en las siguientes páginas. Use "
+"<file>visor-imagenes</file> como nombre de proyecto y de carpeta."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:50
+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.cpp\">Guitar-Tuner</link> tutorial if you want to learn how "
+"to use the interface builder."
+msgstr ""
+"Asegúrese de que <gui>Usar GtkBuilder para la interfaz del usuario</gui> "
+"está desactivado, ya que, en este tutorial, la IU se creará manualmente. "
+"Revise el tutorial del <link xref=\"guitar-tuner.cpp\">afinador de guitarra</"
+"link> si quiere aprender a usar el constructor de interfaces."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:55
+msgid ""
+"Click <gui>Apply</gui> and the project will be created for you. Open "
+"<file>src/main.cc</file> from the <gui>Project</gui> or <gui>File</gui> "
+"tabs. You should see some code which starts with the lines:"
+msgstr ""
+"Pulse <gui>Aplicar</gui> y se creará el proyecto. Abra <file>src/main.cc</"
+"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:"
+
+#. (itstool) path: item/code
+#: C/image-viewer.cpp.page:56
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtkmm.h>\n"
+"#include <iostream>\n"
+"\n"
+"#include \"config.h\">"
+msgstr ""
+"\n"
+"#include <gtkmm.h>\n"
+"#include <iostream>\n"
+"\n"
+"#include \"config.h\">"
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:70
+msgid ""
+"The three <code>#include</code> lines at the top include the <code>config</"
+"code> (useful autoconf build defines), <code>gtkmm</code> (user interface) "
+"and <code>iostream</code> (C++-STL) libraries. Functions from these "
+"libraries are used in the rest of the code."
+msgstr ""
+"Las tres líneas <code>#include</code> en la parte superior incluyen las "
+"bibliotecas <code>config</code> (definiciones útiles para construcción con "
+"autoconf), <code>gtkmm</code> (interfaz de usuario) <code>iostream</code> (C+"
+"+-STL). Las funciones de estas bibliotecas se usan en el resto del código."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:73
+msgid ""
+"The <code>main</code> function creates a new (empty) window and sets the "
+"window title."
+msgstr ""
+"La función <code>main</code> crea una ventana (vacía) nueva y establece el "
+"título de la ventana."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:76
+msgid ""
+"The <code>kit::run()</code> call starts the GTKmm main loop, which runs the "
+"user interface and starts listening for events (like clicks and key "
+"presses). As we give the window as an argument to that function, the "
+"application will automatically exit when that window is closed."
+msgstr ""
+"La llamada <code>kit::run()</code> inicia el bucle principal de GTKmm, que "
+"ejecuta la interfaz de usuario y empieza a escuchar eventos (como "
+"pulsaciones del ratón y del teclado). Como se ha pasado la ventana como "
+"argumento a esta función, la aplicación se cerrará automáticamente cuando se "
+"cierre la ventana."
+
+#. (itstool) path: section/p
+#: C/image-viewer.cpp.page:88
+msgid ""
+"Now we will bring life into the empty window. GTKmm organizes the user "
+"interface with <code>Gtk::Container</code>s that can contain other widgets "
+"and even other containers. Here we will use the simplest available "
+"container, a <code>Gtk::Box</code>:"
+msgstr ""
+"Ahora se dará vida a la ventana vacía. GTKmm organiza la interfaz de usuario "
+"con varios <code>Gtk::Container</code> que pueden contener otros widgets e "
+"incluso otros contenedores. Aquí se usará el contenedor más sencillo "
+"disponible, una <code>Gtk::Box</code>:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.cpp.page:91
+#, no-wrap
+msgid ""
+"\n"
+"int\n"
+"main (int argc, char *argv[])\n"
+"{\n"
+"\tGtk::Main kit(argc, argv);\n"
+"\n"
+"\tGtk::Window main_win;\n"
+"\tmain_win.set_title (\"image-viewer-cpp\");\n"
+"\n"
+"\tGtk::Box* box = Gtk::manage(new Gtk::Box());\n"
+"\tbox->set_orientation (Gtk::ORIENTATION_VERTICAL);\n"
+"\tbox->set_spacing(6);\n"
+"\tmain_win.add(*box);\n"
+"\n"
+"\timage = Gtk::manage(new Gtk::Image());\n"
+"\tbox->pack_start (*image, true, true);\n"
+"\n"
+"\tGtk::Button* button = Gtk::manage(new Gtk::Button(\"Open Image…\"));\n"
+"\tbutton->signal_clicked().connect (\n"
+"\t\tsigc::ptr_fun(&on_open_image));\n"
+"\tbox->pack_start (*button, false, false);\n"
+"\n"
+"\tmain_win.show_all_children();\n"
+"\tkit.run(main_win);\n"
+"\n"
+"\treturn 0;\n"
+"}\n"
+msgstr ""
+"\n"
+"int\n"
+"main (int argc, char *argv[])\n"
+"{\n"
+"\tGtk::Main kit(argc, argv);\n"
+"\n"
+"\tGtk::Window main_win;\n"
+"\tmain_win.set_title (\"image-viewer-cpp\");\n"
+"\n"
+"\tGtk::Box* box = Gtk::manage(new Gtk::Box());\n"
+"\tbox->set_orientation (Gtk::ORIENTATION_VERTICAL);\n"
+"\tbox->set_spacing(6);\n"
+"\tmain_win.add(*box);\n"
+"\n"
+"\timage = Gtk::manage(new Gtk::Image());\n"
+"\tbox->pack_start (*image, true, true);\n"
+"\n"
+"\tGtk::Button* button = Gtk::manage(new Gtk::Button(\"Open Image…\"));\n"
+"\tbutton->signal_clicked().connect (\n"
+"\t\tsigc::ptr_fun(&on_open_image));\n"
+"\tbox->pack_start (*button, false, false);\n"
+"\n"
+"\tmain_win.show_all_children();\n"
+"\tkit.run(main_win);\n"
+"\n"
+"\treturn 0;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:121
+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."
+msgstr ""
+"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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:124
+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."
+msgstr ""
+"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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:130
+msgid ""
+"We need to define what happens when the user clicks on the button. GTKmm "
+"uses the concept of <em>signals</em>. When the button is clicked, it fires "
+"the <em>clicked</em> signal, which we can connect to some action. This is "
+"done using the <code>signal_clicked().connect</code> method which tells "
+"GTKmm to call the <code>on_open_image</code> function when the button is "
+"clicked. We will define the <em>callback</em> in the next section."
+msgstr ""
+"Se debe definir qué sucede cuando el usuario pulsa el botón. GTKmm usa el "
+"concepto de <em>señales</em>. Cuando se pulsa el botón, emite la señal "
+"<em>clicked</em>, que se puede conectar a alguna acción. Esto se ha hecho "
+"usando el método <code>signal_clicked().connect</code>, que indica a GTKmm "
+"que llame a la función <code>on_open_image</code> cuando se pulsa el botón y "
+"que pase la imagen como un argumento adicional a la función. El <em>retorno "
+"de la llamada</em> se definirá en la siguiente sección."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:134
+msgid ""
+"The last step is to show all widgets in the window using "
+"<code>show_all_children()</code>. This is equivalent to using the "
+"<code>show()</code> method on all our child widgets."
+msgstr ""
+"El último paso es mostrar todos los widgets en la ventana usando "
+"<code>show_all_children()</code>. Esto es equivalente a usar el método "
+"<code>show()</code> en cada uno de los widgets."
+
+#. (itstool) path: section/p
+#: C/image-viewer.cpp.page:143
+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."
+msgstr ""
+"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>."
+
+#. (itstool) path: section/code
+#: C/image-viewer.cpp.page:146
+#, no-wrap
+msgid ""
+"\n"
+"Gtk::Image* image = 0;\n"
+"\n"
+"static void\n"
+"on_open_image ()\n"
+"{\n"
+"\tGtk::FileChooserDialog dialog(\"Open image\",\n"
+"\t Gtk::FILE_CHOOSER_ACTION_OPEN);\n"
+"\tdialog.add_button (Gtk::Stock::OPEN,\n"
+"\t Gtk::RESPONSE_ACCEPT);\n"
+"\tdialog.add_button (Gtk::Stock::CANCEL,\n"
+"\t Gtk::RESPONSE_CANCEL);\n"
+"\n"
+"\tGlib::RefPtr<Gtk::FileFilter> filter =\n"
+"\t\tGtk::FileFilter::create();\n"
+"\tfilter->add_pixbuf_formats();\n"
+"\tfilter->set_name(\"Images\");\n"
+"\tdialog.add_filter (filter);\n"
+"\n"
+"\tconst int response = dialog.run();\n"
+"\tdialog.hide();\n"
+"\n"
+"\tswitch (response)\n"
+"\t{\n"
+"\t\tcase Gtk::RESPONSE_ACCEPT:\n"
+"\t\t\timage->set(dialog.get_filename());\n"
+"\t\t\tbreak;\n"
+"\t\tdefault:\n"
+"\t\t\tbreak;\n"
+"\t}\n"
+"}\n"
+msgstr ""
+"\n"
+"Gtk::Image* image = 0;\n"
+"\n"
+"static void\n"
+"on_open_image ()\n"
+"{\n"
+"\tGtk::FileChooserDialog dialog(\"Open image\",\n"
+"\t Gtk::FILE_CHOOSER_ACTION_OPEN);\n"
+"\tdialog.add_button (Gtk::Stock::OPEN,\n"
+"\t Gtk::RESPONSE_ACCEPT);\n"
+"\tdialog.add_button (Gtk::Stock::CANCEL,\n"
+"\t Gtk::RESPONSE_CANCEL);\n"
+"\n"
+"\tGlib::RefPtr<Gtk::FileFilter> filter =\n"
+"\t\tGtk::FileFilter::create();\n"
+"\tfilter->add_pixbuf_formats();\n"
+"\tfilter->set_name(\"Images\");\n"
+"\tdialog.add_filter (filter);\n"
+"\n"
+"\tconst int response = dialog.run();\n"
+"\tdialog.hide();\n"
+"\n"
+"\tswitch (response)\n"
+"\t{\n"
+"\t\tcase Gtk::RESPONSE_ACCEPT:\n"
+"\t\t\timage->set(dialog.get_filename());\n"
+"\t\t\tbreak;\n"
+"\t\tdefault:\n"
+"\t\t\tbreak;\n"
+"\t}\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:181
+msgid ""
+"The dialog for choosing the file is created using the <code>Gtk::"
+"FileChooserDialog</code> constructor. This takes the title and type of the "
+"dialog. In our case, it is an <em>Open</em> dialog."
+msgstr ""
+"El diálogo para elegir el archivo se crea usando el constructor de "
+"<code>Gtk::FileChooserDialog</code>. La función toma el título y el tipo del "
+"diálogo. En este caso, es un diálogo de tipo <em>Open</em>."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:185
+msgid ""
+"The next two lines add an <em>Open</em> and a <em>Close</em> button to the "
+"dialog."
+msgstr ""
+"Las siguientes dos líneas añaden un botón <em>Abrir</em> y <em>Cerrar</em> "
+"en el diálogo."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:187
+msgid ""
+"The second argument to the <code>add_button()</code> method is a value to "
+"identify the clicked button. We use predefined values provided by GTKmm "
+"here, too."
+msgstr ""
+"El segundo argumento del método <code>add_button()</code> es un valor para "
+"identificar el botón pulsado. Aquí también se usan valores predefinidos "
+"proporcionados por GTKmm."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:192
+msgid ""
+"The next two lines restrict the <gui>Open</gui> dialog to only display files "
+"which can be opened by <code>Gtk::Image</code>. A filter object is created "
+"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 ""
+"Las dos líneas siguientes restringen el diálogo <gui>Abrir</gui> para que "
+"sólo muestre archivos que se puedan abrir con <code>Gtk::Image</code>. "
+"Primero se crea un objeto de filtro; luego se añaden los tipos de archivos "
+"soportados por el <code>Gdk::Pixbuf</code> (que incluye la mayoría de los "
+"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>."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:193
+msgid ""
+"<code>Glib::RefPtr</code> is a smart pointer used here, that makes sure that "
+"the filter is destroyed when there is no reference to it anymore."
+msgstr ""
+"<code>Glib::RefPtr</code> es un puntero inteligente usado aquí que se "
+"asegura de que el filtro se destruye cuando ya no se hace ninguna referencia "
+"a él."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:197
+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."
+msgstr ""
+"<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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:200
+msgid ""
+"We hide the <gui>Open</gui> dialog because we don't need it any more. The "
+"dialog would be hidden later anyway, as it is only a local variable and is "
+"destroyed (and therefore hidden) when the scope ends."
+msgstr ""
+"Se oculta el diálogo <gui>Abrir</gui> porque ya no se necesita más. El "
+"diálogo se ocultará de todos modos, ya que sólo es una variable local, y se "
+"destruye (y por lo tanto se oculta) cuando el ámbito termina."
+
+#. (itstool) path: item/p
+#: C/image-viewer.cpp.page:203
+msgid ""
+"Assuming that the user did click <gui>Open</gui>, the next line loads the "
+"file into the <code>Gtk::Image</code> so that it is displayed."
+msgstr ""
+"Asumiendo que el usuario pulsó <gui>Abrir</gui>, la siguiente línea carga el "
+"archivo en la <code>Gtk::Image</code>, por lo que se muestra."
+
+#. (itstool) path: section/p
+#: C/image-viewer.cpp.page:217
+msgid ""
+"If you run into problems with the tutorial, compare your code with this "
+"<link href=\"image-viewer/image-viewer.cc\">reference code</link>."
+msgstr ""
+"Si tiene problemas con este tutorial, compare su código con este <link href="
+"\"image-viewer/image-viewer.cc\">código de referencia</link>."
+
+#. (itstool) path: info/title
+#: C/image-viewer.js.page:8
+msgctxt "text"
+msgid "Image viewer (JavaScript)"
+msgstr "Visor de imágenes (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/image-viewer.js.page:11
+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»; escriba un visor de "
+"imágenes en GTK+. Incluye una introducción al lenguaje JavaScript."
+
+#. (itstool) path: credit/name
+#: C/image-viewer.js.page:15 C/image-viewer.py.page:15
+msgid "Jonh Wendell"
+msgstr "Jonh Wendell"
+
+#. (itstool) path: synopsis/p
+#: C/image-viewer.js.page:32 C/image-viewer.py.page:32
+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:"
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:34
+msgid "Write a basic GTK user interface in JavaScript"
+msgstr "Escribir una interfaz GTK+ de usuario básica usando JavaScript"
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:35 C/image-viewer.py.page:35
+msgid "Deal with events by connecting signals to signal handlers"
+msgstr "Trabajar con eventos conectando señales a manejadores de señales"
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:36 C/image-viewer.py.page:36
+msgid "Lay out GTK user interfaces using containers"
+msgstr "La disposición de las interfaces de usuario usando contenedores"
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:37 C/image-viewer.py.page:37
+msgid "Load and display image files"
+msgstr "Cargar y mostrar archivos de imagen"
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:42
+msgid "An installed copy of the <em>gjs</em> interpreter"
+msgstr "Una copia instalada del intérprete <em>gjs</em>"
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:43
+msgid "Basic knowledge of any object-orientated programming language"
+msgstr ""
+"Conocimiento básico de cualquier lenguaje de programación orientado a objetos"
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:57
+msgid ""
+"Choose <gui>Generic Javascript</gui> from the <gui>JS</gui> tab, click "
+"<gui>Forward</gui>, and fill out your details on the next few pages. Use "
+"<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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:60
+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."
+msgstr ""
+"Pulse <gui>Aplicar</gui> y se creará el proyecto. Abra <file>src/main.js</"
+"file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</gui>. Contiene "
+"un ejemplo de código muy básico:"
+
+#. (itstool) path: section/title
+#: C/image-viewer.js.page:67
+msgid "JavaScript basics: Hello World"
+msgstr "JavaScript básico: hola mundo"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:68
+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>:"
+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>:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:69
+#, no-wrap
+msgid "print (\"Hello world!\");"
+msgstr "print (\"¡Hola mundo!\");"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:70
+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."
+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 «;»."
+
+#. (itstool) path: section/title
+#: C/image-viewer.js.page:74
+msgid "Classes in JavaScript"
+msgstr "Clases en JavaScript"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:75
+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:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:76
+#, no-wrap
+msgid ""
+"\n"
+"function MyClass () {\n"
+" this._init ();\n"
+"}\n"
+"\n"
+"MyClass.prototype = {\n"
+"\n"
+" _init: function () {\n"
+" this.propertyA = \"This is an object's field\";\n"
+" this.propertyB = 10;\n"
+" },\n"
+"\n"
+" aMethod: function (arg1, arg2) {\n"
+" print (\"inside aMethod: \" + arg1 + \" \" + arg2);\n"
+" },\n"
+"\n"
+" dumpProperties: function () {\n"
+" print (this.propertyA);\n"
+" print (this.propertyB);\n"
+" }\n"
+"\n"
+"}"
+msgstr ""
+"\n"
+"function MyClass () {\n"
+" this._init ();\n"
+"}\n"
+"\n"
+"MyClass.prototype = {\n"
+"\n"
+" _init: function () {\n"
+" this.propertyA = \"This is an object's field\";\n"
+" this.propertyB = 10;\n"
+" },\n"
+"\n"
+" aMethod: function (arg1, arg2) {\n"
+" print (\"inside aMethod: \" + arg1 + \" \" + arg2);\n"
+" },\n"
+"\n"
+" dumpProperties: function () {\n"
+" print (this.propertyA);\n"
+" print (this.propertyB);\n"
+" }\n"
+"\n"
+"}"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:98
+msgid ""
+"This defines a class called <code>MyClass</code>. Let's go through each part "
+"of the class definition:"
+msgstr ""
+"Esto define una clase llamada <code>MyClass</code>. Vea cada una de las "
+"partes de la definición de la clase:"
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:101
+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."
+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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:104
+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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:107
+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:"
+
+#. (itstool) path: item/code
+#: C/image-viewer.js.page:108
+#, no-wrap
+msgid "_init: function ()"
+msgstr "_init: function ()"
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:109
+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."
+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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:112
+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>."
+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>."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:115
+msgid ""
+"Note how the class definition (prototype) is arranged; each function "
+"definition is separated by a comma."
+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."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:119
+msgid "Now that MyClass has been defined, we can play with it:"
+msgstr "Ahora que «MyClass» se ha definido, se puede jugar con ella:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:120
+#, no-wrap
+msgid ""
+"\n"
+"var o = new MyClass ();\n"
+"o.aMethod (\"Hello\", \"world\");\n"
+"o.propertyA = \"Just changed its value!\";\n"
+"o.dumpProperties ();"
+msgstr ""
+"\n"
+"var o = new MyClass ();\n"
+"o.aMethod (\"Hello\", \"world\");\n"
+"o.propertyA = \"Just changed its value!\";\n"
+"o.dumpProperties ();"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:125
+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)."
+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)."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:126
+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."
+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."
+
+#. (itstool) path: section/title
+#: C/image-viewer.js.page:131 C/image-viewer.py.page:70
+msgid "A first Gtk application"
+msgstr "Una primera aplicación en GTK"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:132
+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:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:133
+#, no-wrap
+msgid ""
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"\n"
+"Gtk.init (null, null);\n"
+"\n"
+"var w = new Gtk.Window ({title: \"Image Viewer Demo\"});\n"
+"w.show ();\n"
+"\n"
+"Gtk.main ();"
+msgstr ""
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"\n"
+"Gtk.init (null, null);\n"
+"\n"
+"var w = new Gtk.Window ({title: \"Image Viewer Demo\"});\n"
+"w.show ();\n"
+"\n"
+"Gtk.main ();"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:142 C/image-viewer.py.page:95
+msgid "Let's take a look at what's happening:"
+msgstr "Eche un vistazo a lo que está pasando:"
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:145 C/image-viewer.py.page:98
+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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:148
+msgid ""
+"<code>Gtk.init</code> initializes the Gtk library; this statement is "
+"mandatory for all Gtk programs."
+msgstr ""
+"<code>Gtk.init</code> inicializa la biblioteca GTK; esta sentencia es "
+"obligatoria para todos los programas GTK."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:151
+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."
+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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:152
+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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:153
+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."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:156
+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."
+
+#. (itstool) path: section/title
+#: C/image-viewer.js.page:161
+msgid "Adding classes"
+msgstr "Añadir clases"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:162
+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:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:163
+#, no-wrap
+msgid ""
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"\n"
+"function ImageViewer () {\n"
+" this._init ();\n"
+"}\n"
+"\n"
+"ImageViewer.prototype = {\n"
+" _init: function () {\n"
+" this.window = new Gtk.Window ({title: \"Image Viewer Demo\"});\n"
+" this.window.show ();\n"
+" }\n"
+"}\n"
+"\n"
+"Gtk.init (null, null);\n"
+"var iv = new ImageViewer ();\n"
+"Gtk.main ();"
+msgstr ""
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"\n"
+"function ImageViewer () {\n"
+" this._init ();\n"
+"}\n"
+"\n"
+"ImageViewer.prototype = {\n"
+" _init: function () {\n"
+" this.window = new Gtk.Window ({title: \"Image Viewer Demo\"});\n"
+" this.window.show ();\n"
+" }\n"
+"}\n"
+"\n"
+"Gtk.init (null, null);\n"
+"var iv = new ImageViewer ();\n"
+"Gtk.main ();"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:181
+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>)."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:182
+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."
+
+#. (itstool) path: section/title
+#: C/image-viewer.js.page:186 C/image-viewer.py.page:119
+msgid "Signals"
+msgstr "Señales"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:187 C/image-viewer.py.page:120
+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:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:188
+#, no-wrap
+msgid ""
+"\n"
+"function button_clicked () {\n"
+" print (\"you clicked me!\");\n"
+"}\n"
+"var b = new Gtk.Button ({label:\"Click me\"});\n"
+"b.connect (\"clicked\", button_clicked);"
+msgstr ""
+"\n"
+"function button_clicked () {\n"
+" print (\"you clicked me!\");\n"
+"}\n"
+"var b = new Gtk.Button ({label:\"Click me\"});\n"
+"b.connect (\"clicked\", button_clicked);"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:194 C/image-viewer.py.page:127
+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í."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:195
+msgid "The syntax for connecting any signal to a function is:"
+msgstr "La sintaxis para conectar cualquier señal a una función es:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:196
+#, no-wrap
+msgid ""
+"\n"
+"object.connect (<signal_name>, <function_to_be_called>);"
+msgstr ""
+"\n"
+"object.connect (<signal_name>, <function_to_be_called>);"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:198
+msgid ""
+"You can find signal definitions for any object in the <link href=\"https://"
+"developer.gnome.org/gtk3/stable/gtkobjects.html\">GTK class reference</link>."
+msgstr ""
+"Puede encontrar definiciones de señales para cualquier objeto en la <link "
+"href=\"https://developer.gnome.org/gtk3/stable/gtkobjects.html\">referencia "
+"de clases de GTK+</link>."
+
+#. (itstool) path: note/p
+#: C/image-viewer.js.page:201
+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:"
+
+#. (itstool) path: note/code
+#: C/image-viewer.js.page:202
+#, no-wrap
+msgid ""
+"\n"
+"b.connect (\"clicked\", function () { print (\"you clicked me!\"); });"
+msgstr ""
+"\n"
+"b.connect (\"clicked\", function () { print (\"you clicked me!\"); });"
+
+#. (itstool) path: section/title
+#: C/image-viewer.js.page:209
+msgid "Closing the window"
+msgstr "Cerrar la ventana"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:210
+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)."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:211
+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>:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:212
+#, no-wrap
+msgid "this.window.connect (\"hide\", Gtk.main_quit);"
+msgstr "this.window.connect (\"hide\", Gtk.main_quit);"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:213
+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."
+
+#. (itstool) path: section/title
+#: C/image-viewer.js.page:217 C/image-viewer.py.page:131
+msgid "Containers: Laying-out the user interface"
+msgstr "Contenedores: diseñar la interfaz de usuario"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:218 C/image-viewer.py.page:132
+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 "
+"different types of containers, like boxes and grids."
+msgstr ""
+"Los widgets (controles, como botones y etiquetas) se pueden organizar en la "
+"ventana usando <em>contenedores</em>. Puede organizar el diseño mezclando "
+"diferentes tipos de contenedores, como cajas y rejillas."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:219 C/image-viewer.py.page:133
+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 "
+"and a button, so we must put a \"higher-capacity\" container inside the "
+"window to hold the other widgets. A number of <link href=\"http://library."
+"gnome.org/devel/gtk/stable/GtkContainer.html\">container types</link> are "
+"available, but we will use a <code>Gtk.Box</code> here. A <code>Gtk.Box</"
+"code> can hold several widgets, organized horizontally or vertically. You "
+"can do more complicated layouts by putting several boxes inside another box "
+"and so on."
+msgstr ""
+"Una <code>Gtk.Window</code> es en sí misma un tipo de contenedor, pero sólo "
+"puede poner un widget directamente en ella. Se quieren poner dos widgets, "
+"una imagen y un botón, por lo que se necesita poner un contenedor «de mayor "
+"capacidad» dentro de la ventana para que contenga otros widgets. Hay varios "
+"<link href=\"http://library.gnome.org/devel/gtk/stable/GtkContainer.html"
+"\">tipos de contenedores</link> disponibles, pero aquí se usará una "
+"<code>Gtk.Box</code>. Una <code>Gtk.Box</code> puede contener varios "
+"widgets, organizados horizontal o verticalmente. Se pueden hacer diseños más "
+"complejos poniendo varias cajas dentro de otras, y así sucesivamente."
+
+#. (itstool) path: note/p
+#: C/image-viewer.js.page:221 C/image-viewer.py.page:135
+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 "
+"simple example, however, we will code everything manually."
+msgstr ""
+"Hay un diseñador de interfaces gráficas llamado <app>Glade</app> integrado "
+"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."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:223
+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:"
+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>:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:224
+#, no-wrap
+msgid ""
+"\n"
+"var main_box = new Gtk.Box ({orientation: Gtk.Orientation.VERTICAL, spacing: 0});\n"
+"this.window.add (main_box);"
+msgstr ""
+"\n"
+"var main_box = new Gtk.Box ({orientation: Gtk.Orientation.VERTICAL, spacing: 0});\n"
+"this.window.add (main_box);"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:227
+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."
+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."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:228 C/image-viewer.py.page:146
+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> "
+"is a transparent container, so you can't see that it's there)."
+msgstr ""
+"De momento, la ventana sólo contiene una <code>Gtk.Box</code> vacía, y si "
+"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í)."
+
+#. (itstool) path: section/title
+#: C/image-viewer.js.page:232 C/image-viewer.py.page:150
+msgid "Packing: Adding widgets to the container"
+msgstr "Empaquetado: añadir widgets al contenedor"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:233
+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>:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:234
+#, no-wrap
+msgid ""
+"\n"
+"this.image = new Gtk.Image ();\n"
+"main_box.pack_start (this.image, true, true, 0);"
+msgstr ""
+"\n"
+"this.image = new Gtk.Image ();\n"
+"main_box.pack_start (this.image, true, true, 0);"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:237
+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>."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:238
+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>)."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:239 C/image-viewer.py.page:158
+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-"
+"coordinate location in the window; rather, they are positioned relative to "
+"one another. This makes handling window resizing much easier, and widgets "
+"should automatically take a sensible size in most situations."
+msgstr ""
+"Los contenedores (y los widgets) de GTK+ se expanden dinámicamente, si les "
+"deja, para rellenar el espacio disponible. No posicione widgets indicando "
+"unas coordenadas x-y precisas en la ventana; en lugar de eso, se posicionan "
+"relativos a otro. Esto hace que el manejo de la redimensión de las ventanas "
+"sea más fácil, y que los widgets tengan un tamaño sensible automática en la "
+"mayoría de las situaciones."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:240 C/image-viewer.py.page:159
+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</"
+"em> of the <code>Gtk.Box</code>. This allows you to treat all of the "
+"children of a widget as a group; for example, you could hide the <code>Gtk."
+"Box</code>, which would also hide all of its children at the same time."
+msgstr ""
+"También tenga en cuenta cómo se organizan los widgets de manera jerárquica. "
+"Una vez empaquetados en la <code>Gtk.Box</code>, la <code>Gtk.Image</code> "
+"se considera un <em>hijo</em> de la <code>Gtk.Box</code>. Esto le permite "
+"tratar a todos los hijos de un widget como un grupo; por ejemplo, puede "
+"ocultar la <code>Gtk.Box</code>, lo que haría que también se ocultaran todos "
+"sus hijos a la vez."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:241 C/image-viewer.py.page:160
+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."
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:242
+#, no-wrap
+msgid ""
+"\n"
+"var open_button = new Gtk.Button ({label: \"Open a picture...\"});\n"
+"main_box.pack_start (open_button, false, false, 0);"
+msgstr ""
+"\n"
+"var open_button = new Gtk.Button ({label: \"Open a picture...\"});\n"
+"main_box.pack_start (open_button, false, false, 0);"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:245
+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."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:246
+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:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:247
+#, no-wrap
+msgid "this.window.show_all ();"
+msgstr "this.window.show_all ();"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:248
+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.)"
+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.)"
+
+#. (itstool) path: section/title
+#: C/image-viewer.js.page:252 C/image-viewer.py.page:169
+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"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:253
+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."
+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."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:254
+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:"
+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:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:255
+#, no-wrap
+msgid ""
+"\n"
+"open_button.connect (\"clicked\", Lang.bind (this, this._openClicked));"
+msgstr ""
+"\n"
+"open_button.connect (\"clicked\", Lang.bind (this, this._openClicked));"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:257
+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:"
+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:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:258
+#, no-wrap
+msgid "const Lang = imports.lang;"
+msgstr "const Lang = imports.lang;"
+
+#. (itstool) path: section/title
+#: C/image-viewer.js.page:262 C/image-viewer.py.page:180
+msgid "Loading the image: Writing the signal's callback"
+msgstr "Cargar la imagen: escribir la llamada de retorno de la señal"
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:263
+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):"
+
+#. (itstool) path: section/code
+#: C/image-viewer.js.page:264
+#, no-wrap
+msgid ""
+"\n"
+" _openClicked: function () {\n"
+" var chooser = new Gtk.FileChooserDialog ({title: \"Select an image\",\n"
+" action: Gtk.FileChooserAction.OPEN,\n"
+" transient_for: this.window,\n"
+" modal: true});\n"
+" chooser.add_button (Gtk.STOCK_CANCEL, 0);\n"
+" chooser.add_button (Gtk.STOCK_OPEN, 1);\n"
+" chooser.set_default_response (1);\n"
+"\n"
+" var filter = new Gtk.FileFilter ();\n"
+" filter.add_pixbuf_formats ();\n"
+" chooser.filter = filter;\n"
+"\n"
+" if (chooser.run () == 1)\n"
+" this.image.file = chooser.get_filename ();\n"
+"\n"
+" chooser.destroy ();\n"
+" }"
+msgstr ""
+"\n"
+" _openClicked: function () {\n"
+" var chooser = new Gtk.FileChooserDialog ({title: \"Select an image\",\n"
+" action: Gtk.FileChooserAction.OPEN,\n"
+" transient_for: this.window,\n"
+" modal: true});\n"
+" chooser.add_button (Gtk.STOCK_CANCEL, 0);\n"
+" chooser.add_button (Gtk.STOCK_OPEN, 1);\n"
+" chooser.set_default_response (1);\n"
+"\n"
+" var filter = new Gtk.FileFilter ();\n"
+" filter.add_pixbuf_formats ();\n"
+" chooser.filter = filter;\n"
+"\n"
+" if (chooser.run () == 1)\n"
+" this.image.file = chooser.get_filename ();\n"
+"\n"
+" chooser.destroy ();\n"
+" }"
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:286
+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 "
+"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."
+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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:289 C/image-viewer.py.page:203
+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 "
+"(integer) value that is returned when the button is pressed: 0 for "
+"<gui>Cancel</gui> and 1 for <gui>Open</gui>."
+msgstr ""
+"Las dos siguientes líneas añaden los botones <gui>Cancelar</gui> y "
+"<gui>Abrir</gui> al diálogo. el segundo argumento del método "
+"<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>."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:293 C/image-viewer.py.page:207
+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 "
+"our case, we are using the <gui>Open</gui> button as default (which has the "
+"value 1)."
+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»)."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:296 C/image-viewer.py.page:210
+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 "
+"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 ""
+"Las tres líneas siguientes restringen el diálogo <gui>Abrir</gui> para que "
+"sólo muestre archivos que se puedan abrir con <code>Gtk.Image</code>. "
+"Primero se crea un objeto de filtro; luego se añaden los tipos de archivos "
+"soportados por el <code>Gdk.Pixbuf</code> (que incluye la mayoría de los "
+"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>."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:299
+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."
+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."
+"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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:301 C/image-viewer.py.page:215
+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."
+msgstr ""
+"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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.js.page:304 C/image-viewer.py.page:218
+#: C/image-viewer.vala.page:273
+msgid ""
+"In the final line of this method, we destroy the <gui>Open</gui> dialog "
+"because we don't need it any more."
+msgstr ""
+"En la última línea de este método se destruye el diálogo <gui>Abrir</gui> "
+"porque ya no se necesita."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:312
+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!"
+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 "
+"tiempo."
+
+#. (itstool) path: section/p
+#: C/image-viewer.js.page:317
+msgid ""
+"If you run into problems with the tutorial, compare your code with this "
+"<link href=\"image-viewer/image-viewer.js\">reference code</link>."
+msgstr ""
+"Si tiene problemas con este tutorial, compare su código con este <link href="
+"\"image-viewer/image-viewer.js\">código de referencia</link>."
+
+#. (itstool) path: info/title
+#: C/image-viewer.py.page:8
+msgctxt "text"
+msgid "Image viewer (Python)"
+msgstr "Visor de imágenes (Python)"
+
+#. (itstool) path: info/desc
+#: C/image-viewer.py.page:11
+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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.py.page:34
+msgid "Write a basic GTK user interface in Python"
+msgstr "Escribir una interfaz de usuario básica en Python"
+
+#. (itstool) path: item/p
+#: C/image-viewer.py.page:42
+msgid "Basic knowledge of the python programming language"
+msgstr "Conocimiento básico del lenguaje de programación Python"
+
+#. (itstool) path: item/p
+#: C/image-viewer.py.page:56
+msgid ""
+"Choose <gui>PyGTK (automake)</gui> from the <gui>Python</gui> tab, click "
+"<gui>Continue</gui>, and fill out your details on the next few pages. Use "
+"<file>image-viewer</file> as project name and directory."
+msgstr ""
+"Seleccione <gui>PyGTK (automake)</gui> en la pestaña <gui>Python</gui>, "
+"pulse <gui>Continuar</gui>, y rellene los detalles en las siguientes "
+"páginas. Use <file>visor-imagenes</file> como nombre del proyecto y de la "
+"carpeta."
+
+#. (itstool) path: item/p
+#: C/image-viewer.py.page:59
+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>."
+
+#. (itstool) path: item/p
+#: C/image-viewer.py.page:64
+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 creará el proyecto. Abra <file>src/visor-"
+"imagenes.py</file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</"
+"gui>. Contiene un ejemplo de código muy básico:"
+
+#. (itstool) path: section/p
+#: C/image-viewer.py.page:71
+msgid "Let's see what a very basic Gtk application looks like in Python:"
+msgstr "Vea como queda una aplicación GTK+ muy básica en Python:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.py.page:72
+#, no-wrap
+msgid ""
+"\n"
+"from gi.repository import Gtk, GdkPixbuf, Gdk\n"
+"import os, sys\n"
+"\n"
+"class GUI:\n"
+"\tdef __init__(self):\n"
+"\t\twindow = Gtk.Window()\n"
+"\t\twindow.set_title (\"Hello World\")\n"
+"\t\twindow.connect_after('destroy', self.destroy)\n"
+"\n"
+"\t\twindow.show_all()\n"
+"\n"
+"\tdef destroy(window, self):\n"
+"\t\tGtk.main_quit()\n"
+"\n"
+"def main():\n"
+"\tapp = GUI()\n"
+"\tGtk.main()\n"
+"\n"
+"if __name__ == \"__main__\":\n"
+" sys.exit(main())\n"
+"\n"
+" "
+msgstr ""
+"\n"
+"from gi.repository import Gtk, GdkPixbuf, Gdk\n"
+"import os, sys\n"
+"\n"
+"class GUI:\n"
+"\tdef __init__(self):\n"
+"\t\twindow = Gtk.Window()\n"
+"\t\twindow.set_title (\"Hello World\")\n"
+"\t\twindow.connect_after('destroy', self.destroy)\n"
+"\n"
+"\t\twindow.show_all()\n"
+"\n"
+"\tdef destroy(window, self):\n"
+"\t\tGtk.main_quit()\n"
+"\n"
+"def main():\n"
+"\tapp = GUI()\n"
+"\tGtk.main()\n"
+"\n"
+"if __name__ == \"__main__\":\n"
+" sys.exit(main())\n"
+"\n"
+" "
+
+#. (itstool) path: item/p
+#: C/image-viewer.py.page:101
+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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.py.page:106
+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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.py.page:110
+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."
+
+#. (itstool) path: section/p
+#: C/image-viewer.py.page:114
+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."
+
+#. (itstool) path: section/code
+#: C/image-viewer.py.page:121
+#, no-wrap
+msgid ""
+"\n"
+"def button_clicked () :\n"
+" print \"you clicked me!\"\n"
+"\n"
+"b = new Gtk.Button (\"Click me\")\n"
+"b.connect_after ('clicked', button_clicked)"
+msgstr ""
+"\n"
+"def button_clicked () :\n"
+" print \"you clicked me!\"\n"
+"\n"
+"b = new Gtk.Button (\"Click me\")\n"
+"b.connect_after ('clicked', button_clicked)"
+
+#. (itstool) path: section/p
+#: C/image-viewer.py.page:137
+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:"
+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>:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.py.page:138
+#, no-wrap
+msgid ""
+"\n"
+"box = Gtk.Box()\n"
+"box.set_spacing (5)\n"
+"box.set_orientation (Gtk.Orientation.VERTICAL)\n"
+"window.add (box)\n"
+"\n"
+msgstr ""
+"\n"
+"box = Gtk.Box()\n"
+"box.set_spacing (5)\n"
+"box.set_orientation (Gtk.Orientation.VERTICAL)\n"
+"window.add (box)\n"
+"\n"
+
+#. (itstool) path: section/p
+#: C/image-viewer.py.page:145
+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."
+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."
+
+#. (itstool) path: section/p
+#: C/image-viewer.py.page:151
+msgid ""
+"To add some widgets to the <code>Gtk.Box</code>, insert the following code "
+"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>window.add (box)</code>:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.py.page:152
+#, no-wrap
+msgid ""
+"\n"
+"self.image = Gtk.Image()\n"
+"box.pack_start (self.image, False, False, 0)"
+msgstr ""
+"\n"
+"self.image = Gtk.Image()\n"
+"box.pack_start (self.image, False, False, 0)"
+
+#. (itstool) path: section/p
+#: C/image-viewer.py.page:155
+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."
+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."
+
+#. (itstool) path: section/p
+#: C/image-viewer.py.page:157
+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>)."
+
+#. (itstool) path: section/code
+#: C/image-viewer.py.page:161
+#, no-wrap
+msgid ""
+"\n"
+"button = Gtk.Button (\"Open a picture...\")\n"
+"box.pack_start (button, False, False, 0)\n"
+msgstr ""
+"\n"
+"button = Gtk.Button (\"Open a picture...\")\n"
+"box.pack_start (button, False, False, 0)\n"
+
+#. (itstool) path: section/p
+#: C/image-viewer.py.page:165
+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."
+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>box</code>. Tenga en cuenta "
+"que 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."
+
+#. (itstool) path: section/p
+#: C/image-viewer.py.page:170
+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."
+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."
+
+#. (itstool) path: section/p
+#: C/image-viewer.py.page:171
+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:"
+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:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.py.page:172
+#, no-wrap
+msgid ""
+"\n"
+"button.connect_after('clicked', self.on_open_clicked)\n"
+msgstr ""
+"\n"
+"button.connect_after('clicked', self.on_open_clicked)\n"
+
+#. (itstool) path: section/p
+#: C/image-viewer.py.page:175
+msgid ""
+"This will connect the <code>clicked</code> signal to <code>on_open_clicked</"
+"code> method that we will define below."
+msgstr ""
+"Esto conectará la señal <code>clicked</code> al método "
+"<code>on_open_clicked</code> que se definirá más adelante."
+
+#. (itstool) path: section/p
+#: C/image-viewer.py.page:181
+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:"
+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>:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.py.page:182
+#, no-wrap
+msgid ""
+"\n"
+"def on_open_clicked (self, button):\n"
+"\tdialog = Gtk.FileChooserDialog (\"Open Image\", button.get_toplevel(), Gtk.FileChooserAction.OPEN);\n"
+"\tdialog.add_button (Gtk.STOCK_CANCEL, 0)\n"
+"\tdialog.add_button (Gtk.STOCK_OK, 1)\n"
+"\tdialog.set_default_response(1)\n"
+"\n"
+"\tfilefilter = Gtk.FileFilter ()\n"
+"\tfilefilter.add_pixbuf_formats ()\n"
+"\tdialog.set_filter(filefilter)\n"
+"\n"
+"\tif dialog.run() == 1:\n"
+"\t\tself.image.set_from_file(dialog.get_filename())\n"
+"\n"
+"\tdialog.destroy()"
+msgstr ""
+"\n"
+"def on_open_clicked (self, button):\n"
+"\tdialog = Gtk.FileChooserDialog (\"Open Image\", button.get_toplevel(), Gtk.FileChooserAction.OPEN);\n"
+"\tdialog.add_button (Gtk.STOCK_CANCEL, 0)\n"
+"\tdialog.add_button (Gtk.STOCK_OK, 1)\n"
+"\tdialog.set_default_response(1)\n"
+"\n"
+"\tfilefilter = Gtk.FileFilter ()\n"
+"\tfilefilter.add_pixbuf_formats ()\n"
+"\tdialog.set_filter(filefilter)\n"
+"\n"
+"\tif dialog.run() == 1:\n"
+"\t\tself.image.set_from_file(dialog.get_filename())\n"
+"\n"
+"\tdialog.destroy()"
+
+#. (itstool) path: item/p
+#: C/image-viewer.py.page:200
+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 "
+"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."
+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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.py.page:213
+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."
+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."
+"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."
+
+#. (itstool) path: section/p
+#: C/image-viewer.py.page:226
+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!"
+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 "
+"tiempo."
+
+#. (itstool) path: section/p
+#: C/image-viewer.py.page:231
+msgid ""
+"If you run into problems with the tutorial, compare your code with this "
+"<link href=\"image-viewer/image-viewer.py\">reference code</link>."
+msgstr ""
+"Si tiene problemas con este tutorial, compare su código con este <link href="
+"\"image-viewer/image-viewer.py\">código de referencia</link>."
+
+#. (itstool) path: info/title
+#: C/image-viewer.vala.page:8
+msgctxt "text"
+msgid "Image viewer (Vala)"
+msgstr "Visor de imágenes (Vala)"
+
+#. (itstool) path: info/desc
+#: C/image-viewer.vala.page:11
+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+."
+
+#. (itstool) path: credit/name
+#: C/image-viewer.vala.page:23
+msgid "Philip Chimento"
+msgstr "Philip Chimento"
+
+#. (itstool) path: synopsis/p
+#: C/image-viewer.vala.page:39
+msgid ""
+"In this tutorial you will create an application which opens and displays an "
+"image file. You will learn:"
+msgstr ""
+"En este tutorial se va a crear un programa que abre un archivo de imagen y "
+"lo muestra. Aprenderá a:"
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:41
+msgid ""
+"How to set up a basic project using the <link xref=\"getting-ready\">Anjuta "
+"IDE</link>."
+msgstr ""
+"Cómo configurar un proyecto básico usando el <link xref=\"getting-ready"
+"\">EID Anjuta</link>."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:42
+msgid ""
+"How to write a <link href=\"http://developer.gnome.org/platform-overview/"
+"stable/gtk\">Gtk application</link> in Vala"
+msgstr ""
+"Cómo escribir una <link href=\"http://developer.gnome.org/platform-overview/"
+"stable/gtk\">aplicación de GTK+</link> en Vala"
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:43
+msgid ""
+"Some basic concepts of <link href=\"http://developer.gnome.org/gobject/"
+"stable/\">GObject</link> programming"
+msgstr ""
+"Algunos conceptos básicos de programación en <link href=\"http://developer."
+"gnome.org/gobject/stable/\">GObject</link>"
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:50
+msgid ""
+"You may find the <link href=\"http://valadoc.org/gtk+-3.0/\">gtk+-3.0</link> "
+"API Reference useful, although it is not necessary to follow the tutorial."
+msgstr ""
+"Puede que la referencia de la API de <link href=\"http://valadoc.org/gtk"
+"+-3.0/\">gtk+-3.0</link> le resulte útil, aunque no es necesaria para seguir "
+"el tutorial."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:66
+msgid ""
+"From the <gui>Vala</gui> tab choose <gui>GTK+ (Simple)</gui>, click "
+"<gui>Continue</gui>, and fill out your details on the next page. Use "
+"<file>image-viewer</file> as project name and directory."
+msgstr ""
+"En la pestaña <gui>Vala</gui> seleccione <gui>GTK+ (simple)</gui>, pulse "
+"<gui>Continuar</gui>, y rellene los detalles en las siguientes páginas. Use "
+"<file>visor-imagenes</file> como nombre del proyecto y de la carpeta."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:70
+msgid ""
+"Make sure that <gui>Use GtkBuilder for user interface</gui> is unchecked as "
+"we will create the UI manually in this tutorial."
+msgstr ""
+"Asegúrese de que <gui>Usar GtkBuilder para la interfaz del usuario</gui> "
+"está desactivado, ya que, en este tutorial, la IU se creará manualmente."
+
+#. (itstool) path: note/p
+#: C/image-viewer.vala.page:71
+msgid ""
+"You will learn how to use the interface builder in the <link xref=\"guitar-"
+"tuner.vala\">Guitar-Tuner</link> tutorial."
+msgstr ""
+"Aprenderá a usar el constructor de interfaces en el tutorial del <link xref="
+"\"guitar-tuner.vala\">afinador de guitarra</link>."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:75
+msgid ""
+"Click <gui>Continue</gui> then <gui>Apply</gui> and the project will be "
+"created for you. Open <file>src/image_viewer.vala</file> from the "
+"<gui>Project</gui> or <gui>File</gui> tabs. You will see this code:"
+msgstr ""
+"Pulse <gui>Continuar</gui> y luego <gui>Aplicar</gui> y se creará el "
+"proyecto. Abra <file>src/visor-imagenes.vala</file> desde las pestañas "
+"<gui>Proyecto</gui> o <gui>Archivo</gui>. Verá el siguiente código:"
+
+#. (itstool) path: item/code
+#: C/image-viewer.vala.page:78
+#, no-wrap
+msgid ""
+"\n"
+"using GLib;\n"
+"using Gtk;\n"
+"\n"
+"public class Main : Object\n"
+"{\n"
+"\n"
+"\tpublic Main ()\n"
+"\t{\n"
+"\t\tWindow window = new Window();\n"
+"\t\twindow.set_title (\"Hello World\");\n"
+"\t\twindow.show_all();\n"
+"\t\twindow.destroy.connect(on_destroy);\n"
+"\t}\n"
+"\n"
+"\tpublic void on_destroy (Widget window)\n"
+"\t{\n"
+"\t\tGtk.main_quit();\n"
+"\t}\n"
+"\n"
+"\tstatic int main (string[] args)\n"
+"\t{\n"
+"\t\tGtk.init (ref args);\n"
+"\t\tvar app = new Main ();\n"
+"\n"
+"\t\tGtk.main ();\n"
+"\n"
+"\t\treturn 0;\n"
+"\t}\n"
+"}"
+msgstr ""
+"\n"
+"using GLib;\n"
+"using Gtk;\n"
+"\n"
+"public class Main : Object\n"
+"{\n"
+"\n"
+"\tpublic Main ()\n"
+"\t{\n"
+"\t\tWindow window = new Window();\n"
+"\t\twindow.set_title (\"Hello World\");\n"
+"\t\twindow.show_all();\n"
+"\t\twindow.destroy.connect(on_destroy);\n"
+"\t}\n"
+"\n"
+"\tpublic void on_destroy (Widget window)\n"
+"\t{\n"
+"\t\tGtk.main_quit();\n"
+"\t}\n"
+"\n"
+"\tstatic int main (string[] args)\n"
+"\t{\n"
+"\t\tGtk.init (ref args);\n"
+"\t\tvar app = new Main ();\n"
+"\n"
+"\t\tGtk.main ();\n"
+"\n"
+"\t\treturn 0;\n"
+"\t}\n"
+"}"
+
+#. (itstool) path: section/p
+#: C/image-viewer.vala.page:114
+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:"
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:119
+msgid ""
+"The two <code>using</code> lines at the top import namespaces so we don't "
+"have to name them explicitly."
+msgstr ""
+"Las dos líneas <code>using</code> importan espacios de nombres, por lo que "
+"no hay que nombrarlas explícitamente."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:122
+msgid ""
+"The constructor of the <code>Main</code> class creates a new (empty) window "
+"and connects a <link href=\"https://live.gnome.org/Vala/SignalsAndCallbacks"
+"\">signal</link> to exit the application when that window is closed."
+msgstr ""
+"El constructor de la clase <code>Main</code> crea una ventana (vacía) nueva "
+"y conecta una <link href=\"https://live.gnome.org/Vala/SignalsAndCallbacks"
+"\">señal</link> para salir de la aplicación cuando se cierra esa ventana."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:127
+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 <link href=\"http://"
+"valadoc.org/gtk+-3.0/Gtk.main.html\"><code>Gtk.main</code></link> function "
+"starts the GTK <link href=\"http://en.wikipedia.org/wiki/Event_loop\">main "
+"loop</link>, which runs the user interface and starts listening for events "
+"(like clicks and key presses)."
+msgstr ""
+"La función <code>static main</code> se ejecuta de manera predeterminada "
+"cuando inicia una aplicación en Vala. Llama a algunas funciones que crean la "
+"clase <code>Main</code> y configuran y ejecutan la aplicación. La función "
+"<link href=\"http://valadoc.org/gtk+-3.0/Gtk.main.html\"><code>Gtk.main</"
+"code></link> inicia el <link href=\"http://en.wikipedia.org/wiki/Event_loop"
+"\">bucle principal</link> de GTK+, que ejecuta la interfaz de usuario y "
+"empieza a escuchar eventos (como pulsaciones del ratón y del teclado)."
+
+#. (itstool) path: section/p
+#: C/image-viewer.vala.page:134 C/magic-mirror.vala.page:94
+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 "
+"this once, for the first build."
+msgstr ""
+"Cambie la <gui>Configuración</gui> a <gui>Predeterminada</gui> y pulse "
+"<gui>Ejecutar</gui> para configurar la carpeta de construcción. Sólo "
+"necesita hacer esto una vez, para la primera construcción."
+
+#. (itstool) path: section/p
+#: C/image-viewer.vala.page:140
+msgid ""
+"Now we will bring life into the empty window. GTK organizes the user "
+"interface with <link href=\"http://www.valadoc.org/gtk+-2.0/Gtk.Container."
+"html\"><code>Gtk.Container</code></link>s that can contain other widgets and "
+"even other containers. Here we will use the simplest available container, a "
+"<link href=\"http://unstable.valadoc.org/gtk+-2.0/Gtk.Box.html\"><code>Gtk."
+"Box</code></link>."
+msgstr ""
+"Ahora se dará vida a la ventana vacía. GTK+ organiza la interfaz de usuario "
+"con varios <link href=\"http://www.valadoc.org/gtk+-2.0/Gtk.Container.html"
+"\"><code>Gtk.Container</code></link> que pueden contener otros widgets e "
+"incluso otros contenedores. Aquí se usará el contenedor más sencillo "
+"disponible, una <link href=\"http://unstable.valadoc.org/gtk+-2.0/Gtk.Box."
+"html\"><code>Gtk.Box</code></link>."
+
+#. (itstool) path: section/p
+#: C/image-viewer.vala.page:144
+msgid "Add the following lines to the top of the <code>Main</code> class:"
+msgstr ""
+"Añada las siguientes líneas a la parte superior de la clase <code>Main</"
+"code>:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.vala.page:145
+#, no-wrap
+msgid ""
+"\n"
+"private Window window;\n"
+"private Image image;\n"
+msgstr ""
+"\n"
+"private Window window;\n"
+"private Image image;\n"
+
+#. (itstool) path: section/p
+#: C/image-viewer.vala.page:150
+msgid "Now replace the current constructor with the one below:"
+msgstr "Ahora reemplace el constructor actual con el siguiente:"
+
+#. (itstool) path: section/code
+#: C/image-viewer.vala.page:151
+#, no-wrap
+msgid ""
+"\n"
+"\n"
+"public Main () {\n"
+"\n"
+"\twindow = new Window ();\n"
+"\twindow.set_title (\"Image Viewer in Vala\");\n"
+"\n"
+"\t// Set up the UI\n"
+"\tvar box = new Box (Orientation.VERTICAL, 5);\n"
+"\tvar button = new Button.with_label (\"Open image\");\n"
+"\timage = new Image ();\n"
+"\n"
+"\tbox.pack_start (image, true, true, 0);\n"
+"\tbox.pack_start (button, false, false, 0);\n"
+"\twindow.add (box);\n"
+"\n"
+"\t// Show open dialog when opening a file\n"
+"\tbutton.clicked.connect (on_open_image);\n"
+"\n"
+"\twindow.show_all ();\n"
+"\twindow.destroy.connect (main_quit);\n"
+"}\n"
+msgstr ""
+"\n"
+"\n"
+"public Main () {\n"
+"\n"
+"\twindow = new Window ();\n"
+"\twindow.set_title (\"Image Viewer in Vala\");\n"
+"\n"
+"\t// Set up the UI\n"
+"\tvar box = new Box (Orientation.VERTICAL, 5);\n"
+"\tvar button = new Button.with_label (\"Open image\");\n"
+"\timage = new Image ();\n"
+"\n"
+"\tbox.pack_start (image, true, true, 0);\n"
+"\tbox.pack_start (button, false, false, 0);\n"
+"\twindow.add (box);\n"
+"\n"
+"\t// Show open dialog when opening a file\n"
+"\tbutton.clicked.connect (on_open_image);\n"
+"\n"
+"\twindow.show_all ();\n"
+"\twindow.destroy.connect (main_quit);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:176
+msgid ""
+"The first two lines are the parts of the GUI that we will need to access "
+"from more than one method. We declare them up here so that they are "
+"accessible throughout the class instead of only in the method where they are "
+"created."
+msgstr ""
+"Las dos primeras líneas son partes de la IGU a las que se debe acceder desde "
+"más de un método. Se declaran aquí, por lo que son accesibles mediante la "
+"clase en vez de serlo solamente en el método en el que se crearon."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:180
+msgid ""
+"The first lines of the constructor create the empty window. The next lines "
+"create the widgets we want to use: a button for opening up an image, the "
+"image view widget itself and the box we will use as a container."
+msgstr ""
+"Las primeras líneas del constructor crean la ventana vacía. Las siguientes "
+"líneas crean los widgets que se quieren usar: un botón para abrir una "
+"imagen, el widget de la vista de la imagen en sí y la caja que se usará como "
+"contenedor."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:184
+msgid ""
+"The calls to <link href=\"http://unstable.valadoc.org/gtk+-2.0/Gtk.Box."
+"pack_start.html\"><code>pack_start</code></link> add the two widgets to the "
+"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 ""
+"Las llamadas a <link href=\"http://unstable.valadoc.org/gtk+-2.0/Gtk.Box."
+"pack_start.html\"><code>pack_start</code></link> 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 GTK+ 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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:191
+msgid ""
+"We need to define what happens when the user clicks on the button. GTK uses "
+"the concept of <em>signals</em>."
+msgstr ""
+"Se debe definir qué pasa cuando el usuario pulsa en el botón. GTK+ usa el "
+"concepto de <em>señales</em>."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:192
+msgid ""
+"When the <link href=\"http://valadoc.org/gtk+-3.0/Gtk.Button.html\">button</"
+"link> is clicked, it fires the <link href=\"http://valadoc.org/gtk+-3.0/Gtk."
+"Button.clicked.html\"><code>clicked</code></link> signal, which we can "
+"connect to some action (defined in a <link href=\"https://live.gnome.org/"
+"Vala/SignalsAndCallbacks\">callback</link> method)."
+msgstr ""
+"Cuando se pulsa el <link href=\"http://valadoc.org/gtk+-3.0/Gtk.Button.html"
+"\">botón</link> se emite la señal <link href=\"http://valadoc.org/gtk+-3.0/"
+"Gtk.Button.clicked.html\"><code>clicked</code></link>, que se puede conectar "
+"a alguna acción (definida en un método de un <link href=\"https://live.gnome."
+"org/Vala/SignalsAndCallbacks\">retorno de la llamada</link>)."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:195
+msgid ""
+"This is done using the <code>connect</code> method of the button's "
+"<code>clicked</code> signal, which in this case tells GTK to call the (yet "
+"undefined) <code>on_image_open</code> callback method when the button is "
+"clicked. We will define the <em>callback</em> in the next section."
+msgstr ""
+"Esto se hace usando el método <code>connect</code> de la señal "
+"<code>clicked</code> de los botones, que en este caso indica a GTK+ que "
+"llame al método del retorno de la llamada <code>on_image_open</code> "
+"(todavía no definida) cuando se pulsa el botón. El <em>retorno de la "
+"llamada</em> se definirá en la siguiente sección."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:199
+msgid ""
+"In the callback, we need to access the <code>window</code> and <code>image</"
+"code> widgets, which is why we defined them as private members at the top of "
+"our class."
+msgstr ""
+"En el retorno de la llamada, se debe acceder a los widgets <code>window</"
+"code> y <code>image</code> que es por lo que se definen como miembros "
+"privados en la parte superior de la clase."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:203
+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> callback method which called <link href=\"http://www."
+"valadoc.org/gtk+-2.0/Gtk.main_quit.html\"><code>Gtk.main_quit</code></link>, "
+"but just connecting our signal to <code>main_quit</code> directly is easier. "
+"You can delete the <code>on_destroy</code> method."
+msgstr ""
+"La última llamada a <code>connect</code> asegura que la aplicación termina "
+"cuando se cierra la ventana. El código generado por Anjuta llamaba a un "
+"método <code>on_destroy</code> que llamaba a <link href=\"http://www.valadoc."
+"org/gtk+-2.0/Gtk.main_quit.html\"><code>Gtk.main_quit</code></link>, pero "
+"simplemente conectando la señal <code>main_quit</code> directamente es más "
+"fácil. Puede eliminar el método <code>on_destroy</code>."
+
+#. (itstool) path: section/p
+#: C/image-viewer.vala.page:211
+msgid ""
+"We will now define the signal handler for the <code>clicked</code> signal "
+"for the button we mentioned before. Add this code after the constructor:"
+msgstr ""
+"Ahora se definirá el manejador de la señal <em>clicked</em> para el botón "
+"mencionado anteriormente. Añada este código después del constructor."
+
+#. (itstool) path: section/code
+#: C/image-viewer.vala.page:214
+#, no-wrap
+msgid ""
+"\n"
+"public void on_open_image (Button self) {\n"
+"\tvar filter = new FileFilter ();\n"
+"\tvar dialog = new FileChooserDialog (\"Open image\",\n"
+"\t window,\n"
+"\t FileChooserAction.OPEN,\n"
+"\t Stock.OK, ResponseType.ACCEPT,\n"
+"\t Stock.CANCEL, ResponseType.CANCEL);\n"
+"\tfilter.add_pixbuf_formats ();\n"
+"\tdialog.add_filter (filter);\n"
+"\n"
+"\tswitch (dialog.run ())\n"
+"\t{\n"
+"\t\tcase ResponseType.ACCEPT:\n"
+"\t\t\tvar filename = dialog.get_filename ();\n"
+"\t\t\timage.set_from_file (filename);\n"
+"\t\t\tbreak;\n"
+"\t\tdefault:\n"
+"\t\t\tbreak;\n"
+"\t}\n"
+"\tdialog.destroy ();\n"
+"}\n"
+msgstr ""
+"\n"
+"public void on_open_image (Button self) {\n"
+"\tvar filter = new FileFilter ();\n"
+"\tvar dialog = new FileChooserDialog (\"Open image\",\n"
+"\t window,\n"
+"\t FileChooserAction.OPEN,\n"
+"\t Stock.OK, ResponseType.ACCEPT,\n"
+"\t Stock.CANCEL, ResponseType.CANCEL);\n"
+"\tfilter.add_pixbuf_formats ();\n"
+"\tdialog.add_filter (filter);\n"
+"\n"
+"\tswitch (dialog.run ())\n"
+"\t{\n"
+"\t\tcase ResponseType.ACCEPT:\n"
+"\t\t\tvar filename = dialog.get_filename ();\n"
+"\t\t\timage.set_from_file (filename);\n"
+"\t\t\tbreak;\n"
+"\t\tdefault:\n"
+"\t\t\tbreak;\n"
+"\t}\n"
+"\tdialog.destroy ();\n"
+"}\n"
+
+#. (itstool) path: section/p
+#: C/image-viewer.vala.page:237
+msgid "This is a bit complicated, so let's break it down:"
+msgstr "Esto es un poco más complicado, así que se puede desglosar:"
+
+#. (itstool) path: note/p
+#: C/image-viewer.vala.page:238
+msgid ""
+"A signal handler is a type of callback method that is called when a signal "
+"is emitted. Here the terms are used interchangeably."
+msgstr ""
+"Un manejador de señal es un tipo de método de retorno de la llamada al que "
+"se llama cuando se emite la señal. Aquí se usan los términos intercambiados."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:241
+msgid ""
+"The first argument of the callback method is always the widget that sent the "
+"signal. Sometimes other arguments related to the signal come after that, but "
+"<em>clicked</em> doesn't have any."
+msgstr ""
+"El primer argumento del método del retorno de la llamada es siempre el "
+"widget que envía la señal. A veces hay otros argumentos relativos a la señal "
+"que vienen después, pero <em>clicked</em> no tiene ninguno."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:243
+msgid ""
+"In this case the <code>button</code> sent the <code>clicked</code> signal, "
+"which is connected to the <code>on_open_image</code> callback method:"
+msgstr ""
+"En este caso, el <code>button</code> envía la señal <code>clicked</code>, "
+"que se conecta al método del retorno de la llamada <code>on_open_image</"
+"code>:"
+
+#. (itstool) path: item/code
+#: C/image-viewer.vala.page:244
+#, no-wrap
+msgid ""
+"\n"
+" button.clicked.connect (on_open_image);\n"
+msgstr ""
+"\n"
+" button.clicked.connect (on_open_image);\n"
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:248
+msgid ""
+"The <code>on_open_image</code> method takes the button that emitted the "
+"signal as an argument:"
+msgstr ""
+"El método <code>on_open_image</code> toma como argumento el botón que ha "
+"emitido la señal:"
+
+#. (itstool) path: item/code
+#: C/image-viewer.vala.page:249
+#, no-wrap
+msgid ""
+"\n"
+" public void on_open_image (Button self)\n"
+msgstr ""
+"\n"
+" public void on_open_image (Button self)\n"
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:254
+msgid ""
+"The next interesting line is where the dialog for choosing the file is "
+"created. <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.FileChooserDialog."
+"html\"><code>FileChooserDialog</code></link>'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 interesante es en la que se crea el diálogo para elegir "
+"el archivo. El constructor de <link href=\"http://www.valadoc.org/gtk+-3.0/"
+"Gtk.FileChooserDialog.html\"><code>FileChooserDialog</code></link> 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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:256
+msgid ""
+"Notice that we are using <link href=\"http://unstable.valadoc.org/gtk+-3.0/"
+"Gtk.Stock.html\"><em>stock</em></link> button names from Gtk, instead of "
+"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 ""
+"Tenga en cuenta que se está usando nombres de botones del <link href="
+"\"http://unstable.valadoc.org/gtk+-3.0/Gtk.Stock.html\"><em>almacén</em></"
+"link> 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."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:260
+msgid ""
+"The next two lines restrict the <gui>Open</gui> dialog to only display files "
+"which can be opened by <em>GtkImage</em>. GtkImage is a widget which "
+"displays an image. A filter object is created first; we then add all kinds "
+"of files supported by <link href=\"http://www.valadoc.org/gdk-pixbuf-2.0/Gdk."
+"Pixbuf.html\"><code>Gdk.Pixbuf</code></link> (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 ""
+"Las dos líneas siguientes restringen el diálogo <gui>Abrir</gui> para que "
+"sólo muestre archivos que se puedan abrir con <code>GtkImage</code>. "
+"GtkImage es un widget que muestra una imagen. Primero se crea un objeto; "
+"luego se añaden los tipos de archivos soportados por el <link href=\"http://"
+"www.valadoc.org/gdk-pixbuf-2.0/Gdk.Pixbuf.html\"><code>Gdk.Pixbuf</code></"
+"link> (que incluye la mayoría de los 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>."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:265
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.run.html"
+"\"><code>dialog.run</code></link> displays the <gui>Open</gui> dialog. The "
+"dialog will wait for the user to choose an image; when they do, <code>dialog."
+"run</code> will return the <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk."
+"ResponseType.html\">ResponseType</link> 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 ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Dialog.run.html"
+"\"><code>dialog.run</code></link> 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>ResponseType.ACCEPT</code> "
+"de <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ResponseType.html"
+"\">ResponseType</link> (devolvería <code>ResponseType.CANCEL</code> si el "
+"usuario pulsara <gui>Cancel</gui>). La sentencia <code>switch</code> "
+"comprueba esto."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:270
+msgid ""
+"Assuming that the user did click <gui>Open</gui>, the next lines get the "
+"filename of the image selected by the user, and tell the <code>GtkImage</"
+"code> widget to load and display the selected image."
+msgstr ""
+"Asumiendo que el usuario pulsó <gui>Abrir</gui>, las siguientes líneas "
+"obtienen el nombre de archivo de la imagen seleccionada por el usuario e "
+"indican al widget <code>GtkImage</code> que cargue y muestre la imagen "
+"elegida."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:274
+msgid "Destroying automatically hides the dialog."
+msgstr "Al destruir se oculta el diálogo automáticamente."
+
+#. (itstool) path: section/p
+#: C/image-viewer.vala.page:283
+msgid ""
+"If you haven't already done so, choose the <file>src/image-viewer</file> "
+"application in the dialog that appears. Finally, hit <gui>Run</gui> and "
+"enjoy!"
+msgstr ""
+"Si todavía no lo ha hecho, elija la aplicación <file>src/visor-imagenes</"
+"file> en el diálogo que aparece. Finalmente, pulse <gui>Ejecutar</gui> y "
+"disfrute."
+
+#. (itstool) path: section/p
+#: C/image-viewer.vala.page:289
+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 código con este <link href="
+"\"image-viewer/image-viewer.vala\">código de referencia</link>."
+
+#. (itstool) path: item/p
+#: C/image-viewer.vala.page:296
+msgid ""
+"Set it up so that when the window opens it is of a specific size to start "
+"off with. For example, 200 X 200 pixels."
+msgstr ""
+"Configúrela de tal manera que la ventana se abra con un tamaño determinado. "
+"Por ejemplo, 200x200 píxeles."
+
+#. (itstool) path: credit/name
+#: C/index.page:8
+msgid "GNOME Documentation Team"
+msgstr "Equipo de documentación de GNOME"
+
+#. (itstool) path: credit/years
+#: C/index.page:10
+msgid "2010, 2011"
+msgstr "2010, 2011"
+
+#. (itstool) path: credit/name
+#: C/index.page:13 C/message-board.c.page:15
+msgid "Shaun McCance"
+msgstr "Shaun McCance"
+
+#. (itstool) path: credit/years
+#: C/index.page:15 C/message-board.c.page:17
+msgid "2010"
+msgstr "2010"
+
+#. (itstool) path: page/title
+#: C/index.page:28
+msgid "GNOME Developer Platform Demos"
+msgstr "Demostraciones de la plataforma de desarrollo de GNOME"
+
+#. (itstool) path: page/p
+#: C/index.page:30
+msgid ""
+"This guide includes a variety of coding examples, such writing an image "
+"viewer or weather application. Each demo comes with code that you can try, "
+"and explains how each example works. They are a great way to get started "
+"with the GNOME developer platform."
+msgstr ""
+"Esta guía incluye varios ejemplos de código, tales como escribir un visor de "
+"imágenes o una aplicación meteorológica. Cada demostración incluye su código "
+"fuente, que puede probar, y explica cómo funciona cada ejemplo. Estos "
+"ejemplos son una muy buena manera de empezar con la plataforma de desarrollo "
+"de GNOME."
+
+#. (itstool) path: section/title
+#: C/index.page:36
+msgid "Pick a Language"
+msgstr "Elija un idioma"
+
+#. (itstool) path: section/p
+#: C/index.page:37
+msgid ""
+"These developer demos are available in a range of programming languages. "
+"Pick one to get started:"
+msgstr ""
+"Esta demostraciones están disponibles en varios lenguajes de programación. "
+"Elija uno para empezar:"
+
+#. (itstool) path: info/title
+#: C/js.page:8
+msgctxt "link"
+msgid "JavaScript"
+msgstr "JavaScript"
+
+#. (itstool) path: credit/name
+#: C/js.page:21
+msgid "Ekaterina Gerasimova"
+msgstr "Ekaterina Gerasimova"
+
+#. (itstool) path: page/title
+#: C/js.page:26
+msgid "Tutorials, code samples and platform demos in JavaScript"
+msgstr ""
+"Tutoriales, ejemplos de código y demostraciones de la plataforma en "
+"JavaScript"
+
+#. (itstool) path: section/title
+#: C/js.page:31
+msgid "Code samples and tutorials"
+msgstr "Código de ejemplo tutoriales"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/label.c.page:26 C/label.js.page:22 C/label.py.page:31
+#: C/label.vala.page:22
+msgctxt "_"
+msgid "external ref='media/label.png' md5='734975c18653d88379f983e4501c3fc0'"
+msgstr "external ref='media/label.png' md5='734975c18653d88379f983e4501c3fc0'"
+
+#. (itstool) path: info/title
+#: C/label.c.page:8
+msgctxt "text"
+msgid "Label (C)"
+msgstr "Label (C)"
+
+#. (itstool) path: info/desc
+#: C/label.c.page:19 C/label.vala.page:18
+msgid "A widget which displays text"
+msgstr "Un widget que muestra un texto"
+
+#. (itstool) path: page/title
+#. (itstool) path: td/p
+#: C/label.c.page:22 C/label.js.page:21 C/label.py.page:30
+#: C/label.vala.page:21 C/toolbar_builder.py.page:98
+#: C/toolbar_builder.vala.page:81
+msgid "Label"
+msgstr "Etiqueta"
+
+#. (itstool) path: td/p
+#. (itstool) path: page/p
+#: C/label.c.page:27 C/label.py.page:32 C/label.vala.page:23
+msgid "A simple label"
+msgstr "Una etiqueta sencilla"
+
+#. (itstool) path: page/code
+#: C/label.c.page:32
+#, no-wrap
+msgid ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *label;\n"
+"\n"
+" /*Create a window with a title and a default size*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 200,100);\n"
+" \n"
+" /*Create a label and set its alignment. Setting the line wrap to TRUE makes \n"
+" the label break lines if the text exceeds the widget's size. When set to \n"
+" FALSE the text gets cut off by the edge of the widget*/\n"
+" label = gtk_label_new (\"Hello GNOME!\");\n"
+" gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER);\n"
+" gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (label));\n"
+"\n"
+" gtk_widget_show_all (GTK_WIDGET (window));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *label;\n"
+"\n"
+" /*Create a window with a title and a default size*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 200,100);\n"
+" \n"
+" /*Create a label and set its alignment. Setting the line wrap to TRUE makes \n"
+" the label break lines if the text exceeds the widget's size. When set to \n"
+" FALSE the text gets cut off by the edge of the widget*/\n"
+" label = gtk_label_new (\"Hello GNOME!\");\n"
+" gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER);\n"
+" gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (label));\n"
+"\n"
+" gtk_widget_show_all (GTK_WIDGET (window));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/label.c.page:39
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkLabel.html\">GtkLabel</"
+"link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/3.4/GtkLabel.html\">GtkLabel</"
+"link>"
+
+#. (itstool) path: info/title
+#: C/label.js.page:8
+msgctxt "text"
+msgid "Label (JavaScript)"
+msgstr "Label (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/label.js.page:18
+msgid "A label which can contain text"
+msgstr "Una etiqueta que puede contener texto"
+
+#. (itstool) path: page/p
+#: C/label.js.page:23
+msgid "A label displaying a friendly message."
+msgstr "Un widget que muestra un mensaje amigable"
+
+#. (itstool) path: page/code
+#: C/label.js.page:25
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const LabelExample = new Lang.Class ({\n"
+" Name: 'Label Example',\n"
+"\n"
+" /* Create the application itself\n"
+" This boilerplate code is needed to build any GTK+ application. */\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jslabel',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal initializes menus and builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Welcome to GNOME\",\n"
+" default_height: 100,\n"
+" default_width: 200 });\n"
+"\n"
+" // Create the label\n"
+" this.label = new Gtk.Label ({label: \"Hello GNOME!\"});\n"
+" this._window.add (this.label);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" }\n"
+"\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new LabelExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const LabelExample = new Lang.Class ({\n"
+" Name: 'Label Example',\n"
+"\n"
+" /* Create the application itself\n"
+" This boilerplate code is needed to build any GTK+ application. */\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jslabel',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal initializes menus and builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Welcome to GNOME\",\n"
+" default_height: 100,\n"
+" default_width: 200 });\n"
+"\n"
+" // Create the label\n"
+" this.label = new Gtk.Label ({label: \"Hello GNOME!\"});\n"
+" this._window.add (this.label);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" }\n"
+"\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new LabelExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/label.js.page:32
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Label.html"
+"\">Gtk.Label</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Label.html"
+"\">Gtk.Label</link>"
+
+#. (itstool) path: info/title
+#: C/label.py.page:9
+msgctxt "text"
+msgid "Label (Python)"
+msgstr "Label (Python)"
+
+#. (itstool) path: info/desc
+#: C/label.py.page:27
+msgid "A widget that displays a small to medium amount of text"
+msgstr "Un widget que muestra una cantidad pequeña o mediana de texto"
+
+#. (itstool) path: section/p
+#: C/label.py.page:41
+msgid ""
+"Another way to obtain what we have in the example is to create the label as "
+"an instance of another class and add it to the instance of <code>MyWindow</"
+"code> in the <code>do_activate(self)</code> method:"
+msgstr ""
+"Otra manera de obtener lo que se tiene en el ejemplo es crear la etiqueta "
+"como una instancia de otra clase y añadirle la instancia de <code>MyWindow</"
+"code> en el método <code>do_activate(self)</code>:"
+
+#. (itstool) path: note/p
+#: C/label.py.page:43
+msgid ""
+"The highlighted lines indicate code that is different from the previous "
+"snippet."
+msgstr ""
+"Las líneas de texto resaltadas indican que el código es diferente al del "
+"fragmento anterior."
+
+#. (itstool) path: section/code
+#: C/label.py.page:45
+#, no-wrap
+msgid ""
+"\n"
+"# a class to define a window\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+" self.set_default_size(200, 100)\n"
+"\n"
+"# a class to define a label\n"
+"<hi>\n"
+"class MyLabel(Gtk.Label):\n"
+" def __init__(self):\n"
+" Gtk.Label.__init__(self)\n"
+" self.set_text(\"Hello GNOME!\")\n"
+"</hi>\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" # create an instance of MyWindow\n"
+" win = MyWindow(self)\n"
+"\n"
+" # create an instance of MyLabel\n"
+"<hi>\n"
+" label = MyLabel()\n"
+"</hi>\n"
+" # and add it to the window\n"
+"<hi>\n"
+" win.add(label)\n"
+"</hi>\n"
+" # show the window and everything on it\n"
+" win.show_all()"
+msgstr ""
+"\n"
+"# a class to define a window\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n"
+" self.set_default_size(200, 100)\n"
+"\n"
+"# a class to define a label\n"
+"<hi>\n"
+"class MyLabel(Gtk.Label):\n"
+" def __init__(self):\n"
+" Gtk.Label.__init__(self)\n"
+" self.set_text(\"Hello GNOME!\")\n"
+"</hi>\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" # create an instance of MyWindow\n"
+" win = MyWindow(self)\n"
+"\n"
+" # create an instance of MyLabel\n"
+"<hi>\n"
+" label = MyLabel()\n"
+"</hi>\n"
+" # and add it to the window\n"
+"<hi>\n"
+" win.add(label)\n"
+"</hi>\n"
+" # show the window and everything on it\n"
+" win.show_all()"
+
+#. (itstool) path: section/title
+#: C/label.py.page:82
+msgid "Useful methods for a Label widget"
+msgstr "Métodos útiles para un widget «Label»"
+
+#. (itstool) path: note/p
+#: C/label.py.page:85
+msgid ""
+"An explanation of how to work with strings in GTK+ can be found in <link "
+"xref=\"strings.py\"/>."
+msgstr ""
+"Puede encontrar una explicación de cómo trabajar con cadenas en GTK+ en la "
+"<link xref=\"strings.py\"/>."
+
+#. (itstool) path: item/p
+#: C/label.py.page:89
+msgid ""
+"<code>set_line_wrap(True)</code> breaks lines if the text of the label "
+"exceeds the size of the widget."
+msgstr ""
+"<code>set_line_wrap(True)</code> rompe líneas si el texto de la etiqueta "
+"excede el tamaño del widget."
+
+#. (itstool) path: item/p
+#: C/label.py.page:90
+msgid ""
+"<code>set_justify(Gtk.Justification.LEFT)</code> (or <code>Gtk.Justification."
+"RIGHT, Gtk.Justification.CENTER, Gtk.Justification.FILL</code>) sets the "
+"alignment of the lines in the text of the label relative to each other. The "
+"method has no effect on a single-line label."
+msgstr ""
+"<code>set_justify(Gtk.Justification.LEFT)</code> (o <code>Gtk.Justification."
+"RIGHT, Gtk.Justification.CENTER, Gtk.Justification.FILL</code>) establece la "
+"alineación de las líneas en el texto de la etiqueta respecto de sí. El "
+"método no tiene efecto en una etiqueta de una sola línea."
+
+#. (itstool) path: item/p
+#: C/label.py.page:91
+msgid ""
+"For decorated text we can use <code>set_markup(\"text\")</code>, where <code>"
+"\"text\"</code> is a text in the <link href=\"http://developer.gnome.org/"
+"pango/stable/PangoMarkupFormat.html\">Pango Markup Language</link>. An "
+"example:"
+msgstr ""
+"Para decorar el texto se puede usar <code>set_markup(\"texto\")</code>, "
+"donde <code>\"texto\"</code> es un texto en el <link href=\"http://developer."
+"gnome.org/pango/stable/PangoMarkupFormat.html\">lenguaje de marcación Pango</"
+"link>. Un ejemplo:"
+
+#. (itstool) path: item/code
+#: C/label.py.page:92
+#, no-wrap
+msgid ""
+"\n"
+"label.set_markup(\"Text can be <small>small</small>, <big>big</big>, \"\n"
+" \"<b>bold</b>, <i>italic</i> and even point to somewhere \"\n"
+" \"in the <a href=\\\"http://www.gtk.org\\\" \"\n"
+" \"title=\\\"Click to find out more\\\">internets</a>.\")"
+msgstr ""
+"\n"
+"label.set_markup(\"Text can be <small>small</small>, <big>big</big>, \"\n"
+" \"<b>bold</b>, <i>italic</i> and even point to somewhere \"\n"
+" \"in the <a href=\\\"http://www.gtk.org\\\" \"\n"
+" \"title=\\\"Click to find out more\\\">internets</a>.\")"
+
+#. (itstool) path: info/title
+#: C/label.vala.page:8
+msgctxt "text"
+msgid "Label (Vala)"
+msgstr "Label (Vala)"
+
+#. (itstool) path: page/code
+#: C/label.vala.page:25
+#, no-wrap
+msgid ""
+"\n"
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
+"\n"
+"\t\tvar label = new Gtk.Label (\"Hello GNOME!\");\n"
+"\n"
+"\t\tthis.add (label);\n"
+"\t\tthis.set_default_size (200, 100);\n"
+"\t\tthis.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"\n"
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Welcome to GNOME\");\n"
+"\n"
+"\t\tvar label = new Gtk.Label (\"Hello GNOME!\");\n"
+"\n"
+"\t\tthis.add (label);\n"
+"\t\tthis.set_default_size (200, 100);\n"
+"\t\tthis.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: p/link
+#: C/legal.xml:3
+msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License"
+msgstr "Creative Commons de Atribución-Compartir Igual 3.0 sin soporte"
+
+#. (itstool) path: license/p
+#: C/legal.xml:3
+msgid ""
+"This work is licensed under a <_:link-1/>. As a special exception, the "
+"copyright holders give you permission to copy, modify, and distribute the "
+"example code contained in this documentation under the terms of your "
+"choosing, without restriction."
+msgstr ""
+"Este trabajo está licenciado bajo la <_:link-1/>. Como una excepción "
+"especial, los titulares de los derechos de autor le dan el permiso de "
+"copiar, modificar, y distribuir el código de ejemplo contenido en esta "
+"documentación bajo sus propios términos, sin restricción."
+
+#. (itstool) path: info/desc
+#: C/license.page:8
+msgid "Legal information."
+msgstr "Información legal."
+
+#. (itstool) path: page/title
+#: C/license.page:11
+msgid "License"
+msgstr "Licencia"
+
+#. (itstool) path: page/p
+#: C/license.page:12
+msgid ""
+"This work is distributed under a CreativeCommons Attribution-Share Alike 3.0 "
+"Unported license."
+msgstr ""
+"Este trabajo está distribuido bajo una licencia Creative Commons Compartir-"
+"Igual 3.0 sin soporte."
+
+#. (itstool) path: page/p
+#: C/license.page:20
+msgid "You are free:"
+msgstr "Es libre de:"
+
+#. (itstool) path: item/title
+#: C/license.page:25
+msgid "<em>To share</em>"
+msgstr "Compartir"
+
+#. (itstool) path: item/p
+#: C/license.page:26
+msgid "To copy, distribute and transmit the work."
+msgstr "Copiar, distribuir y comunicar públicamente la obra"
+
+#. (itstool) path: item/title
+#: C/license.page:29
+msgid "<em>To remix</em>"
+msgstr "Hacer obras derivadas"
+
+#. (itstool) path: item/p
+#: C/license.page:30
+msgid "To adapt the work."
+msgstr "Adaptar el trabajo."
+
+#. (itstool) path: page/p
+#: C/license.page:33
+msgid "Under the following conditions:"
+msgstr "Bajo las siguientes condiciones:"
+
+#. (itstool) path: item/title
+#: C/license.page:38
+msgid "<em>Attribution</em>"
+msgstr "Atribución"
+
+#. (itstool) path: item/p
+#: C/license.page:39
+msgid ""
+"You must attribute the work in the manner specified by the author or "
+"licensor (but not in any way that suggests that they endorse you or your use "
+"of the work)."
+msgstr ""
+"Debe reconocer los créditos de la obra de la manera especificada por el "
+"autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo "
+"o apoyan el uso que hace de su obra)."
+
+#. (itstool) path: item/title
+#: C/license.page:46
+msgid "<em>Share Alike</em>"
+msgstr "Compartir igual"
+
+#. (itstool) path: item/p
+#: C/license.page:47
+msgid ""
+"If you alter, transform, or build upon this work, you may distribute the "
+"resulting work only under the same, similar or a compatible license."
+msgstr ""
+"Si altera, transforma, o se basa en este trabajo, puede distribuir el "
+"trabajo resultante sólo bajo una licencia igual, similar o compatible."
+
+#. (itstool) path: page/p
+#: C/license.page:53
+msgid ""
+"For the full text of the license, see the <link href=\"http://"
+"creativecommons.org/licenses/by-sa/3.0/legalcode\">CreativeCommons website</"
+"link>, or read the full <link href=\"http://creativecommons.org/licenses/by-"
+"sa/3.0/\">Commons Deed</link>."
+msgstr ""
+"Para un texto completo de la licencia, consulte el <link href=\"http://"
+"creativecommons.org/licenses/by-sa/3.0/legalcode\">sitio web de "
+"CreativeCommons</link>, o lea el <link href=\"http://creativecommons.org/"
+"licenses/by-sa/3.0/\">resumen de Commons</link> completo."
+
+#. (itstool) path: note/p
+#: C/license.page:60
+msgid ""
+"As a special exception, the copyright holders give you permission to copy, "
+"modify, and distribute the example code contained in this documentation "
+"under the terms of your choosing, without restriction."
+msgstr ""
+"Como una excepción especial, los titulares de los derechos de autor le dan "
+"el permiso de copiar, modificar, y distribuir el código de ejemplo contenido "
+"en esta documentación bajo sus propios términos, sin restricción."
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/linkbutton.c.page:23 C/linkbutton.js.page:22 C/linkbutton.py.page:24
+#: C/linkbutton.vala.page:22
+msgctxt "_"
+msgid ""
+"external ref='media/linkbutton.png' md5='3712eae8953e87c65a6aa74503b8e32b'"
+msgstr ""
+"external ref='media/linkbutton.png' md5='3712eae8953e87c65a6aa74503b8e32b'"
+
+#. (itstool) path: info/title
+#: C/linkbutton.c.page:8
+msgctxt "text"
+msgid "LinkButton (C)"
+msgstr "LinkButton (C)"
+
+#. (itstool) path: info/desc
+#: C/linkbutton.c.page:18 C/linkbutton.vala.page:18
+msgid "Create buttons bound to a URL"
+msgstr "Crear botones asociados a un URL"
+
+#. (itstool) path: page/title
+#: C/linkbutton.c.page:21 C/linkbutton.js.page:21 C/linkbutton.py.page:22
+#: C/linkbutton.vala.page:21
+msgid "LinkButton"
+msgstr "LinkButton"
+
+#. (itstool) path: page/p
+#: C/linkbutton.c.page:24
+msgid "This button links to the GNOME live webpage."
+msgstr "Este botón enlaza con la página web de GNOME Live."
+
+#. (itstool) path: page/code
+#: C/linkbutton.c.page:26
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *linkbutton;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+"\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"GNOME LinkButton\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n"
+"\n"
+" linkbutton = gtk_link_button_new (\"Link to GNOME live!\");\n"
+" gtk_link_button_set_uri (GTK_LINK_BUTTON(linkbutton), \"http://live.gnome.org\");\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (linkbutton));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *linkbutton;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+"\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"GNOME LinkButton\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n"
+"\n"
+" linkbutton = gtk_link_button_new (\"Link to GNOME live!\");\n"
+" gtk_link_button_set_uri (GTK_LINK_BUTTON(linkbutton), \"http://live.gnome.org\");\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (linkbutton));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/linkbutton.c.page:34
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkLinkButton.html"
+"\">GtkLinkButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkLinkButton.html"
+"\">GtkLinkButton</link>"
+
+#. (itstool) path: info/title
+#: C/linkbutton.js.page:8
+msgctxt "text"
+msgid "LinkButton (JavaScript)"
+msgstr "LinkButton (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/linkbutton.js.page:18
+msgid "A button that links to a web page"
+msgstr "Un botón que enlaza con una página web"
+
+#. (itstool) path: page/p
+#: C/linkbutton.js.page:23
+msgid "A button that links to live.gnome.org."
+msgstr "Un botón que enlaza con live.gnome.org."
+
+#. (itstool) path: page/code
+#: C/linkbutton.js.page:25
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const LinkButtonExample = new Lang.Class ({\n"
+" Name: 'LinkButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jslinkbutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal initializes menus and builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"GNOME LinkButton\",\n"
+" default_height: 50,\n"
+" default_width: 250 });\n"
+"\n"
+" // Create the LinkButton and have it link to live.gnome.org\n"
+" this.LinkButton = new Gtk.LinkButton ({label: \"Link to GNOME live!\",\n"
+" uri: \"http://live.gnome.org\"});\n"
+" this._window.add (this.LinkButton);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new LinkButtonExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const LinkButtonExample = new Lang.Class ({\n"
+" Name: 'LinkButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jslinkbutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal initializes menus and builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"GNOME LinkButton\",\n"
+" default_height: 50,\n"
+" default_width: 250 });\n"
+"\n"
+" // Create the LinkButton and have it link to live.gnome.org\n"
+" this.LinkButton = new Gtk.LinkButton ({label: \"Link to GNOME live!\",\n"
+" uri: \"http://live.gnome.org\"});\n"
+" this._window.add (this.LinkButton);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new LinkButtonExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/linkbutton.js.page:32
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.LinkButton."
+"html\">Gtk.LinkButton</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.LinkButton."
+"html\">Gtk.LinkButton</link>"
+
+#. (itstool) path: info/title
+#: C/linkbutton.py.page:8
+msgctxt "text"
+msgid "LinkButton (Python)"
+msgstr "LinkButton (Python)"
+
+#. (itstool) path: info/desc
+#: C/linkbutton.py.page:19
+msgid "A button bound to an URL"
+msgstr "Un botón asociado a un URL"
+
+#. (itstool) path: page/p
+#: C/linkbutton.py.page:25
+msgid "A button that links to a web page."
+msgstr "Un botón que enlaza con una página web."
+
+#. (itstool) path: section/code
+#: C/linkbutton.py.page:32
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"GNOME LinkButton\", application=app)\n"
+" self.set_default_size(250, 50)\n"
+"\n"
+" # a linkbutton pointing to the given URI\n"
+" button = Gtk.LinkButton(uri=\"http://live.gnome.org\")\n"
+" # with given text\n"
+" button.set_label(\"Link to GNOME live!\")\n"
+"\n"
+" # add the button to the window\n"
+" self.add(button)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"GNOME LinkButton\", application=app)\n"
+" self.set_default_size(250, 50)\n"
+"\n"
+" # a linkbutton pointing to the given URI\n"
+" button = Gtk.LinkButton(uri=\"http://live.gnome.org\")\n"
+" # with given text\n"
+" button.set_label(\"Link to GNOME live!\")\n"
+"\n"
+" # add the button to the window\n"
+" self.add(button)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/linkbutton.py.page:36
+msgid "Useful methods for a LinkButton widget"
+msgstr "Métodos útiles para un widget «LinkButton»"
+
+#. (itstool) path: item/p
+#: C/linkbutton.py.page:38
+msgid ""
+"<code>get_visited()</code> returns the 'visited' state (<code>True</code> or "
+"<code>False</code>) of the URI where the LinkButton points. The button "
+"becomes visited when it is clicked."
+msgstr ""
+"<code>get_visited()</code> devuelve el estado «visitado» (<code>True</code> "
+"o <code>False</code>) del URI al que el «LinkButton» apunta. El botón se "
+"vuelve «visitado» cuando se pulsa."
+
+#. (itstool) path: item/p
+#: C/linkbutton.py.page:39
+msgid ""
+"<code>set_visited(True)</code> sets the 'visited' state of the URI where the "
+"LinkButton points as <code>True</code> (analogously for <code>False</code>)."
+msgstr ""
+"<code>set_visited(True)</code> establece el estado «visitado» del URI al que "
+"el LinkButton apunta a <code>True</code> (análogamente para <code>False</"
+"code>)."
+
+#. (itstool) path: item/p
+#: C/linkbutton.py.page:40
+msgid ""
+"Each time the button is clicked, the signal <code>\"activate-link\"</code> "
+"is emitted. For an explanation of signals and callback functions, see <link "
+"xref=\"signals-callbacks.py\"/>."
+msgstr ""
+"Cada vez que se pulsa un botón, se emite la señal <code>«activate-link»</"
+"code>. Para obtener una explicación de señales y funciones de retorno de "
+"llamada, consulte la <link xref=\"signals-callbacks.py\"/>."
+
+#. (itstool) path: item/p
+#: C/linkbutton.py.page:48
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkLinkButton.html"
+"\">GtkLinkButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkLinkButton.html"
+"\">GtkLinkButton</link>"
+
+#. (itstool) path: info/title
+#: C/linkbutton.vala.page:8
+msgctxt "text"
+msgid "LinkButton (Vala)"
+msgstr "LinkButton (Vala)"
+
+#. (itstool) path: page/p
+#: C/linkbutton.vala.page:23
+msgid "This button links to GNOME live."
+msgstr "Un botón que enlaza con GNOME live."
+
+#. (itstool) path: page/code
+#: C/linkbutton.vala.page:25
+#, no-wrap
+msgid ""
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t/* Create the window of this application and child widget and show all the things. */\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.set_default_size (250, 50);\n"
+"\t\twindow.title = \"GNOME LinkButton\";\n"
+"\n"
+"\t\tvar linkbutton = new Gtk.LinkButton.with_label (\"http://live.gnome.org\", \"Link to GNOME live!\");\n"
+"\n"
+"\t\twindow.add (linkbutton);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t/* Create the window of this application and child widget and show all the things. */\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.set_default_size (250, 50);\n"
+"\t\twindow.title = \"GNOME LinkButton\";\n"
+"\n"
+"\t\tvar linkbutton = new Gtk.LinkButton.with_label (\"http://live.gnome.org\", \"Link to GNOME live!\");\n"
+"\n"
+"\t\twindow.add (linkbutton);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/linkbutton.vala.page:30
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.LinkButton.html\">Gtk."
+"LinkButton</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.LinkButton.html\">Gtk."
+"LinkButton</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/magic-mirror.vala.page:47
+msgctxt "_"
+msgid ""
+"external ref='media/magic-mirror.png' md5='8171faea6ed3b6ddac0da084c29e4e22'"
+msgstr ""
+"external ref='media/magic-mirror.png' md5='8171faea6ed3b6ddac0da084c29e4e22'"
+
+#. (itstool) path: info/title
+#: C/magic-mirror.vala.page:8
+msgctxt "text"
+msgid "Magic mirror (Vala)"
+msgstr "Espejo mágico (Vala)"
+
+#. (itstool) path: info/desc
+#: C/magic-mirror.vala.page:11
+msgid "Use your webcam as a mirror using the GStreamer framework and GTK+"
+msgstr ""
+"Utilice su cámara web como un espejo usando el entorno de trabajo GStreamer "
+"y GTK+"
+
+#. (itstool) path: credit/name
+#: C/magic-mirror.vala.page:15
+msgid "Daniel G. Siegel"
+msgstr "Daniel G. Siegel"
+
+#. (itstool) path: page/title
+#: C/magic-mirror.vala.page:29
+msgid "Magic mirror"
+msgstr "Espejo mágico"
+
+#. (itstool) path: synopsis/p
+#: C/magic-mirror.vala.page:32
+msgid ""
+"<em>Your mirror just fell off the wall and broke into a thousand pieces — "
+"but you need a mirror to shave your beard off or add some makeup! You only "
+"have 15 minutes left before catching the bus to work. So what can you do?</"
+"em>"
+msgstr ""
+"<em>Su espejo se ha caído al suelo y se ha roto en miles de pedazos; pero "
+"necesita un espejo para afeitarse o para maquillarse. Solo tiene 15 minutos "
+"antes de coger el autobús para ir al trabajo. ¿Qué puede hacer?</em>"
+
+#. (itstool) path: synopsis/p
+#: C/magic-mirror.vala.page:33
+msgid ""
+"In this tutorial, we're going to make a program which lets you use your "
+"webcam as a mirror. You will learn how to:"
+msgstr ""
+"En este tutorial se va a hacer un programa que le permite usar su cámara web "
+"como un espejo. Aprenderá a:"
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:35
+msgid "Create a GTK+ application"
+msgstr "Crear una aplicación GTK+"
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:36
+msgid "Access your webcam using GStreamer and embed the result into a window"
+msgstr ""
+"Acceder a su cámara web usando GStreamer y empotrar el resultado en una "
+"ventana"
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:37
+msgid "Grab photos off your webcam"
+msgstr "Obtener las fotos de su cámara web"
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:42
+msgid "Installed copies of GTK, GStreamer, and a Vala compiler"
+msgstr "Copias instaladas de GTK, GStreamer y de un compilador de Vala"
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:43
+msgid "Basic knowledge of an object-oriented programming language"
+msgstr ""
+"Conocimientos básico de un lenguaje de programación orientado a objetos"
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:57
+msgid ""
+"Choose <gui>GTK+ (simple)</gui> from the <gui>Vala</gui> tab, click "
+"<gui>Forward</gui>, and fill out your details on the next few pages. Use "
+"<file>magic-mirror</file> as project name and directory."
+msgstr ""
+"Elija <gui>GTK+ (simple)</gui> de la pestaña <gui>Vala</gui>, pulse "
+"<gui>Adelante</gui> y rellene los detalles en las siguientes páginas. Use "
+"<file>espejo-magico</file> como nombre de proyecto y de carpeta."
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:60
+msgid ""
+"Disable <gui>Use GtkBuilder for user interface</gui> as we will create the "
+"UI manually in this tutorial. Check the <link xref=\"guitar-tuner.vala"
+"\">Guitar-Tuner</link> tutorial using the interface builder."
+msgstr ""
+"Desactive la opción <gui>Usar GtkBuilder para la interfaz del usuario</gui>, "
+"ya que, en este tutorial, la interfaz de usuario se creará manualmente. "
+"Revise el tutorial <link xref=\"guitar-tuner.vala\">afinador-guitarra</link> "
+"usando el constructor de interfaces."
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:65
+msgid ""
+"Make sure that <gui>Configure external packages</gui> is selected. On the "
+"next page, select <em>gstreamer-0.10</em> from the list to include the "
+"<app>GStreamer</app> library into your project."
+msgstr ""
+"Asegúrese de que <gui>Configurar paquetes externos</gui> está seleccionada. "
+"En la siguiente página, seleccione <em>gstreamermm-0.10</em> de la lista "
+"para incluir la biblioteca <app>GStreamer</app> en su proyecto."
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:69
+msgid ""
+"Click <gui>Apply</gui> and the project will be created for you. Open "
+"<file>src/magic_mirror.vala</file> from the <gui>Project</gui> or <gui>File</"
+"gui> tabs. You should see some code which starts with the lines:"
+msgstr ""
+"Pulse <gui>Aplicar</gui> y se creará el proyecto. Abra <file>src/espejo-"
+"magico.vala</file> desde las pestañas <gui>Proyecto</gui> o <gui>Archivo</"
+"gui>. Debería ver algo de código que comience con las líneas:"
+
+#. (itstool) path: section/p
+#: C/magic-mirror.vala.page:79
+msgid ""
+"The code loads an (empty) window 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) y la muestra. A continuación hay más "
+"detalles; omita esta lista si entiende los conceptos básicos:"
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:85
+msgid ""
+"The constructor of the <code>Main</code> class creates a new window and sets "
+"its title. Afterwards the window is shown and a signal is connected which "
+"quits the application if the window is closed. More on signals later on."
+msgstr ""
+"El constructor de la clase <code>Main</code> crea una ventana nueva y "
+"establece su título. Después se muestra la ventana y se conecta una señal "
+"que cierra la aplicación si se cierra la ventana. Se verán más señales más "
+"adelante."
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:89
+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)."
+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)."
+
+#. (itstool) path: section/title
+#: C/magic-mirror.vala.page:98
+msgid "Access the webcam video stream with GStreamer"
+msgstr "Acceder al flujo de vídeo de la cámara web con GStreamer"
+
+#. (itstool) path: section/p
+#: C/magic-mirror.vala.page:99
+msgid ""
+"The GStreamer multimedia framework is able to handle video from webcams. "
+"Let's add GStreamer to our application and so we can access the video stream."
+msgstr ""
+"El entorno multimedia de trabajo GStreamer es capaz de manejar vídeo desde "
+"cámaras web. Añada GStreamer a su aplicación y podrá acceder al flujo de "
+"vídeo."
+
+#. (itstool) path: section/code
+#: C/magic-mirror.vala.page:101
+#, no-wrap
+msgid ""
+"\n"
+"using GLib;\n"
+"using Gtk;\n"
+"\n"
+"public class Main : Object\n"
+"{\n"
+"\tprivate Gst.Element camerabin;\n"
+"\n"
+"\tpublic Main () {\n"
+"\t\tthis.camerabin = Gst.ElementFactory.make (\"camerabin\", \"camera\");\n"
+"\t\tthis.camerabin.set_state (Gst.State.PLAYING);\n"
+"\t}\n"
+"\n"
+"\tstatic int main (string[] args) {\n"
+"\t\tGtk.init (ref args);\n"
+"\t\tGst.init (ref args);\n"
+"\t\tvar app = new Main ();\n"
+"\n"
+"\t\tGtk.main ();\n"
+"\n"
+"\t\treturn 0;\n"
+"\t}\n"
+"}\n"
+msgstr ""
+"\n"
+"using GLib;\n"
+"using Gtk;\n"
+"\n"
+"public class Main : Object\n"
+"{\n"
+"\tprivate Gst.Element camerabin;\n"
+"\n"
+"\tpublic Main () {\n"
+"\t\tthis.camerabin = Gst.ElementFactory.make (\"camerabin\", \"camera\");\n"
+"\t\tthis.camerabin.set_state (Gst.State.PLAYING);\n"
+"\t}\n"
+"\n"
+"\tstatic int main (string[] args) {\n"
+"\t\tGtk.init (ref args);\n"
+"\t\tGst.init (ref args);\n"
+"\t\tvar app = new Main ();\n"
+"\n"
+"\t\tGtk.main ();\n"
+"\n"
+"\t\treturn 0;\n"
+"\t}\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:126
+msgid ""
+"First we remove the window we created before because GStreamer will take "
+"care of showing the picture on screen."
+msgstr ""
+"Primero se quita la ventana creada anteriormente, ya que GStreamer se "
+"encargará de mostrar la imagen en la pantalla."
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:130
+msgid ""
+"Now we are creating a GStreamer element which accesses our webcam. We are "
+"using the Camerabin element, which is an all-in-one camera element and is "
+"capable of taking photos, videos, applying effects and much more. Perfect "
+"for our use case! With <code>this.camerabin.set_state (Gst.State.PLAYING)</"
+"code> we tell the GStreamer pipeline we just created to start playing. Easy, "
+"no?"
+msgstr ""
+"Ahora se va a crear un elemento de GStreamer que accede a la cámara web. Se "
+"va a usar el elemento «Camerabin», que es un elemento de cámara todo en uno "
+"capaz de hacer fotos, vídeos, aplicar efectos y mucho más. Perfecto para "
+"nuestro caso de uso. Con <code>this.camerabin.set_state (Gst.State.PLAYING)</"
+"code> se indica a la tubería de GStreamer que se acaba de crear que empiece "
+"a reproducir. Fácil, ¿no?"
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:137
+msgid ""
+"Of course it is also possible to integrate the video more tighly into other "
+"windows but that is an advanced topic that includes some details of the X "
+"Window System we will omit here."
+msgstr ""
+"Por supuesto, también es posible integrar el vídeo más ajustadamente en "
+"otras ventanas, pero esto es un tema avanzado que incluye algunos detalles "
+"sobre el sistema «X-Window» que aquí se omiten."
+
+#. (itstool) path: item/p
+#: C/magic-mirror.vala.page:141
+msgid ""
+"Compile and run it again. You will end up with two windows. In the next step "
+"we will integrate the video into the GTK+ window."
+msgstr ""
+"Compile y ejecute de nuevo. Acabará teniendo dos ventanas. En el siguiente "
+"paso, se integrará el vídeo en una ventana de GTK+."
+
+#. (itstool) path: section/p
+#: C/magic-mirror.vala.page:151
+msgid ""
+"If you run into problems with the tutorial, compare your code with this "
+"<link href=\"magic-mirror/magic-mirror.vala\">reference code</link>. There "
+"is also a more <link href=\"magic-mirror/magic-mirror-advanced.vala"
+"\">extensive implementation</link> that embeds the window into a regular Gtk."
+"Window which involves some advanced techniques, and adds buttons to start/"
+"stop the picture."
+msgstr ""
+"Si tiene problemas con este tutorial, compare su código con este <link href="
+"\"magic-mirror/magic-mirror.vala\">código de referencia</link>. También hay "
+"una <link href=\"magic-mirror/magic-mirror-advanced.vala\">implemnetación "
+"más amplia</link> que empotra la ventana en una ventana GTK regular que "
+"implica algunas técnicas avanzadas, y añade botones para iniciar/parar la "
+"imagen."
+
+#. (itstool) path: section/p
+#: C/magic-mirror.vala.page:158
+msgid ""
+"To find out more about the Vala programming language you might want to check "
+"out the <link href=\"http://live.gnome.org/Vala/Tutorial\">Vala Tutorial</"
+"link>."
+msgstr ""
+"Para obtener más información sobre el lenguaje de programación Vala, puede "
+"querer revisar el <link href=\"http://live.gnome.org/Vala/Tutorial"
+"\">tutorial de Vala</link>."
+
+#. (itstool) path: section/title
+#: C/magic-mirror.vala.page:163
+msgid "Conclusion"
+msgstr "Conclusión"
+
+#. (itstool) path: section/p
+#: C/magic-mirror.vala.page:164
+msgid ""
+"That's it, you have managed to create a full-featured webcam photo "
+"application in 15 minutes. Now you can shave your beard off or add some "
+"makeup to your beautiful face, right before having a beautiful day at your "
+"workplace, where you can impress your friends and colleagues with an awesome "
+"application you just made in 15 minutes."
+msgstr ""
+"Ya está, ha conseguido crear una aplicación de cámara web con todas las "
+"funciones de fotos en 15 minutos. Ahora puede afeitarse la barba o maquillar "
+"su bonita cara justo antes de tener un gran día en su trabajo, donde puede "
+"impresionar a sus amigos y colegas con una impresionante aplicación que ha "
+"hecho en 15 minutos."
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/menubar.c.page:25 C/menubar.py.page:29 C/menubar.vala.page:24
+msgctxt "_"
+msgid "external ref='media/menubar.png' md5='7b642aaa1628d5e43ab85ac230ac1c78'"
+msgstr ""
+"external ref='media/menubar.png' md5='7b642aaa1628d5e43ab85ac230ac1c78'"
+
+#. (itstool) path: info/title
+#: C/menubar.c.page:8
+msgctxt "text"
+msgid "MenuBar (C)"
+msgstr "MenuBar (C)"
+
+#. (itstool) path: info/desc
+#: C/menubar.c.page:20 C/menubar.py.page:25 C/menubar.vala.page:20
+msgid "A widget which holds GtkMenuItem widgets"
+msgstr "Un widget que contiene widgets «GtkMenuItem»"
+
+#. (itstool) path: page/title
+#: C/menubar.c.page:23 C/menubar.vala.page:23
+msgid "MenuBar"
+msgstr "MenuBar"
+
+#. (itstool) path: page/p
+#: C/menubar.c.page:26 C/menubar.py.page:30 C/menubar.vala.page:25
+msgid "A MenuBar created using XML and GtkBuilder."
+msgstr "Una barra de menú usando XML y GtkBuilder."
+
+#. (itstool) path: note/p
+#: C/menubar.c.page:27
+msgid ""
+"For a more in-depth look at this sample, please do not hesitate to check out "
+"the <link xref=\"menubar.vala\">Vala MenuBar</link> and/or <link xref="
+"\"menubar.py\">Python MenuBar</link> tutorials."
+msgstr ""
+"Para una visión más profunda a este ejemplo, no dude en echarle un vistazo a "
+"los tutoriales de la <link xref=\"menubar.vala\">Barra de menú Vala</link> y/"
+"o la <link xref=\"menubar.py\">Barra de menú Python</link>."
+
+#. (itstool) path: page/code
+#: C/menubar.c.page:31
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"copy\" action */\n"
+"static void\n"
+"copy_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"\\\"Copy\\\" activated\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"paste\" action */\n"
+"static void\n"
+"paste_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"\\\"Paste\\\" activated\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"shape\" action */\n"
+"static void\n"
+"shape_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* We first gather the value of the GVariant instance with a string type.\n"
+" * The overall goal here is to see if shape is set to line, triangle, etc,\n"
+" * and put that value within the variable \"answer\".\n"
+" */\n"
+" const gchar *answer = g_variant_get_string (parameter, NULL);\n"
+" g_printf (\"Shape is set to %s.\\n\", answer);\n"
+" /* Note that we set the state of the action */\n"
+" g_simple_action_set_state (simple, parameter);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function in which closes the about_dialog created below */\n"
+"static void\n"
+"on_close (GtkDialog *dialog,\n"
+" gint response_id,\n"
+" gpointer user_data)\n"
+"{\n"
+" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the about action (see aboutdialog.c example) */\n"
+"static void\n"
+"about_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *about_dialog;\n"
+"\n"
+" about_dialog = gtk_about_dialog_new ();\n"
+"\n"
+" const gchar *authors[] = {\"GNOME Documentation Team\", NULL};\n"
+" const gchar *documenters[] = {\"GNOME Documentation Team\", NULL};\n"
+"\n"
+" /* Fill in the about_dialog with the desired information */\n"
+" gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (about_dialog), \"AboutDialog Example\");\n"
+" gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about_dialog), \"Copyright \\xc2\\xa9 2012 GNOME
Documentation Team\");\n"
+" gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about_dialog), authors);\n"
+" gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (about_dialog), documenters);\n"
+" gtk_about_dialog_set_website_label (GTK_ABOUT_DIALOG (about_dialog), \"GNOME Developer Website\");\n"
+" gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about_dialog), \"http://developer.gnome.org\");\n"
+"\n"
+" /* The \"response\" signal is emitted when the dialog receives a delete event,\n"
+" * therefore we connect that signal to the on_close callback function\n"
+" * created above.\n"
+" */\n"
+" g_signal_connect (GTK_DIALOG (about_dialog), \"response\",\n"
+" G_CALLBACK (on_close), NULL);\n"
+"\n"
+" /* Show the about dialog */\n"
+" gtk_widget_show (about_dialog);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+"\n"
+" GSimpleAction *copy_action;\n"
+" GSimpleAction *paste_action;\n"
+" GSimpleAction *shape_action;\n"
+" GSimpleAction *about_action;\n"
+"\n"
+" /* Create a window with a title and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"MenuBar Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n"
+"\n"
+" /* Begin creating the \"copy\" action.\n"
+" * Note that it is an action without a state.\n"
+" */\n"
+" copy_action = g_simple_action_new (\"copy\", NULL);\n"
+" /* Connected to a callback function */\n"
+" g_signal_connect (copy_action, \"activate\", G_CALLBACK (copy_callback),\n"
+" GTK_WINDOW (window));\n"
+" /* Added to the window */\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (copy_action));\n"
+"\n"
+" /* Begin creating the \"paste\" action.\n"
+" * Note that it is an action without a state.\n"
+" */\n"
+" paste_action = g_simple_action_new (\"paste\", NULL);\n"
+" /* Connect the action to a callback function */\n"
+" g_signal_connect (paste_action, \"activate\", G_CALLBACK (paste_callback),\n"
+" GTK_WINDOW (window));\n"
+" /* Add it to the window */\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (paste_action));\n"
+"\n"
+" /* Begin creating the \"shape\" action.\n"
+" * Note that it is an action with a state.\n"
+" * First we state that the parameter type of the simple action is a string.\n"
+" * When using g_variant_type_new, it is appropriate to free the return value\n"
+" * once you're done with it.\n"
+" */\n"
+" GVariantType *type_string = g_variant_type_new (\"s\");\n"
+" /* parameters for the g_simple_action_new_stateful are: (name, parameter type,\n"
+" * initial state).\n"
+" */\n"
+" shape_action = g_simple_action_new_stateful (\"shape\", type_string,\n"
+" g_variant_new_string (\"line\"));\n"
+" /* Connect the action to a callback function */\n"
+" g_signal_connect (shape_action, \"activate\", G_CALLBACK (shape_callback),\n"
+" GTK_WINDOW (window));\n"
+" /* Add it to the window */\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (shape_action));\n"
+" g_variant_type_free (type_string);\n"
+"\n"
+" /* Begin creating the \"about\" action.\n"
+" * Note that it is an action without a state.\n"
+" */\n"
+" about_action = g_simple_action_new (\"about\", NULL);\n"
+" /* Connect the action to a callback function */\n"
+" g_signal_connect (about_action, \"activate\", G_CALLBACK (about_callback),\n"
+" GTK_WINDOW (window));\n"
+" /* Add it to the window */\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"new\" action */\n"
+"static void\n"
+"new_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"New\\\"\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"quit\" action */\n"
+"static void\n"
+"quit_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GApplication *application = user_data;\n"
+"\n"
+" g_print (\"You clicked \\\"Quit\\\"\\n\");\n"
+" g_application_quit (application);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"state\" action */\n"
+"static void\n"
+"state_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* The two possibilities in this case for the \"answer\" variable are either\n"
+" * \"on\" or \"off\".\n"
+" */\n"
+" const gchar *answer = g_variant_get_string (parameter, NULL);\n"
+" /* We print the information to the user */\n"
+" g_printf (\"State is set to %s.\\n\", answer);\n"
+" /* Note that we set the state of the action */\n"
+" g_simple_action_set_state (simple, parameter);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"awesome\" action */\n"
+"static void\n"
+"awesome_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GVariant *action_state = g_action_get_state (G_ACTION (simple));\n"
+" gboolean active = g_variant_get_boolean (action_state);\n"
+" GVariant *new_state = g_variant_new_boolean (!active);\n"
+" /* Set the new state for the action.\n"
+" * (Keeps track of whether it was last checked or unchecked).\n"
+" */\n"
+" g_simple_action_set_state (simple, new_state);\n"
+"\n"
+" if (active)\n"
+" g_print (\"You unchecked \\\"Awesome\\\"\\n\");\n"
+" else\n"
+" g_print (\"You checked \\\"Awesome\\\"\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the menu we are creating in this sample */\n"
+"static void\n"
+"startup (GApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* Initialize variables */\n"
+" GSimpleAction *new_action;\n"
+" GSimpleAction *quit_action;\n"
+" GSimpleAction *state_action;\n"
+" GSimpleAction *awesome_action;\n"
+"\n"
+" GtkBuilder *builder;\n"
+"\n"
+" GError *error = NULL;\n"
+"\n"
+" /* Begin creating the \"new\" action.\n"
+" * Note that it is an action without a state.\n"
+" */\n"
+" new_action = g_simple_action_new (\"new\", NULL);\n"
+" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
+" /* It is added to the overall application */\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
+"\n"
+" /* Begin creating the \"quit\" action.\n"
+" * Note that it is an action without a state.\n"
+" */\n"
+" quit_action = g_simple_action_new (\"quit\", NULL);\n"
+" g_signal_connect (quit_action, \"activate\", G_CALLBACK (quit_callback), app);\n"
+" /* It is added to the overall application */\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
+"\n"
+" /* Begin creating the \"state\" action.\n"
+" * Note that it is an action with a state.\n"
+" */\n"
+" GVariantType *type_string2 = g_variant_type_new (\"s\");\n"
+" state_action = g_simple_action_new_stateful (\"state\", type_string2,\n"
+" g_variant_new_string (\"off\"));\n"
+" g_signal_connect (state_action, \"activate\", G_CALLBACK (state_callback), app);\n"
+" /* It is added to the overall application */\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (state_action));\n"
+" g_variant_type_free (type_string2);\n"
+"\n"
+" /* Begin creating the \"awesome\" action.\n"
+" * Note that it is an action with a state.\n"
+" */\n"
+" awesome_action = g_simple_action_new_stateful (\"awesome\", NULL, g_variant_new_boolean (FALSE));\n"
+" g_signal_connect (awesome_action, \"activate\", G_CALLBACK (awesome_callback), app);\n"
+" /* It is added to the overall application */\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (awesome_action));\n"
+"\n"
+" /* A builder to add the User Interface designed with GLADE to the grid: */\n"
+" builder = gtk_builder_new ();\n"
+" /* Get the file (if it is there):\n"
+" * Note: you must make sure that the file is in the current directory for\n"
+" * this to work. The function used here returns a non-null value within\n"
+" * our variable \"error\" if an error is indeed found.\n"
+" */\n"
+" gtk_builder_add_from_file (builder, \"menubar.ui\", &error);\n"
+" if (error != NULL) {\n"
+" g_print (\"%s\\n\", error->message);\n"
+" g_error_free (error);\n"
+" }\n"
+"\n"
+" /* Extract the menubar */\n"
+" GObject *menubar = gtk_builder_get_object (builder, \"menubar\");\n"
+" gtk_application_set_menubar (GTK_APPLICATION (app), G_MENU_MODEL (menubar));\n"
+"\n"
+" /* Extract the appmenu */\n"
+" GObject *appmenu = gtk_builder_get_object (builder, \"appmenu\");\n"
+" gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (appmenu));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the application */\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"copy\" action */\n"
+"static void\n"
+"copy_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"\\\"Copy\\\" activated\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"paste\" action */\n"
+"static void\n"
+"paste_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"\\\"Paste\\\" activated\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"shape\" action */\n"
+"static void\n"
+"shape_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* We first gather the value of the GVariant instance with a string type.\n"
+" * The overall goal here is to see if shape is set to line, triangle, etc,\n"
+" * and put that value within the variable \"answer\".\n"
+" */\n"
+" const gchar *answer = g_variant_get_string (parameter, NULL);\n"
+" g_printf (\"Shape is set to %s.\\n\", answer);\n"
+" /* Note that we set the state of the action */\n"
+" g_simple_action_set_state (simple, parameter);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function in which closes the about_dialog created below */\n"
+"static void\n"
+"on_close (GtkDialog *dialog,\n"
+" gint response_id,\n"
+" gpointer user_data)\n"
+"{\n"
+" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the about action (see aboutdialog.c example) */\n"
+"static void\n"
+"about_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *about_dialog;\n"
+"\n"
+" about_dialog = gtk_about_dialog_new ();\n"
+"\n"
+" const gchar *authors[] = {\"GNOME Documentation Team\", NULL};\n"
+" const gchar *documenters[] = {\"GNOME Documentation Team\", NULL};\n"
+"\n"
+" /* Fill in the about_dialog with the desired information */\n"
+" gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (about_dialog), \"AboutDialog Example\");\n"
+" gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about_dialog), \"Copyright \\xc2\\xa9 2012 GNOME
Documentation Team\");\n"
+" gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about_dialog), authors);\n"
+" gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (about_dialog), documenters);\n"
+" gtk_about_dialog_set_website_label (GTK_ABOUT_DIALOG (about_dialog), \"GNOME Developer Website\");\n"
+" gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about_dialog), \"http://developer.gnome.org\");\n"
+"\n"
+" /* The \"response\" signal is emitted when the dialog receives a delete event,\n"
+" * therefore we connect that signal to the on_close callback function\n"
+" * created above.\n"
+" */\n"
+" g_signal_connect (GTK_DIALOG (about_dialog), \"response\",\n"
+" G_CALLBACK (on_close), NULL);\n"
+"\n"
+" /* Show the about dialog */\n"
+" gtk_widget_show (about_dialog);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+"\n"
+" GSimpleAction *copy_action;\n"
+" GSimpleAction *paste_action;\n"
+" GSimpleAction *shape_action;\n"
+" GSimpleAction *about_action;\n"
+"\n"
+" /* Create a window with a title and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"MenuBar Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n"
+"\n"
+" /* Begin creating the \"copy\" action.\n"
+" * Note that it is an action without a state.\n"
+" */\n"
+" copy_action = g_simple_action_new (\"copy\", NULL);\n"
+" /* Connected to a callback function */\n"
+" g_signal_connect (copy_action, \"activate\", G_CALLBACK (copy_callback),\n"
+" GTK_WINDOW (window));\n"
+" /* Added to the window */\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (copy_action));\n"
+"\n"
+" /* Begin creating the \"paste\" action.\n"
+" * Note that it is an action without a state.\n"
+" */\n"
+" paste_action = g_simple_action_new (\"paste\", NULL);\n"
+" /* Connect the action to a callback function */\n"
+" g_signal_connect (paste_action, \"activate\", G_CALLBACK (paste_callback),\n"
+" GTK_WINDOW (window));\n"
+" /* Add it to the window */\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (paste_action));\n"
+"\n"
+" /* Begin creating the \"shape\" action.\n"
+" * Note that it is an action with a state.\n"
+" * First we state that the parameter type of the simple action is a string.\n"
+" * When using g_variant_type_new, it is appropriate to free the return value\n"
+" * once you're done with it.\n"
+" */\n"
+" GVariantType *type_string = g_variant_type_new (\"s\");\n"
+" /* parameters for the g_simple_action_new_stateful are: (name, parameter type,\n"
+" * initial state).\n"
+" */\n"
+" shape_action = g_simple_action_new_stateful (\"shape\", type_string,\n"
+" g_variant_new_string (\"line\"));\n"
+" /* Connect the action to a callback function */\n"
+" g_signal_connect (shape_action, \"activate\", G_CALLBACK (shape_callback),\n"
+" GTK_WINDOW (window));\n"
+" /* Add it to the window */\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (shape_action));\n"
+" g_variant_type_free (type_string);\n"
+"\n"
+" /* Begin creating the \"about\" action.\n"
+" * Note that it is an action without a state.\n"
+" */\n"
+" about_action = g_simple_action_new (\"about\", NULL);\n"
+" /* Connect the action to a callback function */\n"
+" g_signal_connect (about_action, \"activate\", G_CALLBACK (about_callback),\n"
+" GTK_WINDOW (window));\n"
+" /* Add it to the window */\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"new\" action */\n"
+"static void\n"
+"new_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"New\\\"\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"quit\" action */\n"
+"static void\n"
+"quit_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GApplication *application = user_data;\n"
+"\n"
+" g_print (\"You clicked \\\"Quit\\\"\\n\");\n"
+" g_application_quit (application);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"state\" action */\n"
+"static void\n"
+"state_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* The two possibilities in this case for the \"answer\" variable are either\n"
+" * \"on\" or \"off\".\n"
+" */\n"
+" const gchar *answer = g_variant_get_string (parameter, NULL);\n"
+" /* We print the information to the user */\n"
+" g_printf (\"State is set to %s.\\n\", answer);\n"
+" /* Note that we set the state of the action */\n"
+" g_simple_action_set_state (simple, parameter);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the \"awesome\" action */\n"
+"static void\n"
+"awesome_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GVariant *action_state = g_action_get_state (G_ACTION (simple));\n"
+" gboolean active = g_variant_get_boolean (action_state);\n"
+" GVariant *new_state = g_variant_new_boolean (!active);\n"
+" /* Set the new state for the action.\n"
+" * (Keeps track of whether it was last checked or unchecked).\n"
+" */\n"
+" g_simple_action_set_state (simple, new_state);\n"
+"\n"
+" if (active)\n"
+" g_print (\"You unchecked \\\"Awesome\\\"\\n\");\n"
+" else\n"
+" g_print (\"You checked \\\"Awesome\\\"\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the menu we are creating in this sample */\n"
+"static void\n"
+"startup (GApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* Initialize variables */\n"
+" GSimpleAction *new_action;\n"
+" GSimpleAction *quit_action;\n"
+" GSimpleAction *state_action;\n"
+" GSimpleAction *awesome_action;\n"
+"\n"
+" GtkBuilder *builder;\n"
+"\n"
+" GError *error = NULL;\n"
+"\n"
+" /* Begin creating the \"new\" action.\n"
+" * Note that it is an action without a state.\n"
+" */\n"
+" new_action = g_simple_action_new (\"new\", NULL);\n"
+" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
+" /* It is added to the overall application */\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
+"\n"
+" /* Begin creating the \"quit\" action.\n"
+" * Note that it is an action without a state.\n"
+" */\n"
+" quit_action = g_simple_action_new (\"quit\", NULL);\n"
+" g_signal_connect (quit_action, \"activate\", G_CALLBACK (quit_callback), app);\n"
+" /* It is added to the overall application */\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
+"\n"
+" /* Begin creating the \"state\" action.\n"
+" * Note that it is an action with a state.\n"
+" */\n"
+" GVariantType *type_string2 = g_variant_type_new (\"s\");\n"
+" state_action = g_simple_action_new_stateful (\"state\", type_string2,\n"
+" g_variant_new_string (\"off\"));\n"
+" g_signal_connect (state_action, \"activate\", G_CALLBACK (state_callback), app);\n"
+" /* It is added to the overall application */\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (state_action));\n"
+" g_variant_type_free (type_string2);\n"
+"\n"
+" /* Begin creating the \"awesome\" action.\n"
+" * Note that it is an action with a state.\n"
+" */\n"
+" awesome_action = g_simple_action_new_stateful (\"awesome\", NULL, g_variant_new_boolean (FALSE));\n"
+" g_signal_connect (awesome_action, \"activate\", G_CALLBACK (awesome_callback), app);\n"
+" /* It is added to the overall application */\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (awesome_action));\n"
+"\n"
+" /* A builder to add the User Interface designed with GLADE to the grid: */\n"
+" builder = gtk_builder_new ();\n"
+" /* Get the file (if it is there):\n"
+" * Note: you must make sure that the file is in the current directory for\n"
+" * this to work. The function used here returns a non-null value within\n"
+" * our variable \"error\" if an error is indeed found.\n"
+" */\n"
+" gtk_builder_add_from_file (builder, \"menubar.ui\", &error);\n"
+" if (error != NULL) {\n"
+" g_print (\"%s\\n\", error->message);\n"
+" g_error_free (error);\n"
+" }\n"
+"\n"
+" /* Extract the menubar */\n"
+" GObject *menubar = gtk_builder_get_object (builder, \"menubar\");\n"
+" gtk_application_set_menubar (GTK_APPLICATION (app), G_MENU_MODEL (menubar));\n"
+"\n"
+" /* Extract the appmenu */\n"
+" GObject *appmenu = gtk_builder_get_object (builder, \"appmenu\");\n"
+" gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (appmenu));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the application */\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/menubar.c.page:37 C/scrolledwindow.c.page:34
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkApplication.html"
+"\">GtkApplication</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkApplication.html"
+"\">GtkApplication</link>"
+
+#. (itstool) path: item/p
+#: C/menubar.c.page:40
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk/stable/GtkAboutDialog.html"
+"\">GtkAboutDialog</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk/stable/GtkAboutDialog.html"
+"\">GtkAboutDialog</link>"
+
+#. (itstool) path: item/p
+#: C/menubar.c.page:41
+msgid ""
+"<link href=\"http://developer.gnome.org/glib/stable/glib-GVariantType.html"
+"\">GtkVariantType</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/glib/stable/glib-GVariantType.html"
+"\">GtkVariantType</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/menubar.py.page:132 C/menubar.vala.page:134
+msgctxt "_"
+msgid ""
+"external ref='media/menubar_choices.png' "
+"md5='47cdfa12caf85ba20dd3e835bd7f893f'"
+msgstr ""
+"external ref='media/menubar_choices.png' "
+"md5='47cdfa12caf85ba20dd3e835bd7f893f'"
+
+#. (itstool) path: info/title
+#: C/menubar.py.page:8
+msgctxt "text"
+msgid "MenuBar (Python)"
+msgstr "MenuBar (Python)"
+
+#. (itstool) path: page/title
+#: C/menubar.py.page:28
+msgid "MenuBar created using XML and GtkBuilder"
+msgstr "Una barra de menú creada usando XML y GtkBuilder."
+
+#. (itstool) path: section/title
+#: C/menubar.py.page:34 C/menubar.vala.page:29
+msgid "Create a MenuBar using XML"
+msgstr "Crear una barra de menú usando XML"
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:35 C/menubar.vala.page:30
+msgid "To create the menubar using XML:"
+msgstr "Para crear la barra de menú usando XML:"
+
+#. (itstool) path: item/p
+#: C/menubar.py.page:37 C/menubar.vala.page:32
+msgid "Create <file>menubar.ui</file> using your favorite text editor."
+msgstr "Cree <file>menubar.ui</file> usando su editor de texto favorito."
+
+#. (itstool) path: item/p
+#: C/menubar.py.page:38 C/menubar.vala.page:33
+msgid "Enter the following line at the top of the file:"
+msgstr "Añada la siguiente línea en la parte superior del archivo:"
+
+#. (itstool) path: item/code
+#: C/menubar.py.page:39 C/menubar.vala.page:34
+#, no-wrap
+msgid ""
+"\n"
+"<?xml version=\"1.0\"? encoding=\"UTF-8\"?>"
+msgstr ""
+"\n"
+"<?xml version=\"1.0\"? encoding=\"UTF-8\"?>"
+
+#. (itstool) path: item/p
+#: C/menubar.py.page:42 C/menubar.vala.page:37
+msgid ""
+"We want to create the interface which will contain our menubar and its "
+"submenus. Our menubar will contain <gui>File</gui>, <gui>Edit</gui>, "
+"<gui>Choices</gui> and <gui>Help</gui> submenus. We add the following XML "
+"code to the file:"
+msgstr ""
+"Se quiere crear la interfaz que contendrá la barra de menú y sus submenús. "
+"Su barra de menú contendrá los submenús <gui>File</gui>, <gui>Edit</gui>, "
+"<gui>Choices</gui> y <gui>Help</gui>. Se le añade el siguiente código XML al "
+"archivo:"
+
+#. (itstool) path: item/code
+#: C/menubar.py.page:43 C/menubar.vala.page:38
+#, no-wrap
+msgid ""
+"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<interface>\n"
+" <menu id=\"menubar\">\n"
+" <submenu>\n"
+" <attribute name=\"label\">File</attribute>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Edit</attribute>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Choices</attribute>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Help</attribute>\n"
+" </submenu>\n"
+" </menu>\n"
+"</interface>\n"
+msgstr ""
+"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<interface>\n"
+" <menu id=\"menubar\">\n"
+" <submenu>\n"
+" <attribute name=\"label\">File</attribute>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Edit</attribute>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Choices</attribute>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Help</attribute>\n"
+" </submenu>\n"
+" </menu>\n"
+"</interface>\n"
+
+#. (itstool) path: item/p
+#: C/menubar.py.page:45
+msgid ""
+"Now we will create the .py file and use GtkBuilder to import the "
+"<file>menubar.ui</file> we just created."
+msgstr ""
+"Ahora se crea el archivo .py y se usa «GtkBuilder» para importar el "
+"<file>menubar.ui</file> que acaba de crear."
+
+#. (itstool) path: section/title
+#: C/menubar.py.page:49 C/menubar.vala.page:43
+msgid "Add the MenuBar to the window using GtkBuilder"
+msgstr "Añadir la barra de menú a la ventana usando «GtkBuilder»"
+
+#. (itstool) path: section/code
+#: C/menubar.py.page:50
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"MenuBar Example\", application=app)\n"
+" self.set_default_size(200, 200)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # a builder to add the UI designed with Glade to the grid:\n"
+" builder = Gtk.Builder()\n"
+" # get the file (if it is there)\n"
+" try:\n"
+" builder.add_from_file(\"menubar_basis.ui\")\n"
+" except:\n"
+" print(\"file not found\")\n"
+" sys.exit()\n"
+"\n"
+" # we use the method Gtk.Application.set_menubar(menubar) to add the menubar\n"
+" # to the application (Note: NOT the window!)\n"
+" self.set_menubar(builder.get_object(\"menubar\"))\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"MenuBar Example\", application=app)\n"
+" self.set_default_size(200, 200)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # a builder to add the UI designed with Glade to the grid:\n"
+" builder = Gtk.Builder()\n"
+" # get the file (if it is there)\n"
+" try:\n"
+" builder.add_from_file(\"menubar_basis.ui\")\n"
+" except:\n"
+" print(\"file not found\")\n"
+" sys.exit()\n"
+"\n"
+" # we use the method Gtk.Application.set_menubar(menubar) to add the menubar\n"
+" # to the application (Note: NOT the window!)\n"
+" self.set_menubar(builder.get_object(\"menubar\"))\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:51
+msgid ""
+"Now run the python application. It should look like the picture at the top "
+"of this page."
+msgstr ""
+"Ahora ejecute la aplicación de Python. Se debería ver como la imagen en la "
+"parte superior de esta página."
+
+#. (itstool) path: section/title
+#: C/menubar.py.page:55 C/menubar.vala.page:51
+msgid "Add items to the menus"
+msgstr "Añadir elementos a los menús"
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:56 C/menubar.vala.page:52
+msgid ""
+"We start off by adding 2 menuitems to the <gui>File</gui> menu: <gui>New</"
+"gui> and <gui>Quit</gui>. We do this by adding a <code>section</code> to the "
+"the <code>File</code> submenu with these items. The <file>menubar.ui</file> "
+"should look like this (lines 6 to 13 inclusive comprise the newly added "
+"section):"
+msgstr ""
+"Se empieza añadiendo 2 elementos al menú <gui>File</gui>: <gui>New</gui> y "
+"<gui>Quit</gui>. Esto se hace añadiéndole una <code>section</code> al "
+"submenú <code>File</code> con estos elementos. El <file>menubar.ui</file> "
+"debe verse así (líneas 6 a 13 inclusive conforman la sección nueva):"
+
+#. (itstool) path: listing/title
+#: C/menubar.py.page:59
+msgid "menubar.ui"
+msgstr "menubar.ui"
+
+#. (itstool) path: listing/code
+#. (itstool) path: section/code
+#: C/menubar.py.page:60 C/menubar.vala.page:53
+#, no-wrap
+msgid ""
+"\n"
+"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<interface>\n"
+" <menu id=\"menubar\">\n"
+" <submenu>\n"
+" <attribute name=\"label\">File</attribute>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">New</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name =\"label\">Quit</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Edit</attribute>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Choices</attribute>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Help</attribute>\n"
+" </submenu>\n"
+" </menu>\n"
+"</interface>"
+msgstr ""
+"\n"
+"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<interface>\n"
+" <menu id=\"menubar\">\n"
+" <submenu>\n"
+" <attribute name=\"label\">File</attribute>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">New</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name =\"label\">Quit</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Edit</attribute>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Choices</attribute>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Help</attribute>\n"
+" </submenu>\n"
+" </menu>\n"
+"</interface>"
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:88
+msgid ""
+"Following this pattern, you can now add a <code>Copy</code> and a "
+"<code>Paste</code> item to the <code>Edit</code> submenu, and an "
+"<code>About</code> item to the <code>Help</code> submenu."
+msgstr ""
+"De esta misma manera puede añadirle un elemento <code>Copy</code> y uno "
+"<code>Paste</code> al submenú <code>Edit</code>, y un elemento <code>About</"
+"code> al submenú <code>Help</code>."
+
+#. (itstool) path: section/title
+#: C/menubar.py.page:93 C/menubar.vala.page:87
+msgid "Setup actions"
+msgstr "Configurar las acciones"
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:95
+msgid ""
+"We now create the actions for \"New\" and \"Quit\" connected to a callback "
+"function in the Python file; for instance we create \"new\" as:"
+msgstr ""
+"Ahora se crean las acciones para «New» y «Quit», conectadas a una función de "
+"retorno de llamada en el archivo de Python; por ejemplo se crea «new» así:"
+
+#. (itstool) path: section/code
+#: C/menubar.py.page:96
+#, no-wrap
+msgid ""
+"\n"
+"new_action = Gio.SimpleAction.new(\"new\", None)\n"
+"new_action.connect(\"activate\", self.new_callback)"
+msgstr ""
+"\n"
+"new_action = Gio.SimpleAction.new(\"new\", None)\n"
+"new_action.connect(\"activate\", self.new_callback)"
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:100
+msgid "And we create the callback function of \"new\" as"
+msgstr "Y se crea la función de retorno de llamada de «new» como"
+
+#. (itstool) path: section/code
+#: C/menubar.py.page:101
+#, no-wrap
+msgid ""
+"\n"
+"def new_callback(self, action, parameter):\n"
+" print \"You clicked \\\"New\\\"\""
+msgstr ""
+"\n"
+"def new_callback(self, action, parameter):\n"
+" print \"You clicked \\\"New\\\"\""
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:105
+msgid ""
+"Now, in the XML file, we connect the menu items to the actions in the XML "
+"file by adding the \"action\" attribute:"
+msgstr ""
+"Ahora, en el archivo XML, se conectan los elementos del menú a las acciones "
+"en el archivo XML añadiendo el atributo «action»:"
+
+#. (itstool) path: section/code
+#: C/menubar.py.page:106
+#, no-wrap
+msgid ""
+"\n"
+"<item>\n"
+" <attribute name=\"label\">New</attribute>\n"
+" <attribute name=\"action\">app.new</attribute>\n"
+"</item>"
+msgstr ""
+"\n"
+"<item>\n"
+" <attribute name=\"label\">New</attribute>\n"
+" <attribute name=\"action\">app.new</attribute>\n"
+"</item>"
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:112
+msgid ""
+"Note that for an action that is relative to the application, we use the "
+"prefix <code>app.</code>; for actions that are relative to the window we use "
+"the prefix <code>win.</code>."
+msgstr ""
+"Tenga en cuenta que para una acción relativa a la aplicación, se usa el "
+"prefijo <code>app.</code>; para acciones relativas a la ventana, se usa el "
+"prefijo <code>win.</code>."
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:114
+msgid ""
+"Finally, in the Python file, we add the action to the application or to the "
+"window - so for instance <code>app.new</code> will be added to the "
+"application in the method <code>do_startup(self)</code> as"
+msgstr ""
+"Finalmente, en el archivo de Python, se añade la acción a la aplicación o a "
+"la ventana: por ejemplo <code>app.new</code> se añadirá a la aplicación en "
+"el método <code>do_startup(self)</code> así:"
+
+#. (itstool) path: section/code
+#: C/menubar.py.page:115
+#, no-wrap
+msgid ""
+"\n"
+"self.add_action(new_action)"
+msgstr ""
+"\n"
+"self.add_action(new_action)"
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:118
+msgid ""
+"See <link xref=\"signals-callbacks.py\"/> for a more detailed explanation of "
+"signals and callbacks."
+msgstr ""
+"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
+"explicación más detallada sobre señales y retornos de llamada."
+
+#. (itstool) path: section/title
+#: C/menubar.py.page:122 C/menubar.vala.page:139
+msgid "Actions: Application or Window?"
+msgstr "Acciones: ¿aplicación o ventana?"
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:123 C/menubar.vala.page:140
+msgid ""
+"Above, we created the \"new\" and \"open\" actions as part of the "
+"MyApplication class. Actions which control the application itself, such as "
+"\"quit\" should be created similarly."
+msgstr ""
+"Anteriormente, se crearon las acciones «new» y «open» como parte de la clase "
+"«MyApplication». Las acciones que controlan la aplicación en sí, como «quit» "
+"deben crearse de manera similar."
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:125 C/menubar.vala.page:143
+msgid ""
+"Some actions, such as \"copy\" and \"paste\" deal with the window, not the "
+"application. Window actions should be created as part of the window class."
+msgstr ""
+"Algunas acciones, como «copy» y «paste» trabajan con la ventana, no con la "
+"aplicación. Las acciones de ventanas deben crearse como parte de la clase de "
+"la ventana."
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:127
+msgid ""
+"The complete example files contain both application actions and window "
+"actions. The window actions are the ones usually included in the <link xref="
+"\"gmenu.py\">application menu</link> also. It is not good practice to "
+"include window actions in the application menu. For demonstration purposes, "
+"the complete example files which follow include XML in the UI file which "
+"creates the application menu which includes a \"New\" and \"Open\" item, and "
+"these are hooked up to the same actions as the menubar items of the same "
+"name."
+msgstr ""
+"Los archivos de ejemplo completos contienen tanto acciones de aplicación "
+"como de ventana. Estas últimas son generalmente también las incluidas en el "
+"<link xref=\"gmenu.py\">menú de la aplicación</link>. No es una buena "
+"práctica incluir acciones de ventana en el menú de la aplicación. Con motivo "
+"de demostración, los archivos de ejemplo completos incluyen XML en el "
+"archivo de IU que crea el menú de la aplicación incluyendo elementos «New» y "
+"«Open», y estos están vinculados a las mismas acciones que los elementos de "
+"la barra de menú del mismo nombre."
+
+#. (itstool) path: section/title
+#: C/menubar.py.page:131 C/menubar.vala.page:133
+msgid "Choices submenu and items with state"
+msgstr "Submenú «choices» y elementos con estado"
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:133
+msgid ""
+"Lines 30 to 80 inclusive of the <link xref=\"menubar.py#xml-code\"/> "
+"demonstrate the XML code used to create the UI for <gui>Choices</gui> menu."
+msgstr ""
+"Las líneas 30 a 80 inclusive del <link xref=\"menubar.py#xml-code\"/> "
+"demuestran el código XML usado para crear la IU del menú <gui>Choices</gui>."
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:135
+msgid ""
+"The actions created so far are <em>stateless</em>, that is they do not "
+"retain or depend on a state given by the action itself. The actions we need "
+"to create for the Choices submenu, on the other hand, are <em>stateful</em>. "
+"An example of creation of a stateful action is:"
+msgstr ""
+"Las acciones creadas hasta ahora <em>no tienen estado</em>, esto significa "
+"que no mantienen o dependen de un estado dado por la acción en sí. Las "
+"acciones que necesita crear para el submenú «Choices», por otro lado, "
+"<em>tienen estado</em>. Un ejemplo de creación de una acción con estado es:"
+
+#. (itstool) path: section/code
+#: C/menubar.py.page:136
+#, no-wrap
+msgid ""
+"\n"
+"shape_action = Gio.SimpleAction.new_stateful(\"shape\", GLib.VariantType.new('s'),
GLib.Variant.new_string('line'))"
+msgstr ""
+"\n"
+"shape_action = Gio.SimpleAction.new_stateful(\"shape\", GLib.VariantType.new('s'),
GLib.Variant.new_string('line'))"
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:139
+msgid ""
+"where the variables of the method are: name, parameter type (in this case, a "
+"string - see <link href=\"http://developer.gnome.org/glib/unstable/glib-"
+"GVariantType.html\">here</link> for a complete list of character meanings), "
+"initial state (in this case, 'line' - in case of a <code>True</code> boolean "
+"value it should be <code>Glib.Variant.new_boolean(True)</code>, and so on, "
+"see <link href=\"http://developer.gnome.org/glib/unstable/glib-GVariant.html"
+"\">here</link> for a complete list)"
+msgstr ""
+"donde las variables del método son: nombre, tipo de parámetro (en este caso, "
+"una cadena: consulte <link href=\"http://developer.gnome.org/glib/unstable/"
+"glib-GVariantType.html\">aquí</link> para una lista completa de significados "
+"de caracteres), estado inicial (en este caso, «line»; en el caso de un valor "
+"booleano <code>True</code> debería ser <code>Glib.Variant.new_boolean(True)</"
+"code>, y así sucesivamente, consulte <link href=\"http://developer.gnome.org/"
+"glib/unstable/glib-GVariant.html\">aquí</link> para ver una lista completa)."
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:141
+msgid ""
+"After creating the stateful SimpleAction we connect it to the callback "
+"function and we add it to the window (or the application, if it is the "
+"case), as before:"
+msgstr ""
+"Después de haber creado la «SimpleAction» con estado se conecta a su función "
+"de retorno de llamada y se añade a la ventana (o la aplicación, si es el "
+"caso), como antes:"
+
+#. (itstool) path: section/code
+#: C/menubar.py.page:143
+#, no-wrap
+msgid ""
+"\n"
+"shape_action.connect(\"activate\", self.shape_callback)\n"
+"self.add_action(shape_action)"
+msgstr ""
+"\n"
+"shape_action.connect(\"activate\", self.shape_callback)\n"
+"self.add_action(shape_action)"
+
+#. (itstool) path: section/title
+#: C/menubar.py.page:150 C/menubar.vala.page:154
+msgid "Complete XML UI file for this example"
+msgstr "Archivo de IU XML completo de este ejemplo"
+
+#. (itstool) path: section/code
+#: C/menubar.py.page:151 C/menubar.vala.page:155
+#, no-wrap
+msgid ""
+"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<interface>\n"
+" <menu id=\"menubar\">\n"
+" <submenu>\n"
+" <attribute name=\"label\">File</attribute>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">New</attribute>\n"
+" <attribute name=\"action\">app.new</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Quit</attribute>\n"
+" <attribute name=\"action\">app.quit</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Edit</attribute>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">Copy</attribute>\n"
+" <attribute name=\"action\">win.copy</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Paste</attribute>\n"
+" <attribute name=\"action\">win.paste</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Choices</attribute>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Shapes</attribute>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">Line</attribute>\n"
+" <attribute name=\"action\">win.shape</attribute>\n"
+" <attribute name=\"target\">line</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Triangle</attribute>\n"
+" <attribute name=\"action\">win.shape</attribute>\n"
+" <attribute name=\"target\">triangle</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Square</attribute>\n"
+" <attribute name=\"action\">win.shape</attribute>\n"
+" <attribute name=\"target\">square</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Polygon</attribute>\n"
+" <attribute name=\"action\">win.shape</attribute>\n"
+" <attribute name=\"target\">polygon</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Circle</attribute>\n"
+" <attribute name=\"action\">win.shape</attribute>\n"
+" <attribute name=\"target\">circle</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </submenu>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">On</attribute>\n"
+" <attribute name=\"action\">app.state</attribute>\n"
+" <attribute name=\"target\">on</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Off</attribute>\n"
+" <attribute name=\"action\">app.state</attribute>\n"
+" <attribute name=\"target\">off</attribute>\n"
+" </item>\n"
+" </section>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">Awesome</attribute>\n"
+" <attribute name=\"action\">app.awesome</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Help</attribute>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">About</attribute>\n"
+" <attribute name=\"action\">win.about</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </submenu>\n"
+" </menu>\n"
+" <menu id=\"appmenu\">\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">New</attribute>\n"
+" <attribute name=\"action\">app.new</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Quit</attribute>\n"
+" <attribute name=\"action\">app.quit</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </menu>\n"
+"</interface>\n"
+msgstr ""
+"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<interface>\n"
+" <menu id=\"menubar\">\n"
+" <submenu>\n"
+" <attribute name=\"label\">File</attribute>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">New</attribute>\n"
+" <attribute name=\"action\">app.new</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Quit</attribute>\n"
+" <attribute name=\"action\">app.quit</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Edit</attribute>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">Copy</attribute>\n"
+" <attribute name=\"action\">win.copy</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Paste</attribute>\n"
+" <attribute name=\"action\">win.paste</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Choices</attribute>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Shapes</attribute>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">Line</attribute>\n"
+" <attribute name=\"action\">win.shape</attribute>\n"
+" <attribute name=\"target\">line</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Triangle</attribute>\n"
+" <attribute name=\"action\">win.shape</attribute>\n"
+" <attribute name=\"target\">triangle</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Square</attribute>\n"
+" <attribute name=\"action\">win.shape</attribute>\n"
+" <attribute name=\"target\">square</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Polygon</attribute>\n"
+" <attribute name=\"action\">win.shape</attribute>\n"
+" <attribute name=\"target\">polygon</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Circle</attribute>\n"
+" <attribute name=\"action\">win.shape</attribute>\n"
+" <attribute name=\"target\">circle</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </submenu>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">On</attribute>\n"
+" <attribute name=\"action\">app.state</attribute>\n"
+" <attribute name=\"target\">on</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Off</attribute>\n"
+" <attribute name=\"action\">app.state</attribute>\n"
+" <attribute name=\"target\">off</attribute>\n"
+" </item>\n"
+" </section>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">Awesome</attribute>\n"
+" <attribute name=\"action\">app.awesome</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </submenu>\n"
+" <submenu>\n"
+" <attribute name=\"label\">Help</attribute>\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">About</attribute>\n"
+" <attribute name=\"action\">win.about</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </submenu>\n"
+" </menu>\n"
+" <menu id=\"appmenu\">\n"
+" <section>\n"
+" <item>\n"
+" <attribute name=\"label\">New</attribute>\n"
+" <attribute name=\"action\">app.new</attribute>\n"
+" </item>\n"
+" <item>\n"
+" <attribute name=\"label\">Quit</attribute>\n"
+" <attribute name=\"action\">app.quit</attribute>\n"
+" </item>\n"
+" </section>\n"
+" </menu>\n"
+"</interface>\n"
+
+#. (itstool) path: section/title
+#: C/menubar.py.page:155
+msgid "Complete Python file for this example"
+msgstr "Archivo de Python completo de este ejemplo"
+
+#. (itstool) path: section/code
+#: C/menubar.py.page:156
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import GLib\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"MenuBar Example\", application=app)\n"
+" self.set_default_size(200, 200)\n"
+"\n"
+" # action without a state created (name, parameter type)\n"
+" copy_action = Gio.SimpleAction.new(\"copy\", None)\n"
+" # connected with the callback function\n"
+" copy_action.connect(\"activate\", self.copy_callback)\n"
+" # added to the window\n"
+" self.add_action(copy_action)\n"
+"\n"
+" # action without a state created (name, parameter type)\n"
+" paste_action = Gio.SimpleAction.new(\"paste\", None)\n"
+" # connected with the callback function\n"
+" paste_action.connect(\"activate\", self.paste_callback)\n"
+" # added to the window\n"
+" self.add_action(paste_action)\n"
+"\n"
+" # action with a state created (name, parameter type, initial state)\n"
+" shape_action = Gio.SimpleAction.new_stateful(\n"
+" \"shape\", GLib.VariantType.new('s'), GLib.Variant.new_string('line'))\n"
+" # connected to the callback function\n"
+" shape_action.connect(\"activate\", self.shape_callback)\n"
+" # added to the window\n"
+" self.add_action(shape_action)\n"
+"\n"
+" # action with a state created\n"
+" about_action = Gio.SimpleAction.new(\"about\", None)\n"
+" # action connected to the callback function\n"
+" about_action.connect(\"activate\", self.about_callback)\n"
+" # action added to the application\n"
+" self.add_action(about_action)\n"
+"\n"
+" # callback function for copy_action\n"
+" def copy_callback(self, action, parameter):\n"
+" print(\"\\\"Copy\\\" activated\")\n"
+"\n"
+" # callback function for paste_action\n"
+" def paste_callback(self, action, parameter):\n"
+" print(\"\\\"Paste\\\" activated\")\n"
+"\n"
+" # callback function for shape_action\n"
+" def shape_callback(self, action, parameter):\n"
+" print(\"Shape is set to\", parameter.get_string())\n"
+" # Note that we set the state of the action!\n"
+" action.set_state(parameter)\n"
+"\n"
+" # callback function for about (see the AboutDialog example)\n"
+" def about_callback(self, action, parameter):\n"
+" # a Gtk.AboutDialog\n"
+" aboutdialog = Gtk.AboutDialog()\n"
+"\n"
+" # lists of authors and documenters (will be used later)\n"
+" authors = [\"GNOME Documentation Team\"]\n"
+" documenters = [\"GNOME Documentation Team\"]\n"
+"\n"
+" # we fill in the aboutdialog\n"
+" aboutdialog.set_program_name(\"MenuBar Example\")\n"
+" aboutdialog.set_copyright(\n"
+" \"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\")\n"
+" aboutdialog.set_authors(authors)\n"
+" aboutdialog.set_documenters(documenters)\n"
+" aboutdialog.set_website(\"http://developer.gnome.org\")\n"
+" aboutdialog.set_website_label(\"GNOME Developer Website\")\n"
+"\n"
+" # to close the aboutdialog when \"close\" is clicked we connect the\n"
+" # \"response\" signal to on_close\n"
+" aboutdialog.connect(\"response\", self.on_close)\n"
+" # show the aboutdialog\n"
+" aboutdialog.show()\n"
+"\n"
+" # a callback function to destroy the aboutdialog\n"
+" def on_close(self, action, parameter):\n"
+" action.destroy()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" # FIRST THING TO DO: do_startup()\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # action without a state created\n"
+" new_action = Gio.SimpleAction.new(\"new\", None)\n"
+" # action connected to the callback function\n"
+" new_action.connect(\"activate\", self.new_callback)\n"
+" # action added to the application\n"
+" self.add_action(new_action)\n"
+"\n"
+" # action without a state created\n"
+" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
+" # action connected to the callback function\n"
+" quit_action.connect(\"activate\", self.quit_callback)\n"
+" # action added to the application\n"
+" self.add_action(quit_action)\n"
+"\n"
+" # action with a state created\n"
+" state_action = Gio.SimpleAction.new_stateful(\n"
+" \"state\", GLib.VariantType.new('s'), GLib.Variant.new_string('off'))\n"
+" # action connected to the callback function\n"
+" state_action.connect(\"activate\", self.state_callback)\n"
+" # action added to the application\n"
+" self.add_action(state_action)\n"
+"\n"
+" # action with a state created\n"
+" awesome_action = Gio.SimpleAction.new_stateful(\n"
+" \"awesome\", None, GLib.Variant.new_boolean(False))\n"
+" # action connected to the callback function\n"
+" awesome_action.connect(\"activate\", self.awesome_callback)\n"
+" # action added to the application\n"
+" self.add_action(awesome_action)\n"
+"\n"
+" # a builder to add the UI designed with Glade to the grid:\n"
+" builder = Gtk.Builder()\n"
+" # get the file (if it is there)\n"
+" try:\n"
+" builder.add_from_file(\"menubar.ui\")\n"
+" except:\n"
+" print(\"file not found\")\n"
+" sys.exit()\n"
+"\n"
+" # we use the method Gtk.Application.set_menubar(menubar) to add the menubar\n"
+" # and the menu to the application (Note: NOT the window!)\n"
+" self.set_menubar(builder.get_object(\"menubar\"))\n"
+" self.set_app_menu(builder.get_object(\"appmenu\"))\n"
+"\n"
+" # callback function for new\n"
+" def new_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"New\\\"\")\n"
+"\n"
+" # callback function for quit\n"
+" def quit_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Quit\\\"\")\n"
+" sys.exit()\n"
+"\n"
+" # callback function for state\n"
+" def state_callback(self, action, parameter):\n"
+" print(\"State is set to\", parameter.get_string())\n"
+" action.set_state(parameter)\n"
+"\n"
+" # callback function for awesome\n"
+" def awesome_callback(self, action, parameter):\n"
+" action.set_state(GLib.Variant.new_boolean(not action.get_state()))\n"
+" if action.get_state().get_boolean() is True:\n"
+" print(\"You checked \\\"Awesome\\\"\")\n"
+" else:\n"
+" print(\"You unchecked \\\"Awesome\\\"\")\n"
+"\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import GLib\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"MenuBar Example\", application=app)\n"
+" self.set_default_size(200, 200)\n"
+"\n"
+" # action without a state created (name, parameter type)\n"
+" copy_action = Gio.SimpleAction.new(\"copy\", None)\n"
+" # connected with the callback function\n"
+" copy_action.connect(\"activate\", self.copy_callback)\n"
+" # added to the window\n"
+" self.add_action(copy_action)\n"
+"\n"
+" # action without a state created (name, parameter type)\n"
+" paste_action = Gio.SimpleAction.new(\"paste\", None)\n"
+" # connected with the callback function\n"
+" paste_action.connect(\"activate\", self.paste_callback)\n"
+" # added to the window\n"
+" self.add_action(paste_action)\n"
+"\n"
+" # action with a state created (name, parameter type, initial state)\n"
+" shape_action = Gio.SimpleAction.new_stateful(\n"
+" \"shape\", GLib.VariantType.new('s'), GLib.Variant.new_string('line'))\n"
+" # connected to the callback function\n"
+" shape_action.connect(\"activate\", self.shape_callback)\n"
+" # added to the window\n"
+" self.add_action(shape_action)\n"
+"\n"
+" # action with a state created\n"
+" about_action = Gio.SimpleAction.new(\"about\", None)\n"
+" # action connected to the callback function\n"
+" about_action.connect(\"activate\", self.about_callback)\n"
+" # action added to the application\n"
+" self.add_action(about_action)\n"
+"\n"
+" # callback function for copy_action\n"
+" def copy_callback(self, action, parameter):\n"
+" print(\"\\\"Copy\\\" activated\")\n"
+"\n"
+" # callback function for paste_action\n"
+" def paste_callback(self, action, parameter):\n"
+" print(\"\\\"Paste\\\" activated\")\n"
+"\n"
+" # callback function for shape_action\n"
+" def shape_callback(self, action, parameter):\n"
+" print(\"Shape is set to\", parameter.get_string())\n"
+" # Note that we set the state of the action!\n"
+" action.set_state(parameter)\n"
+"\n"
+" # callback function for about (see the AboutDialog example)\n"
+" def about_callback(self, action, parameter):\n"
+" # a Gtk.AboutDialog\n"
+" aboutdialog = Gtk.AboutDialog()\n"
+"\n"
+" # lists of authors and documenters (will be used later)\n"
+" authors = [\"GNOME Documentation Team\"]\n"
+" documenters = [\"GNOME Documentation Team\"]\n"
+"\n"
+" # we fill in the aboutdialog\n"
+" aboutdialog.set_program_name(\"MenuBar Example\")\n"
+" aboutdialog.set_copyright(\n"
+" \"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\")\n"
+" aboutdialog.set_authors(authors)\n"
+" aboutdialog.set_documenters(documenters)\n"
+" aboutdialog.set_website(\"http://developer.gnome.org\")\n"
+" aboutdialog.set_website_label(\"GNOME Developer Website\")\n"
+"\n"
+" # to close the aboutdialog when \"close\" is clicked we connect the\n"
+" # \"response\" signal to on_close\n"
+" aboutdialog.connect(\"response\", self.on_close)\n"
+" # show the aboutdialog\n"
+" aboutdialog.show()\n"
+"\n"
+" # a callback function to destroy the aboutdialog\n"
+" def on_close(self, action, parameter):\n"
+" action.destroy()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" # FIRST THING TO DO: do_startup()\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # action without a state created\n"
+" new_action = Gio.SimpleAction.new(\"new\", None)\n"
+" # action connected to the callback function\n"
+" new_action.connect(\"activate\", self.new_callback)\n"
+" # action added to the application\n"
+" self.add_action(new_action)\n"
+"\n"
+" # action without a state created\n"
+" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
+" # action connected to the callback function\n"
+" quit_action.connect(\"activate\", self.quit_callback)\n"
+" # action added to the application\n"
+" self.add_action(quit_action)\n"
+"\n"
+" # action with a state created\n"
+" state_action = Gio.SimpleAction.new_stateful(\n"
+" \"state\", GLib.VariantType.new('s'), GLib.Variant.new_string('off'))\n"
+" # action connected to the callback function\n"
+" state_action.connect(\"activate\", self.state_callback)\n"
+" # action added to the application\n"
+" self.add_action(state_action)\n"
+"\n"
+" # action with a state created\n"
+" awesome_action = Gio.SimpleAction.new_stateful(\n"
+" \"awesome\", None, GLib.Variant.new_boolean(False))\n"
+" # action connected to the callback function\n"
+" awesome_action.connect(\"activate\", self.awesome_callback)\n"
+" # action added to the application\n"
+" self.add_action(awesome_action)\n"
+"\n"
+" # a builder to add the UI designed with Glade to the grid:\n"
+" builder = Gtk.Builder()\n"
+" # get the file (if it is there)\n"
+" try:\n"
+" builder.add_from_file(\"menubar.ui\")\n"
+" except:\n"
+" print(\"file not found\")\n"
+" sys.exit()\n"
+"\n"
+" # we use the method Gtk.Application.set_menubar(menubar) to add the menubar\n"
+" # and the menu to the application (Note: NOT the window!)\n"
+" self.set_menubar(builder.get_object(\"menubar\"))\n"
+" self.set_app_menu(builder.get_object(\"appmenu\"))\n"
+"\n"
+" # callback function for new\n"
+" def new_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"New\\\"\")\n"
+"\n"
+" # callback function for quit\n"
+" def quit_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Quit\\\"\")\n"
+" sys.exit()\n"
+"\n"
+" # callback function for state\n"
+" def state_callback(self, action, parameter):\n"
+" print(\"State is set to\", parameter.get_string())\n"
+" action.set_state(parameter)\n"
+"\n"
+" # callback function for awesome\n"
+" def awesome_callback(self, action, parameter):\n"
+" action.set_state(GLib.Variant.new_boolean(not action.get_state()))\n"
+" if action.get_state().get_boolean() is True:\n"
+" print(\"You checked \\\"Awesome\\\"\")\n"
+" else:\n"
+" print(\"You unchecked \\\"Awesome\\\"\")\n"
+"\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/menubar.py.page:159
+msgid "Mnemonics and Accelerators"
+msgstr "Atajos y aceleradores"
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:160 C/menubar.vala.page:162
+msgid ""
+"Labels may contain mnemonics. Mnemonics are underlined characters in the "
+"label, used for keyboard navigation. Mnemonics are created by placing an "
+"underscore before the mnemonic character. For example \"_File\" instead of "
+"just \"File\" in the menubar.ui label attribute."
+msgstr ""
+"Las etiquetas pueden contener atajos. Los atajos son caracteres subrayados "
+"en la etiqueta, usados para navegar con el teclado. Se crean poniendo un "
+"guión bajo antes del carácter de atajo. Por ejemplo «_Archivo» en lugar de "
+"solo «Archivo» en el atributo «label» del «menubar.ui»."
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:161 C/menubar.vala.page:163
+msgid ""
+"The mnemonics are visible when you press the <key>Alt</key> key. Pressing "
+"<keyseq><key>Alt</key><key>F</key></keyseq> will open the <gui>File</gui> "
+"menu."
+msgstr ""
+"Los atajos son visibles cuando pulsa la tecla <key>Alt</key>. Presionar "
+"<keyseq><key>Alt</key><key>A</key></keyseq> abrirá el menú <gui>Archivo</"
+"gui>."
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:163 C/menubar.vala.page:168
+msgid ""
+"Accelerators can be explicitly added in the UI definitions. For example, it "
+"is common to be able to quit an application by pressing <keyseq><key>Ctrl</"
+"key><key>Q</key></keyseq> or to save a file by pressing <keyseq><key>Ctrl</"
+"key><key>S</key></keyseq>. To add an accelerator to the UI definition, you "
+"simply need add an \"accel\" attribute to the item."
+msgstr ""
+"Los aceleradores pueden añadirse explícitamente en las definiciones de la "
+"IU. Por ejemplo, es común poder cerrar una aplicación presionando "
+"<keyseq><key>Ctrl</key><key>Q</key></keyseq> o guardar un archivo "
+"presionando <keyseq><key>Ctrl</key><key>S</key></keyseq>. Para añadir un "
+"acelerador a la definición de IU, simplemente añádale un atributo «accel» al "
+"elemento."
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:164 C/menubar.vala.page:169
+msgid ""
+"<code mime=\"application/xml\"><attribute name=\"accel\">&lt;"
+"Primary&gt;q</attribute></code> will create the <keyseq><key>Ctrl</"
+"key><key>Q</key></keyseq> sequence when added to the <code>Quit</code> label "
+"item. Here, \"Primary\" refers to the <key>Ctrl</key> key on a PC or the "
+"<key>⌘</key> key on a Mac."
+msgstr ""
+"<code mime=\"application/xml\"><attribute name=\"accel\">&lt;"
+"Primary&gt;q</attribute></code> creará la secuencia "
+"<keyseq><key>Ctrl</key><key>Q</key></keyseq> cuando se añada al elemento de "
+"la etiqueta <code>Quit</code>. Aquí, «Primary» se refiere a la tecla "
+"<key>Ctrl</key> en una PC o <key>⌘</key> en una Mac."
+
+#. (itstool) path: section/code
+#: C/menubar.py.page:166 C/menubar.vala.page:171
+#, no-wrap
+msgid ""
+"\n"
+"<item>\n"
+" <attribute name=\"label\">_Quit</attribute>\n"
+" <attribute name=\"action\">app.quit</attribute>\n"
+" <attribute name=\"accel\">&lt;Primary&gt;q</attribute>\n"
+"</item>"
+msgstr ""
+"\n"
+"<item>\n"
+" <attribute name=\"label\">_Quit</attribute>\n"
+" <attribute name=\"action\">app.quit</attribute>\n"
+" <attribute name=\"accel\">&lt;Primary&gt;q</attribute>\n"
+"</item>"
+
+#. (itstool) path: section/title
+#: C/menubar.py.page:174 C/menubar.vala.page:179
+msgid "Translatable strings"
+msgstr "Cadenas traducibles"
+
+#. (itstool) path: section/p
+#: C/menubar.py.page:175 C/menubar.vala.page:180
+msgid ""
+"Since GNOME applications are being translated into <link href=\"http://l10n."
+"gnome.org/languages/\">many languages</link>, it is important that the "
+"strings in your application are translatable. To make a label translatable, "
+"simple set <code>translatable=\"yes\"</code>:"
+msgstr ""
+"Dado que las aplicaciones de GNOME se traducen a <link href=\"http://l10n."
+"gnome.org/languages/\">muchos idiomas</link>, es importante que las cadenas "
+"en su aplicación puedan traducirse. Para hacer una etiqueta traducible, "
+"simplemente añada <code>translatable=\"yes\"</code>:"
+
+#. (itstool) path: section/code
+#: C/menubar.py.page:179
+#, no-wrap
+msgid "<attribute name=\"label\" translatable=\"yes\">Quit</attribute>"
+msgstr "<attribute name=\"label\" translatable=\"yes\">Quit</attribute>"
+
+#. (itstool) path: item/p
+#: C/menubar.py.page:186
+msgid ""
+"<link href=\"http://developer.gnome.org/gio/unstable/GSimpleAction.html"
+"\">GSimpleAction</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gio/unstable/GSimpleAction.html"
+"\">GSimpleAction</link>"
+
+#. (itstool) path: item/p
+#: C/menubar.py.page:187 C/toolbar_builder.py.page:197
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkBuilder.html"
+"\">GtkBuilder</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkBuilder.html"
+"\">GtkBuilder</link>"
+
+#. (itstool) path: info/title
+#: C/menubar.vala.page:8
+msgctxt "text"
+msgid "MenuBar (Vala)"
+msgstr "MenuBar (Vala)"
+
+#. (itstool) path: item/p
+#: C/menubar.vala.page:40
+msgid ""
+"Now we will create the .vala file and use GtkBuilder to import the "
+"<file>menubar.ui</file> we just created."
+msgstr ""
+"Ahora se creará el archivo «.vala» y se usará «GtkBuilder» para importar el "
+"<file>menubar.ui</file> que acaba de crear."
+
+#. (itstool) path: section/code
+#: C/menubar.vala.page:44
+#, no-wrap
+msgid ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"MenuBar Example\");\n"
+"\t\tthis.set_default_size (200, 200);\n"
+"\t}\n"
+"}\n"
+"\n"
+"class MyApplication: Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\t/* Setup menubar. */\n"
+"\t\t/* Get the UI file. */\n"
+"\t\tvar builder = new Gtk.Builder ();\n"
+"\t\ttry {\n"
+"\t\t\tbuilder.add_from_file (\"menubar_basis.ui\");\n"
+"\t\t/* Handle the exception. */\n"
+"\t\t} catch (Error e) {\n"
+"\t\t\terror (\"Unable to load file: %s\", e.message);\n"
+"\t\t}\n"
+"\n"
+"\t\t/* Get the menubar from the builder. */\n"
+"\t\tthis.menubar = builder.get_object (\"menubar\") as MenuModel;\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"MenuBar Example\");\n"
+"\t\tthis.set_default_size (200, 200);\n"
+"\t}\n"
+"}\n"
+"\n"
+"class MyApplication: Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\t/* Setup menubar. */\n"
+"\t\t/* Get the UI file. */\n"
+"\t\tvar builder = new Gtk.Builder ();\n"
+"\t\ttry {\n"
+"\t\t\tbuilder.add_from_file (\"menubar_basis.ui\");\n"
+"\t\t/* Handle the exception. */\n"
+"\t\t} catch (Error e) {\n"
+"\t\t\terror (\"Unable to load file: %s\", e.message);\n"
+"\t\t}\n"
+"\n"
+"\t\t/* Get the menubar from the builder. */\n"
+"\t\tthis.menubar = builder.get_object (\"menubar\") as MenuModel;\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: section/p
+#: C/menubar.vala.page:45
+msgid ""
+"Now, compile the vala file, and run it. The application should look like the "
+"picture at the top of this page."
+msgstr ""
+"Ahora, compile el archivo vala y ejecútelo. La aplicación debería verse como "
+"la imagen en la parte superior de esta página."
+
+#. (itstool) path: section/p
+#: C/menubar.vala.page:80
+msgid ""
+"Following this pattern, you can now add a <code>Copy</code> and a "
+"<code>Paste</code> item to the <code>Edit</code> submenu, and an "
+"<code>About</code> item to the <code>Help</code> submenu. We will hold off "
+"on adding items to the <link xref=\"menubar.vala#choices\">Choices submenu</"
+"link> until further in the tutorial."
+msgstr ""
+"De esta misma manera, ahora puede añadir elementos <code>Copy</code> y "
+"<code>Paste</code> al submenú <code>Edit</code>, y un elemento <code>About</"
+"code> al submenú <code>Help</code>. No añadiremos elementos al <link xref="
+"\"menubar.vala#choices\">submenú Choices</link> hasta más adelante en el "
+"tutorial."
+
+#. (itstool) path: note/p
+#: C/menubar.vala.page:82
+msgid ""
+"You do not need to recompile the vala program if you only made changes to "
+"the UI file. Just run your previously compiled application, and the UI "
+"changes will be reflected."
+msgstr ""
+"No necesita recompilar el programa vala si sólo ha hecho cambios al archivo "
+"UI. Simplemente ejecute su aplicación anteriormente compilada y se "
+"reflejarán los cambios en la IU."
+
+#. (itstool) path: section/p
+#: C/menubar.vala.page:88
+msgid "This is a three step process."
+msgstr "Este es un proceso de tres pasos."
+
+#. (itstool) path: item/p
+#: C/menubar.vala.page:90
+msgid ""
+"First we create the ActionEntry array in the MyApplication class. An "
+"ActionEntry consists of:"
+msgstr ""
+"Primero se crea la matriz «ActionEntry» en la clase «MyApplication». Un "
+"«ActionEntry» consiste de:"
+
+#. (itstool) path: item/p
+#: C/menubar.vala.page:93
+msgid "the \"action name\" (mandatory)"
+msgstr "el «nombre de la acción» (obligatorio)"
+
+#. (itstool) path: item/p
+#: C/menubar.vala.page:94
+msgid ""
+"the callback function to connect to the \"activate\" signal of the action "
+"(if applicable)"
+msgstr ""
+"la función de retorno de llamada que conectar a la señal «activate» de la "
+"acción (si corresponde)"
+
+#. (itstool) path: item/p
+#: C/menubar.vala.page:95
+msgid ""
+"the type of the parameter that must be passed to the activate function for "
+"the action (if applicable)"
+msgstr ""
+"el tipo de parámetro que debe pasarse a la función «activate» para la acción "
+"(si corresponde)"
+
+#. (itstool) path: item/p
+#: C/menubar.vala.page:96
+msgid "the initial state for this action (if applicable)"
+msgstr "el estado inicial de la acción (si corresponde)"
+
+#. (itstool) path: item/p
+#: C/menubar.vala.page:97
+msgid "the callback to connect to \"change-state\" signal (if applicable)"
+msgstr ""
+"el retorno de llamada que conectar a la señal «change-state» (si corresponde)"
+
+#. (itstool) path: item/code
+#: C/menubar.vala.page:99
+#, no-wrap
+msgid ""
+"\n"
+"const ActionEntry[] actions = {\n"
+" { \"new\", new_cb }, // {\"action name\", callback_function}\n"
+" { \"quit\", quit_cb }\n"
+"};"
+msgstr ""
+"\n"
+"const ActionEntry[] actions = {\n"
+" { \"new\", new_cb }, // {\"action name\", callback_function}\n"
+" { \"quit\", quit_cb }\n"
+"};"
+
+#. (itstool) path: item/p
+#: C/menubar.vala.page:106
+msgid "Second, we create the callback functions the actions are connected to."
+msgstr ""
+"Segundo, se crean las funciones de retorno de llamada a las que se conectan "
+"las acciones."
+
+#. (itstool) path: item/code
+#: C/menubar.vala.page:107
+#, no-wrap
+msgid ""
+"\n"
+"void new_cb (SimpleAction action, Variant? parameter) {\n"
+" print (\"You clicked \\\"New\\\"\\n\");\n"
+" //new MyWindow (this).show ();\n"
+"}\n"
+"\n"
+"void quit_cb (SimpleAction action, Variant? parameter) {\n"
+" print (\"You clicked \\\"Quit\\\"\\n\");\n"
+" this.quit ();\n"
+"}"
+msgstr ""
+"\n"
+"void new_cb (SimpleAction action, Variant? parameter) {\n"
+" print (\"You clicked \\\"New\\\"\\n\");\n"
+" //new MyWindow (this).show ();\n"
+"}\n"
+"\n"
+"void quit_cb (SimpleAction action, Variant? parameter) {\n"
+" print (\"You clicked \\\"Quit\\\"\\n\");\n"
+" this.quit ();\n"
+"}"
+
+#. (itstool) path: item/p
+#: C/menubar.vala.page:118
+msgid ""
+"And lastly, we connect the menu items to the actions in the XML file by "
+"adding the \"action\" attribute:"
+msgstr ""
+"Y por último, se conectan los elementos del menú a las acciones en el "
+"archivo XML añadiendo el atributo «action»:"
+
+#. (itstool) path: item/code
+#: C/menubar.vala.page:119
+#, no-wrap
+msgid ""
+"\n"
+"<item>\n"
+" <attribute name=\"label\">New</attribute>\n"
+" <attribute name=\"action\">app.new</attribute>\n"
+"</item>\n"
+"<item>\n"
+" <attribute name=\"label\">Quit</attribute>\n"
+" <attribute name=\"action\">app.quit</attribute>\n"
+"</item>"
+msgstr ""
+"\n"
+"<item>\n"
+" <attribute name=\"label\">New</attribute>\n"
+" <attribute name=\"action\">app.new</attribute>\n"
+"</item>\n"
+"<item>\n"
+" <attribute name=\"label\">Quit</attribute>\n"
+" <attribute name=\"action\">app.quit</attribute>\n"
+"</item>"
+
+#. (itstool) path: section/p
+#: C/menubar.vala.page:135
+msgid ""
+"Lines 30 to 80 inclusive of the <link xref=\"menubar.vala#xml-code\"/> "
+"demonstrate the XML code used to create the UI for <gui>Choices</gui> menu."
+msgstr ""
+"Las líneas 30 a 80 inclusive del <link xref=\"menubar.vala#xml-code\"/> "
+"demuestran el código XML usado para crear la IU del menú <gui>Choices</gui>."
+
+#. (itstool) path: section/p
+#: C/menubar.vala.page:146
+msgid ""
+"The complete example files contain both application actions and window "
+"applications. The window actions are the ones usually included in the <link "
+"xref=\"gmenu.vala\">application menu</link> also. It is not good practice to "
+"include window actions in the application menu. For demonstration purposes, "
+"the complete example files which follow include XML in the UI file which "
+"creates the application menu which includes a \"New\" and \"Open\" item, and "
+"these are hooked up to the same actions as the menubar items of the same "
+"name."
+msgstr ""
+"Los archivos de ejemplo completos contienen tanto acciones de aplicación "
+"como de ventana. Las acciones de ventana son las que generalmente también se "
+"incluyen en el <link xref=\"gmenu.vala\">menú de la aplicación</link>. No es "
+"buena práctica incluir acciones de ventana en el menú de la aplicación. Con "
+"motivo de demostración, los archivos completos de ejemplo a continuación "
+"incluyen XML en el archivo UI que crea el menú de la aplicación incluyendo "
+"elementos «New» y «Open», vinculados a las mismas acciones que los elementos "
+"de la barra de menú del mismo nombre."
+
+#. (itstool) path: section/title
+#: C/menubar.vala.page:157
+msgid "Complete Vala file for this example"
+msgstr "Archivo de vala completo para este ejemplo"
+
+#. (itstool) path: section/code
+#: C/menubar.vala.page:158
+#, no-wrap
+msgid ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Callback functions for the window actions. */\n"
+"\tvoid copy_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"\\\"Copy\\\" activated\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid paste_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"\\\"Paste\\\" activated\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid shape_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"shape is set to %s\\n\", parameter.get_string(null));\n"
+"\t\taction.set_state (parameter);\n"
+"\t}\n"
+"\n"
+"\t/* Create the window actions. */\n"
+"\tconst ActionEntry[] actions = {\n"
+"\t\t/*{ \"action name\", cb to connect to \"activate\" signal, parameter type,\n"
+"\t\t initial state, cb to connect to \"change-state\" signal } */\n"
+"\t\t{ \"copy\", copy_cb },\n"
+"\t\t{ \"paste\", paste_cb },\n"
+"\t\t{ \"shape\", shape_cb, \"s\", \"'line'\"}\n"
+"\t};\n"
+"\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"MenuBar Example\");\n"
+"\t\tthis.set_default_size (200, 200);\n"
+"\n"
+"\t\t/* Setup window actions. */\n"
+"\t\tthis.add_action_entries (actions, this);\n"
+"\t}\n"
+"}\n"
+"\n"
+"class MyApplication: Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\t/* Callback functions for the application actions. */\n"
+"\tvoid new_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\t//new MyWindow (this).show ();\n"
+"\t\tprint (\"You clicked \\\"New\\\"\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid quit_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"You clicked \\\"Quit\\\"\\n\");\n"
+"\t\tthis.quit ();\n"
+"\t}\n"
+"\n"
+"\tvoid awesome_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tvar active = action.get_state ().get_boolean ();\n"
+"\t\taction.set_state (new Variant.boolean (!active));\n"
+"\t\tif (active)\n"
+"\t\t\tprint (\"You unchecked \\\"Awesome\\\"\\n\");\n"
+"\t\telse\n"
+"\t\t\tprint (\"You checked \\\"Awesome\\\"\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid state_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"state is set to %s\\n\", parameter.get_string(null));\n"
+"\t\taction.set_state (parameter);\n"
+"\t}\n"
+"\n"
+"\t/* Create the application actions. */\n"
+"\tconst ActionEntry[] actions = {\n"
+"\t\t{ \"new\", new_cb },\n"
+"\t\t{ \"quit\", quit_cb },\n"
+"\t\t{ \"awesome\", awesome_cb, null, \"false\" },\n"
+"\t\t{ \"state\", state_cb, \"s\", \"'off'\" }\n"
+"\t};\n"
+"\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\t/* Setup application actions. */\n"
+"\t\tthis.add_action_entries (actions, this);\n"
+"\n"
+"\t\t/* Setup menubar and app_menu. */\n"
+"\t\t/* Get the UI file. */\n"
+"\t\tvar builder = new Gtk.Builder ();\n"
+"\t\ttry {\n"
+"\t\t\tbuilder.add_from_file (\"menubar.ui\");\n"
+"\t\t} catch (Error e) {\n"
+"\t\t\terror (\"Unable to load file: %s\", e.message);\n"
+"\t\t}\n"
+"\n"
+"\t\t/* Get the menubar from the builder. */\n"
+"\t\tthis.menubar = builder.get_object (\"menubar\") as MenuModel;\n"
+"\n"
+"\t\t/* Get the app_menu from the builder. */\n"
+"\t\tthis.app_menu = builder.get_object (\"appmenu\") as MenuModel;\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Callback functions for the window actions. */\n"
+"\tvoid copy_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"\\\"Copy\\\" activated\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid paste_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"\\\"Paste\\\" activated\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid shape_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"shape is set to %s\\n\", parameter.get_string(null));\n"
+"\t\taction.set_state (parameter);\n"
+"\t}\n"
+"\n"
+"\t/* Create the window actions. */\n"
+"\tconst ActionEntry[] actions = {\n"
+"\t\t/*{ \"action name\", cb to connect to \"activate\" signal, parameter type,\n"
+"\t\t initial state, cb to connect to \"change-state\" signal } */\n"
+"\t\t{ \"copy\", copy_cb },\n"
+"\t\t{ \"paste\", paste_cb },\n"
+"\t\t{ \"shape\", shape_cb, \"s\", \"'line'\"}\n"
+"\t};\n"
+"\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"MenuBar Example\");\n"
+"\t\tthis.set_default_size (200, 200);\n"
+"\n"
+"\t\t/* Setup window actions. */\n"
+"\t\tthis.add_action_entries (actions, this);\n"
+"\t}\n"
+"}\n"
+"\n"
+"class MyApplication: Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\t/* Callback functions for the application actions. */\n"
+"\tvoid new_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\t//new MyWindow (this).show ();\n"
+"\t\tprint (\"You clicked \\\"New\\\"\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid quit_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"You clicked \\\"Quit\\\"\\n\");\n"
+"\t\tthis.quit ();\n"
+"\t}\n"
+"\n"
+"\tvoid awesome_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tvar active = action.get_state ().get_boolean ();\n"
+"\t\taction.set_state (new Variant.boolean (!active));\n"
+"\t\tif (active)\n"
+"\t\t\tprint (\"You unchecked \\\"Awesome\\\"\\n\");\n"
+"\t\telse\n"
+"\t\t\tprint (\"You checked \\\"Awesome\\\"\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid state_cb (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"state is set to %s\\n\", parameter.get_string(null));\n"
+"\t\taction.set_state (parameter);\n"
+"\t}\n"
+"\n"
+"\t/* Create the application actions. */\n"
+"\tconst ActionEntry[] actions = {\n"
+"\t\t{ \"new\", new_cb },\n"
+"\t\t{ \"quit\", quit_cb },\n"
+"\t\t{ \"awesome\", awesome_cb, null, \"false\" },\n"
+"\t\t{ \"state\", state_cb, \"s\", \"'off'\" }\n"
+"\t};\n"
+"\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\t/* Setup application actions. */\n"
+"\t\tthis.add_action_entries (actions, this);\n"
+"\n"
+"\t\t/* Setup menubar and app_menu. */\n"
+"\t\t/* Get the UI file. */\n"
+"\t\tvar builder = new Gtk.Builder ();\n"
+"\t\ttry {\n"
+"\t\t\tbuilder.add_from_file (\"menubar.ui\");\n"
+"\t\t} catch (Error e) {\n"
+"\t\t\terror (\"Unable to load file: %s\", e.message);\n"
+"\t\t}\n"
+"\n"
+"\t\t/* Get the menubar from the builder. */\n"
+"\t\tthis.menubar = builder.get_object (\"menubar\") as MenuModel;\n"
+"\n"
+"\t\t/* Get the app_menu from the builder. */\n"
+"\t\tthis.app_menu = builder.get_object (\"appmenu\") as MenuModel;\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: section/title
+#: C/menubar.vala.page:161
+msgid "Mnemonics"
+msgstr "Mnemónicos"
+
+#. (itstool) path: section/title
+#: C/menubar.vala.page:167
+msgid "Accelerators"
+msgstr "Aceleradores"
+
+#. (itstool) path: section/p
+#: C/menubar.vala.page:183
+msgid ""
+"<code mime=\"application/xml\"><attribute name=\"label\" translatable="
+"\"yes\">Quit</attribute></code>"
+msgstr ""
+"<code mime=\"application/xml\"><attribute name=\"label\" translatable="
+"\"yes\">Quit</attribute></code>"
+
+#. (itstool) path: item/p
+#: C/menubar.vala.page:192
+msgid ""
+"<link href=\"http://valadoc.org/gio-2.0/GLib.ActionEntry.html\">Glib."
+"ActionEntry</link>"
+msgstr ""
+"<link href=\"http://valadoc.org/gio-2.0/GLib.ActionEntry.html\">Glib."
+"ActionEntry</link>"
+
+#. (itstool) path: item/p
+#: C/menubar.vala.page:193
+msgid ""
+"<link href=\"http://valadoc.org/gio-2.0/Gtk.Builder.html\">Gtk.Builder</link>"
+msgstr ""
+"<link href=\"http://valadoc.org/gio-2.0/Gtk.Builder.html\">Gtk.Builder</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/menubutton.c.page:22 C/menubutton.js.page:22 C/menubutton.py.page:29
+#: C/menubutton.vala.page:22
+msgctxt "_"
+msgid ""
+"external ref='media/menubutton.png' md5='99eedc5ef2d6c56d32ca9ae7f3f3320f'"
+msgstr ""
+"external ref='media/menubutton.png' md5='99eedc5ef2d6c56d32ca9ae7f3f3320f'"
+
+#. (itstool) path: info/title
+#: C/menubutton.c.page:8 C/menubutton.py.page:8
+msgctxt "text"
+msgid "MenuButton"
+msgstr "MenuButton"
+
+#. (itstool) path: info/desc
+#: C/menubutton.c.page:18 C/menubutton.js.page:18 C/menubutton.py.page:25
+#: C/menubutton.vala.page:18
+msgid "A widget that shows a menu when clicked on"
+msgstr "Un widget que muestra un menú cuando se pulsa"
+
+#. (itstool) path: page/title
+#: C/menubutton.c.page:21 C/menubutton.js.page:21 C/menubutton.py.page:28
+#: C/menubutton.vala.page:21
+msgid "MenuButton"
+msgstr "MenuButton"
+
+#. (itstool) path: page/p
+#: C/menubutton.c.page:23 C/menubutton.js.page:23 C/menubutton.py.page:30
+#: C/menubutton.vala.page:23
+msgid ""
+"The GtkMenuButton widget is used to display a menu when clicked on. This "
+"menu can be provided either as a GtkMenu, or an abstract GMenuModel. The "
+"GtkMenuButton widget can hold any valid child widget. That is, it can hold "
+"almost any other standard GtkWidget. The most commonly used child is the "
+"provided GtkArrow."
+msgstr ""
+"El widget «GtkMenuButton» se usa para mostrar un menú cuando se pulsa. Este "
+"menú puede proporcionarse como un «GtkMenu», o un «GMenuModel» abstracto. El "
+"widget «GtkMenuButton» puede contener cualquier widget hijo válido. Esto es "
+"casi cualquier «GtkWidget» estándar. El hijo más comúnmente usado es el "
+"«GtkArrow» proporcionado."
+
+#. (itstool) path: note/p
+#: C/menubutton.c.page:25 C/menubutton.js.page:27
+msgid "You need to be running GNOME 3.6 or later for the MenuButton to work."
+msgstr ""
+"Necesita ejecutar GNOME 3.6 o superior para que el «MenuButton» funcione."
+
+#. (itstool) path: section/code
+#: C/menubutton.c.page:31
+#, no-wrap
+msgid ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"/* Callback function for the undo action */\n"
+"static void\n"
+"about_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"About\\\"\\n\");\n"
+"}\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GMenu *submenu;\n"
+" GtkWidget *grid;\n"
+" GMenu *menumodel;\n"
+" GtkWidget *window;\n"
+" GtkWidget *menubutton;\n"
+" GSimpleAction *about_action;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+" grid = gtk_grid_new ();\n"
+"\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"MenuButton Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);\n"
+"\n"
+" menubutton = gtk_menu_button_new ();\n"
+" gtk_widget_set_size_request (menubutton, 80, 35);\n"
+"\n"
+" gtk_grid_attach (GTK_GRID (grid), menubutton, 0, 0, 1, 1);\n"
+" gtk_container_add (GTK_CONTAINER (window), grid);\n"
+"\n"
+" menumodel = g_menu_new ();\n"
+" g_menu_append (menumodel, \"New\", \"app.new\");\n"
+" g_menu_append (menumodel, \"About\", \"win.about\");\n"
+"\n"
+" submenu = g_menu_new ();\n"
+" g_menu_append_submenu (menumodel, \"Other\", G_MENU_MODEL (submenu));\n"
+" g_menu_append (submenu, \"Quit\", \"app.quit\");\n"
+" gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (menubutton), G_MENU_MODEL (menumodel));\n"
+"\n"
+" about_action = g_simple_action_new (\"about\", NULL);\n"
+" g_signal_connect (about_action, \"activate\", G_CALLBACK (about_callback),\n"
+" GTK_WINDOW (window));\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"static void\n"
+"new_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"New\\\"\\n\");\n"
+"}\n"
+"\n"
+"static void\n"
+"quit_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GApplication *application = user_data;\n"
+"\n"
+" g_application_quit (application);\n"
+"}\n"
+"\n"
+"static void\n"
+"startup (GApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GSimpleAction *new_action;\n"
+" GSimpleAction *quit_action;\n"
+"\n"
+" new_action = g_simple_action_new (\"new\", NULL);\n"
+" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
+"\n"
+" quit_action = g_simple_action_new (\"quit\", NULL);\n"
+" g_signal_connect (quit_action, \"activate\", G_CALLBACK (quit_callback), app);\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
+"}\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"/* Callback function for the undo action */\n"
+"static void\n"
+"about_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"About\\\"\\n\");\n"
+"}\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GMenu *submenu;\n"
+" GtkWidget *grid;\n"
+" GMenu *menumodel;\n"
+" GtkWidget *window;\n"
+" GtkWidget *menubutton;\n"
+" GSimpleAction *about_action;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+" grid = gtk_grid_new ();\n"
+"\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"MenuButton Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);\n"
+"\n"
+" menubutton = gtk_menu_button_new ();\n"
+" gtk_widget_set_size_request (menubutton, 80, 35);\n"
+"\n"
+" gtk_grid_attach (GTK_GRID (grid), menubutton, 0, 0, 1, 1);\n"
+" gtk_container_add (GTK_CONTAINER (window), grid);\n"
+"\n"
+" menumodel = g_menu_new ();\n"
+" g_menu_append (menumodel, \"New\", \"app.new\");\n"
+" g_menu_append (menumodel, \"About\", \"win.about\");\n"
+"\n"
+" submenu = g_menu_new ();\n"
+" g_menu_append_submenu (menumodel, \"Other\", G_MENU_MODEL (submenu));\n"
+" g_menu_append (submenu, \"Quit\", \"app.quit\");\n"
+" gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (menubutton), G_MENU_MODEL (menumodel));\n"
+"\n"
+" about_action = g_simple_action_new (\"about\", NULL);\n"
+" g_signal_connect (about_action, \"activate\", G_CALLBACK (about_callback),\n"
+" GTK_WINDOW (window));\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"static void\n"
+"new_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"New\\\"\\n\");\n"
+"}\n"
+"\n"
+"static void\n"
+"quit_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GApplication *application = user_data;\n"
+"\n"
+" g_application_quit (application);\n"
+"}\n"
+"\n"
+"static void\n"
+"startup (GApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GSimpleAction *new_action;\n"
+" GSimpleAction *quit_action;\n"
+"\n"
+" new_action = g_simple_action_new (\"new\", NULL);\n"
+" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
+"\n"
+" quit_action = g_simple_action_new (\"quit\", NULL);\n"
+" g_signal_connect (quit_action, \"activate\", G_CALLBACK (quit_callback), app);\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
+"}\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/menubutton.c.page:38
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMenuButton.html"
+"\">GtkMenuButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMenuButton.html"
+"\">GtkMenuButton</link>"
+
+#. (itstool) path: item/p
+#: C/menubutton.c.page:39
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMenu.html"
+"\">GtkMenu</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMenu.html"
+"\">GtkMenu</link>"
+
+#. (itstool) path: item/p
+#: C/menubutton.c.page:40
+msgid ""
+"<link href=\"https://developer.gnome.org/gio/unstable/GMenuModel.html"
+"\">GMenuModel</link>"
+msgstr ""
+"<link href=\"https://developer.gnome.org/gio/unstable/GMenuModel.html"
+"\">GMenuModel</link>"
+
+#. (itstool) path: item/p
+#: C/menubutton.c.page:41
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkArrow.html"
+"\">GtkArrow</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkArrow.html"
+"\">GtkArrow</link>"
+
+#. (itstool) path: info/title
+#: C/menubutton.js.page:8
+msgctxt "text"
+msgid "MenuButton (JavaScript)"
+msgstr "MenuButton (JavaScript)"
+
+#. (itstool) path: credit/name
+#: C/menubutton.js.page:13
+msgid "Anna Zacchi"
+msgstr "Anna Zacchi"
+
+#. (itstool) path: page/code
+#: C/menubutton.js.page:28
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const Application = new Lang.Class ({\n"
+" Name: 'Application',\n"
+"\n"
+" //create the application\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application ({ application_id: 'org.example.myapp',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE });\n"
+"\n"
+" //connect to 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" //create the UI (in this case it's just the ApplicationWindow)\n"
+" _buildUI: function() {\n"
+" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"MenuButton Example\" });\n"
+" this._window.set_default_size(600, 400);\n"
+" this.grid = new Gtk.Grid();\n"
+" this._window.add(this.grid);\n"
+"\n"
+"\n"
+" this._menuButton = new Gtk.MenuButton();\n"
+" this.grid.attach(this._menuButton, 0, 0, 1, 1 );\n"
+" this.menu = new Gtk.Menu.new_from_model(this.menuModel);\n"
+"\n"
+" this.menu.show();\n"
+" this._menuButton.set_menu_model (this.menuModel);\n"
+" this._menuButton.set_size_request(80, 35);\n"
+" this._menuButton.show();\n"
+"\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" _showNew: function() {\n"
+" print(\"You clicked \\\"New\\\"\");\n"
+" },\n"
+"\n"
+" _showAbout: function() {\n"
+" print(\"You clicked \\\"About\\\"\");\n"
+" },\n"
+"\n"
+" //create the menu items and connect the signals to the callback functions.\n"
+" _initMenus: function() {\n"
+" let newAction = new Gio.SimpleAction({ name: 'new' });\n"
+" newAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showNew();\n"
+" }));\n"
+" this.application.add_action(newAction);\n"
+"\n"
+" let aboutAction = new Gio.SimpleAction({ name: 'about' });\n"
+" aboutAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showAbout();\n"
+" }));\n"
+" this.application.add_action(aboutAction);\n"
+"\n"
+" let quitAction = new Gio.SimpleAction({ name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+"\n"
+" this.menuModel = new Gio.Menu();\n"
+"\n"
+" this.menuItemNew = Gio.MenuItem.new(\"New\", 'app.new');\n"
+" this.menuItemAbout = Gio.MenuItem.new(\"About\", 'app.about');\n"
+" this.fileMenuItem = Gio.MenuItem.new(\"Other\", null);\n"
+"\n"
+" this.menuModel.append_item(this.menuItemNew);\n"
+" this.menuModel.append_item(this.menuItemAbout);\n"
+"\n"
+" //submenu\n"
+" this.subMenu = new Gio.Menu();\n"
+" this.fileMenuItem.set_submenu(this.subMenu);\n"
+" this.menuItemQuit = Gio.MenuItem.new(\"Quit\", 'app.quit');\n"
+" this.subMenu.append_item(this.menuItemQuit);\n"
+" this.menuModel.append_item(this.fileMenuItem);\n"
+" },\n"
+"\n"
+" //callback function for 'activate' signal\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" //callback function for 'startup' signal\n"
+" _onStartup: function() {\n"
+" //You must call _initMenus() before calling _buildUI().\n"
+" this._initMenus();\n"
+" this._buildUI();\n"
+" }\n"
+"});\n"
+"\n"
+"//run the application\n"
+"let app = new Application();\n"
+"app.application.run(ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const Application = new Lang.Class ({\n"
+" Name: 'Application',\n"
+"\n"
+" //create the application\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application ({ application_id: 'org.example.myapp',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE });\n"
+"\n"
+" //connect to 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" //create the UI (in this case it's just the ApplicationWindow)\n"
+" _buildUI: function() {\n"
+" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"MenuButton Example\" });\n"
+" this._window.set_default_size(600, 400);\n"
+" this.grid = new Gtk.Grid();\n"
+" this._window.add(this.grid);\n"
+"\n"
+"\n"
+" this._menuButton = new Gtk.MenuButton();\n"
+" this.grid.attach(this._menuButton, 0, 0, 1, 1 );\n"
+" this.menu = new Gtk.Menu.new_from_model(this.menuModel);\n"
+"\n"
+" this.menu.show();\n"
+" this._menuButton.set_menu_model (this.menuModel);\n"
+" this._menuButton.set_size_request(80, 35);\n"
+" this._menuButton.show();\n"
+"\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+" _showNew: function() {\n"
+" print(\"You clicked \\\"New\\\"\");\n"
+" },\n"
+"\n"
+" _showAbout: function() {\n"
+" print(\"You clicked \\\"About\\\"\");\n"
+" },\n"
+"\n"
+" //create the menu items and connect the signals to the callback functions.\n"
+" _initMenus: function() {\n"
+" let newAction = new Gio.SimpleAction({ name: 'new' });\n"
+" newAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showNew();\n"
+" }));\n"
+" this.application.add_action(newAction);\n"
+"\n"
+" let aboutAction = new Gio.SimpleAction({ name: 'about' });\n"
+" aboutAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showAbout();\n"
+" }));\n"
+" this.application.add_action(aboutAction);\n"
+"\n"
+" let quitAction = new Gio.SimpleAction({ name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+"\n"
+" this.menuModel = new Gio.Menu();\n"
+"\n"
+" this.menuItemNew = Gio.MenuItem.new(\"New\", 'app.new');\n"
+" this.menuItemAbout = Gio.MenuItem.new(\"About\", 'app.about');\n"
+" this.fileMenuItem = Gio.MenuItem.new(\"Other\", null);\n"
+"\n"
+" this.menuModel.append_item(this.menuItemNew);\n"
+" this.menuModel.append_item(this.menuItemAbout);\n"
+"\n"
+" //submenu\n"
+" this.subMenu = new Gio.Menu();\n"
+" this.fileMenuItem.set_submenu(this.subMenu);\n"
+" this.menuItemQuit = Gio.MenuItem.new(\"Quit\", 'app.quit');\n"
+" this.subMenu.append_item(this.menuItemQuit);\n"
+" this.menuModel.append_item(this.fileMenuItem);\n"
+" },\n"
+"\n"
+" //callback function for 'activate' signal\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" //callback function for 'startup' signal\n"
+" _onStartup: function() {\n"
+" //You must call _initMenus() before calling _buildUI().\n"
+" this._initMenus();\n"
+" this._buildUI();\n"
+" }\n"
+"});\n"
+"\n"
+"//run the application\n"
+"let app = new Application();\n"
+"app.application.run(ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/menubutton.js.page:33 C/menubutton.vala.page:33
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/3.5/gtk3-GtkMenuButton.html"
+"\">MenuButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/3.5/gtk3-GtkMenuButton.html"
+"\">MenuButton</link>"
+
+#. (itstool) path: note/p
+#: C/menubutton.py.page:32 C/menubutton.vala.page:27
+msgid "You need to be running GNOME 3.6 for the MenuButton to work."
+msgstr "Necesita ejecutar GNOME 3.6 para que el «MenuButton» funcione."
+
+#. (itstool) path: section/code
+#: C/menubutton.py.page:38
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Menubutton Example\", application=app)\n"
+" self.set_default_size(600, 400)\n"
+"\n"
+" grid = Gtk.Grid()\n"
+"\n"
+" # a menubutton\n"
+" menubutton = Gtk.MenuButton()\n"
+" menubutton.set_size_request(80, 35)\n"
+"\n"
+" grid.attach(menubutton, 0, 0, 1, 1)\n"
+"\n"
+" # a menu with two actions\n"
+" menumodel = Gio.Menu()\n"
+" menumodel.append(\"New\", \"app.new\")\n"
+" menumodel.append(\"About\", \"win.about\")\n"
+"\n"
+" # a submenu with one action for the menu\n"
+" submenu = Gio.Menu()\n"
+" submenu.append(\"Quit\", \"app.quit\")\n"
+" menumodel.append_submenu(\"Other\", submenu)\n"
+"\n"
+" # the menu is set as the menu of the menubutton\n"
+" menubutton.set_menu_model(menumodel)\n"
+"\n"
+" # the action related to the window (about)\n"
+" about_action = Gio.SimpleAction.new(\"about\", None)\n"
+" about_action.connect(\"activate\", self.about_callback)\n"
+" self.add_action(about_action)\n"
+"\n"
+" self.add(grid)\n"
+"\n"
+" # callback for \"about\"\n"
+" def about_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"About\\\"\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # the actions related to the application\n"
+" new_action = Gio.SimpleAction.new(\"new\", None)\n"
+" new_action.connect(\"activate\", self.new_callback)\n"
+" self.add_action(new_action)\n"
+"\n"
+" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
+" quit_action.connect(\"activate\", self.quit_callback)\n"
+" self.add_action(quit_action)\n"
+"\n"
+" # callback functions for the actions related to the application\n"
+" def new_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"New\\\"\")\n"
+"\n"
+" def quit_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Quit\\\"\")\n"
+" self.quit()\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Menubutton Example\", application=app)\n"
+" self.set_default_size(600, 400)\n"
+"\n"
+" grid = Gtk.Grid()\n"
+"\n"
+" # a menubutton\n"
+" menubutton = Gtk.MenuButton()\n"
+" menubutton.set_size_request(80, 35)\n"
+"\n"
+" grid.attach(menubutton, 0, 0, 1, 1)\n"
+"\n"
+" # a menu with two actions\n"
+" menumodel = Gio.Menu()\n"
+" menumodel.append(\"New\", \"app.new\")\n"
+" menumodel.append(\"About\", \"win.about\")\n"
+"\n"
+" # a submenu with one action for the menu\n"
+" submenu = Gio.Menu()\n"
+" submenu.append(\"Quit\", \"app.quit\")\n"
+" menumodel.append_submenu(\"Other\", submenu)\n"
+"\n"
+" # the menu is set as the menu of the menubutton\n"
+" menubutton.set_menu_model(menumodel)\n"
+"\n"
+" # the action related to the window (about)\n"
+" about_action = Gio.SimpleAction.new(\"about\", None)\n"
+" about_action.connect(\"activate\", self.about_callback)\n"
+" self.add_action(about_action)\n"
+"\n"
+" self.add(grid)\n"
+"\n"
+" # callback for \"about\"\n"
+" def about_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"About\\\"\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # the actions related to the application\n"
+" new_action = Gio.SimpleAction.new(\"new\", None)\n"
+" new_action.connect(\"activate\", self.new_callback)\n"
+" self.add_action(new_action)\n"
+"\n"
+" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
+" quit_action.connect(\"activate\", self.quit_callback)\n"
+" self.add_action(quit_action)\n"
+"\n"
+" # callback functions for the actions related to the application\n"
+" def new_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"New\\\"\")\n"
+"\n"
+" def quit_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Quit\\\"\")\n"
+" self.quit()\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/menubutton.py.page:42
+msgid "Useful methods for a MenuButton widget"
+msgstr "Métodos útiles para un widget «MenuButton»"
+
+#. (itstool) path: section/p
+#: C/menubutton.py.page:43
+msgid ""
+"In line 33 the signal <code>\"activate\"</code> from the action "
+"<code>about_action</code> is connected to the callback function "
+"<code>about_callback()</code> using <code><var>action</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 33 la señal <code>«activate»</code> de la acción "
+"<code>about_action</code> se conecta a la función de retorno de llamada "
+"<code>about_callback()</code> usando <code><var>action</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
+"explicación más detallada."
+
+#. (itstool) path: section/p
+#: C/menubutton.py.page:45
+msgid ""
+"The positioning of the menu is determined by the \"direction\" property of "
+"the menu button and the \"halign\" or \"valign\" properties of the menu. For "
+"example, when the direction is <code>Gtk.ArrowType.DOWN</code> (other "
+"option: <code>UP</code>) and the horizontal alignment is <code>Gtk.Align."
+"START</code> (other options: <code>CENTER</code> and <code>END</code>), the "
+"menu will be positioned below the button, with the starting edge (depending "
+"on the text direction) of the menu aligned with the starting edge of the "
+"button. If there is not enough space below the button, the menu is popped up "
+"above the button instead. If the alignment would move part of the menu "
+"offscreen, it is 'pushed in'."
+msgstr ""
+"La posición del menú está determinada por la propiedad «direction» del botón "
+"de menú y las propiedades «halign» o «valign» del menú. Por ejemplo, cuando "
+"«direction» es <code>Gtk.ArrowType.DOWN</code> (otra opción: <code>UP</"
+"code>) y la alineación horizontal es <code>Gtk.Align.START</code> (otras "
+"opciones: <code>CENTER</code> y <code>END</code>), el menú se posiciona bajo "
+"el botón, con su borde inicial (dependiendo de la dirección del texto) "
+"alineado con el borde inicial del botón. Si no hay suficiente espacio bajo "
+"el botón, el menú, en cambio, se abre sobre él. Si la alineación mueve parte "
+"del menú fuera de la pantalla, se «empuja hacia adentro»."
+
+#. (itstool) path: section/p
+#: C/menubutton.py.page:47
+msgid ""
+"In the case of vertical alignment, the possible ArrowType directions are "
+"<code>LEFT</code> and <code>RIGHT</code> and the vertical alignment is again "
+"<code>START</code>, <code>CENTER</code> or <code>END</code>."
+msgstr ""
+"En el caso de alineación vertical, las direcciones de «ArrowType» posibles "
+"son <code>LEFT</code> y <code>RIGHT</code>, y la alineación vertical es, "
+"nuevamente, <code>START</code>, <code>CENTER</code> o <code>END</code>."
+
+#. (itstool) path: section/p
+#: C/menubutton.py.page:49
+msgid ""
+"<code>set_align_widget(alignment)</code> and <code>set_direction(direction)</"
+"code> can be used to set these properties."
+msgstr ""
+"<code>set_align_widget(alineación)</code> y <code>set_direction(dirección)</"
+"code> pueden usarse para establecer estas propiedades."
+
+#. (itstool) path: item/p
+#: C/menubutton.py.page:56
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMenuButton.html"
+"\">MenuButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMenuButton.html"
+"\">MenuButton</link>"
+
+#. (itstool) path: info/title
+#: C/menubutton.vala.page:8
+msgctxt "text"
+msgid "MenuButton (Vala)"
+msgstr "MenuButton (Vala)"
+
+#. (itstool) path: page/code
+#: C/menubutton.vala.page:28
+#, no-wrap
+msgid ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"MenuButton Example\");\n"
+"\t\tthis.set_default_size (600, 400);\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\n"
+"\t\tvar menubutton = new Gtk.MenuButton();\n"
+"\t\tmenubutton.set_size_request (80, 35);\n"
+"\n"
+"\t\tvar menumodel = new Menu ();\n"
+"\t\tmenumodel.append (\"New\", \"app.new\");\n"
+"\t\tmenumodel.append (\"About\", \"win.about\");\n"
+"\n"
+"\t\t/* We create the last item as a MenuItem, so that\n"
+"\t\t * a submenu can be appended to this menu item.\n"
+"\t\t */\n"
+"\t\tvar submenu = new Menu ();\n"
+"\t\tmenumodel.append_submenu (\"Other\", submenu);\n"
+"\t\tsubmenu.append (\"Quit\", \"app.quit\");\n"
+"\t\tmenubutton.set_menu_model (menumodel);\n"
+"\n"
+"\t\tvar about_action = new SimpleAction (\"about\", null);\n"
+"\t\tabout_action.activate.connect (this.about_cb);\n"
+"\t\tthis.add_action (about_action);\n"
+"\n"
+"\t\tthis.add(grid);\n"
+"\t\tgrid.attach(menubutton, 0, 0, 1, 1);\n"
+"\t}\n"
+"\n"
+"\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n"
+"\t\tprint (\"You clicked \\\"About\\\"\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show_all ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'startup' signal of GLib.Application. */\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
+"\t\tnew_action.activate.connect (this.new_cb);\n"
+"\t\tthis.add_action (new_action);\n"
+"\n"
+"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
+"\t\tquit_action.activate.connect (this.quit);\n"
+"\t\tthis.add_action (quit_action);\n"
+"\t}\n"
+"\n"
+"\tvoid new_cb (SimpleAction simple, Variant? parameter) {\n"
+"\t\tprint (\"You clicked \\\"New\\\"\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"MenuButton Example\");\n"
+"\t\tthis.set_default_size (600, 400);\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\n"
+"\t\tvar menubutton = new Gtk.MenuButton();\n"
+"\t\tmenubutton.set_size_request (80, 35);\n"
+"\n"
+"\t\tvar menumodel = new Menu ();\n"
+"\t\tmenumodel.append (\"New\", \"app.new\");\n"
+"\t\tmenumodel.append (\"About\", \"win.about\");\n"
+"\n"
+"\t\t/* We create the last item as a MenuItem, so that\n"
+"\t\t * a submenu can be appended to this menu item.\n"
+"\t\t */\n"
+"\t\tvar submenu = new Menu ();\n"
+"\t\tmenumodel.append_submenu (\"Other\", submenu);\n"
+"\t\tsubmenu.append (\"Quit\", \"app.quit\");\n"
+"\t\tmenubutton.set_menu_model (menumodel);\n"
+"\n"
+"\t\tvar about_action = new SimpleAction (\"about\", null);\n"
+"\t\tabout_action.activate.connect (this.about_cb);\n"
+"\t\tthis.add_action (about_action);\n"
+"\n"
+"\t\tthis.add(grid);\n"
+"\t\tgrid.attach(menubutton, 0, 0, 1, 1);\n"
+"\t}\n"
+"\n"
+"\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n"
+"\t\tprint (\"You clicked \\\"About\\\"\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show_all ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'startup' signal of GLib.Application. */\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
+"\t\tnew_action.activate.connect (this.new_cb);\n"
+"\t\tthis.add_action (new_action);\n"
+"\n"
+"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
+"\t\tquit_action.activate.connect (this.quit);\n"
+"\t\tthis.add_action (quit_action);\n"
+"\t}\n"
+"\n"
+"\tvoid new_cb (SimpleAction simple, Variant? parameter) {\n"
+"\t\tprint (\"You clicked \\\"New\\\"\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/message-board.c.page:41
+msgctxt "_"
+msgid ""
+"external ref='media/message-board.ogv' md5='beb80c4538776dc2cdd26c95abea5027'"
+msgstr ""
+"external ref='media/message-board.ogv' md5='beb80c4538776dc2cdd26c95abea5027'"
+
+#. (itstool) path: info/title
+#: C/message-board.c.page:8
+msgctxt "text"
+msgid "Message board (C)"
+msgstr "Cuadro de mensajes (C)"
+
+#. (itstool) path: info/desc
+#: C/message-board.c.page:11
+msgid "A simple program using WebKitGTK+ and the DOM."
+msgstr "Un programa sencillo usando WebKitGTK+ y el DOM."
+
+#. (itstool) path: page/title
+#: C/message-board.c.page:26
+msgid "Message board"
+msgstr "Cuadro de mensajes"
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:31
+msgid "How to display a web page with WebKit."
+msgstr "Cómo mostrar una página web con WebKit"
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:32
+msgid ""
+"How to manipulate the contents of a web page using WebKit's DOM functions."
+msgstr ""
+"Como manipular el contenido de una página web usando las funciones del DOM "
+"del WebKit."
+
+#. (itstool) path: synopsis/p
+#: C/message-board.c.page:35
+msgid ""
+"This tutorial assumes you are familiar with the C programming language and "
+"have a basic understanding of GTK+, including how to create and place "
+"widgets and how to connect callback functions to signals. See <link xref="
+"\"image-viewer.c\"/> to learn the basics of GTK+."
+msgstr ""
+"En este tutorial se asume que está familiarizado con el lenguaje de "
+"programación C y que tiene un conocimiento básico de GTK+, incluyendo cómo "
+"crear y colocar widgets y cómo conectar funciones de retorno de retorno de "
+"la llamadas a señales. Consulte la <link xref=\"image-viewer.c\"/> para "
+"aprender las nociones básicas de GTK+."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:48
+msgid ""
+"The GNOME platform includes WebKitGTK+, built on top of the powerful WebKit "
+"HTML framework. WebKit is used throughout GNOME, not just to view web pages "
+"on the Internet, but also to create rich user interfaces that can be easily "
+"styled with CSS."
+msgstr ""
+"La plataforma GNOME incluye WebKitGTK+, construido sobre el potente marco de "
+"trabajo WebKit. WebKitGTK se usa en todo GNOME, no sólo para ver páginas web "
+"en Internet, sino también para crear interfaces de usuario enriquecidas a "
+"las que se pueden añadir estilos fácilmente con CSS."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:53
+msgid ""
+"In this tutorial, you will create a simple message board using WebKit. The "
+"message board will allow you to enter some text and have it added to a list "
+"of messages in HTML. Before you begin, you need to set up a project in "
+"Anjuta."
+msgstr ""
+"En este tutorial, se creará un cuadro de mensajes sencillo usando WebKit. El "
+"cuadro de mensajes le permitirá introducir algún texto y añadirlo a una "
+"lista de mensajes en HTML. Antes de empezar, deberá configurar un proyecto "
+"en Anjuta."
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:59
+msgid ""
+"In Anjuta, click <guiseq><gui>File</gui><gui>New</gui> <gui>Project</gui></"
+"guiseq> to open the new project assistant."
+msgstr ""
+"En Anjuta, pulse <guiseq><gui>Archivo</gui><gui>Nuevo</gui> <gui>Proyecto</"
+"gui></guiseq> para abrir el asistente para proyecto nuevo."
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:61
+msgid ""
+"Select <gui>GTK+ (simple)</gui> on the <gui>C</gui> tab, and click "
+"<gui>Continue</gui>."
+msgstr ""
+"Seleccione <gui>GTK+ (simple)</gui> en la pestaña <gui>C</gui> y pulse "
+"<gui>Continuar</gui>."
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:63
+msgid ""
+"Fill out your details on the <gui>Basic information</gui> page. Use "
+"<input>message-board</input> for the project name. Click <gui>Continue</gui>."
+msgstr ""
+"Rellene sus detalles en la página <gui>Información básica</gui>. Use "
+"<input>cuadro-mensajes</input> para el nombre del proyecto. Pulse "
+"<gui>Continuar</gui>."
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:66
+msgid ""
+"Disable the <gui>Use GtkBuilder for user interface</gui> option as this "
+"tutorial builds the user-interface manually."
+msgstr ""
+"Desactive la opción <gui>Usar GtkBuilder para la interfaz del usuario</gui>, "
+"ya que, en este tutorial, la interfaz de usuario se construye manualmente."
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:69
+msgid ""
+"You need to tell Anjuta you're using WebKitGTK+ on this project. On the "
+"<gui>Project options</gui> page, select <gui>Configure external packages</"
+"gui>. Click <gui>Continue</gui>. On the <gui>Configure external packages</"
+"gui> page, check <gui>webkitgtk-3.0</gui>."
+msgstr ""
+"Deberá indicar a Anjuta que va a usar WebKitGTK+ en este proyecto. En la "
+"página <gui>Opciones del proyecto</gui>, seleccione <gui>Configurar paquetes "
+"externos</gui>. Pulse <gui>Continuar</gui>. En la página <gui>Configurar "
+"paquetes externos</gui> seleccione <gui>webkitgtk-3.0</gui>."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:75
+msgid ""
+"After you finish the new project assistant, open the file <file>src/main.c</"
+"file> from either the <gui>Project</gui> or the <gui>File</gui> tab. Anjuta "
+"will have filled this in with some basic GTK+ code from its templates. Since "
+"you are creating a WebKit project, you first need to include the WebKit "
+"headers. After the line that includes <code>gtk/gtk.h</code>, add the "
+"following line:"
+msgstr ""
+"Cuando termine el asistente de creación de un nuevo proyecto, abra el "
+"archivo <file>src/main.c</file> desde la pestaña <gui>Proyecto</gui> o desde "
+"<gui>Archivo</gui>. Anjuta lo habrá rellenado con algo de código GTK+ básico "
+"de sus plantillas. Ya que está creando un proyecto WebKit, primero debe "
+"incluir las cabeceras de WebKit. Después de la línea que incluye <code>gtk/"
+"gtk.h</code>, añada la siguiente línea:"
+
+#. (itstool) path: section/code
+#: C/message-board.c.page:82
+#, no-wrap
+msgid "#include <webkit/webkit.h>"
+msgstr "#include <webkit/webkit.h>"
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:84
+msgid ""
+"Verify that everything works by building what you have so far. Click "
+"<guiseq><gui>Build</gui><gui>Build Project</gui></guiseq> or just press "
+"<keyseq><key>Shift</key><key>F7</key></keyseq>. The first time you build, "
+"you will be asked for some configure options. Just accept the defaults and "
+"click <gui>Execute</gui>."
+msgstr ""
+"Verifique que todo funciona construyendo lo que tiene hasta ahora. Pulse "
+"<guiseq><gui>Construir</gui><gui>Construir proyecto</gui></guiseq> o "
+"simplemente pulse <keyseq><key>Mayús</key><key>F7</key></keyseq>. La primera "
+"vez que construya, se le pedirán algunas opciones de configuración. "
+"Simplemente acepte los valores predeterminados y pulse <gui>Ejecutar</gui>."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:90
+msgid ""
+"You should now be able to run the program. Click <guiseq> <gui>Run</"
+"gui><gui>Execute</gui></guiseq> or just press <key>F3</key>. You should see "
+"an empty window appear."
+msgstr ""
+"Ahora debería poder ejecutar el programa. Pulse <guiseq><gui>Ejecutar</"
+"gui><gui>Ejecutar</gui></guiseq> o simplemente pulse <key>F3</key>. Debería "
+"ver aparecer una ventana vacía."
+
+#. (itstool) path: section/title
+#: C/message-board.c.page:96
+msgid "Lay out your window and web view"
+msgstr "La disposición de la ventana y la vista web"
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:98
+msgid ""
+"Now that you can show a window, it's time to start working with WebKit. For "
+"this tutorial, you'll create a text entry and a web view and pack them both "
+"into a window. Find the function <code>create_window</code> and replace it "
+"with the following:"
+msgstr ""
+"Ahora que puede mostrar una ventana, es el momento de empezar a trabajar con "
+"WebKit. Para este tutorial, se creará una entrada de texto y una vista web y "
+"ambas se empaquetarán en una ventana. Busque la función <code>create_window</"
+"code> y reemplácela con lo siguiente"
+
+#. (itstool) path: section/code
+#: C/message-board.c.page:103
+#, no-wrap
+msgid ""
+"\n"
+"static GtkWidget*\n"
+"create_window (void)\n"
+"{\n"
+" GtkWidget *window, *box, *scroll, *view, *entry;\n"
+"\n"
+" window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Message Board\");\n"
+" g_signal_connect (window, \"delete-event\", G_CALLBACK (gtk_main_quit), NULL);\n"
+"\n"
+" box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);\n"
+" gtk_container_set_border_width (GTK_CONTAINER (box), 6);\n"
+" gtk_container_add (GTK_CONTAINER (window), box);\n"
+"\n"
+" entry = gtk_entry_new ();\n"
+" gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 0);\n"
+"\n"
+" scroll = gtk_scrolled_window_new (NULL, NULL);\n"
+" g_object_set (scroll, \"shadow-type\", GTK_SHADOW_IN, NULL);\n"
+" gtk_box_pack_start (GTK_BOX (box), scroll, TRUE, TRUE, 0);\n"
+"\n"
+" view = webkit_web_view_new ();\n"
+" gtk_container_add (GTK_CONTAINER (scroll), view);\n"
+" webkit_web_view_load_string (WEBKIT_WEB_VIEW (view),\n"
+" \"<html><body></body></html>\",\n"
+" \"text/html\",\n"
+" \"UTF-8\",\n"
+" NULL);\n"
+"\n"
+" gtk_widget_show_all (GTK_WIDGET (box));\n"
+" return window;\n"
+"}\n"
+msgstr ""
+"\n"
+"static GtkWidget*\n"
+"create_window (void)\n"
+"{\n"
+" GtkWidget *window, *box, *scroll, *view, *entry;\n"
+"\n"
+" window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Message Board\");\n"
+" g_signal_connect (window, \"delete-event\", G_CALLBACK (gtk_main_quit), NULL);\n"
+"\n"
+" box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);\n"
+" gtk_container_set_border_width (GTK_CONTAINER (box), 6);\n"
+" gtk_container_add (GTK_CONTAINER (window), box);\n"
+"\n"
+" entry = gtk_entry_new ();\n"
+" gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 0);\n"
+"\n"
+" scroll = gtk_scrolled_window_new (NULL, NULL);\n"
+" g_object_set (scroll, \"shadow-type\", GTK_SHADOW_IN, NULL);\n"
+" gtk_box_pack_start (GTK_BOX (box), scroll, TRUE, TRUE, 0);\n"
+"\n"
+" view = webkit_web_view_new ();\n"
+" gtk_container_add (GTK_CONTAINER (scroll), view);\n"
+" webkit_web_view_load_string (WEBKIT_WEB_VIEW (view),\n"
+" \"<html><body></body></html>\",\n"
+" \"text/html\",\n"
+" \"UTF-8\",\n"
+" NULL);\n"
+"\n"
+" gtk_widget_show_all (GTK_WIDGET (box));\n"
+" return window;\n"
+"}\n"
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:138
+msgid ""
+"You first create a <code>GtkWindow</code> object and set its title and "
+"default size. You also connect the <code>gtk_main_quit</code> function to "
+"the <code>delete-event</code> signal. The <code>delete-event</code> signal "
+"is emitted when the window is closed. The <code>gtk_main_quit</code> "
+"function is part of GTK, and it quits the application."
+msgstr ""
+"Primero cree un objeto <code>GtkWindow</code> y establezca su título y su "
+"tamaño predeterminado. También puede conectar la función "
+"<code>gtk_main_quit</code> a la señal <code>delete-event</code>. La señal "
+"<code>delete-event</code> se emite cuando se cierra la ventana. La función "
+"<code>gtk_main_quit</code> es parte de GTK+, y sale de la aplicación."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:144
+msgid ""
+"You then create a vertical box and add it to the window. A window can only "
+"hold a single child widget, so you need to use a box to add multiple "
+"widgets. The second argument to <code>gtk_box_new</code> sets the amount of "
+"padding (in pixels) between each child, and the next line puts a six-pixel "
+"border around the entire thing."
+msgstr ""
+"Ahora cree una caja vertical y añádala a la ventana. Una ventana sólo puede "
+"contener un widget hijo, por lo que necesitará una caja para añadir varios "
+"widgets. El segundo argumento de <code>gtk_box_new</code> configura la "
+"cantidad de espacio (en píxeles) entre cada hijo, y la siguiente línea añade "
+"un borde de seis píxeles alrededor de la cosa completa."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:150
+msgid ""
+"You next create a <code>GtkEntry</code> object and pack it into the box. The "
+"third and fourth arguments to <code>gtk_box_pack_start</code> specify that "
+"the entry shouldn't take up any extra space the box has available. The "
+"fourth argument is the amount of padding you want around the entry. In this "
+"case, you set the padding to zero, because you're allowing the box to handle "
+"all the padding."
+msgstr ""
+"Después, cree un objeto <code>GtkEntry</code> y empaquételo en una caja. Los "
+"argumentos tercero y cuarto de <code>gtk_box_pack_start</code> especifican "
+"que la entrada no debería coger ningún espacio adicional que tenga la caja. "
+"El cuarto es la cantidad de relleno que quiere alrededor de la entrada. En "
+"este caso, se establece el relleno a cero, ya que se está permitiendo que la "
+"caja maneje todo el relleno."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:157
+msgid ""
+"Before you add a web view, you have to create a scrolled window to put it "
+"inside of. The scrolled window will place scrollbars on the right and bottom "
+"when necessary, and prevent your web view from filling your entire screen. "
+"This time, you pass <code>TRUE</code> and <code>TRUE</code> to "
+"<code>gtk_box_pack_start</code> to allow the scrolled window (and thus, the "
+"web view) to use any extra space available in the box."
+msgstr ""
+"Antes de añadir la vista web debe crear una ventana desplazada para ponerla "
+"dentro. La ventana desplazada contendrá barras de desplazamiento a la "
+"derecha y abajo cuando sea necesario, y evitará que la vista web abarque la "
+"pantalla entera. En este momento, se pasa <code>TRUE</code> y <code>TRUE</"
+"code> a <code>gtk_box_pack_start</code> para permitir que la ventana "
+"desplazada (y por lo tanto, la vista web) usen el espacio adicional "
+"disponible en la caja."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:164
+msgid ""
+"Finally, you create a <code>WebKitWebView</code> and add it to the scrolled "
+"window. Then load a very basic HTML page into the web view by calling "
+"<code>webkit_web_view_load_string</code> with the following arguments:"
+msgstr ""
+"Finalmente, cree una <code>WebKitWebView</code> y añádala a la ventana "
+"desplazada. Entonces cargue una página HTML muy simple en la vista web "
+"llamando a <code>webkit_web_view_load_string</code> con los siguientes "
+"argumentos:"
+
+#. (itstool) path: item/title
+#: C/message-board.c.page:170
+msgid "<code>WEBKIT_WEB_VIEW (view)</code>"
+msgstr "<code>WEBKIT_WEB_VIEW (view)</code>"
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:171
+msgid ""
+"The view itself. Because <code>view</code> is typed as a <code>GtkWidget*</"
+"code>, you have to use <code>WEBKIT_WEB_VIEW</code> to safely cast the "
+"object."
+msgstr ""
+"La vista en sí. Ya que <code>view</code> es de tipo <code>GtkWidget*</code>, "
+"debe usar <code>WEBKIT_WEB_VIEW</code> para convertir el tipo del objeto con "
+"seguridad."
+
+#. (itstool) path: item/title
+#: C/message-board.c.page:176
+msgid "<code>\"<html><body></body></html>\"</code>"
+msgstr "<code>\"<html><body></body></html>\"</code>"
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:177
+msgid "The simplest HTML file you could possibly write."
+msgstr "El archivo HTML más simple que pueda escribir."
+
+#. (itstool) path: item/title
+#: C/message-board.c.page:180
+msgid "<code>\"text/html\"</code>"
+msgstr "<code>\"text/html\"</code>"
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:181
+msgid ""
+"The MIME type of the content you provided. In this case, you're using plain "
+"HTML."
+msgstr ""
+"El tipo MIME del contenido que ha proporcionado. En este caso, está usando "
+"HTML plano."
+
+#. (itstool) path: item/title
+#: C/message-board.c.page:185
+msgid "<code>\"UTF-8\"</code>"
+msgstr "<code>\"UTF-8\"</code>"
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:186
+msgid ""
+"The character encoding of the content you provided. Although you only used "
+"ASCII characters, it's a good idea to specify UTF-8. UTF-8 is used as the "
+"default encoding throughout the GNOME platform."
+msgstr ""
+"La codificación de caracteres del contenido que ha proporcionado. Aunque "
+"sólo use caracteres ASCII, es una buena idea especificar UTF-8, ya que es la "
+"codificación que se usa de manera predeterminada en toda la plataforma GNOME."
+
+#. (itstool) path: item/title
+#: C/message-board.c.page:191
+msgid "<code>NULL</code>"
+msgstr "<code>NULL</code>"
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:192
+msgid ""
+"The base URI. You don't need it in this simple example, but you might want "
+"to provide a <sys>file:</sys> URI if you add images or other features where "
+"you want to use relative URI references."
+msgstr ""
+"El URI base. En este ejemplo no se necesita, pero puede querer proporcionar "
+"un URI <sys>file:</sys> si añade imágenes u otras características cuando "
+"quiera usar referencias a URI relativos."
+
+#. (itstool) path: note/p
+#: C/message-board.c.page:199
+msgid ""
+"Every time you add a widget, you have to call <code>gtk_widget_show</code> "
+"on it for it to be visible. If you call <code>gtk_widget_show_all</code> on "
+"a container widget like a <code>GtkBox</code>, GTK+ will automatically show "
+"all the widgets inside the container, to any depth. Sometimes you don't want "
+"to call <code>gtk_widget_show_all</code>, such as when you want to "
+"dynamically hide and show some widgets in response to events."
+msgstr ""
+"Cada vez que añade un widget, debe llamar a la función "
+"<code>gtk_widget_show</code> sobre él para hacerlo visible. Si llama a "
+"<code>gtk_widget_show</code> en un contenedor de widgets como <code>GtkBox</"
+"code>, GTK+ mostrará automáticamente todos los widgets del contenedor, en "
+"cualquier nivel. Algunas veces no se quiere llamar a la función "
+"<code>gtk_widget_show_all</code>, como cuando se quieren ocultar o mostrar "
+"dinámicamente algunos objetos en respuesta a determinados eventos."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:207
+msgid ""
+"Finally, you have to call <code>gtk_widget_show_all</code> on the box. "
+"Otherwise, none of the widgets you created will be visible. (The window is "
+"shown in the <code>main</code> function with <code>gtk_widget_show</code>.)"
+msgstr ""
+"Finalmente, debe llamar a la función <code>gtk_widget_show_all</code> sobre "
+"la caja. De otro modo, ninguno de los widgets que haya creado será visible. "
+"(La ventana se muestra en la función <code>main</code> con "
+"<code>gtk_widget_show</code>.)"
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:211
+msgid ""
+"Build and run the message board again. You should see a window with a text "
+"entry and a web view. It doesn't do anything yet because the text entry and "
+"the web view don't know anything about each other."
+msgstr ""
+"Construya y ejecute el cuadro de mensajes de nuevo. Debería ver una ventana "
+"con una entrada de texto y una vista web. Todavía no hace nada porque la "
+"entrada de texto y la vista web no saben nada la una acerca de la otra."
+
+#. (itstool) path: section/title
+#: C/message-board.c.page:217
+msgid "Hook up signals"
+msgstr "Conectar señales"
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:219
+msgid ""
+"Now you want to make the message board actually <em>do</em> something when "
+"you enter text into the text entry. To do this, connect a callback function "
+"to the <code>activate</code> signal of <code>entry</code>. GTK+ emits the "
+"<code>activate</code> signal whenever the user presses <key>Enter</key> in "
+"the entry. Add the following into <code>create_window</code>, anywhere after "
+"both <code>entry</code> and <code>view</code> have been defined:"
+msgstr ""
+"Ahora se quiere hacer que el cuadro <em>haga</em> algo cuando se introduce "
+"texto en la entrada de texto. Para hacer esto, conecte una función de "
+"retorno de la llamada a la señal <code>activate</code> de <code>entry</"
+"code>. GTK+ emite la señal <code>activate</code> cuando el usuario pulsa "
+"<key>Intro</key> en la entrada. Añada lo siguiente en <code>create_window</"
+"code>, en cualquier lugar después de que <code>entry</code> y <code>view</"
+"code> se hayan definido:"
+
+#. (itstool) path: section/code
+#: C/message-board.c.page:226
+#, no-wrap
+msgid ""
+"\n"
+"g_signal_connect (entry, \"activate\", G_CALLBACK (entry_activate_cb), view);\n"
+msgstr ""
+"\n"
+"g_signal_connect (entry, \"activate\", G_CALLBACK (entry_activate_cb), view);\n"
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:230
+msgid ""
+"You then have to actually define <code>entry_activate_cb</code>. Define it "
+"as follows, anywhere above <code>create_window</code>:"
+msgstr ""
+"Entonces se debe definir <code>entry_activate_cb</code>. Defínalo como "
+"quiera, en cualquier lugar por encima de <code>create_window</code>:"
+
+#. (itstool) path: section/code
+#: C/message-board.c.page:233
+#, no-wrap
+msgid ""
+"\n"
+"static void\n"
+"entry_activate_cb (GtkEntry *entry, WebKitWebView *view)\n"
+"{\n"
+" WebKitDOMDocument *document;\n"
+" WebKitDOMElement *body, *div;\n"
+"\n"
+" document = webkit_web_view_get_dom_document (view);\n"
+" body = webkit_dom_document_query_selector (document, \"body\", NULL);\n"
+" div = webkit_dom_document_create_element (document, \"div\", NULL);\n"
+" webkit_dom_node_set_text_content (WEBKIT_DOM_NODE (div),\n"
+" gtk_entry_get_text (entry),\n"
+" NULL);\n"
+" webkit_dom_node_append_child (WEBKIT_DOM_NODE (body),\n"
+" WEBKIT_DOM_NODE (div),\n"
+" NULL);\n"
+" gtk_entry_set_text (entry, \"\");\n"
+"}\n"
+msgstr ""
+"\n"
+"static void\n"
+"entry_activate_cb (GtkEntry *entry, WebKitWebView *view)\n"
+"{\n"
+" WebKitDOMDocument *document;\n"
+" WebKitDOMElement *body, *div;\n"
+"\n"
+" document = webkit_web_view_get_dom_document (view);\n"
+" body = webkit_dom_document_query_selector (document, \"body\", NULL);\n"
+" div = webkit_dom_document_create_element (document, \"div\", NULL);\n"
+" webkit_dom_node_set_text_content (WEBKIT_DOM_NODE (div),\n"
+" gtk_entry_get_text (entry),\n"
+" NULL);\n"
+" webkit_dom_node_append_child (WEBKIT_DOM_NODE (body),\n"
+" WEBKIT_DOM_NODE (div),\n"
+" NULL);\n"
+" gtk_entry_set_text (entry, \"\");\n"
+"}\n"
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:253
+msgid ""
+"The first thing you do is get a <code>WebKitDOMDocument</code> object that "
+"represents the HTML document displayed in <code>view</code>. The DOM classes "
+"and methods in WebKit allow you to inspect and manipulate the HTML document, "
+"and work very similarly to the DOM APIs you might already know from "
+"JavaScript."
+msgstr ""
+"Lo primero que hacer es obtener un objeto <code>WebKitDOMDocument</code> que "
+"representa el documento HTML mostrado en la <code>view</code>. Las clases "
+"DOM y los métodos de WebKit le permiten inspeccionar y manipular el "
+"documento HTML, y trabajar de manera similar a las API DOM que ya debería "
+"conocer de JavaScript."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:259
+msgid ""
+"Once you have the document, you want to get the <code>body</code> element so "
+"that you can add <code>div</code> elements to it. The "
+"<code>webkit_dom_document_query_selector</code> function lets you find an "
+"element in the document using CSS selectors. This keeps you from having to "
+"write tedious loops to traverse the document."
+msgstr ""
+"Una vez que tenga el documento, querrá obtener el elemento <code>body</code> "
+"para poder añadirle elementos <code>div</code>. La función "
+"<code>webkit_dom_document_query_selector</code> le permite encontrar un "
+"elemento en el documento usando selectores CSS. Esto le evita tener que "
+"escribir bucles tediosos para recorrer el documento."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:270
+msgid ""
+"Next, you create a new <code>div</code> element to hold the message. Every "
+"element you create has to be attached to a document, so the function to "
+"create an element takes the <code>WebKitDOMDocument</code> as its first "
+"arguments. You then set the text content of the element to the contents of "
+"the text entry. Because <code>gtk_entry_get_text</code> returns a "
+"<code>const gchar*</code>, you don't have to free the result."
+msgstr ""
+"Ahora, cree un elemento <code>div</code> que contenga el mensaje. Cada "
+"elemento que cree se debe adjuntar se debe adjuntar a un documento, por lo "
+"que la función para crear un elemento toma el <code>WebKitDOMDocument</code> "
+"como primer argumento. Debe entonces establecer el contenido del elemento "
+"con el contenido de la entrada de texto. Dado que <code>gtk_entry_get_text</"
+"code> devuelve un <code>const gchar*</code>, no tiene que liberar el "
+"resultado."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:283
+msgid ""
+"Finally, you append the new <code>div</code> element to the body and clear "
+"out the text entry so you can type something new. Build and run the program "
+"again and test it for yourself."
+msgstr ""
+"Finalmente, añada el nuevo elemento <code>div</code> al cuerpo y limpie la "
+"salida de texto para poder escribir algo nuevo. Construya y ejecute el "
+"programa otra vez y pruébelo por su cuenta."
+
+#. (itstool) path: section/title
+#: C/message-board.c.page:290
+msgid "Make it look better with CSS"
+msgstr "Mejorar el aspecto con CSS"
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:292
+msgid ""
+"At this point, your program is completely functional, but not very pretty. "
+"You can style the message display with CSS, just like you can with any other "
+"HTML page. There are many ways you could attach some CSS to the page: You "
+"could add it in the initial HTML document. You could inline it in the "
+"<code>style</code> attribute of the <code>div</code> elements. You could "
+"even programmatically construct it using the DOM APIs."
+msgstr ""
+"En este punto, su programa es completamente funcional, pero no es muy "
+"atractivo. Puede añadir estilos a la visualización de los mensajes con CSS, "
+"igual que puede hacer con una página web. Hay muchas maneras de incluir un "
+"CSS en la página: puede añadirlo al documento HTML inicial, añadirlo en "
+"línea usando el atributo <code>style</code> de los elementos <code>div</"
+"code> o puede incluso construirlo con programación usando las API DOM."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:299
+msgid ""
+"In this tutorial, you'll attach the CSS using the <code>user-stylesheet-uri</"
+"code> property of the <code>WebKitWebSetting</code> object attached to your "
+"web view. In a more complete application, you would want to save and load "
+"your HTML file. Keeping the style information outside the actual HTML means "
+"that you can change the styling completely within your application, without "
+"having to change users' files. You would normally just install a file along "
+"with your application, but just to keep everything in one file for this "
+"demo, we'll use a trick called a data URI. First, define the CSS as a static "
+"string near the top of your file."
+msgstr ""
+"En este tutorial se adjuntará el CSS usando la propiedad <code>user-"
+"stylesheet-uri</code> del objeto <code>WebKitWebSetting</code> empotrado en "
+"la vista web. En una aplicación más completa, se podría querer guardar y "
+"cargar el archivo HTML. Mantener la información de estilo fuera del HTML "
+"actual significa que se puede cambiar el estilo completo de la aplicación "
+"sin tener que cambiar los archivos del usuario. Normalmente se instala un "
+"archivo junto con la aplicación, pero simplemente para mantener todo en un "
+"archivo en esta demostración, se usará un truco llamado URI de datos. En "
+"primer lugar, se define el CSS como una cadena estática cerca del principio "
+"del archivo."
+
+#. (itstool) path: section/code
+#: C/message-board.c.page:308
+#, no-wrap
+msgid ""
+"\n"
+"static const guchar CSS[] =\n"
+"\"body { margin: 0; padding: 0; }\\n\"\n"
+"\"div { \"\n"
+"\" -webkit-border-radius: 2px;\"\n"
+"\" background: -webkit-gradient(linear, 0% 100%, 0% 0%,\"\n"
+"\" from(#f1f1f1), to(white));\"\n"
+"\" border: solid 1px #c6c6c6;\"\n"
+"\" -webkit-box-shadow: 0px 0px 2px #c6c6c6;\"\n"
+"\" margin: 12px; padding: 6px;\"\n"
+"\"}\";\n"
+msgstr ""
+"\n"
+"static const guchar CSS[] =\n"
+"\"body { margin: 0; padding: 0; }\\n\"\n"
+"\"div { \"\n"
+"\" -webkit-border-radius: 2px;\"\n"
+"\" background: -webkit-gradient(linear, 0% 100%, 0% 0%,\"\n"
+"\" from(#f1f1f1), to(white));\"\n"
+"\" border: solid 1px #c6c6c6;\"\n"
+"\" -webkit-box-shadow: 0px 0px 2px #c6c6c6;\"\n"
+"\" margin: 12px; padding: 6px;\"\n"
+"\"}\";\n"
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:321
+msgid ""
+"All you have in this example are <code>div</code> elements inside a "
+"<code>body</code> element. If you created more complicated HTML, you could "
+"use whatever CSS is necessary. In fact, if you're comfortable with CSS, you "
+"should trying changing this to something you like better."
+msgstr ""
+"Todo lo que tiene en este ejemplo son elementos <code>div</code> dentro de "
+"un elemento <code>body</code>. Si ha creado HTML más complejo, puede usar "
+"cualquier CSS que sea necesario. Si se siente cómodo usando CSS debería "
+"intentar cambiar esto por algo que le guste más."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:326
+msgid ""
+"To apply the CSS, you set the <code>user-stylesheet-uri</code> in the "
+"<code>create_window</code> function, anywhere after <code>view</code> has "
+"already been defined."
+msgstr ""
+"Para aplicar el CSS, configure la <code>user-stylesheet-uri</code> en la "
+"función <code>create_window</code>, en cualquier lugar después de que "
+"<code>view</code> se haya definido."
+
+#. (itstool) path: section/code
+#: C/message-board.c.page:332
+#, no-wrap
+msgid ""
+"\n"
+"tmp = g_base64_encode (CSS, strlen((gchar *) CSS));\n"
+"css = g_strconcat (\"data:text/css;charset=utf-8;base64,\",\n"
+" tmp, NULL);\n"
+"g_object_set (webkit_web_view_get_settings (WEBKIT_WEB_VIEW (view)),\n"
+" \"user-stylesheet-uri\", css, NULL);\n"
+"g_free (css);\n"
+"g_free (tmp);\n"
+msgstr ""
+"\n"
+"tmp = g_base64_encode (CSS, strlen((gchar *) CSS));\n"
+"css = g_strconcat (\"data:text/css;charset=utf-8;base64,\",\n"
+" tmp, NULL);\n"
+"g_object_set (webkit_web_view_get_settings (WEBKIT_WEB_VIEW (view)),\n"
+" \"user-stylesheet-uri\", css, NULL);\n"
+"g_free (css);\n"
+"g_free (tmp);\n"
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:342
+msgid ""
+"Also, make sure to add variable declarations for <code>tmp</code> and "
+"<code>css</code> to the top of <code>create_window</code>."
+msgstr ""
+"Asegúrese de añadir declaraciones de variables para <code>tmp</code> y "
+"<code>css</code> a la parte superior de <code>create_window</code>."
+
+#. (itstool) path: section/code
+#: C/message-board.c.page:345
+#, no-wrap
+msgid ""
+"\n"
+"gchar *tmp, *css;\n"
+msgstr ""
+"\n"
+"gchar *tmp, *css;\n"
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:349
+msgid ""
+"A data URI starts with <sys>data:</sys> and some information about the "
+"content type and how the data is encoded. The actual data follows after a "
+"comma, in this case encoded in Base64. Unlike other URI schemes like "
+"<sys>http:</sys>, <sys>ftp:</sys>, and <sys>file:</sys>, the <sys>data:</"
+"sys> URI scheme doesn't specify where to find a file to load. Rather, it "
+"gives the entire contents of the file."
+msgstr ""
+"Un URI de datos empieza por <sys>data:</sys> y cierta información sobre el "
+"tipo de contenido y cómo se codifican los datos. Los datos reales siguen "
+"después de una coma, en este caso, codificados en Base64. A diferencia de "
+"otros esquemas de URI como <sys>http:</sys>, <sys>ftp:</sys>, y <sys>file:</"
+"sys>, the <sys>data:</sys>, el esquema del URI no especifica dónde encontrar "
+"un archivo que cargar. En vez de eso, ofrece el contenido completo del "
+"archivo."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:356
+msgid ""
+"The code above first encodes your CSS definitions in Base64, then combines "
+"that with a fixed string to create a data URI. The <code>g_strconcat</code> "
+"function can take any number of string arguments and concatenate them all "
+"together, so you have to pass <code>NULL</code> as the final argument so it "
+"knows when to stop. And don't forget to free those temporary strings after "
+"you set the stylesheet property."
+msgstr ""
+"El código anterior primero codifica las definiciones CSS en Base64, y luego "
+"las combina con una cadena fija para crear una URI de datos. La función "
+"<code>g_strconcat</code> puede tomar cualquier número de argumentos de "
+"cadena y concatenarlos todos juntos, por lo que tiene que pasar <code>NULL</"
+"code> como argumento final para que sepa dónde parar. No olvide liberar esas "
+"cadenas temporales después de establecer la propiedad de la hoja de estilos."
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:363
+msgid ""
+"Build and run the program again. It should now work exactly the same as at "
+"the end of the last section, except the messages will be nicely styled with "
+"a border and a subtle background gradient."
+msgstr ""
+"Construya y ejecute el programa de nuevo. Debería funcionar exactamente "
+"igual que al final de la última sección, excepto que los mensajes tendrán "
+"estilos con un borde y un degradado de fondo sutil."
+
+#. (itstool) path: section/title
+#: C/message-board.c.page:369
+msgid "Learn more"
+msgstr "Aprender más"
+
+#. (itstool) path: section/p
+#: C/message-board.c.page:371
+msgid ""
+"This tutorial showed you how to create a basic application using GTK+ and "
+"WebKit, including showing a document and manipulating its contents. To "
+"create a real application, you probably want to do a little bit more. Try "
+"adding features on your own. Here are a few ideas:"
+msgstr ""
+"Este tutorial le ha mostrado cómo crear una aplicación sencilla usando GTK+ "
+"y WebKit, incluyendo cómo mostrar un documento y manipular su contenido. "
+"Para crear una aplicación real, probablemente quiera hacer algo más. Pruebe "
+"a añadir características usted mismo. Aquí hay algunas ideas:"
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:377
+msgid ""
+"If you're comfortable with CSS, try changing the style of the message "
+"display. CSS is easy to get started with, but increasingly more powerful. "
+"There is a wealth of CSS tutorials on the Internet, and just about "
+"everything you can do on the web, you can do in this application."
+msgstr ""
+"Si se siente cómo usando CSS, pruebe a cambiar el estilo de la visualización "
+"del mensaje. Es fácil iniciarse en CSS, pero cada vez es más potente. Hay "
+"una gran cantidad de tutoriales de CSS en Internet, y casi todo lo que se "
+"puede hacer en una página web, se puede hacer en esta aplicación."
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:383
+msgid ""
+"Right now, you lose all your messages whenever you close the message board. "
+"Try saving the HTML contents after each post, and loading the saved file (if "
+"it exists) on startup."
+msgstr ""
+"Ahora mismo, todos los mensajes se pierden al cerras el cuadro de mensajes. "
+"Pruebe a guardar el contenido HTML después de cada envío, y a cargar el "
+"archivo guardado (si existe) al inicio."
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:391
+msgid ""
+"If you keep your messages around for a long time, you'll start wondering "
+"when you posted them. Add a timestamp to each message when it's posted. "
+"You'll probably want to create some additional child <code>div</code> "
+"elements with different classes that you can style in the CSS."
+msgstr ""
+"Si guarda sus mensajes durante mucho tiempo, empezará a preguntarse dónde "
+"los escribió. Añada una marca de tiempo a cada mensaje cuando se envía. "
+"Probablemente quiera crear algún elemento <code>div</code> hijo adicional "
+"con diferentes clases que puede modelar en el CSS."
+
+#. (itstool) path: item/p
+#: C/message-board.c.page:398
+msgid ""
+"This program keeps messages around forever. Think about ways you could allow "
+"the user to delete messages. Perhaps you want messages to disappear "
+"automatically after they're too old, or after there are a certain number of "
+"messages before them. Or you could add a link in each message to delete it. "
+"You could even override the context menu when you right-click on a message. "
+"These features involve exploring WebKit's DOM API more."
+msgstr ""
+"Este programa guarda los mensajes para siempre. Piense alguna manera para "
+"que el usuario pueda eliminar mensajes. Tal vez quiera que los mensajes "
+"desaparezca automáticamente cuando son muy antiguos o después de que haya "
+"cierto número de mensajes por delante. O podría añadir un enlace en cada "
+"mensaje para eliminarlo. También puede omitir el menú contextual cuando "
+"pulsa con el botón derecho sobe un mensaje. Esta características implican "
+"explorar más la API del DOM de WebKit."
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/messagedialog.c.page:24 C/messagedialog.js.page:25
+#: C/messagedialog.py.page:23 C/messagedialog.vala.page:22
+msgctxt "_"
+msgid ""
+"external ref='media/messagedialog.png' md5='1956288274018e2386d9cba96a2101de'"
+msgstr ""
+"external ref='media/messagedialog.png' md5='1956288274018e2386d9cba96a2101de'"
+
+#. (itstool) path: info/title
+#: C/messagedialog.c.page:8
+msgctxt "text"
+msgid "MessageDialog (C)"
+msgstr "MessageDialog (C)"
+
+#. (itstool) path: info/desc
+#: C/messagedialog.c.page:19 C/messagedialog.py.page:19
+#: C/messagedialog.vala.page:18
+msgid "A message window"
+msgstr "Una ventana de mensaje"
+
+#. (itstool) path: page/title
+#: C/messagedialog.c.page:22 C/messagedialog.js.page:24
+#: C/messagedialog.py.page:22 C/messagedialog.vala.page:21
+msgid "MessageDialog"
+msgstr "MessageDialog"
+
+#. (itstool) path: page/p
+#: C/messagedialog.c.page:25 C/messagedialog.vala.page:23
+msgid "A modal message dialog which can cause the world to explode."
+msgstr "Un diálogo de mensaje modas que puede hacer que el mundo explote."
+
+#. (itstool) path: note/p
+#: C/messagedialog.c.page:26
+msgid ""
+"To test out the application once it has started running, you can click on "
+"the \"Message Dialog\" tab that appears in the top menubar of the screen."
+msgstr ""
+"Para probar la aplicación una vez que la ha ejecutado, puede pulsar la "
+"pestaña «Message Dialog», en la barra de menú superior de la pantalla."
+
+#. (itstool) path: page/code
+#: C/messagedialog.c.page:30
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function in which reacts to the \"response\" signal from the user in\n"
+" * the message dialog window.\n"
+" * This function is used to interact with the user in the terminal.\n"
+" */\n"
+"static void\n"
+"on_response (GtkDialog *dialog,\n"
+" gint response_id,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* If the button clicked gives response OK (response_id being -5) */\n"
+" if (response_id == GTK_RESPONSE_OK) \n"
+" g_print (\"*boom*\\n\");\n"
+"\n"
+" /* If the button clicked gives response CANCEL (response_id being -6) */\n"
+" else if (response_id == GTK_RESPONSE_CANCEL)\n"
+" g_print (\"good choice\\n\");\n"
+"\n"
+" /* If the message dialog is destroyed (for example by pressing escape) */\n"
+" else if (response_id == GTK_RESPONSE_DELETE_EVENT)\n"
+" g_print (\"dialog closed or cancelled\\n\");\n"
+"\n"
+" /* Destroy the dialog after one of the above actions have taken place */\n"
+" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
+"\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the response signal \"activate\" related to the SimpleAction\n"
+" * message_action.\n"
+" * This function is used to cause the message dialog window to popup.\n"
+" */\n"
+"static void\n"
+"message_cb (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* the parent variable in this case represents the window */\n"
+" GtkWidget *message_dialog;\n"
+" GtkWindow *parent = user_data;\n"
+" \n"
+" /* Create a new message dialog, and set the parameters as follows:\n"
+" * Dialog Flags - make the constructed dialog modal \n"
+" * (modal windows prevent interaction with other windows in the application)\n"
+" * Message Type - nonfatal warning message\n"
+" * Buttons Type - use the ok and cancel buttons\n"
+" * message_format - text that you want the user to see in the window \n"
+" */\n"
+" message_dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL, \n"
+" GTK_MESSAGE_WARNING, \n"
+" GTK_BUTTONS_OK_CANCEL, \n"
+" \"This action will cause the universe to stop existing.\");\n"
+"\n"
+" gtk_widget_show_all (message_dialog);\n"
+"\n"
+" g_signal_connect (GTK_DIALOG (message_dialog), \"response\", \n"
+" G_CALLBACK (on_response), NULL);\n"
+"\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *label;\n"
+"\n"
+" GSimpleAction *message_action;\n"
+"\n"
+" /* Create a window with a title and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"GMenu Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n"
+"\n"
+" /* Create a label and add it to the window */\n"
+" label = gtk_label_new (\"This application goes boom!\");\n"
+" gtk_container_add (GTK_CONTAINER (window), label);\n"
+"\n"
+" /* Create a new simple action, giving it a NULL parameter type. It will \n"
+" * always be NULL for actions invoked from a menu. (e.g clicking on an \"ok\" \n"
+" * or \"cancel\" button)\n"
+" */\n"
+" message_action = g_simple_action_new (\"message\", NULL); \n"
+"\n"
+" /* Connect the \"activate\" signal to the appropriate callback function */\n"
+" g_signal_connect (message_action, \"activate\", G_CALLBACK (message_cb), \n"
+" GTK_WINDOW (window));\n"
+"\n"
+" /* Adds the message_action to the overall action map. An Action map is an \n"
+" * interface that contains a number of named GAction instances \n"
+" * (such as message_action) \n"
+" */\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (message_action));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the response signal \"activate\" from the \"quit\" action \n"
+" * in the function directly below.\n"
+" */ \n"
+"static void\n"
+"quit_cb (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GApplication *application = user_data;\n"
+"\n"
+" g_application_quit (application);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the menu we are creating in this sample */\n"
+"static void\n"
+"startup (GApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GMenu *menu;\n"
+" GSimpleAction *quit_action;\n"
+"\n"
+" /* Initialize the GMenu, and add a menu item with label \"Message\" and action \n"
+" * \"win.message\". Also add another menu item with label \"Quit\" and action \n"
+" * \"app.quit\" \n"
+" */\n"
+" menu = g_menu_new ();\n"
+" g_menu_append (menu, \"Message\", \"win.message\");\n"
+" g_menu_append (menu, \"Quit\", \"app.quit\");\n"
+"\n"
+" /* Create a new simple action for the application. (In this case it is the \n"
+" * \"quit\" action.\n"
+" */\n"
+" quit_action = g_simple_action_new (\"quit\", NULL);\n"
+"\n"
+" /* Ensure that the menu we have just created is set for the overall application */\n"
+" gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (menu));\n"
+"\n"
+" g_signal_connect (quit_action, \n"
+" \"activate\", \n"
+" G_CALLBACK (quit_cb), \n"
+" app);\n"
+"\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
+"\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the application */\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function in which reacts to the \"response\" signal from the user in\n"
+" * the message dialog window.\n"
+" * This function is used to interact with the user in the terminal.\n"
+" */\n"
+"static void\n"
+"on_response (GtkDialog *dialog,\n"
+" gint response_id,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* If the button clicked gives response OK (response_id being -5) */\n"
+" if (response_id == GTK_RESPONSE_OK) \n"
+" g_print (\"*boom*\\n\");\n"
+"\n"
+" /* If the button clicked gives response CANCEL (response_id being -6) */\n"
+" else if (response_id == GTK_RESPONSE_CANCEL)\n"
+" g_print (\"good choice\\n\");\n"
+"\n"
+" /* If the message dialog is destroyed (for example by pressing escape) */\n"
+" else if (response_id == GTK_RESPONSE_DELETE_EVENT)\n"
+" g_print (\"dialog closed or cancelled\\n\");\n"
+"\n"
+" /* Destroy the dialog after one of the above actions have taken place */\n"
+" gtk_widget_destroy (GTK_WIDGET (dialog));\n"
+"\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the response signal \"activate\" related to the SimpleAction\n"
+" * message_action.\n"
+" * This function is used to cause the message dialog window to popup.\n"
+" */\n"
+"static void\n"
+"message_cb (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* the parent variable in this case represents the window */\n"
+" GtkWidget *message_dialog;\n"
+" GtkWindow *parent = user_data;\n"
+" \n"
+" /* Create a new message dialog, and set the parameters as follows:\n"
+" * Dialog Flags - make the constructed dialog modal \n"
+" * (modal windows prevent interaction with other windows in the application)\n"
+" * Message Type - nonfatal warning message\n"
+" * Buttons Type - use the ok and cancel buttons\n"
+" * message_format - text that you want the user to see in the window \n"
+" */\n"
+" message_dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL, \n"
+" GTK_MESSAGE_WARNING, \n"
+" GTK_BUTTONS_OK_CANCEL, \n"
+" \"This action will cause the universe to stop existing.\");\n"
+"\n"
+" gtk_widget_show_all (message_dialog);\n"
+"\n"
+" g_signal_connect (GTK_DIALOG (message_dialog), \"response\", \n"
+" G_CALLBACK (on_response), NULL);\n"
+"\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *label;\n"
+"\n"
+" GSimpleAction *message_action;\n"
+"\n"
+" /* Create a window with a title and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"GMenu Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n"
+"\n"
+" /* Create a label and add it to the window */\n"
+" label = gtk_label_new (\"This application goes boom!\");\n"
+" gtk_container_add (GTK_CONTAINER (window), label);\n"
+"\n"
+" /* Create a new simple action, giving it a NULL parameter type. It will \n"
+" * always be NULL for actions invoked from a menu. (e.g clicking on an \"ok\" \n"
+" * or \"cancel\" button)\n"
+" */\n"
+" message_action = g_simple_action_new (\"message\", NULL); \n"
+"\n"
+" /* Connect the \"activate\" signal to the appropriate callback function */\n"
+" g_signal_connect (message_action, \"activate\", G_CALLBACK (message_cb), \n"
+" GTK_WINDOW (window));\n"
+"\n"
+" /* Adds the message_action to the overall action map. An Action map is an \n"
+" * interface that contains a number of named GAction instances \n"
+" * (such as message_action) \n"
+" */\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (message_action));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the response signal \"activate\" from the \"quit\" action \n"
+" * in the function directly below.\n"
+" */ \n"
+"static void\n"
+"quit_cb (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GApplication *application = user_data;\n"
+"\n"
+" g_application_quit (application);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the menu we are creating in this sample */\n"
+"static void\n"
+"startup (GApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GMenu *menu;\n"
+" GSimpleAction *quit_action;\n"
+"\n"
+" /* Initialize the GMenu, and add a menu item with label \"Message\" and action \n"
+" * \"win.message\". Also add another menu item with label \"Quit\" and action \n"
+" * \"app.quit\" \n"
+" */\n"
+" menu = g_menu_new ();\n"
+" g_menu_append (menu, \"Message\", \"win.message\");\n"
+" g_menu_append (menu, \"Quit\", \"app.quit\");\n"
+"\n"
+" /* Create a new simple action for the application. (In this case it is the \n"
+" * \"quit\" action.\n"
+" */\n"
+" quit_action = g_simple_action_new (\"quit\", NULL);\n"
+"\n"
+" /* Ensure that the menu we have just created is set for the overall application */\n"
+" gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (menu));\n"
+"\n"
+" g_signal_connect (quit_action, \n"
+" \"activate\", \n"
+" G_CALLBACK (quit_cb), \n"
+" app);\n"
+"\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n"
+"\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the application */\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/messagedialog.c.page:37
+msgid ""
+"<link href=\"http://developer.gnome.org/gio/stable/GApplication.html"
+"\">GApplication</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gio/stable/GApplication.html"
+"\">GApplication</link>"
+
+#. (itstool) path: item/p
+#: C/messagedialog.c.page:39
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkMessageDialog.html"
+"\">GtkMessageDialog</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkMessageDialog.html"
+"\">GtkMessageDialog</link>"
+
+#. (itstool) path: item/p
+#: C/messagedialog.c.page:40
+msgid ""
+"<link href=\"http://developer.gnome.org/gio/stable/GSimpleAction.html#g-"
+"simple-action-new\">GSimpleAction</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gio/stable/GSimpleAction.html#g-"
+"simple-action-new\">GSimpleAction</link>"
+
+#. (itstool) path: info/title
+#: C/messagedialog.js.page:8
+msgctxt "text"
+msgid "MessageDialog (JavaScript)"
+msgstr "MessageDialog (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/messagedialog.js.page:21
+msgid "A popup message attached to a window"
+msgstr "Una mensaje emergente acoplado a una ventana"
+
+#. (itstool) path: page/p
+#: C/messagedialog.js.page:26
+msgid ""
+"A MessageDialog is a modal message dialog, which means a popup that you have "
+"to respond to before you get back to what you were doing in the window that "
+"it's attached to. This one can cause the world to explode (or at least it "
+"says that it can). To make the popup appear when you run this sample, click "
+"on \"Message\" inside of its application menu -- that's the menu that "
+"appears when you click on an application's name in the upper-left screen "
+"corner, next to Activities."
+msgstr ""
+"Un «MessageDialog» es un diálogo de mensaje modal, es decir un diálogo "
+"emergente al que tiene que responder antes de volver a lo que estaba "
+"haciendo en la ventana a la que está vinculado. Este puede hacer que el "
+"mundo explote (o al menos eso dice). Para hacer que el diálogo aparezca "
+"cuando ejecute este ejemplo, pulse «Message» dentro de su menú de aplicación "
+"(el que aparece cuando pulsa en el nombre de la aplicación en la esquina "
+"superior izquierda, junto a «Actividades»)."
+
+#. (itstool) path: note/p
+#: C/messagedialog.js.page:27
+msgid ""
+"The difference between a MessageDialog and a <link xref=\"dialog.js"
+"\">Dialog</link> is that a Dialog can contain whatever widgets and content "
+"you want to put in it, whereas a MessageDialog is just a convenient way to "
+"make popups appear with a basic message and buttons."
+msgstr ""
+"La diferencia entre un «MessageDialog» y un <link xref=\"dialog.js\">Dialog</"
+"link> es que un «Dialog» puede contener cualquier widget y tener el "
+"contenido que quiera, mientras que un «MessageDialog» es sólo una manera "
+"cómoda de hacer que aparezca un diálogo emergente con un mensaje básico y "
+"botones."
+
+#. (itstool) path: section/code
+#: C/messagedialog.js.page:44
+#, no-wrap
+msgid ""
+"\n"
+"const MessageDialogExample = new Lang.Class ({\n"
+" Name: 'MessageDialog Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jsmessagedialog',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal initializes menus and builds the UI\n"
+" _onStartup: function () {\n"
+" this._initMenus();\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+"const MessageDialogExample = new Lang.Class ({\n"
+" Name: 'MessageDialog Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jsmessagedialog',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal initializes menus and builds the UI\n"
+" _onStartup: function () {\n"
+" this._initMenus();\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: note/p
+#: C/messagedialog.js.page:71 C/switch.js.page:76
+msgid ""
+"Before we call _buildUI to create the window and the widgets inside it, we "
+"need to call _initMenus, which tells GNOME to create the menu. We can put "
+"the actual code for _initMenus after the code for _buildUI, since it doesn't "
+"matter what order we put them in so long as _initMenus is called first in "
+"_onStartup."
+msgstr ""
+"Antes de llamar a «_buildUI» para crear la ventana y sus widgets, es "
+"necesario llamar a «_initMenus», que le dice a GNOME que cree el menú. Se "
+"puede poner el código de «_initMenus» después del código de «_buildUI», dado "
+"que no importa en qué orden se esté mientras que «_initMenus» se llame "
+"primero en «_onStartup»."
+
+#. (itstool) path: section/code
+#: C/messagedialog.js.page:72
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Gtk.MessageDialog Example\",\n"
+" default_height: 200,\n"
+" default_width: 400 });\n"
+msgstr ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Gtk.MessageDialog Example\",\n"
+" default_height: 200,\n"
+" default_width: 400 });\n"
+
+#. (itstool) path: section/code
+#: C/messagedialog.js.page:86
+#, no-wrap
+msgid ""
+"\n"
+" // Create a silly warning message and add it to the window\n"
+" this.warningLabel = new Gtk.Label ({\n"
+" label: \"This application goes boom! (Not really.)\"});\n"
+" this._window.add (this.warningLabel);\n"
+msgstr ""
+"\n"
+" // Create a silly warning message and add it to the window\n"
+" this.warningLabel = new Gtk.Label ({\n"
+" label: \"This application goes boom! (Not really.)\"});\n"
+" this._window.add (this.warningLabel);\n"
+
+#. (itstool) path: section/p
+#: C/messagedialog.js.page:92
+msgid ""
+"For this example, all that we have in the window the popup comes out of is a "
+"silly warning <link xref=\"label.js\">Label</link>."
+msgstr ""
+"Para este ejemplo, todo lo que hay en la ventana de la que viene el diálogo "
+"emergente es una <link xref=\"label.js\">Label</link> de advertencia tonta."
+
+#. (itstool) path: section/title
+#: C/messagedialog.js.page:96
+msgid "Creating the application's menu"
+msgstr "Crear el menú de la aplicación"
+
+#. (itstool) path: section/code
+#: C/messagedialog.js.page:97
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application menu, including the button that calls the dialog\n"
+" _initMenus: function() {\n"
+" let menu = new Gio.Menu();\n"
+" menu.append(\"Message\",'app.message');\n"
+" menu.append(\"Quit\",'app.quit');\n"
+" this.application.set_app_menu(menu);\n"
+"\n"
+" // This pops up a MessageDialog when \"Message\" is clicked in the menu\n"
+" let messageAction = new Gio.SimpleAction ({ name: 'message' });\n"
+" messageAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showMessageDialog();\n"
+" }));\n"
+" this.application.add_action(messageAction);\n"
+"\n"
+" // This closes the window when \"Quit\" is clicked in the menu\n"
+" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+" },\n"
+msgstr ""
+"\n"
+" // Build the application menu, including the button that calls the dialog\n"
+" _initMenus: function() {\n"
+" let menu = new Gio.Menu();\n"
+" menu.append(\"Message\",'app.message');\n"
+" menu.append(\"Quit\",'app.quit');\n"
+" this.application.set_app_menu(menu);\n"
+"\n"
+" // This pops up a MessageDialog when \"Message\" is clicked in the menu\n"
+" let messageAction = new Gio.SimpleAction ({ name: 'message' });\n"
+" messageAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showMessageDialog();\n"
+" }));\n"
+" this.application.add_action(messageAction);\n"
+"\n"
+" // This closes the window when \"Quit\" is clicked in the menu\n"
+" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/messagedialog.js.page:122
+msgid ""
+"Here, we build the <link xref=\"gmenu.js\">GMenu</link> where we'll be "
+"putting the \"Message\" button which triggers the popup MessageDialog. The "
+"GMenu is the menu that appears when you click the application's name in the "
+"upper-left corner of the screen, next to the Activities menu. Our menu only "
+"has two options in it: Message, and Quit."
+msgstr ""
+"Aquí, se construye el <link xref=\"gmenu.js\">GMenu</link> donde se pondrá "
+"el botón «Message» que acciona el «MessageDialog» emergente. El «GMenu» es "
+"el menú que aparece cuando pulsa el nombre de la aplicación en la esquina "
+"superior izquierda de la pantalla, junto al menú «Actividades». Este menú "
+"sólo tiene dos opciones: «Message» y «Quit»."
+
+#. (itstool) path: section/title
+#: C/messagedialog.js.page:126
+msgid "Creating the MessageDialog"
+msgstr "Crear el «MessageDialog»"
+
+#. (itstool) path: section/code
+#: C/messagedialog.js.page:127
+#, no-wrap
+msgid ""
+"\n"
+" _showMessageDialog: function () {\n"
+"\n"
+" // Create a modal MessageDialog whose parent is the window\n"
+" this._messageDialog = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" buttons: Gtk.ButtonsType.OK_CANCEL,\n"
+" message_type: Gtk.MessageType.WARNING,\n"
+" text: \"This action will cause the universe to stop existing.\" });\n"
+"\n"
+" this._messageDialog.connect ('response', Lang.bind(this, this._response_cb));\n"
+" this._messageDialog.show();\n"
+" },\n"
+msgstr ""
+"\n"
+" _showMessageDialog: function () {\n"
+"\n"
+" // Create a modal MessageDialog whose parent is the window\n"
+" this._messageDialog = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" buttons: Gtk.ButtonsType.OK_CANCEL,\n"
+" message_type: Gtk.MessageType.WARNING,\n"
+" text: \"This action will cause the universe to stop existing.\" });\n"
+"\n"
+" this._messageDialog.connect ('response', Lang.bind(this, this._response_cb));\n"
+" this._messageDialog.show();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/messagedialog.js.page:142
+msgid ""
+"To make our MessageDialog a popup attached to the main window, we set its "
+"modal property to true and set it to be \"transient_for\" _window. After "
+"that, we can set what kind of buttons it has and what kind of message it is "
+"(which determines what icon appears next to the message), and write out the "
+"text inside it, before connecting its \"response\" signal to the callback "
+"function which handles it."
+msgstr ""
+"Para hacer del «MessageDialog» un diálogo emergente vinculado a la ventana "
+"principal, se establece su propiedad «modal» a «true» y «transient_for» a "
+"«_window». Después, se puede configurar el tipo de botones que tiene y qué "
+"tipo de mensaje es (determinando el icono junto al mensaje), y escribir su "
+"texto, antes de conectar su señal «response» a la función de retorno de "
+"llamada que la maneja."
+
+#. (itstool) path: note/p
+#: C/messagedialog.js.page:143
+msgid "Here are some resources for making your own MessageDialogs:"
+msgstr "Aquí hay algunos recursos para hacer sus propios «MessageDialog»:"
+
+#. (itstool) path: item/p
+#: C/messagedialog.js.page:145
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkMessageDialog."
+"html#GtkButtonsType\">List of button types</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkMessageDialog."
+"html#GtkButtonsType\">Lista de tipos de botones</link>"
+
+#. (itstool) path: item/p
+#: C/messagedialog.js.page:146
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkMessageDialog."
+"html#GtkMessageType\">List of message types</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkMessageDialog."
+"html#GtkMessageType\">Lista de tipos de mensajes</link>"
+
+#. (itstool) path: section/code
+#: C/messagedialog.js.page:150
+#, no-wrap
+msgid ""
+"\n"
+" // Callback function (aka signal handler) for the response signal\n"
+" _response_cb: function (messagedialog, response_id) {\n"
+"\n"
+" // A simple switch that changes the main window's label\n"
+" switch (response_id) {\n"
+" case Gtk.ResponseType.OK:\n"
+" this.warningLabel.set_label (\"*BOOM*\\n\");\n"
+" break;\n"
+" case Gtk.ResponseType.CANCEL:\n"
+" this.warningLabel.set_label (\"Good choice!\\n\");\n"
+" break;\n"
+" case Gtk.ResponseType.DELETE_EVENT:\n"
+" this.warningLabel.set_label (\"Dialog closed or cancelled.\\n\");\n"
+" break;\n"
+" }\n"
+"\n"
+" this._messageDialog.destroy();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+msgstr ""
+"\n"
+" // Callback function (aka signal handler) for the response signal\n"
+" _response_cb: function (messagedialog, response_id) {\n"
+"\n"
+" // A simple switch that changes the main window's label\n"
+" switch (response_id) {\n"
+" case Gtk.ResponseType.OK:\n"
+" this.warningLabel.set_label (\"*BOOM*\\n\");\n"
+" break;\n"
+" case Gtk.ResponseType.CANCEL:\n"
+" this.warningLabel.set_label (\"Good choice!\\n\");\n"
+" break;\n"
+" case Gtk.ResponseType.DELETE_EVENT:\n"
+" this.warningLabel.set_label (\"Dialog closed or cancelled.\\n\");\n"
+" break;\n"
+" }\n"
+"\n"
+" this._messageDialog.destroy();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+
+#. (itstool) path: section/p
+#: C/messagedialog.js.page:173
+msgid ""
+"This function takes two parameters, the MessageDialog and its response_id, "
+"both of which are automatically supplied (you don't have to manually pass "
+"them to it for it to work). Here we use a simple switch to change the "
+"\"warning label\"'s text, depending on which option you select. The "
+"DELETE_EVENT occurs if you press Escape to cancel the MessageDialog, instead "
+"of clicking OK or Cancel. Whatever you select, the popup is destroyed "
+"afterwards."
+msgstr ""
+"Esta función toma dos parámetros, el «MessageDialog» y su «response_id», "
+"ambos proporcionados automáticamente (no tiene que pasarlos manualmente para "
+"que funcione). Aquí se usa un interruptor simple para cambiar el texto de la "
+"«etiqueta de advertencia», dependiendo de qué opción elija. «DELETE_EVENT» "
+"ocurre su presiona «Escape» para cancelar el «MessageDialog», en lugar de "
+"presionar «OK» o «Cancel». Elija lo que elija, el diálogo emergente de "
+"destruirá a continuación."
+
+#. (itstool) path: section/code
+#: C/messagedialog.js.page:175
+#, no-wrap
+msgid ""
+"\n"
+"// Run the application\n"
+"let app = new MessageDialogExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"// Run the application\n"
+"let app = new MessageDialogExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/p
+#: C/messagedialog.js.page:180
+msgid ""
+"Finally, we create a new instance of the finished MessageDialogExample "
+"class, and set the application running."
+msgstr ""
+"Finalmente, se crea una instancia nueva de la clase «MessageDialogExample» "
+"terminada, y se ejecuta la aplicación."
+
+#. (itstool) path: section/code
+#: C/messagedialog.js.page:185
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const MessageDialogExample = new Lang.Class ({\n"
+" Name: 'MessageDialog Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jsmessagedialog',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal initializes menus and builds the UI\n"
+" _onStartup: function () {\n"
+" this._initMenus();\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Gtk.MessageDialog Example\",\n"
+" default_height: 200,\n"
+" default_width: 400 });\n"
+"\n"
+" // Create a silly warning message and add it to the window\n"
+" this.warningLabel = new Gtk.Label ({\n"
+" label: \"This application goes boom! (Not really.)\"});\n"
+" this._window.add (this.warningLabel);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application menu, including the button that calls the dialog\n"
+" _initMenus: function() {\n"
+" let menu = new Gio.Menu();\n"
+" menu.append(\"Message\",'app.message');\n"
+" menu.append(\"Quit\",'app.quit');\n"
+" this.application.set_app_menu(menu);\n"
+"\n"
+" // This pops up a MessageDialog when \"Message\" is clicked in the menu\n"
+" let messageAction = new Gio.SimpleAction ({ name: 'message' });\n"
+" messageAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showMessageDialog();\n"
+" }));\n"
+" this.application.add_action(messageAction);\n"
+"\n"
+" // This closes the window when \"Quit\" is clicked in the menu\n"
+" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _showMessageDialog: function () {\n"
+"\n"
+" // Create a modal MessageDialog whose parent is the window\n"
+" this._messageDialog = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" buttons: Gtk.ButtonsType.OK_CANCEL,\n"
+" message_type: Gtk.MessageType.WARNING,\n"
+" text: \"This action will cause the universe to stop existing.\" });\n"
+"\n"
+" this._messageDialog.connect ('response', Lang.bind(this, this._response_cb));\n"
+" this._messageDialog.show();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Callback function (aka signal handler) for the response signal\n"
+" _response_cb: function (messagedialog, response_id) {\n"
+"\n"
+" // A simple switch that changes the main window's label\n"
+" switch (response_id) {\n"
+" case Gtk.ResponseType.OK:\n"
+" this.warningLabel.set_label (\"*BOOM*\\n\");\n"
+" break;\n"
+" case Gtk.ResponseType.CANCEL:\n"
+" this.warningLabel.set_label (\"Good choice!\\n\");\n"
+" break;\n"
+" case Gtk.ResponseType.DELETE_EVENT:\n"
+" this.warningLabel.set_label (\"Dialog closed or cancelled.\\n\");\n"
+" break;\n"
+" }\n"
+"\n"
+" this._messageDialog.destroy();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new MessageDialogExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const MessageDialogExample = new Lang.Class ({\n"
+" Name: 'MessageDialog Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jsmessagedialog',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal initializes menus and builds the UI\n"
+" _onStartup: function () {\n"
+" this._initMenus();\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Gtk.MessageDialog Example\",\n"
+" default_height: 200,\n"
+" default_width: 400 });\n"
+"\n"
+" // Create a silly warning message and add it to the window\n"
+" this.warningLabel = new Gtk.Label ({\n"
+" label: \"This application goes boom! (Not really.)\"});\n"
+" this._window.add (this.warningLabel);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application menu, including the button that calls the dialog\n"
+" _initMenus: function() {\n"
+" let menu = new Gio.Menu();\n"
+" menu.append(\"Message\",'app.message');\n"
+" menu.append(\"Quit\",'app.quit');\n"
+" this.application.set_app_menu(menu);\n"
+"\n"
+" // This pops up a MessageDialog when \"Message\" is clicked in the menu\n"
+" let messageAction = new Gio.SimpleAction ({ name: 'message' });\n"
+" messageAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showMessageDialog();\n"
+" }));\n"
+" this.application.add_action(messageAction);\n"
+"\n"
+" // This closes the window when \"Quit\" is clicked in the menu\n"
+" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _showMessageDialog: function () {\n"
+"\n"
+" // Create a modal MessageDialog whose parent is the window\n"
+" this._messageDialog = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" buttons: Gtk.ButtonsType.OK_CANCEL,\n"
+" message_type: Gtk.MessageType.WARNING,\n"
+" text: \"This action will cause the universe to stop existing.\" });\n"
+"\n"
+" this._messageDialog.connect ('response', Lang.bind(this, this._response_cb));\n"
+" this._messageDialog.show();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Callback function (aka signal handler) for the response signal\n"
+" _response_cb: function (messagedialog, response_id) {\n"
+"\n"
+" // A simple switch that changes the main window's label\n"
+" switch (response_id) {\n"
+" case Gtk.ResponseType.OK:\n"
+" this.warningLabel.set_label (\"*BOOM*\\n\");\n"
+" break;\n"
+" case Gtk.ResponseType.CANCEL:\n"
+" this.warningLabel.set_label (\"Good choice!\\n\");\n"
+" break;\n"
+" case Gtk.ResponseType.DELETE_EVENT:\n"
+" this.warningLabel.set_label (\"Dialog closed or cancelled.\\n\");\n"
+" break;\n"
+" }\n"
+"\n"
+" this._messageDialog.destroy();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new MessageDialogExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: info/title
+#: C/messagedialog.py.page:8
+msgctxt "text"
+msgid "MessageDialog (Python)"
+msgstr "MessageDialog (Python)"
+
+#. (itstool) path: page/p
+#: C/messagedialog.py.page:24
+msgid ""
+"A message dialog which prints messages on the terminal, depending on your "
+"choices."
+msgstr ""
+"Un diálogo de mensajes que imprime mensajes en la terminal, según su "
+"elección."
+
+#. (itstool) path: section/code
+#: C/messagedialog.py.page:31
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" # constructor for a window (the parent window) with a label\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"GMenu Example\", application=app)\n"
+" self.set_default_size(400, 200)\n"
+" label = Gtk.Label()\n"
+" label.set_text(\"This application goes boom!\")\n"
+" self.add(label)\n"
+"\n"
+" # create the message_action (a Gio.SimpleAction) - for the window\n"
+" message_action = Gio.SimpleAction.new(\"message\", None)\n"
+" # connect the signal from the action to the function message_cb()\n"
+" message_action.connect(\"activate\", self.message_cb)\n"
+" # add the action to the application\n"
+" app.add_action(message_action)\n"
+"\n"
+" # callback function for the signal \"activate\" from the message_action\n"
+" # in the menu of the parent window\n"
+" def message_cb(self, action, parameter):\n"
+" # a Gtk.MessageDialog\n"
+" messagedialog = Gtk.MessageDialog(parent=self,\n"
+" flags=Gtk.DialogFlags.MODAL,\n"
+" type=Gtk.MessageType.WARNING,\n"
+" buttons=Gtk.ButtonsType.OK_CANCEL,\n"
+" message_format=\"This action will cause the universe to stop
existing.\")\n"
+" # connect the response (of the button clicked) to the function\n"
+" # dialog_response()\n"
+" messagedialog.connect(\"response\", self.dialog_response)\n"
+" # show the messagedialog\n"
+" messagedialog.show()\n"
+"\n"
+" def dialog_response(self, widget, response_id):\n"
+" # if the button clicked gives response OK (-5)\n"
+" if response_id == Gtk.ResponseType.OK:\n"
+" print(\"*boom*\")\n"
+" # if the button clicked gives response CANCEL (-6)\n"
+" elif response_id == Gtk.ResponseType.CANCEL:\n"
+" print(\"good choice\")\n"
+" # if the messagedialog is destroyed (by pressing ESC)\n"
+" elif response_id == Gtk.ResponseType.DELETE_EVENT:\n"
+" print(\"dialog closed or cancelled\")\n"
+" # finally, destroy the messagedialog\n"
+" widget.destroy()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def quit_cb(self, action, parameter):\n"
+" self.quit()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # create a menu (a Gio.Menu)\n"
+" menu = Gio.Menu()\n"
+" # append a menu item with label \"Message\" and action \"app.message\"\n"
+" menu.append(\"Message\", \"app.message\")\n"
+" # append a menu item with label \"Quit\" and action \"app.quit\"\n"
+" menu.append(\"Quit\", \"app.quit\")\n"
+" # set menu as the menu for the application\n"
+" self.set_app_menu(menu)\n"
+"\n"
+" # a new simpleaction - for the application\n"
+" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
+" quit_action.connect(\"activate\", self.quit_cb)\n"
+" self.add_action(quit_action)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" # constructor for a window (the parent window) with a label\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"GMenu Example\", application=app)\n"
+" self.set_default_size(400, 200)\n"
+" label = Gtk.Label()\n"
+" label.set_text(\"This application goes boom!\")\n"
+" self.add(label)\n"
+"\n"
+" # create the message_action (a Gio.SimpleAction) - for the window\n"
+" message_action = Gio.SimpleAction.new(\"message\", None)\n"
+" # connect the signal from the action to the function message_cb()\n"
+" message_action.connect(\"activate\", self.message_cb)\n"
+" # add the action to the application\n"
+" app.add_action(message_action)\n"
+"\n"
+" # callback function for the signal \"activate\" from the message_action\n"
+" # in the menu of the parent window\n"
+" def message_cb(self, action, parameter):\n"
+" # a Gtk.MessageDialog\n"
+" messagedialog = Gtk.MessageDialog(parent=self,\n"
+" flags=Gtk.DialogFlags.MODAL,\n"
+" type=Gtk.MessageType.WARNING,\n"
+" buttons=Gtk.ButtonsType.OK_CANCEL,\n"
+" message_format=\"This action will cause the universe to stop
existing.\")\n"
+" # connect the response (of the button clicked) to the function\n"
+" # dialog_response()\n"
+" messagedialog.connect(\"response\", self.dialog_response)\n"
+" # show the messagedialog\n"
+" messagedialog.show()\n"
+"\n"
+" def dialog_response(self, widget, response_id):\n"
+" # if the button clicked gives response OK (-5)\n"
+" if response_id == Gtk.ResponseType.OK:\n"
+" print(\"*boom*\")\n"
+" # if the button clicked gives response CANCEL (-6)\n"
+" elif response_id == Gtk.ResponseType.CANCEL:\n"
+" print(\"good choice\")\n"
+" # if the messagedialog is destroyed (by pressing ESC)\n"
+" elif response_id == Gtk.ResponseType.DELETE_EVENT:\n"
+" print(\"dialog closed or cancelled\")\n"
+" # finally, destroy the messagedialog\n"
+" widget.destroy()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def quit_cb(self, action, parameter):\n"
+" self.quit()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # create a menu (a Gio.Menu)\n"
+" menu = Gio.Menu()\n"
+" # append a menu item with label \"Message\" and action \"app.message\"\n"
+" menu.append(\"Message\", \"app.message\")\n"
+" # append a menu item with label \"Quit\" and action \"app.quit\"\n"
+" menu.append(\"Quit\", \"app.quit\")\n"
+" # set menu as the menu for the application\n"
+" self.set_app_menu(menu)\n"
+"\n"
+" # a new simpleaction - for the application\n"
+" quit_action = Gio.SimpleAction.new(\"quit\", None)\n"
+" quit_action.connect(\"activate\", self.quit_cb)\n"
+" self.add_action(quit_action)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/messagedialog.py.page:36
+msgid "Useful methods for a MessageDialog widget"
+msgstr "Métodos útiles para un widget «MessageDialog»"
+
+#. (itstool) path: section/p
+#: C/messagedialog.py.page:37
+msgid ""
+"In line 18 the signal <code>\"activate\"</code> is connected to the callback "
+"function <code>message_cb()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 18, la señal <code>«activate»</code> se conecta a la función de "
+"retorno de llamada <code>message_cb()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para obtener una "
+"explicación más detallada."
+
+#. (itstool) path: item/p
+#: C/messagedialog.py.page:39
+msgid ""
+"In the constructor of MessageDialog we could set flags as <code>Gtk."
+"DialogFlags.DESTROY_WITH_PARENT</code> (to destroy the messagedialog window "
+"when its parent window is destroyed) or as <code>Gtk.DialogFlags.MODAL</"
+"code> (no interaction with other windows of the application)."
+msgstr ""
+"En el constructor de un «MessageDialog» se pueden configurar opciones como "
+"<code>Gtk.DialogFlags.DESTROY_WITH_PARENT</code> (para destruir la ventana "
+"de diálogo cuando se destruya su ventana madre) o <code>Gtk.DialogFlags."
+"MODAL</code> (sin interacción con otras ventanas de la aplicación)."
+
+#. (itstool) path: item/p
+#: C/messagedialog.py.page:40
+msgid ""
+"In the constructor of MessageDialog we could set type as any of <code>Gtk."
+"MessageType.INFO, Gtk.MessageType.WARNING, Gtk.MessageType.QUESTION, Gtk."
+"MessageType.ERROR, Gtk.MessageType.OTHER</code> depending on what type of "
+"message we want."
+msgstr ""
+"En el constructor del «MessageDialog» se puede elegir entre los tipos "
+"<code>Gtk.MessageType.INFO, Gtk.MessageType.WARNING, Gtk.MessageType."
+"QUESTION, Gtk.MessageType.ERROR, Gtk.MessageType.OTHER</code> dependiendo de "
+"qué tipo de mensaje quiera."
+
+#. (itstool) path: item/p
+#: C/messagedialog.py.page:41
+msgid ""
+"In the constructor of MessageDialog we could set buttons as any of <code>Gtk."
+"ButtonsType.NONE, Gtk.ButtonsType.OK, Gtk.ButtonsType.CLOSE, Gtk.ButtonsType."
+"CANCEL, Gtk.ButtonsType.YES_NO, Gtk.ButtonsType.OK_CANCEL</code>, or any "
+"button using <code>add_button()</code> as in Gtk.Dialog."
+msgstr ""
+"En el constructor del «MessageDialog» se puede elegir entre los botones "
+"<code>Gtk.ButtonsType.NONE, Gtk.ButtonsType.OK, Gtk.ButtonsType.CLOSE, Gtk."
+"ButtonsType.CANCEL, Gtk.ButtonsType.YES_NO, Gtk.ButtonsType.OK_CANCEL</"
+"code>, o cualquier botón usando <code>add_button()</code> como en un «Gtk."
+"Dialog»."
+
+#. (itstool) path: item/p
+#: C/messagedialog.py.page:42
+msgid ""
+"We could substitute the default image of the MessageDialog with another "
+"image using"
+msgstr ""
+"Se podría sustituir la imagen predeterminada del «MessageDialog» con otra "
+"usando"
+
+#. (itstool) path: item/code
+#: C/messagedialog.py.page:43
+#, no-wrap
+msgid ""
+"\n"
+"image = Gtk.Image()\n"
+"image.set_from_stock(Gtk.STOCK_CAPS_LOCK_WARNING, Gtk.IconSize.DIALOG)\n"
+"image.show()\n"
+"messagedialog.set_image(image)"
+msgstr ""
+"\n"
+"image = Gtk.Image()\n"
+"image.set_from_stock(Gtk.STOCK_CAPS_LOCK_WARNING, Gtk.IconSize.DIALOG)\n"
+"image.show()\n"
+"messagedialog.set_image(image)"
+
+#. (itstool) path: item/p
+#: C/messagedialog.py.page:48
+msgid ""
+"where <code>Gtk.STOCK_CAPS_LOCK_WARNING</code> is any image from <link href="
+"\"http://developer.gnome.org/gtk3/unstable/gtk3-Stock-Items.html\">Stock "
+"Items</link>. We could also set any image as in the Image widget, as "
+"<code>image.set_from_file(\"filename.png\")</code>."
+msgstr ""
+"donde <code>Gtk.STOCK_CAPS_LOCK_WARNING</code> es cualquier imagen de los "
+"<link href=\"http://developer.gnome.org/gtk3/unstable/gtk3-Stock-Items.html"
+"\">elementos del almacén</link>. También se podría establecer cualquier "
+"imagen como en el widget «Image», con <code>image.set_from_file(\"archivo.png"
+"\")</code>."
+
+#. (itstool) path: item/p
+#: C/messagedialog.py.page:49
+msgid ""
+"<code>format_secondary_text(\"some secondary message\")</code> sets a "
+"secondary message. The primary text becomes bold."
+msgstr ""
+"<code>format_secondary_text(\"algún mensaje secundario\")</code> establece "
+"un mensaje secundario. El texto primario aparece en negrita."
+
+#. (itstool) path: item/p
+#: C/messagedialog.py.page:59
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMessageDialog.html"
+"\">GtkMessageDialog</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkMessageDialog.html"
+"\">GtkMessageDialog</link>"
+
+#. (itstool) path: item/p
+#: C/messagedialog.py.page:63
+msgid ""
+"<link href=\"http://developer.gnome.org/gio/unstable/GActionMap.html"
+"\">GActionMap</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gio/unstable/GActionMap.html"
+"\">GActionMap</link>"
+
+#. (itstool) path: info/title
+#: C/messagedialog.vala.page:8
+msgctxt "text"
+msgid "MessageDialog (Vala)"
+msgstr "MessageDialog (Vala)"
+
+#. (itstool) path: page/code
+#: C/messagedialog.vala.page:25
+#, no-wrap
+msgid ""
+"\n"
+"//A window in the application\n"
+"public class Window : Gtk.ApplicationWindow {\n"
+"\tpublic Window (Application app) {\n"
+"\t\tObject (application: app, title: \"Gtk.MessageDialog Example\");\n"
+"\n"
+"\t\tvar label = new Gtk.Label (\"This application goes boom!\");\n"
+"\t\tthis.add (label);\n"
+"\n"
+"\t\tvar message_action = new SimpleAction (\"message\", null);\n"
+"\t\tmessage_action.activate.connect (message);\n"
+"\t\tthis.add_action (message_action);\n"
+"\n"
+"\t\tthis.set_default_size (400, 200);\n"
+"\t\tthis.show_all ();\n"
+"\t}\n"
+"\n"
+"\tvoid dialog_response (Gtk.Dialog dialog, int response_id) {\n"
+"\t\tswitch (response_id) {\n"
+"\t\t\tcase Gtk.ResponseType.OK:\n"
+"\t\t\t\tprint (\"*boom*\\n\");\n"
+"\t\t\t\tbreak;\n"
+"\t\t\tcase Gtk.ResponseType.CANCEL:\n"
+"\t\t\t\tprint (\"good choice\\n\");\n"
+"\t\t\t\tbreak;\n"
+"\t\t\tcase Gtk.ResponseType.DELETE_EVENT:\n"
+"\t\t\t\tprint (\"dialog closed or cancelled\\n\");\n"
+"\t\t\t\tbreak;\n"
+"\t\t}\n"
+"\t\t\tdialog.destroy();\n"
+"\t}\n"
+"\n"
+"\tvoid message (SimpleAction simple, Variant? parameter) {\n"
+"\t\tvar messagedialog = new Gtk.MessageDialog (this,\n"
+" Gtk.DialogFlags.MODAL,\n"
+" Gtk.MessageType.WARNING,\n"
+" Gtk.ButtonsType.OK_CANCEL,\n"
+" \"This action will cause the universe to stop existing.\");\n"
+"\n"
+"\t\tmessagedialog.response.connect (dialog_response);\n"
+"\t\tmessagedialog.show ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"//This is the Application\n"
+"public class Application : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew Window (this);\n"
+"\t}\n"
+"\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\tvar menu = new Menu ();\n"
+"\t\tmenu.append (\"Message\", \"win.message\");\n"
+"\t\tmenu.append (\"Quit\", \"app.quit\");\n"
+"\t\tthis.app_menu = menu;\n"
+"\n"
+"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
+"\t\t//quit_action.activate.connect (this.quit);\n"
+"\t\tthis.add_action (quit_action);\n"
+"\t}\n"
+"\n"
+"\tpublic Application () {\n"
+"\t\tObject (application_id: \"org.example.application\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"//main function creates Application and runs it\n"
+"int main (string[] args) {\n"
+"\treturn new Application ().run (args);\n"
+"}\n"
+msgstr ""
+"\n"
+"//A window in the application\n"
+"public class Window : Gtk.ApplicationWindow {\n"
+"\tpublic Window (Application app) {\n"
+"\t\tObject (application: app, title: \"Gtk.MessageDialog Example\");\n"
+"\n"
+"\t\tvar label = new Gtk.Label (\"This application goes boom!\");\n"
+"\t\tthis.add (label);\n"
+"\n"
+"\t\tvar message_action = new SimpleAction (\"message\", null);\n"
+"\t\tmessage_action.activate.connect (message);\n"
+"\t\tthis.add_action (message_action);\n"
+"\n"
+"\t\tthis.set_default_size (400, 200);\n"
+"\t\tthis.show_all ();\n"
+"\t}\n"
+"\n"
+"\tvoid dialog_response (Gtk.Dialog dialog, int response_id) {\n"
+"\t\tswitch (response_id) {\n"
+"\t\t\tcase Gtk.ResponseType.OK:\n"
+"\t\t\t\tprint (\"*boom*\\n\");\n"
+"\t\t\t\tbreak;\n"
+"\t\t\tcase Gtk.ResponseType.CANCEL:\n"
+"\t\t\t\tprint (\"good choice\\n\");\n"
+"\t\t\t\tbreak;\n"
+"\t\t\tcase Gtk.ResponseType.DELETE_EVENT:\n"
+"\t\t\t\tprint (\"dialog closed or cancelled\\n\");\n"
+"\t\t\t\tbreak;\n"
+"\t\t}\n"
+"\t\t\tdialog.destroy();\n"
+"\t}\n"
+"\n"
+"\tvoid message (SimpleAction simple, Variant? parameter) {\n"
+"\t\tvar messagedialog = new Gtk.MessageDialog (this,\n"
+" Gtk.DialogFlags.MODAL,\n"
+" Gtk.MessageType.WARNING,\n"
+" Gtk.ButtonsType.OK_CANCEL,\n"
+" \"This action will cause the universe to stop existing.\");\n"
+"\n"
+"\t\tmessagedialog.response.connect (dialog_response);\n"
+"\t\tmessagedialog.show ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"//This is the Application\n"
+"public class Application : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew Window (this);\n"
+"\t}\n"
+"\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\tvar menu = new Menu ();\n"
+"\t\tmenu.append (\"Message\", \"win.message\");\n"
+"\t\tmenu.append (\"Quit\", \"app.quit\");\n"
+"\t\tthis.app_menu = menu;\n"
+"\n"
+"\t\tvar quit_action = new SimpleAction (\"quit\", null);\n"
+"\t\t//quit_action.activate.connect (this.quit);\n"
+"\t\tthis.add_action (quit_action);\n"
+"\t}\n"
+"\n"
+"\tpublic Application () {\n"
+"\t\tObject (application_id: \"org.example.application\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"//main function creates Application and runs it\n"
+"int main (string[] args) {\n"
+"\treturn new Application ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/messagedialog.vala.page:31
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ResponseType.html\">Gtk."
+"ResponseType</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ResponseType.html\">Gtk."
+"ResponseType</link>"
+
+#. (itstool) path: item/p
+#: C/messagedialog.vala.page:32
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.MessageDialog.html\">Gtk."
+"MessageDialog</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.MessageDialog.html\">Gtk."
+"MessageDialog</link>"
+
+#. (itstool) path: item/p
+#: C/messagedialog.vala.page:33
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.DialogFlags.html\">Gtk."
+"DialogFlags</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.DialogFlags.html\">Gtk."
+"DialogFlags</link>"
+
+#. (itstool) path: item/p
+#: C/messagedialog.vala.page:34
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.MessageType.html\">Gtk."
+"MessageType</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.MessageType.html\">Gtk."
+"MessageType</link>"
+
+#. (itstool) path: item/p
+#: C/messagedialog.vala.page:35
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ButtonsType.html\">Gtk."
+"ButtonsType</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ButtonsType.html\">Gtk."
+"ButtonsType</link>"
+
+#. (itstool) path: info/title
+#: C/model-view-controller.py.page:9
+msgctxt "text"
+msgid "The Model/View/Controller design (Python)"
+msgstr "El diseño modelo/vista/controlador (Python)"
+
+#. (itstool) path: info/desc
+#. (itstool) path: page/title
+#: C/model-view-controller.py.page:14 C/model-view-controller.py.page:27
+msgid "The Model/View/Controller design"
+msgstr "El diseño modelo/vista/controlador"
+
+#. (itstool) path: section/title
+#: C/model-view-controller.py.page:32 C/properties.py.page:32
+#: C/signals-callbacks.py.page:32
+msgid "Overview"
+msgstr "Visión general"
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:34
+msgid ""
+"Both the <link xref=\"treeview_simple_liststore.py\">TreeView</link> and the "
+"<link xref=\"combobox.py\">ComboBox</link> widgets are built on the "
+"<em>Model/View/Controller</em> design. The <em>Model</em> (an implementation "
+"of <code>Gtk.TreeModel</code>, usually <code>Gtk.TreeStore</code> or "
+"<code>Gtk.ListStore</code>) stores the data; the <em>View</em> (e.g. "
+"<code>Gtk.TreeView</code>, <code>Gtk.ComboBox</code>, or <code>Gtk."
+"ComboBoxText</code>) gets change notifications and displays the content of "
+"the model. The <em>Controller</em>, finally, changes the state of the model "
+"(via some methods in the model's implementation - such as <code>append()</"
+"code> or <code>remove()</code>) and notifies the view of these changes (via "
+"signals like <code>\"changed\"</code>)."
+msgstr ""
+"Tanto los widgets <link xref=\"treeview_simple_liststore.py\">TreeView</"
+"link> como los <link xref=\"combobox.py\">ComboBox</link> se construyen "
+"sobre el diseño <em>modelo/vista/controlador</em>. El <em>modelo</em> (una "
+"implementación de <code>Gtk.TreeModel</code>, generalmente <code>Gtk."
+"TreeStore</code> o <code>Gtk.ListStore</code>) almacena los datos; la "
+"<em>vista</em> (por ejemplo, <code>Gtk.TreeView</code>, <code>Gtk.ComboBox</"
+"code>, o <code>Gtk.ComboBoxText</code>) recibe las notificaciones de cambio "
+"y muestra el contenido del modelo. El <em>controlador</em>, finalmente, "
+"cambia el estado del modelo (a través de algunos métodos en la "
+"implementación del modelo, como <code>append()</code> o <code>remove()</"
+"code>) y le notifica a la vista de estos cambios (a través de señales como "
+"<code>«changed»</code>)."
+
+#. (itstool) path: section/title
+#: C/model-view-controller.py.page:39
+msgid "The Model"
+msgstr "El modelo"
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:41
+msgid ""
+"The main difference between the two main implementations of <code>Gtk."
+"TreeModel</code> is that <code>Gtk.ListStore</code> contains simple rows of "
+"data without children, whereas <code>Gtk.TreeStore</code> also contains rows "
+"of data, but each row may have child rows (which in turn can have child "
+"rows, and so on)."
+msgstr ""
+"La principal diferencia entre las dos implementaciones primarias de "
+"<code>Gtk.TreeModel</code> es que <code>Gtk.ListStore</code> contiene filas "
+"simples de datos sin hijos, mientras que <code>Gtk.TreeStore</code> también "
+"contiene filas de datos, pero cada fila puede tener filas hijas (que a su "
+"vez pueden tener filas hijas, y así sucesivamente)."
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:43
+msgid ""
+"The data in the Model can be retrieved or modified using the tree iter and "
+"column index, or <code>Gtk.TreeIter</code>, or <code>Gtk.TreePath</code>."
+msgstr ""
+"Los datos en el modelo pueden obtenerse o modificarse usando el «iter» del "
+"árbol y el índice de columna, <code>Gtk.TreeIter</code>, o <code>Gtk."
+"TreePath</code>."
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:45
+msgid ""
+"As with Python's built-in list object you can use <code>len()</code> to get "
+"the number of rows and use slices to retrieve or set values. Otherwise, the "
+"method <code>append()</code> returns a <code>Gtk.TreeIter</code> instance, "
+"which points to the location of the newly inserted row. You can also "
+"retrieve a <code>Gtk.TreeIter</code> by calling <code>get_iter()</code>."
+msgstr ""
+"Con el objeto de lista empotrado de Python puede usar <code>len()</code> "
+"para obtener el número de filas y usar fragmentos para obtener o establecer "
+"valores. De lo contrario, el método <code>append()</code> devuelve una "
+"instancia de <code>Gtk.TreeIter</code>, que apunta al lugar de la fila "
+"insertada recientemente. También puede obtener un <code>Gtk.TreeIter</code> "
+"llamando a <code>get_iter()</code>."
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:47
+msgid ""
+"As <code>Gtk.ListStore</code> contains only one level, i.e. nodes do not "
+"have any child nodes, a path is essentially the index of the row you want to "
+"access. In the case of <code>Gtk.TreeStore</code>, a path is a list of "
+"indexes or a string. The string form is a list of numbers separated by a "
+"colon. Each number refers to the offset at that level. Thus, the path <code>"
+"\"0\"</code> refers to the root node and the path <code>\"2:4\"</code> "
+"refers to the fifth child of the third node."
+msgstr ""
+"Como <code>Gtk.ListStore</code> sólo contiene un nivel, es decir que los "
+"nodos no tienen nodos hijos, una ruta es esencialmente el índice de la fila "
+"a la que quiere acceder. En el caso de <code>Gtk.TreeStore</code>, una ruta "
+"es una lista de índices o una cadena. La forma de la cadena es una lista de "
+"números separados por «:». Cada número se refiere al desplazamiento en ese "
+"nivel. Entonces, la ruta <code>«0»</code> se refiere al nodo raíz y la ruta "
+"<code>«2:4»</code> al quinto hijo del tercer nodo."
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:49
+msgid "Useful methods for a <code>Gtk.TreeModel</code>:"
+msgstr "Métodos útiles para un <code>Gtk.TreeModel</code>:"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:51
+msgid ""
+"<code>get_iter(path)</code> returns a <code>Gtk.TreeIter</code> instance "
+"pointing to <code>path</code>. This is expected to be a colon-separated list "
+"of numbers, or a tuple. For example, the string <code>\"10:4:0\"</code> is "
+"equivalent to the tuple <code>(10, 4, 0)</code>, as both would create a path "
+"of depth 3 pointing to the 11th child of the root node, the 5th child of "
+"that 11th child, and the 1st child of that 5th child."
+msgstr ""
+"<code>get_iter(ruta)</code> devuelve una instancia de <code>Gtk.TreeIter</"
+"code> que apunta a <code>ruta</code>. Se espera que sea una lista de números "
+"separados por «:», o una tupla. Por ejemplo, la cadena <code>«10:4:0»</code> "
+"equivale a la tupla <code>(10, 4, 0)</code>, ya que las dos crearían una "
+"ruta de profundidad 3 apuntando al 11º hijo del nodo raíz, el 5º hijo de ese "
+"11º hijo, y el 1er hijo de ese 5º hijo."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:52
+msgid ""
+"<code>iter_next(treeiter)</code> returns a <code>Gtk.TreeIter</code> "
+"instance pointing the node following treeiter at the current level or "
+"<code>None</code> if there is no next iter."
+msgstr ""
+"<code>iter_next(treeiter)</code> devuelve una instancia de <code>Gtk."
+"TreeIter</code> apuntando siguiendo el «treeiter» en el nivel actual o "
+"<code>None</code> si no hay un «iter» siguiente."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:53
+msgid ""
+"<code>iter_has_child(treeiter)</code> returns <code>True</code> if "
+"<code>treeiter</code> has children, <code>False</code> otherwise."
+msgstr ""
+"<code>iter_has_child(treeiter)</code> devuelve <code>True</code> si "
+"<code>treeiter</code> tiene hijos, <code>False</code> de lo contrario."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:54
+msgid ""
+"<code>iter_children(treeiter)</code> returns a <code>Gtk.TreeIter</code> "
+"instance pointing to the first child of <code>treeiter</code> or <code>None</"
+"code> if <code>treeiter</code> has no children."
+msgstr ""
+"<code>iter_children(treeiter)</code> devuelve una instancia de <code>Gtk."
+"TreeIter</code> apuntando al primer hijo de <code>treeiter</code> o "
+"<code>None</code> si <code>treeiter</code> no tiene hijos."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:55
+msgid ""
+"<code>get_iter_first()</code> returns a <code>Gtk.TreeIter</code> instance "
+"pointing to the first iterator in the tree (the one at the path <code>\"0\"</"
+"code>) or <code>None</code> if the tree is empty."
+msgstr ""
+"<code>get_iter_first()</code> devuelve una instancia de <code>Gtk.TreeIter</"
+"code> apuntando al primer iterador en el árbol (el que está en la ruta "
+"<code>«0»</code>) o <code>None</code> si el árbol está vacío."
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:58
+msgid "Useful methods for a <code>Gtk.ListStore</code>:"
+msgstr "Métodos útiles para un <code>Gtk.ListStore</code>:"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:60
+msgid ""
+"<code>append(row)</code> appends a new row to this list store, where "
+"<code>row</code> can be a list of values for each column; <code>row</code> "
+"can also be omitted or <code>None</code>, and in that case an empty row will "
+"be appended. The method returns a <code>Gtk.TreeIter</code> pointing to the "
+"appended row."
+msgstr ""
+"<code>append(fila)</code> añade una fila nueva a este «ListStore», donde "
+"<code>fila</code> puede ser una lista de valores para cada columna; "
+"<code>row</code> también puede omitirse o ser <code>None</code>, y en ese "
+"caso se añade una fila vacía. El método devuelve un <code>Gtk.TreeIter</"
+"code> apuntando a la fila añadida."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:61 C/model-view-controller.py.page:67
+msgid ""
+"<code>remove(iter)</code> removes <code>iter</code> from the <code>Gtk."
+"ListStore</code>, and returns <code>True</code> if the iter is valid, and "
+"<code>False</code> if the iter is not. After being removed, <code>iter</"
+"code> is set to be the next valid row."
+msgstr ""
+"<code>remove(iter)</code> elimina <code>iter</code> del <code>Gtk.ListStore</"
+"code>, y devuelve <code>True</code> si el iter es válido, y <code>False</"
+"code> si no lo es. Después de eliminarse, <code>iter</code> se establece a "
+"la siguiente fila válida."
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:64
+msgid "Useful methods for a <code>Gtk.TreeStore</code>:"
+msgstr "Métodos útiles para un <code>Gtk.TreeStore</code>:"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:66
+msgid ""
+"<code>append(parent, row)</code> appends a new row to this tree store; "
+"<code>parent</code> must be a valid Gtk.TreeIter. If parent is not "
+"<code>None</code>, then it will append the new row after the last child of "
+"parent, otherwise it will append a row to the top level; <code>row</code> "
+"can be a list of values for each column, or it can be omitted or <code>None</"
+"code>; in this latter case an empty row will be appended. The method returns "
+"a <code>Gtk.TreeIter</code> pointing to the appended row."
+msgstr ""
+"<code>append(padre, fila)</code> añade una fila nueva a este «TreeStore»; "
+"<code>padre</code> debe ser un «Gtk.TreeIter» válido. Si «padre» no es "
+"<code>None</code>, entonces añadirá la fila nueva después del último hijo de "
+"«padre», de lo contrario añadirá una fila al nivel superior; <code>fila</"
+"code> puede ser una lista de valores para cada columna; o puede omitirse o "
+"ser <code>None</code>; en este último caso se añadirá una fila vacía. El "
+"método devuelve un <code>Gtk.TreeIter</code> apuntando a la fila añadida."
+
+#. (itstool) path: section/title
+#: C/model-view-controller.py.page:73
+msgid "The View: the TreeView case"
+msgstr "La vista: el caso de «TreeView»"
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:75
+msgid ""
+"A Treeview shows the structure of children and parent items as a tree. See "
+"for instance <link xref=\"treeview_treestore.py\">this example</link>."
+msgstr ""
+"Una vista de árbol muestra la estructura de elementos padres e hijos como un "
+"árbol. Consulte <link xref=\"treeview_treestore.py\">este ejemplo</link>."
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:77
+msgid ""
+"The <code>Gtk.TreeViewColumn</code> is used to organize the vertical columns."
+msgstr ""
+"La <code>Gtk.TreeViewColumn</code> se usa para organizar las columnas "
+"verticales."
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:79
+msgid "Useful methods for a <code>Gtk.TreeView</code>:"
+msgstr "Métodos útiles para un <code>Gtk.TreeView</code>:"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:81
+msgid ""
+"<code>set_model(model)</code> sets the model for this tree view. If this "
+"tree view already has a model set, it will remove it before setting the new "
+"model. If model is <code>None</code>, then it will unset the old model."
+msgstr ""
+"<code>set_model(modelo)</code> establece el modelo para esta vista de árbol. "
+"Si ya tiene un modelo, lo eliminará antes de establecer el nuevo. Si el "
+"modelo es <code>None</code>, entonces quitará el modelo viejo. "
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:82
+msgid ""
+"<code>get_model()</code> returns the model this tree view is based on, "
+"<code>None</code> if the model is unset."
+msgstr ""
+"<code>get_model()</code> devuelve el modelo en el que está basada esta vista "
+"de árbol, <code>None</code> si no tiene modelo."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:83
+msgid ""
+"<code>append_column(column)</code> appends <code>column</code> to the list "
+"of columns."
+msgstr ""
+"<code>append_column(columna)</code> añade la <code>columna</code> a la lista "
+"de columnas."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:84
+msgid ""
+"<code>get_selection()</code> gets the <code>Gtk.TreeSelection</code> "
+"associated with this tree view."
+msgstr ""
+"<code>get_selection()</code> obtiene la <code>Gtk.TreeSelection</code> "
+"asociada a esta vista de árbol."
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:87
+msgid "Useful methods for a <code>Gtk.TreeViewColumn</code>:"
+msgstr "Métodos útiles para un <code>Gtk.TreeViewColumn</code>:"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:89
+msgid ""
+"<code>add_attribute(renderer, attribute, value)</code> adds an attribute "
+"mapping to this column. <code>attribute</code> is the parameter on "
+"<code>renderer</code> to be set from the <code>value</code>"
+msgstr ""
+"<code>add_attribute(renderizador, atributo, valor)</code> añade un mapeo de "
+"atributo a esta columna. <code>atributo</code> es el parámetro en "
+"<code>renderizador</code> al que se le asigna el <code>valor</code>."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:90
+msgid ""
+"<code>pack_start(renderer, expand)</code> packs <code>renderer</code> into "
+"the beginning of this column. If <code>expand</code> is <code>False</code>, "
+"then <code>renderer</code> is allocated no more space than it needs. Any "
+"unused space is divided evenly between cells for which expand is <code>True</"
+"code>."
+msgstr ""
+"<code>pack_start(renderizador, expandir)</code> empaqueta el "
+"<code>renderizador</code> en el principio de esta columna. Si "
+"<code>expandir</code> es <code>False</code>, entonces no se le asigna a "
+"<code>renderizador</code> más espacio del que necesita. Cualquier espacio "
+"sin utilizar se divide equitativamente entre las celdas en las que "
+"«expandir» es <code>True</code>."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:91
+msgid ""
+"<code>pack_end(renderer, expand)</code> adds <code>renderer</code> to end of "
+"this column. If <code>expand</code> is <code>False</code>, then "
+"<code>renderer</code> is allocated no more space than it needs. Any unused "
+"space is divided evenly between cells for which <code>expand</code> is "
+"<code>True</code>."
+msgstr ""
+"<code>pack_end(renderizador, expandir)</code> añade el <code>renderizador</"
+"code> al final de esta columna. Si <code>expandir</code> es <code>False</"
+"code>, entonces no se le asigna a <code>renderizador</code> más espacio del "
+"que necesita. Cualquier espacio sin utilizar se divide equitativamente entre "
+"celdas en las que <code>expandir</code> es <code>True</code>."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:92
+msgid ""
+"<code>set_sort_column_id(sort_column_id)</code> sets the column of the model "
+"by which this column (of the view) should be sorted. This also makes the "
+"column header clickable."
+msgstr ""
+"<code>set_sort_column_id(id_columna_ordenada)</code> establece la columna "
+"del modelo por la que debe ordenarse la vista. Esto también hace que se "
+"pueda pulsar la cabecera de la columna."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:93
+msgid ""
+"<code>set_sort_indicator(setting)</code> sets whether a little arrow is "
+"displayed in the column header; <code>setting</code> can either be "
+"<code>True</code> (indicator is shown) or <code>False</code>."
+msgstr ""
+"<code>set_sort_indicator(opción)</code> establece si se muestra una pequeña "
+"flecha en la cabecera de la columna; <code>opción</code> puede ser "
+"<code>True</code> (se muestra el indicador) o <code>False</code>."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:94
+msgid ""
+"<code>set_sort_order(order)</code> changes the order by which the column is "
+"sorted; <code>order</code> can either be <code>Gtk.SortType.ASCENDING</code> "
+"or <code>Gtk.SortType.DESCENDING</code>."
+msgstr ""
+"<code>set_sort_order(orden)</code> cambia el orden por el que se ordena la "
+"columna; <code>orden</code> puede ser <code>Gtk.SortType.ASCENDING</code> o "
+"<code>Gtk.SortType.DESCENDING</code>."
+
+#. (itstool) path: section/title
+#: C/model-view-controller.py.page:100
+msgid "The View: the ComboBox case"
+msgstr "La vista: el caso de la «ComboBox»"
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:102
+msgid ""
+"A <code>Gtk.ComboBox</code> allows for the selection of an item from a "
+"dropdown menu, see for instance <link xref=\"combobox.py\">this example</"
+"link>. For a list of textual choices, one can also use the simpler <code>Gtk."
+"ComboBoxText</code>. Both <code>Gtk.ComboBox</code> and <code>Gtk."
+"ComboBoxText</code> can contain an entry."
+msgstr ""
+"Una <code>Gtk.ComboBox</code> permite la selección de un elemento desde un "
+"menú desplegable, consulte <link xref=\"combobox.py\">este ejemplo</link>. "
+"Para una lista de opciones textuales, también se puede usar <code>Gtk."
+"ComboBoxText</code>, que es más simple. Tanto <code>Gtk.ComboBox</code> como "
+"<code>Gtk.ComboBoxText</code> pueden contener una entrada."
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:104
+msgid "Useful methods for a <code>Gtk.ComboBox</code>:"
+msgstr "Métodos útiles para un <code>Gtk.ComboBox</code>:"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:106
+msgid ""
+"The static method <code>new_with_entry()</code> creates a new empty "
+"<code>Gtk.ComboBox</code> with an entry; the static method "
+"<code>new_with_model(model)</code> creates a new one with the model "
+"initialized to <code>model</code>; and the static method "
+"<code>new_with_model_and_entry(model)</code> is a combination of the two."
+msgstr ""
+"El método estático <code>new_with_entry()</code> crea una <code>Gtk."
+"ComboBox</code> nueva vacía con una entrada; el método estático "
+"<code>new_with_model(modelo)</code> crea una con el modelo inicializado a "
+"<code>modelo</code> nueva; y el método estático "
+"<code>new_with_model_and_entry(modelo)</code> es una combinación de los dos."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:107
+msgid ""
+"<code>get_active_iter()</code> returns a <code>Gtk.TreeIter</code> pointing "
+"to the current active item. If no active item exists, <code>None</code> is "
+"returned."
+msgstr ""
+"<code>get_active_iter()</code> devuelve un <code>Gtk.TreeIter</code> que "
+"apunta al elemento activo actual. Si no existe, devuelve <code>None</code>."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:108
+msgid ""
+"<code>set_model(model)</code> sets the model used by this combo box to be "
+"<code>model</code>, and it will unset a previously set model (if there is "
+"any). If <code>model</code> is <code>None</code>, then it will unset the "
+"model. Note that this function does not clear the cell renderers."
+msgstr ""
+"<code>set_model(modelo)</code> establece el modelo que esta caja combinada "
+"usa a <code>modelo</code>, y quita un modelo anterior (si existiera). Si "
+"<code>modelo</code> es <code>None</code>, entonces lo quitará. Tenga en "
+"cuenta que esta función no limpia los renderizadores de celda."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:109
+msgid ""
+"<code>set_entry_text_column(text_column)</code> sets the model column which "
+"this combo box should use to get strings from to be <code>text_column</"
+"code>. The column <code>text_column</code> in the model of this combo box "
+"must be of type <code>str</code> (this is only relevant if this combo box "
+"has been created with the “has-entry” property set to True)."
+msgstr ""
+"<code>set_entry_text_column(columna_texto)</code> establece la columna del "
+"modelo de la que esta caja combinada obtendrá las cadenas a "
+"<code>columna_texto</code>. La columna <code>columna_texto</code> en el "
+"modelo de esta caja combinada debe ser del tipo <code>str</code> (esto sólo "
+"es relevante si esta caja combinada se creó con la propiedad «has-entry» "
+"establecida a «True»)."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:110
+msgid ""
+"<code>set_wrap_width(width)</code> sets the wrap width of this combo box to "
+"be <code>width</code>. The wrap width is basically the preferred number of "
+"columns when you want the popup to be layed out in a grid."
+msgstr ""
+"<code>set_wrap_width(anchura)</code> establece la anchura del ajuste de "
+"línea de esta caja combinada a <code>anchura</code>. La anchura de ajuste de "
+"línea es básicamente el número preferido de columnas en el que quiere que el "
+"diálogo emergente se distribuya en una rejilla."
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:113
+msgid "Useful methods for a <code>Gtk.ComboBoxText</code>:"
+msgstr "Métodos útiles para un <code>Gtk.ComboBoxText</code>:"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:115
+msgid ""
+"The static method <code>new_with_entry()</code> creates a new empty "
+"<code>Gtk.ComboBoxText</code> with an entry."
+msgstr ""
+"El método estático <code>new_with_entry()</code> crea una <code>Gtk."
+"ComboBoxText</code> nueva vacía con una entrada."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:116
+msgid ""
+"<code>append_text(text)</code> appends <code>text</code> to the list of "
+"strings stored in this combo box."
+msgstr ""
+"<code>append_text(texto)</code> añade <code>texto</code> a la lista de "
+"cadenas almacenadas en esta caja combinada."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:117
+msgid ""
+"<code>get_active_text()</code> returns the currently active string in this "
+"combo box, or <code>None</code> if none is selected. If this combo box "
+"contains an entry, this function will return its contents (which will not "
+"necessarily be an item from the list)."
+msgstr ""
+"<code>get_active_text()</code> devuelve la cadena actualmente activa en esta "
+"caja combinada, o <code>None</code> si no hay ninguna seleccionada. Si esta "
+"caja combinada contiene una entrada, esta función devolverá su contenido "
+"(que no será necesariamente un elemento de la lista)."
+
+#. (itstool) path: section/title
+#: C/model-view-controller.py.page:123
+msgid "The View: the Cellrenderers"
+msgstr "La vista: los «CellRenderer»"
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:125
+msgid ""
+"The View makes use of <code>Gtk.CellRenderer</code>s of various types to "
+"draw the data."
+msgstr ""
+"La vista hace uso de <code>Gtk.CellRenderer</code> de varios tipos para "
+"dibujar los datos."
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:127
+msgid "Implementations of <code>Gtk.CellRenderer</code> and useful methods:"
+msgstr "Implementaciones de <code>Gtk.CellRenderer</code> y métodos útiles:"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:129
+msgid "<code>Gtk.CellRendererText</code> - renders text in a cell"
+msgstr "<code>Gtk.CellRendererText</code>: muestra texto en una celda"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:130
+msgid ""
+"<code>Gtk.CellRendererToggle</code> - renders a toggle or radio button in a "
+"cell. Useful methods:"
+msgstr ""
+"<code>Gtk.CellRendererToggle</code>: muestra un interruptor o botón de radio "
+"en una celda. Métodos útiles:"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:132
+msgid ""
+"<code>set_active(setting)</code> - activates or deactivates a cell renderer"
+msgstr ""
+"<code>set_active(opción)</code>: activa o desactiva un renderizador de celda"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:133
+msgid "<code>get_active()</code> - returns whether the cell renderer is active"
+msgstr ""
+"<code>get_active()</code>: devuelve si el renderizador de celda está activado"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:134
+msgid ""
+"<code>set_radio(radio)</code> - if radio is <code>True</code>, the cell "
+"renderer renders a radio toggle (i.e. a toggle in a group of mutually-"
+"exclusive toggles); if <code>False</code>, it renders a check toggle (a "
+"standalone boolean option)"
+msgstr ""
+"<code>set_radio(radio)</code>: si «radio» es <code>True</code>, el "
+"renderizador de celda muestra un interruptor de radio (es decir, un "
+"interruptor en un grupo mutuamente exclusivo); si es <code>False</code>, "
+"muestra una casilla de verificación (una opción booleana independiente)"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:135
+msgid ""
+"<code>get_radio()</code> - returns whether we are rendering radio toggles "
+"rather than checkboxes."
+msgstr ""
+"<code>get_radio()</code>: devuelve si se están mostrando botones de radio en "
+"lugar de casillas de verificación."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:138
+msgid "<code>Gtk.CellRendererPixbuf</code> - renders an image in a cell"
+msgstr "<code>Gtk.CellRendererPixbuf</code>: muestra una imagen en una celda"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:139
+msgid ""
+"<code>Gtk.CellRendererCombo</code> - renders text in a cell; but while "
+"<code>Gtk.CellRendererText</code> offers a simple entry to edit the text, "
+"<code>Gtk.CellRendererCombo</code> offers a <code>Gtk.ComboBox</code> widget "
+"to edit the text. It can be used with and without an associated Gtk.Entry "
+"widget, depending on the value of the “has-entry” property."
+msgstr ""
+"<code>Gtk.CellRendererCombo</code>: muestra texto en una celda; pero "
+"mientras que <code>Gtk.CellRendererText</code> ofrece una entrada simple "
+"para editar el texto, <code>Gtk.CellRendererCombo</code> ofrece un widget "
+"<code>Gtk.ComboBox</code> para editarlo. Puede usarse con o sin un widget "
+"«Gtk.Entry» asociado, dependiendo del valor de la propiedad «has-entry»."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:140
+msgid ""
+"<code>Gtk.CellRendererProgress</code> - renders a numeric value as a "
+"progress bar in a cell; it can display a text on top of the progress bar"
+msgstr ""
+"<code>Gtk.CellRendererProgress</code>: muestra un valor numérico en forma de "
+"barra de progreso en una celda; puede mostrar un texto sobre ella"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:141
+msgid ""
+"<code>Gtk.CellRendererSpinner</code> - renders a spinning animation in a cell"
+msgstr ""
+"<code>Gtk.CellRendererSpinner</code>: muestra una animación giratoria en una "
+"celda"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:142
+msgid "<code>Gtk.CellRendererSpin</code> - renders a spin button in a cell"
+msgstr ""
+"<code>Gtk.CellRendererSpin</code>: muestra un botón incremental en una celda"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:143
+msgid ""
+"<code>Gtk.CellRendererAccel</code> - renders a keyboard accelerator in a cell"
+msgstr ""
+"<code>Gtk.CellRendererAccel</code>: muestra un acelerador de teclado en una "
+"celda"
+
+#. (itstool) path: section/title
+#: C/model-view-controller.py.page:149
+msgid "The Controller: the Selection"
+msgstr "El controlador: la selección"
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:151
+msgid ""
+"Most applications will need to not only deal with displaying data, but also "
+"receiving input events from users. To do this, simply get a reference to a "
+"selection object and connect to the <code>\"changed\"</code> signal."
+msgstr ""
+"La mayoría de las aplicaciones no solo necesitarán mostrar datos, sino "
+"también recibir eventos de entrada de los usuarios. Para hacer esto, "
+"simplemente obtenga una referencia a un objeto de selección y conéctela a la "
+"señal <code>«changed»</code>."
+
+#. (itstool) path: section/code
+#: C/model-view-controller.py.page:153
+#, no-wrap
+msgid ""
+"\n"
+"select = tree.get_selection()\n"
+"select.connect(\"changed\", on_tree_selection_changed)\n"
+msgstr ""
+"\n"
+"select = tree.get_selection()\n"
+"select.connect(\"changed\", on_tree_selection_changed)\n"
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:158
+msgid "Then to retrieve data for the row selected:"
+msgstr "Después, para obtener datos de la fila seleccionada:"
+
+#. (itstool) path: section/code
+#: C/model-view-controller.py.page:160
+#, no-wrap
+msgid ""
+"\n"
+"def on_tree_selection_changed(selection):\n"
+" model, treeiter = selection.get_selected()\n"
+" if treeiter != None:\n"
+" print \"You selected\", model[treeiter][0]\n"
+msgstr ""
+"\n"
+"def on_tree_selection_changed(selection):\n"
+" model, treeiter = selection.get_selected()\n"
+" if treeiter != None:\n"
+" print \"You selected\", model[treeiter][0]\n"
+
+#. (itstool) path: section/p
+#: C/model-view-controller.py.page:167
+msgid "Useful methods for a <code>Gtk.TreeSelection</code>:"
+msgstr "Métodos útiles para un <code>Gtk.TreeSelection</code>:"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:170
+msgid ""
+"<code>set_mode(type)</code> sets the type of selection, where type is one of"
+msgstr ""
+"<code>set_mode(tipo)</code> establece el tipo de la selección, donde «tipo» "
+"puede ser"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:172
+msgid "<code>Gtk.SelectionMode.NONE</code> - no selection is possible"
+msgstr "<code>Gtk.SelectionMode.NONE</code>: la selección no es posible"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:173
+msgid ""
+"<code>Gtk.SelectionMode.SINGLE</code> - zero or one element may be selected"
+msgstr ""
+"<code>Gtk.SelectionMode.SINGLE</code>: se puede seleccionar uno o ningún "
+"elemento"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:174
+msgid ""
+"<code>Gtk.SelectionMode.BROWSE</code> - exactly one element is selected. In "
+"some circumstances, such as initially or during a search operation, it’s "
+"possible for no element to be selected. What is really enforced is that the "
+"user can’t deselect a currently selected element except by selecting another "
+"element."
+msgstr ""
+"<code>Gtk.SelectionMode.BROWSE</code>: se selecciona exactamente un "
+"elemento. En algunas circunstancias, como inicialmente o durante una "
+"operación de búsqueda, es posible que ningún elemento esté seleccionado. Lo "
+"que realmente se prohíbe es que el usuario deseleccione un elemento "
+"actualmente seleccionado excepto si selecciona otro."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:175
+msgid ""
+"<code>Gtk.SelectionMode.MULTIPLE</code> -any number of elements may be "
+"selected. Clicks toggle the state of an item. The Ctrl key may be used to "
+"enlarge the selection, and Shift key to select between the focus and the "
+"child pointed to. Some widgets may also allow Click-drag to select a range "
+"of elements."
+msgstr ""
+"<code>Gtk.SelectionMode.MULTIPLE</code>: se puede seleccionar cualquier "
+"número de elementos. Las pulsaciones cambien el estado de un elemento. Se "
+"puede usar la tecla «Ctrl» para agrandar la selección, y «Mayús» para "
+"seleccionar entre el foco y el hijo al que apunta. Algunos widgets también "
+"pueden permitir arrastrar y soltar para seleccionar un rango de elementos."
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:178
+msgid ""
+"<code>get_selected()</code> returns a tuple <code>(model, treeiter)</code>, "
+"where <code>model</code> is the current model and <code>treeiter</code> a "
+"<code>Gtk.TreeIter</code> pointing to the currently selected row, or None if "
+"no rows are selected. The method does not work if the selection mode is set "
+"to <code>Gtk.SelectionMode.MULTIPLE</code>; in that case, use "
+"<code>get_selected_rows()</code> instead, which Returns a list of <code>Gtk."
+"TreePath</code> instances of all selected rows."
+msgstr ""
+"<code>get_selected()</code> devuelve una tupla <code>(modelo, treeiter)</"
+"code>, donde <code>modelo</code> es el modelo actual y <code>treeiter</code> "
+"un <code>Gtk.TreeIter</code> que apunta a la fila actualmente seleccionada, "
+"o «None» si no la hay. El método no funciona si el modo de selección es "
+"<code>Gtk.SelectionMode.MULTIPLE</code>; en ese caso, use "
+"<code>get_selected_rows()</code> en su lugar, que devuelve una lista de "
+"instancias <code>Gtk.TreePath</code> de todas las filas seleccionadas."
+
+#. (itstool) path: section/title
+#: C/model-view-controller.py.page:184 C/properties.py.page:57
+#: C/signals-callbacks.py.page:46 C/strings.py.page:112
+msgid "References"
+msgstr "Referencias"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:187
+#: C/treeview_advanced_liststore.py.page:45
+#: C/treeview_cellrenderertoggle.py.page:45
+#: C/treeview_simple_liststore.py.page:46 C/treeview_treestore.py.page:45
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeModel.html"
+"\">GtkTreeModel</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeModel.html"
+"\">GtkTreeModel</link>"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:188
+#: C/treeview_advanced_liststore.py.page:44
+#: C/treeview_cellrenderertoggle.py.page:44
+#: C/treeview_simple_liststore.py.page:45 C/treeview_treestore.py.page:44
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeView.html"
+"\">GtkTreeView</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeView.html"
+"\">GtkTreeView</link>"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:189
+#: C/treeview_advanced_liststore.py.page:48
+#: C/treeview_cellrenderertoggle.py.page:49
+#: C/treeview_simple_liststore.py.page:49 C/treeview_treestore.py.page:48
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeViewColumn.html"
+"\">GtkTreeViewColumn</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeViewColumn.html"
+"\">GtkTreeViewColumn</link>"
+
+#. (itstool) path: item/p
+#: C/model-view-controller.py.page:191
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRenderer.html"
+"\">GtkCellRenderer</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRenderer.html"
+"\">GtkCellRenderer</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/paned.c.page:22 C/paned.js.page:22 C/paned.py.page:23
+#: C/paned.vala.page:22
+msgctxt "_"
+msgid "external ref='media/paned.png' md5='8c7e1df065395c9aafcd65036a293d8a'"
+msgstr "external ref='media/paned.png' md5='8c7e1df065395c9aafcd65036a293d8a'"
+
+#. (itstool) path: info/title
+#: C/paned.c.page:8
+msgctxt "text"
+msgid "Paned (C)"
+msgstr "Paned (C)"
+
+#. (itstool) path: info/desc
+#: C/paned.c.page:18 C/paned.js.page:18 C/paned.py.page:19
+#: C/paned.vala.page:18
+msgid "A widget with two adjustable panes"
+msgstr "Un widget con dos paneles ajustables"
+
+#. (itstool) path: page/title
+#: C/paned.c.page:21 C/paned.js.page:21 C/paned.py.page:22
+#: C/paned.vala.page:21
+msgid "Paned"
+msgstr "Paned"
+
+#. (itstool) path: page/p
+#: C/paned.c.page:23 C/paned.js.page:23 C/paned.py.page:24
+#: C/paned.vala.page:23
+msgid "Two images in two adjustable panes, horizontally aligned."
+msgstr "Dos imágenes en dos paneles ajustables, alineados horizontalmente."
+
+#. (itstool) path: section/code
+#: C/paned.c.page:29
+#, no-wrap
+msgid ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *paned;\n"
+" GtkWidget *window;\n"
+" GtkWidget *image1;\n"
+" GtkWidget *image2;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Paned Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 450, 350);\n"
+"\n"
+" paned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);\n"
+" image1 = gtk_image_new_from_file (\"gnome-image.png\");\n"
+" image2 = gtk_image_new_from_file (\"tux.png\");\n"
+"\n"
+" gtk_paned_add1 (GTK_PANED (paned), image1);\n"
+" gtk_paned_add2 (GTK_PANED (paned), image2);\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), paned);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *paned;\n"
+" GtkWidget *window;\n"
+" GtkWidget *image1;\n"
+" GtkWidget *image2;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Paned Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 450, 350);\n"
+"\n"
+" paned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);\n"
+" image1 = gtk_image_new_from_file (\"gnome-image.png\");\n"
+" image2 = gtk_image_new_from_file (\"tux.png\");\n"
+"\n"
+" gtk_paned_add1 (GTK_PANED (paned), image1);\n"
+" gtk_paned_add2 (GTK_PANED (paned), image2);\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), paned);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/paned.c.page:36 C/paned.py.page:42
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkPaned.html"
+"\">GtkPaned</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkPaned.html"
+"\">GtkPaned</link>"
+
+#. (itstool) path: item/p
+#: C/paned.c.page:37 C/paned.js.page:37 C/paned.py.page:43
+#: C/paned.vala.page:37
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Standard-"
+"Enumerations.html#GtkOrientation\">Standard Enumerations</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Standard-"
+"Enumerations.html#GtkOrientation\">Enumeraciones estándar</link>"
+
+#. (itstool) path: info/title
+#: C/paned.js.page:8
+msgctxt "text"
+msgid "Paned (JavaScript)"
+msgstr "Paned (JavaScript)"
+
+#. (itstool) path: section/code
+#: C/paned.js.page:29
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const PanedExample = new Lang.Class ({\n"
+" Name: 'Paned Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application({ application_id: 'org.example.panedexample' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this.window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+" // Create the application window\n"
+" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Paned Window Example\",\n"
+" default_width: 450,\n"
+" default_height: 350,\n"
+" border_width: 10 });\n"
+"\n"
+" // a new widget with two adjustable panes,\n"
+" // one on the left and one on the right\n"
+" this.paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL);\n"
+"\n"
+" // two images\n"
+" this.image1 = new Gtk.Image();\n"
+" this.image1.set_from_file(\"gnome-image.png\");\n"
+" this.image2 = new Gtk.Image();\n"
+" this.image2.set_from_file(\"tux.png\");\n"
+"\n"
+" // add the first image to the left pane\n"
+" this.paned.add1(this.image1);\n"
+" // add the second image to the right pane\n"
+" this.paned.add2(this.image2)\n"
+"\n"
+" // add the panes to the window\n"
+" this.window.add(this.paned)\n"
+" this.window.show_all();\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new PanedExample();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const PanedExample = new Lang.Class ({\n"
+" Name: 'Paned Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application({ application_id: 'org.example.panedexample' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this.window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+" // Create the application window\n"
+" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Paned Window Example\",\n"
+" default_width: 450,\n"
+" default_height: 350,\n"
+" border_width: 10 });\n"
+"\n"
+" // a new widget with two adjustable panes,\n"
+" // one on the left and one on the right\n"
+" this.paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL);\n"
+"\n"
+" // two images\n"
+" this.image1 = new Gtk.Image();\n"
+" this.image1.set_from_file(\"gnome-image.png\");\n"
+" this.image2 = new Gtk.Image();\n"
+" this.image2.set_from_file(\"tux.png\");\n"
+"\n"
+" // add the first image to the left pane\n"
+" this.paned.add1(this.image1);\n"
+" // add the second image to the right pane\n"
+" this.paned.add2(this.image2)\n"
+"\n"
+" // add the panes to the window\n"
+" this.window.add(this.paned)\n"
+" this.window.show_all();\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new PanedExample();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/paned.js.page:36
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Paned.html"
+"\">GtkPaned</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Paned.html"
+"\">GtkPaned</link>"
+
+#. (itstool) path: item/p
+#: C/paned.js.page:38 C/scrolledwindow.js.page:38
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html"
+"\">GtkImage</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html"
+"\">GtkImage</link>"
+
+#. (itstool) path: info/title
+#: C/paned.py.page:8
+msgctxt "text"
+msgid "Paned (Python)"
+msgstr "Paned (Python)"
+
+#. (itstool) path: section/code
+#: C/paned.py.page:30
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Paned Example\", application=app)\n"
+" self.set_default_size(450, 350)\n"
+"\n"
+" # a new widget with two adjustable panes,\n"
+" # one on the left and one on the right\n"
+" paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL)\n"
+"\n"
+" # two images\n"
+" image1 = Gtk.Image()\n"
+" image1.set_from_file(\"gnome-image.png\")\n"
+" image2 = Gtk.Image()\n"
+" image2.set_from_file(\"tux.png\")\n"
+"\n"
+" # add the first image to the left pane\n"
+" paned.add1(image1)\n"
+" # add the second image to the right pane\n"
+" paned.add2(image2)\n"
+"\n"
+" # add the panes to the window\n"
+" self.add(paned)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Paned Example\", application=app)\n"
+" self.set_default_size(450, 350)\n"
+"\n"
+" # a new widget with two adjustable panes,\n"
+" # one on the left and one on the right\n"
+" paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL)\n"
+"\n"
+" # two images\n"
+" image1 = Gtk.Image()\n"
+" image1.set_from_file(\"gnome-image.png\")\n"
+" image2 = Gtk.Image()\n"
+" image2.set_from_file(\"tux.png\")\n"
+"\n"
+" # add the first image to the left pane\n"
+" paned.add1(image1)\n"
+" # add the second image to the right pane\n"
+" paned.add2(image2)\n"
+"\n"
+" # add the panes to the window\n"
+" self.add(paned)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/paned.py.page:34
+msgid "Useful methods for a Paned widget"
+msgstr "Métodos útiles para un widget «Paned»"
+
+#. (itstool) path: section/p
+#: C/paned.py.page:35
+msgid ""
+"To have two vertically aligned panes, use <code>Gtk.Orientation.VERTICAL</"
+"code> instead of <code>Gtk.Orientation.HORIZONTAL</code>. The method "
+"<code>add1(widget1)</code> will add the <code>widget1</code> to the top "
+"pane, and <code>add2(widget2)</code> will add the <code>widget2</code> to "
+"the bottom pane."
+msgstr ""
+"Para tener dos paneles alineados verticalmente, use <code>Gtk.Orientation."
+"VERTICAL</code> en lugar de <code>Gtk.Orientation.HORIZONTAL</code>. El "
+"método <code>add1(widget1)</code> añadirá el <code>widget1</code> al panel "
+"superior, y <code>add2(widget2)</code> añadirá el <code>widget2</code> al "
+"panel inferior."
+
+#. (itstool) path: info/title
+#: C/paned.vala.page:8
+msgctxt "text"
+msgid "Paned (Vala)"
+msgstr "Paned (Vala)"
+
+#. (itstool) path: section/code
+#: C/paned.vala.page:29
+#, no-wrap
+msgid ""
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"Paned Example\";\n"
+"\t\twindow.set_default_size (450,350);\n"
+"\n"
+"\t\t// a new widget with two adjustable panes,\n"
+"\t\t// one on the left and one on the right\n"
+"\t\tvar paned = new Gtk.Paned (Gtk.Orientation.HORIZONTAL);\n"
+"\n"
+"\t\t/* two images */\n"
+"\t\tvar image1 = new Gtk.Image ();\n"
+"\t\timage1.set_from_file (\"gnome-image.png\");\n"
+"\t\tvar image2 = new Gtk.Image ();\n"
+"\t\timage2.set_from_file (\"tux.png\");\n"
+"\n"
+"\t\t/* add the first image to the left pane */\n"
+"\t\tpaned.add1 (image1);\n"
+"\n"
+"\t\t/* add the second image to the right pane */\n"
+"\t\tpaned.add2 (image2);\n"
+"\n"
+"\t\t/* add the panes to the window */\n"
+"\t\twindow.add (paned);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"Paned Example\";\n"
+"\t\twindow.set_default_size (450,350);\n"
+"\n"
+"\t\t// a new widget with two adjustable panes,\n"
+"\t\t// one on the left and one on the right\n"
+"\t\tvar paned = new Gtk.Paned (Gtk.Orientation.HORIZONTAL);\n"
+"\n"
+"\t\t/* two images */\n"
+"\t\tvar image1 = new Gtk.Image ();\n"
+"\t\timage1.set_from_file (\"gnome-image.png\");\n"
+"\t\tvar image2 = new Gtk.Image ();\n"
+"\t\timage2.set_from_file (\"tux.png\");\n"
+"\n"
+"\t\t/* add the first image to the left pane */\n"
+"\t\tpaned.add1 (image1);\n"
+"\n"
+"\t\t/* add the second image to the right pane */\n"
+"\t\tpaned.add2 (image2);\n"
+"\n"
+"\t\t/* add the panes to the window */\n"
+"\t\twindow.add (paned);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/paned.vala.page:36
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Paned.html\">GtkPaned</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Paned.html\">GtkPaned</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/photo-wall.c.page:84
+msgctxt "_"
+msgid ""
+"external ref='media/photo-wall.png' md5='f19590d97e8ec029cda3c44b769c11cd'"
+msgstr ""
+"external ref='media/photo-wall.png' md5='f19590d97e8ec029cda3c44b769c11cd'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/photo-wall.c.page:87
+msgctxt "_"
+msgid ""
+"external ref='media/photo-wall-focused.png' "
+"md5='9f1ceecf3a28c1e468597b093a10cbae'"
+msgstr ""
+"external ref='media/photo-wall-focused.png' "
+"md5='9f1ceecf3a28c1e468597b093a10cbae'"
+
+#. (itstool) path: info/title
+#: C/photo-wall.c.page:7
+msgctxt "text"
+msgid "Photo wall (C)"
+msgstr "Mural de fotos (C)"
+
+#. (itstool) path: info/desc
+#: C/photo-wall.c.page:10
+msgid "A Clutter image viewer"
+msgstr "Un visor de imágenes Clutter"
+
+#. (itstool) path: credit/name
+#: C/photo-wall.c.page:14
+msgid "Chris Kühl"
+msgstr "Chris Kühl"
+
+#. (itstool) path: page/title
+#: C/photo-wall.c.page:28
+msgid "Photo wall"
+msgstr "Mural de fotos"
+
+#. (itstool) path: synopsis/p
+#: C/photo-wall.c.page:31
+msgid ""
+"For this example we will build a simple image viewer using Clutter. You will "
+"learn:"
+msgstr ""
+"Para este ejemplo se construirá un sencillo visor de imágenes usando "
+"Clutter. Aprenderá:"
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:33
+msgid "How to size and position <code>ClutterActor</code>s"
+msgstr "Cómo dimensionar y posicionar varios <code>ClutterActor</code>"
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:34
+msgid "How to place an image in a <code>ClutterActor</code>"
+msgstr "Cómo situar una imagen en un <code>ClutterActor</code>"
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:35
+msgid "How to do simple transitions using Clutter's animation framework"
+msgstr ""
+"Cómo hacer transiciones sencillas usando el entorno de trabajo de "
+"animaciones de Clutter"
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:36
+msgid "How to make <code>ClutterActor</code>s respond to mouse events"
+msgstr ""
+"Cómo hacer que un <code>ClutterActor</code> responda a los eventos del ratón"
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:37
+msgid "How to get file names from a directory"
+msgstr "Cómo obtener nombres de archivos de una carpeta"
+
+#. (itstool) path: section/title
+#: C/photo-wall.c.page:42 C/record-collection.js.page:40
+msgid "Introduction"
+msgstr "Introducción"
+
+#. (itstool) path: section/p
+#: C/photo-wall.c.page:43
+msgid ""
+"Clutter is a library for creating dynamic user interfaces using OpenGL for "
+"hardware acceleration. This example demonstrates a small, but central, part "
+"of the Clutter library to create a simple but attractive image viewing "
+"program."
+msgstr ""
+"Clutter es una biblioteca para crear interfaces de usuarios dinámicas usando "
+"OpenGL para la aceleración gráfica. Este ejemplo demuestra una pequeña, pero "
+"importante parte de la biblioteca Clutter para crear un sencillo pero "
+"atractivo programa para ver imágenes."
+
+#. (itstool) path: section/p
+#: C/photo-wall.c.page:46
+msgid ""
+"To help us reach our goal we will be utilising a few other common pieces of "
+"GLib as well. Most importantly, we'll use one <code>GPtrArray</code>, a "
+"dynamic array of pointers, to hold the file path names. We will also use "
+"<code>GDir</code>, a utility for working with directories, to access our "
+"image directory and gather file paths."
+msgstr ""
+"Para ayudarle a conseguir su objetivo, también se utilizarán algunos "
+"fragmentos comunes de GLib. Más importante es que se usará un "
+"<code>GPtrArray</code>, una matriz dinámica de punteros, para mantener los "
+"nombres de ruta de archivos. También se usará <code>GDir</code>, una "
+"utilidad para trabajar dentro de carpetas, para acceder a la carpeta de "
+"imágenes y obtener las rutas de archivo."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:59
+msgid ""
+"Choose <gui>GTK+ (simple)</gui> from the <gui>C</gui> tab, click "
+"<gui>Continue</gui>, and fill out your details on the next few pages. Use "
+"<file>photo-wall</file> as project name and directory."
+msgstr ""
+"Seleccione <gui>GTK+ (simple)</gui> en la pestaña <gui>C</gui>, pulse "
+"<gui>Continuar</gui>, y rellene los detalles en las siguientes páginas. Use "
+"<file>mural-de-fotos</file> como nombre del proyecto y de la carpeta."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:62
+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 using the interface builder."
+msgstr ""
+"Asegúrese de que <gui>Usar GtkBuilder para la interfaz del usuario</gui> "
+"está desactivado, ya que, en este tutorial, la IU se creará manualmente. "
+"Revise el tutorial del <link xref=\"guitar-tuner.c\">afinador de guitarra</"
+"link> usando el constructor de interfaces."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:67
+msgid ""
+"Enable <gui>Configure external packages</gui>. On the next page, select "
+"<em>clutter-1.0</em> from the list to include the Clutter library in your "
+"project."
+msgstr ""
+"Active <gui>Configurar paquetes externos</gui>. En la página siguiente, "
+"seleccione <em>clutter-1.0</em> de la lista para incluir la biblioteca "
+"Clutter en su proyecto."
+
+#. (itstool) path: section/title
+#: C/photo-wall.c.page:80
+msgid "A look at Photo Wall"
+msgstr "Un vistazo al mural de fotos"
+
+#. (itstool) path: section/p
+#: C/photo-wall.c.page:81
+msgid "Our image viewer presents the user with a wall of images."
+msgstr "El visor de imágenes muestra al usuario un mural de imágenes."
+
+#. (itstool) path: section/p
+#: C/photo-wall.c.page:85
+msgid ""
+"When an image is clicked, it is animated to fill the viewing area. When the "
+"image having focus is clicked it is returned to its original position using "
+"an animation with the same duration of 500 milliseconds."
+msgstr ""
+"Cuando se pulsa una imagen, esta se anima para que rellene el área de "
+"visualización. Cuando se pulsa la imagen que tiene el foco, vuelve a su "
+"tamaño original usando una animación que dura 500 milisegundos."
+
+#. (itstool) path: section/title
+#: C/photo-wall.c.page:91
+msgid "Initial setup"
+msgstr "Configuración inicial"
+
+#. (itstool) path: section/p
+#: C/photo-wall.c.page:92
+msgid ""
+"The following code segment contains many of the defines and variables we "
+"will be using in the following sections. Use this as a reference for later "
+"sections. Copy this code to the beginning of <file>src/main.c</file>:"
+msgstr ""
+"El siguiente fragmento de código contiene muchas definiciones y variables "
+"que se usarán en las siguientes secciones. Úselo como referencia para las "
+"próximas secciones. Copie este código al principio de <file>src/main.c</"
+"file>:"
+
+#. (itstool) path: section/code
+#: C/photo-wall.c.page:95
+#, no-wrap
+msgid ""
+"\n"
+"#include <gdk-pixbuf/gdk-pixbuf.h>\n"
+"#include <clutter/clutter.h>\n"
+"\n"
+"#define STAGE_WIDTH 800\n"
+"#define STAGE_HEIGHT 600\n"
+"\n"
+"#define THUMBNAIL_SIZE 200\n"
+"#define ROW_COUNT (STAGE_HEIGHT / THUMBNAIL_SIZE)\n"
+"#define COL_COUNT (STAGE_WIDTH / THUMBNAIL_SIZE)\n"
+"#define THUMBNAIL_COUNT (ROW_COUNT * COL_COUNT)\n"
+"\n"
+"#define ANIMATION_DURATION_MS 500\n"
+"\n"
+"#define IMAGE_DIR_PATH \"./berlin_images/\"\n"
+"\n"
+"static GPtrArray *img_paths;\n"
+"\n"
+"static ClutterPoint unfocused_pos;\n"
+"\n"
+msgstr ""
+"\n"
+"#include <gdk-pixbuf/gdk-pixbuf.h>\n"
+"#include <clutter/clutter.h>\n"
+"\n"
+"#define STAGE_WIDTH 800\n"
+"#define STAGE_HEIGHT 600\n"
+"\n"
+"#define THUMBNAIL_SIZE 200\n"
+"#define ROW_COUNT (STAGE_HEIGHT / THUMBNAIL_SIZE)\n"
+"#define COL_COUNT (STAGE_WIDTH / THUMBNAIL_SIZE)\n"
+"#define THUMBNAIL_COUNT (ROW_COUNT * COL_COUNT)\n"
+"\n"
+"#define ANIMATION_DURATION_MS 500\n"
+"\n"
+"#define IMAGE_DIR_PATH \"./berlin_images/\"\n"
+"\n"
+"static GPtrArray *img_paths;\n"
+"\n"
+"static ClutterPoint unfocused_pos;\n"
+"\n"
+
+#. (itstool) path: section/title
+#: C/photo-wall.c.page:119
+msgid "Jumping into the code"
+msgstr "Saltar dentro del código"
+
+#. (itstool) path: section/p
+#: C/photo-wall.c.page:120
+msgid ""
+"We will start by taking a look at the <code>main()</code> function as a "
+"whole. Then we'll discuss the other code sections in detail. Change the "
+"<file>src/main.c</file> to contain this <code>main()</code> function. You "
+"can delete the <code>create_window()</code> function as we don't need it in "
+"this example."
+msgstr ""
+"Se empezará echando un vistazo a la función <code>main()</code> completa. "
+"Luego se verá el resto de secciones del código en detalle. Cambie el archivo "
+"<file>src/main.c</file> para que contenga la función <code>main()</code>. "
+"Puede eliminar la función <code>create_window()</code>, ya que no se usa en "
+"este ejemplo."
+
+#. (itstool) path: section/code
+#: C/photo-wall.c.page:123
+#, no-wrap
+msgid ""
+"\n"
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" ClutterColor stage_color = { 16, 16, 16, 255 };\n"
+" ClutterActor *stage = NULL;\n"
+"\n"
+" if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)\n"
+" return 1;\n"
+"\n"
+" stage = clutter_stage_new();\n"
+" clutter_actor_set_size(stage, STAGE_WIDTH, STAGE_HEIGHT);\n"
+" clutter_actor_set_background_color(stage, &stage_color);\n"
+" clutter_stage_set_title(CLUTTER_STAGE (stage), \"Photo Wall\");\n"
+" g_signal_connect(stage, \"destroy\", G_CALLBACK(clutter_main_quit), NULL);\n"
+"\n"
+" load_image_path_names();\n"
+"\n"
+" guint row = 0;\n"
+" guint col = 0;\n"
+" for(row=0; row < ROW_COUNT; ++row)\n"
+" {\n"
+" for(col=0; col < COL_COUNT; ++col)\n"
+" {\n"
+" const char *img_path = g_ptr_array_index(img_paths, (row * COL_COUNT) + col);\n"
+" GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(img_path, STAGE_HEIGHT, STAGE_HEIGHT,
NULL);\n"
+" ClutterContent *image = clutter_image_new ();\n"
+" ClutterActor *actor = clutter_actor_new ();\n"
+"\n"
+" if (pixbuf != NULL)\n"
+" {\n"
+" clutter_image_set_data(CLUTTER_IMAGE(image),\n"
+" gdk_pixbuf_get_pixels(pixbuf),\n"
+" gdk_pixbuf_get_has_alpha(pixbuf)\n"
+" ? COGL_PIXEL_FORMAT_RGBA_8888\n"
+" : COGL_PIXEL_FORMAT_RGB_888,\n"
+" gdk_pixbuf_get_width(pixbuf),\n"
+" gdk_pixbuf_get_height(pixbuf),\n"
+" gdk_pixbuf_get_rowstride(pixbuf),\n"
+" NULL);\n"
+" }\n"
+"\n"
+" clutter_actor_set_content(actor, image);\n"
+" g_object_unref(image);\n"
+" g_object_unref(pixbuf);\n"
+"\n"
+" initialize_actor(actor, row, col);\n"
+" clutter_actor_add_child(stage, actor);\n"
+" }\n"
+" }\n"
+"\n"
+" /* Show the stage. */\n"
+" clutter_actor_show(stage);\n"
+"\n"
+" /* Start the clutter main loop. */\n"
+" clutter_main();\n"
+"\n"
+" g_ptr_array_unref(img_paths);\n"
+"\n"
+" return 0;\n"
+"}"
+msgstr ""
+"\n"
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" ClutterColor stage_color = { 16, 16, 16, 255 };\n"
+" ClutterActor *stage = NULL;\n"
+"\n"
+" if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)\n"
+" return 1;\n"
+"\n"
+" stage = clutter_stage_new();\n"
+" clutter_actor_set_size(stage, STAGE_WIDTH, STAGE_HEIGHT);\n"
+" clutter_actor_set_background_color(stage, &stage_color);\n"
+" clutter_stage_set_title(CLUTTER_STAGE (stage), \"Photo Wall\");\n"
+" g_signal_connect(stage, \"destroy\", G_CALLBACK(clutter_main_quit), NULL);\n"
+"\n"
+" load_image_path_names();\n"
+"\n"
+" guint row = 0;\n"
+" guint col = 0;\n"
+" for(row=0; row < ROW_COUNT; ++row)\n"
+" {\n"
+" for(col=0; col < COL_COUNT; ++col)\n"
+" {\n"
+" const char *img_path = g_ptr_array_index(img_paths, (row * COL_COUNT) + col);\n"
+" GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(img_path, STAGE_HEIGHT, STAGE_HEIGHT,
NULL);\n"
+" ClutterContent *image = clutter_image_new ();\n"
+" ClutterActor *actor = clutter_actor_new ();\n"
+"\n"
+" if (pixbuf != NULL)\n"
+" {\n"
+" clutter_image_set_data(CLUTTER_IMAGE(image),\n"
+" gdk_pixbuf_get_pixels(pixbuf),\n"
+" gdk_pixbuf_get_has_alpha(pixbuf)\n"
+" ? COGL_PIXEL_FORMAT_RGBA_8888\n"
+" : COGL_PIXEL_FORMAT_RGB_888,\n"
+" gdk_pixbuf_get_width(pixbuf),\n"
+" gdk_pixbuf_get_height(pixbuf),\n"
+" gdk_pixbuf_get_rowstride(pixbuf),\n"
+" NULL);\n"
+" }\n"
+"\n"
+" clutter_actor_set_content(actor, image);\n"
+" g_object_unref(image);\n"
+" g_object_unref(pixbuf);\n"
+"\n"
+" initialize_actor(actor, row, col);\n"
+" clutter_actor_add_child(stage, actor);\n"
+" }\n"
+" }\n"
+"\n"
+" /* Show the stage. */\n"
+" clutter_actor_show(stage);\n"
+"\n"
+" /* Start the clutter main loop. */\n"
+" clutter_main();\n"
+"\n"
+" g_ptr_array_unref(img_paths);\n"
+"\n"
+" return 0;\n"
+"}"
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:185
+msgid ""
+"Line 4: <code>ClutterColor</code> is defined by setting the red, green, blue "
+"and transparency (alpha) values. The values range from 0-255. For "
+"transparency a value of 255 is opaque."
+msgstr ""
+"Línea 4: <code>ClutterColor</code> se define configurando los valores de "
+"rojo, verde, azul y de transparencia (alfa). Los valores van de 0 a 255. "
+"Para la transparencia, el valor 255 es opaco."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:186
+msgid ""
+"Line 7: You must initialize Clutter. If you forget to do this, you will get "
+"very strange errors. Be warned."
+msgstr ""
+"Línea 7: debe inicializar Clutter. Si olvida hacerlo, obtendrá mensajes muy "
+"extraños. Queda advertido."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:187
+msgid ""
+"Lines 10‒14: Here we create a new <code>ClutterStage</code> . We then set "
+"the size using the defines from the previous section and the address of the "
+"<code>ClutterColor</code> we just defined."
+msgstr ""
+"Líneas 10-14: aquí es donde se crea un <code>ClutterStage</code> nuevo. "
+"Entonces se establece el tamaño usando el definido en la sección anterior y "
+"la dirección del <code>ClutterColor</code> que ya está definida."
+
+#. (itstool) path: note/p
+#: C/photo-wall.c.page:188
+msgid ""
+"A <code>ClutterStage</code> is the top-level <code>ClutterActor</code> onto "
+"which other <code>ClutterActor</code>s are placed."
+msgstr ""
+"Un <code>ClutterStage</code> es el nivel superior de un <code>ClutterActor</"
+"code> en el que se ubican otros <code>ClutterActor</code>."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:190
+msgid ""
+"Line 16: Here we call our function for getting the image file paths. We'll "
+"look at this in a bit."
+msgstr ""
+"Línea 16: aquí se llama a la función para obtener las rutas de las imágenes. "
+"Esto se verá en breve."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:191
+msgid ""
+"Lines 18‒49: This is where we set up the <code>ClutterActor</code>s, load "
+"the images and place them into their spot in the image wall. We will look at "
+"this in detail in the next section."
+msgstr ""
+"Líneas 18-49: aquí es donde se configuran los <code>ClutterActor</code>, se "
+"cargan las imágenes y se colocan en su sitio en el mural de imágenes. Esto "
+"se verá con más detalle en la siguiente sección."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:192
+msgid ""
+"Line 52: Show the stage and <em>all its children</em>, meaning our images."
+msgstr ""
+"Línea 52: mostrar el escenario y <em>todos sus hijos</em>, es decir, las "
+"imágenes."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:193
+msgid "Line 55: Start the Clutter main loop."
+msgstr "Línea 55: iniciar el bucle principal de Clutter."
+
+#. (itstool) path: section/title
+#: C/photo-wall.c.page:198
+msgid "Setting up our image actors"
+msgstr "Configurar los actores de imagen"
+
+#. (itstool) path: note/p
+#: C/photo-wall.c.page:199
+msgid ""
+"In Clutter, an actor is the most basic visual element. Basically, everything "
+"you see is an actor."
+msgstr ""
+"En Clutter, un actor es el elemento visual más simple. Básicamente, todo lo "
+"que ve es un actor."
+
+#. (itstool) path: section/p
+#: C/photo-wall.c.page:200
+msgid ""
+"In this section, we are going to take a closer look at the loop used for "
+"setting up the <code>ClutterActor</code>s that will display our images."
+msgstr ""
+"En esta sección, se va a mirar más detenidamente el bucle usado para "
+"configurar los <code>ClutterActor</code> que mostrarán las imágenes."
+
+#. (itstool) path: section/code
+#: C/photo-wall.c.page:203
+#, no-wrap
+msgid ""
+"\n"
+"guint row = 0;\n"
+"guint col = 0;\n"
+"for(row=0; row < ROW_COUNT; ++row)\n"
+"{\n"
+" for(col=0; col < COL_COUNT; ++col)\n"
+" {\n"
+" const char *img_path = g_ptr_array_index(img_paths, (row * COL_COUNT) + col);\n"
+" GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(img_path, STAGE_HEIGHT, STAGE_HEIGHT, NULL);\n"
+" ClutterContent *image = clutter_image_new ();\n"
+" ClutterActor *actor = clutter_actor_new ();\n"
+"\n"
+" if (pixbuf != NULL)\n"
+" {\n"
+" clutter_image_set_data(CLUTTER_IMAGE(image),\n"
+" gdk_pixbuf_get_pixels(pixbuf),\n"
+" gdk_pixbuf_get_has_alpha(pixbuf)\n"
+" ? COGL_PIXEL_FORMAT_RGBA_8888\n"
+" : COGL_PIXEL_FORMAT_RGB_888,\n"
+" gdk_pixbuf_get_width(pixbuf),\n"
+" gdk_pixbuf_get_height(pixbuf),\n"
+" gdk_pixbuf_get_rowstride(pixbuf),\n"
+" NULL);\n"
+" }\n"
+"\n"
+" clutter_actor_set_content(actor, image);\n"
+" g_object_unref(image);\n"
+" g_object_unref(pixbuf);\n"
+"\n"
+" initialize_actor(actor, row, col);\n"
+" clutter_actor_add_child(stage, actor);\n"
+" }\n"
+"}\n"
+"\n"
+msgstr ""
+"\n"
+"guint row = 0;\n"
+"guint col = 0;\n"
+"for(row=0; row < ROW_COUNT; ++row)\n"
+"{\n"
+" for(col=0; col < COL_COUNT; ++col)\n"
+" {\n"
+" const char *img_path = g_ptr_array_index(img_paths, (row * COL_COUNT) + col);\n"
+" GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(img_path, STAGE_HEIGHT, STAGE_HEIGHT, NULL);\n"
+" ClutterContent *image = clutter_image_new ();\n"
+" ClutterActor *actor = clutter_actor_new ();\n"
+"\n"
+" if (pixbuf != NULL)\n"
+" {\n"
+" clutter_image_set_data(CLUTTER_IMAGE(image),\n"
+" gdk_pixbuf_get_pixels(pixbuf),\n"
+" gdk_pixbuf_get_has_alpha(pixbuf)\n"
+" ? COGL_PIXEL_FORMAT_RGBA_8888\n"
+" : COGL_PIXEL_FORMAT_RGB_888,\n"
+" gdk_pixbuf_get_width(pixbuf),\n"
+" gdk_pixbuf_get_height(pixbuf),\n"
+" gdk_pixbuf_get_rowstride(pixbuf),\n"
+" NULL);\n"
+" }\n"
+"\n"
+" clutter_actor_set_content(actor, image);\n"
+" g_object_unref(image);\n"
+" g_object_unref(pixbuf);\n"
+"\n"
+" initialize_actor(actor, row, col);\n"
+" clutter_actor_add_child(stage, actor);\n"
+" }\n"
+"}\n"
+"\n"
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:239
+msgid ""
+"Line 7: Here we want to get the path at the <var>n</var>th location in the "
+"<code>GPtrArray</code> that is holding our image path names. The <var>n</"
+"var>th position is calculated based on <code>row</code> and <code>col</code>."
+msgstr ""
+"Línea 7: aquí se quiere obtener la ruta a la ubicación número <var>n</var> "
+"en el <code>GPtrArray</code> que contiene los nombres de las rutas de las "
+"imágenes. La posición número <var>n</var> se calcula basándose en <code>row</"
+"code> y <code>col</code>."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:241
+msgid ""
+"Line 8‒23: This is where we actually create the <code>ClutterActor</code> "
+"and place the image into the actor. The first argument is the path which we "
+"access through our <code>GSList</code> node. The second argument is for "
+"error reporting but we are ignoring that to keep things short."
+msgstr ""
+"Líneas 8-23: aquí es donde se crea el <code>ClutterActor</code> en sí y se "
+"ubica la imagen en el actor. El primer argumento es la ruta a la que se "
+"accede con el nodo de la <code>GSList</code>. El segundo argumento es para "
+"informar de un error, pero se ignora para simplificar."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:243
+msgid ""
+"Line 47: This adds the <code>ClutterActor</code> to the stage, which is a "
+"container. It also assumes ownership of the <code>ClutterActor</code> which "
+"is something you'll want to look into as you get deeper into GNOME "
+"development. See the <link href=\"http://library.gnome.org/devel/gobject/"
+"stable/gobject-memory.html\"><code>GObject</code> documentation</link> for "
+"the gory details."
+msgstr ""
+"Línea 47: esta añade el <code>ClutterActor</code> al escenario, que es un "
+"contenedor. Asume propiedad del <code>ClutterActor</code>, que es algo que "
+"querrá cuando profundice en el desarrollo de GNOME. Para obtener más "
+"detalles, consulte la <link href=\"http://library.gnome.org/devel/gobject/"
+"stable/gobject-memory.html\">documentación de <code>GObject</code></link>."
+
+#. (itstool) path: section/title
+#: C/photo-wall.c.page:249
+msgid "Loading the images"
+msgstr "Cargar las imágenes"
+
+#. (itstool) path: section/p
+#: C/photo-wall.c.page:250
+msgid ""
+"Let's take a short break from Clutter to see how we can get the file names "
+"from our image directory."
+msgstr ""
+"Tómese un pequeño descanso de Clutter para ver cómo se pueden obtener los "
+"nombres de archivos desde la carpeta de imágenes."
+
+#. (itstool) path: section/code
+#: C/photo-wall.c.page:251
+#, no-wrap
+msgid ""
+"\n"
+"static void\n"
+"load_image_path_names()\n"
+"{\n"
+" /* Ensure we can access the directory. */\n"
+" GError *error = NULL;\n"
+" GDir *dir = g_dir_open(IMAGE_DIR_PATH, 0, &error);\n"
+" if(error)\n"
+" {\n"
+" g_warning(\"g_dir_open() failed with error: %s\\n\", error->message);\n"
+" g_clear_error(&error);\n"
+" return;\n"
+" }\n"
+"\n"
+" img_paths = g_ptr_array_new_with_free_func (g_free);\n"
+"\n"
+" const gchar *filename = g_dir_read_name(dir);\n"
+" while(filename)\n"
+" {\n"
+" if(g_str_has_suffix(filename, \".jpg\") || g_str_has_suffix(filename, \".png\"))\n"
+" {\n"
+" gchar *path = g_build_filename(IMAGE_DIR_PATH, filename, NULL);\n"
+" g_ptr_array_add (img_paths, path);\n"
+" }\n"
+" filename = g_dir_read_name(dir);\n"
+" }\n"
+"}"
+msgstr ""
+"\n"
+"static void\n"
+"load_image_path_names()\n"
+"{\n"
+" /* Ensure we can access the directory. */\n"
+" GError *error = NULL;\n"
+" GDir *dir = g_dir_open(IMAGE_DIR_PATH, 0, &error);\n"
+" if(error)\n"
+" {\n"
+" g_warning(\"g_dir_open() failed with error: %s\\n\", error->message);\n"
+" g_clear_error(&error);\n"
+" return;\n"
+" }\n"
+"\n"
+" img_paths = g_ptr_array_new_with_free_func (g_free);\n"
+"\n"
+" const gchar *filename = g_dir_read_name(dir);\n"
+" while(filename)\n"
+" {\n"
+" if(g_str_has_suffix(filename, \".jpg\") || g_str_has_suffix(filename, \".png\"))\n"
+" {\n"
+" gchar *path = g_build_filename(IMAGE_DIR_PATH, filename, NULL);\n"
+" g_ptr_array_add (img_paths, path);\n"
+" }\n"
+" filename = g_dir_read_name(dir);\n"
+" }\n"
+"}"
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:279
+msgid ""
+"Lines 5 and 12: This opens our directory or, if an error occurred, returns "
+"after printing an error message."
+msgstr ""
+"Líneas 5 y 12: esto abre la carpeta o, si ocurre un error, termina después "
+"de mostrar un mensaje de error."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:280
+msgid ""
+"Lines 16‒25: The first line gets another file name from the <code>GDir</"
+"code> we opened earlier. If there was an image file (which we check by "
+"looking at its extension, \".png\" or \".jpg\") in the directory we proceed "
+"to prepend the image directory path to the filename and prepend that to the "
+"list we set up earlier. Lastly we attempt to get the next path name and "
+"reenter the loop if another file was found."
+msgstr ""
+"Líneas 16-25: la primera línea obtiene otro nombre de archivo del "
+"<code>GDir</code> abierto anteriormente. Si hay un archivo de imagen (se "
+"comprueba mirando si la extensión es «.png» o «.jpg») en la carpeta, se "
+"procede a anteponer la ruta de la carpeta de la imagen al nombre del archivo "
+"y se antepone en la lista creada anteriormente. Por último, se intenta "
+"obtener el nombre de la siguiente ruta y se vuelve a entrar en el bucle si "
+"se encuentra otro archivo."
+
+#. (itstool) path: section/title
+#: C/photo-wall.c.page:285
+msgid "Set up the actors"
+msgstr "Configurar los actores"
+
+#. (itstool) path: section/p
+#: C/photo-wall.c.page:286
+msgid ""
+"We now take a look at the sizing and positioning of <code>ClutterActor</"
+"code>s and also readying the <code>ClutterActor</code> for user interaction."
+msgstr ""
+"Eche un vistazo al tamaño y al posicionamiento de los <code>ClutterActor</"
+"code> y a cómo se deja listo el <code>ClutterActor</code> para la "
+"interacción del usuario."
+
+#. (itstool) path: section/code
+#: C/photo-wall.c.page:289
+#, no-wrap
+msgid ""
+"\n"
+"/* This function handles setting up and placing the rectangles. */\n"
+"static void\n"
+"initialize_actor(ClutterActor *actor, guint row, guint col)\n"
+"{\n"
+" clutter_actor_set_size(actor, THUMBNAIL_SIZE, THUMBNAIL_SIZE);\n"
+" clutter_actor_set_position(actor, col * THUMBNAIL_SIZE, row * THUMBNAIL_SIZE);\n"
+" clutter_actor_set_reactive(actor, TRUE);\n"
+"\n"
+" g_signal_connect(actor,\n"
+" \"button-press-event\",\n"
+" G_CALLBACK(actor_clicked_cb),\n"
+" NULL);\n"
+"}"
+msgstr ""
+"\n"
+"/* This function handles setting up and placing the rectangles. */\n"
+"static void\n"
+"initialize_actor(ClutterActor *actor, guint row, guint col)\n"
+"{\n"
+" clutter_actor_set_size(actor, THUMBNAIL_SIZE, THUMBNAIL_SIZE);\n"
+" clutter_actor_set_position(actor, col * THUMBNAIL_SIZE, row * THUMBNAIL_SIZE);\n"
+" clutter_actor_set_reactive(actor, TRUE);\n"
+"\n"
+" g_signal_connect(actor,\n"
+" \"button-press-event\",\n"
+" G_CALLBACK(actor_clicked_cb),\n"
+" NULL);\n"
+"}"
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:305
+msgid ""
+"Line 7: Setting an actor reactive means that it reacts to events, such as "
+"<code>button-press-event</code> in our case. For Photo Wall, all "
+"<code>ClutterActor</code>s in the wall should initially be reactive."
+msgstr ""
+"Línea 7: configurar un actor como «reactivo» significa que reacciona a los "
+"eventos tales como <code>button-press-event</code> en nuestro caso. Para el "
+"mural de fotos, todos los <code>ClutterActor</code> del mural deben ser "
+"inicialmente reactivos."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:308
+msgid ""
+"Line 9‒12: Now we connect the <code>button-press-event</code> to the "
+"<code>actor_clicked_cb</code> callback which we will look at next."
+msgstr ""
+"Líneas 9‒12: ahora se conecta el evento <code>button-press-event</code> al "
+"retorno de la llamada <code>actor_clicked_cb</code> que veremos más adelante."
+
+#. (itstool) path: section/p
+#: C/photo-wall.c.page:311
+msgid "At this point we've got a wall of images that are ready to be viewed."
+msgstr "En este punto tiene un mural de fotos que está listo para verse."
+
+#. (itstool) path: section/title
+#: C/photo-wall.c.page:315
+msgid "Reacting to the clicks"
+msgstr "Reaccionar a las pulsaciones"
+
+#. (itstool) path: section/code
+#: C/photo-wall.c.page:319
+#, no-wrap
+msgid ""
+"\n"
+"static gboolean\n"
+"actor_clicked_cb(ClutterActor *actor,\n"
+" ClutterEvent *event,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* Flag to keep track of our state. */\n"
+" static gboolean is_focused = FALSE;\n"
+" ClutterActorIter iter;\n"
+" ClutterActor *child;\n"
+"\n"
+" /* Reset the focus state on all the images */\n"
+" clutter_actor_iter_init (&iter, clutter_actor_get_parent(actor));\n"
+" while (clutter_actor_iter_next(&iter, &child))\n"
+" clutter_actor_set_reactive(child, is_focused);\n"
+"\n"
+" clutter_actor_save_easing_state(actor);\n"
+" clutter_actor_set_easing_duration(actor, ANIMATION_DURATION_MS);\n"
+"\n"
+" if(is_focused)\n"
+" {\n"
+" /* Restore the old location and size. */\n"
+" clutter_actor_set_position(actor, unfocused_pos.x, unfocused_pos.y);\n"
+" clutter_actor_set_size(actor, THUMBNAIL_SIZE, THUMBNAIL_SIZE);\n"
+" }\n"
+" else\n"
+" {\n"
+" /* Save the current location before animating. */\n"
+" clutter_actor_get_position(actor, &unfocused_pos.x, &unfocused_pos.y);\n"
+" /* Only the currently focused image should receive events. */\n"
+" clutter_actor_set_reactive(actor, TRUE);\n"
+"\n"
+" /* Put the focused image on top. */\n"
+" clutter_actor_set_child_above_sibling(clutter_actor_get_parent(actor), actor, NULL);\n"
+"\n"
+" clutter_actor_set_position(actor, (STAGE_WIDTH - STAGE_HEIGHT) / 2.0, 0);\n"
+" clutter_actor_set_size(actor, STAGE_HEIGHT, STAGE_HEIGHT);\n"
+" }\n"
+"\n"
+" clutter_actor_restore_easing_state(actor);\n"
+"\n"
+" /* Toggle our flag. */\n"
+" is_focused = !is_focused;\n"
+"\n"
+" return TRUE;\n"
+"}"
+msgstr ""
+"\n"
+"static gboolean\n"
+"actor_clicked_cb(ClutterActor *actor,\n"
+" ClutterEvent *event,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* Flag to keep track of our state. */\n"
+" static gboolean is_focused = FALSE;\n"
+" ClutterActorIter iter;\n"
+" ClutterActor *child;\n"
+"\n"
+" /* Reset the focus state on all the images */\n"
+" clutter_actor_iter_init (&iter, clutter_actor_get_parent(actor));\n"
+" while (clutter_actor_iter_next(&iter, &child))\n"
+" clutter_actor_set_reactive(child, is_focused);\n"
+"\n"
+" clutter_actor_save_easing_state(actor);\n"
+" clutter_actor_set_easing_duration(actor, ANIMATION_DURATION_MS);\n"
+"\n"
+" if(is_focused)\n"
+" {\n"
+" /* Restore the old location and size. */\n"
+" clutter_actor_set_position(actor, unfocused_pos.x, unfocused_pos.y);\n"
+" clutter_actor_set_size(actor, THUMBNAIL_SIZE, THUMBNAIL_SIZE);\n"
+" }\n"
+" else\n"
+" {\n"
+" /* Save the current location before animating. */\n"
+" clutter_actor_get_position(actor, &unfocused_pos.x, &unfocused_pos.y);\n"
+" /* Only the currently focused image should receive events. */\n"
+" clutter_actor_set_reactive(actor, TRUE);\n"
+"\n"
+" /* Put the focused image on top. */\n"
+" clutter_actor_set_child_above_sibling(clutter_actor_get_parent(actor), actor, NULL);\n"
+"\n"
+" clutter_actor_set_position(actor, (STAGE_WIDTH - STAGE_HEIGHT) / 2.0, 0);\n"
+" clutter_actor_set_size(actor, STAGE_HEIGHT, STAGE_HEIGHT);\n"
+" }\n"
+"\n"
+" clutter_actor_restore_easing_state(actor);\n"
+"\n"
+" /* Toggle our flag. */\n"
+" is_focused = !is_focused;\n"
+"\n"
+" return TRUE;\n"
+"}"
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:366
+msgid ""
+"Lines 1‒4: We have to make sure our callback function matches the signature "
+"required for the <code>button_clicked_event</code> signal. For our example, "
+"we will only use the first argument, the <code>ClutterActor</code> that is "
+"actually clicked."
+msgstr ""
+"Líneas 1‒4: hay que asegurarse de que la función de retorno de llamada "
+"coincide con la firma requerida para la señal <code>button_clicked_event</"
+"code>. En este ejemplo, sólo se usará el primer argumento, el "
+"<code>ClutterActor</code> pulsado actualmente."
+
+#. (itstool) path: note/p
+#: C/photo-wall.c.page:368
+msgid ""
+"A few words on the arguments we are not using in this example. The "
+"<code>ClutterEvent</code> is different depending on what event is being "
+"handled. For example, a key event produces a <code>ClutterKeyEvent</code> "
+"from which you can get the key being pressed among other information. For "
+"mouse click events you get a <code>ClutterButtonEvent</code> from which you "
+"can get the <code>x</code> and <code>y</code> values. See the Clutter "
+"documentation for other <code>ClutterEvent</code> types."
+msgstr ""
+"Unas pocas palabras sobre los argumentos que no se están usando en este "
+"ejemplo. El <code>ClutterEvent</code> es diferente dependiendo de qué evento "
+"se está manejando. Por ejemplo, un evento de clave produce un "
+"<code>ClutterKeyEvent</code> desde el que puede obtener la clave pulsada, "
+"entre otra información. Para eventos de pulsaciones del ratón, obtiene un "
+"<code>ClutterButtonEvent</code> con el que pueden obtener los valores "
+"<code>x</code> e <code>y</code>. Consulte la documentación de Clutter para "
+"obtener información sobre otros tipos de <code>ClutterEvent</code>."
+
+#. (itstool) path: note/p
+#: C/photo-wall.c.page:369
+msgid ""
+"The <code>user_data</code> is what one uses to pass data into the function. "
+"A pointer to any data type can be passed in. If you need multiple data to be "
+"passed into the callback, you can place the data into a struct and pass its "
+"address in."
+msgstr ""
+"El <code>user_data</code> es lo que se usa para pasar datos a la función. Se "
+"puede pasar un puntero a cualquier tipo de datos. Si necesita pasar varios "
+"datos al retorno de la llamada, puede colocarlos en una estructura y pasar "
+"un puntero a su dirección."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:373
+msgid ""
+"Line 7: We set up a static flag to track which state we are in: wall mode or "
+"focus mode. We start out in wall mode so no image has focus. Thus, we set "
+"the flag to <code>FALSE</code> initially."
+msgstr ""
+"Línea 7: se establece un indicador estático para seguir el estado en el que "
+"se está: modo mural o modo de foco. Se inicia en modo mural, por lo que "
+"ninguna imagen tiene el foco. Por ello, el indicador se establece "
+"inicialmente a <code>FALSE</code>."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:374
+msgid ""
+"Line 12‒14: These set the image actors to receive events if they are focused."
+msgstr ""
+"Líneas 12-14: configuran los actores de imágenes para recibir eventos si "
+"obtienen el foco."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:375
+msgid ""
+"Line 16‒17: Here we set the animation duration and save the current state."
+msgstr ""
+"Línea 16-17: aquí se establece la duración de la animación y se guarda el "
+"estado actual."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:376
+msgid ""
+"Lines 21‒23: Reaching this code means that one image currently has focus and "
+"we want to return to wall mode. Setting a position on a <code>ClutterActor</"
+"code> begins an animation with the duration that we set in line 17."
+msgstr ""
+"Líneas 21-23: llegar a este código significa que actualmente solo una imagen "
+"tiene el foco, y se quiere volver al modo mural. Establecer una posición en "
+"un <code>ClutterActor</code> comienza una animación con la duración "
+"configurada en la línea 17."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:378
+msgid ""
+"Line 24: Reaching this line of code means we are currently in the wall state "
+"and are about to give a <code>ClutterActor</code> focus. Here we save the "
+"starting position so that we can return to it later."
+msgstr ""
+"Línea 24: llegar a esta línea de código significa que actualmente se está en "
+"el modo mural y se va a dar el foco a un <code>ClutterActor</code>. Aquí se "
+"guarda la posición inicial, por lo que se puede volver a ella más adelante."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:379
+msgid ""
+"Line 25: Setting the <code>ClutterActor</code>'s <code>reactive</code> "
+"property to <code>TRUE</code> makes this <code>ClutterActor</code> react to "
+"events. In this focused state the only <code>ClutterActor</code> that we "
+"want to receive events will be the <code>ClutterActor</code> being viewed. "
+"Clicking on the <code>ClutterActor</code> will return it to its starting "
+"position."
+msgstr ""
+"Línea 25: establecer la propiedad <code>reactive</code> del "
+"<code>ClutterActor</code> a <code>TRUE</code> hace que este "
+"<code>ClutterActor</code> reaccione a los eventos. En el estado «con foco», "
+"el único <code>ClutterActor</code> que se quiere que reciba eventos es el "
+"<code>ClutterActor</code> que se está viendo. Al pulsar sobre el "
+"<code>ClutterActor</code> volverá a su posición inicial."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:380
+msgid ""
+"Lines 27‒36: This is where we save the current position of the image, set it "
+"to receive events and then make it appear above the other images and start "
+"animating it to fill the stage."
+msgstr ""
+"Líneas 27-36: aquí es donde se guarda la posición actual de la imagen, se "
+"configura para recibir eventos y se hace que aparezca sobre las otras, "
+"comenzando la animación para que llene el escenario."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:381
+msgid ""
+"Line 39: Here we restore the easing state to what was set before we changed "
+"it in line 16."
+msgstr ""
+"Línea 39: aquí se restaura el estado a lo que era antes de que se cambiara "
+"en la línea 16."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:382
+msgid ""
+"Line 42: Here we toggle the <code>is_focused</code> flag to the current "
+"state."
+msgstr ""
+"Línea 42: aquí se alterna la opción <code>is_focused</code> al estado actual."
+
+#. (itstool) path: item/p
+#: C/photo-wall.c.page:383
+msgid ""
+"As mentioned previously, the <code>ClutterActor</code>s with higher "
+"<code>depth</code> values receive events but can allow <code>ClutterActor</"
+"code>s below them to also receive events. Returning <code>TRUE</code> will "
+"stop events from being passed down, while <code>FALSE</code> will pass "
+"events down."
+msgstr ""
+"Como se ha mencionado anteriormente, los <code>ClutterActor</code> con "
+"valores de <code>depth</code> más altos recibirán eventos, pero pueden "
+"permitir que los <code>ClutterActor</code> que están por denajo de ellos "
+"también reciban eventos. Al devolver <code>TRUE</code> se dejarán de enviar "
+"eventos havia abajo, mientras que <code>FALSE</code> hará que los eventos "
+"pasen hacia abajo."
+
+#. (itstool) path: note/p
+#: C/photo-wall.c.page:385
+msgid ""
+"Remember, however, that to receive events the <code>ClutterActor</code>s "
+"must be set <code>reactive</code>."
+msgstr ""
+"Recuerde, sin embargo, que para que los <code>ClutterActor</code> reciban "
+"eventos deben establecerse como <code>reactive</code>."
+
+#. (itstool) path: section/p
+#: C/photo-wall.c.page:393
+msgid ""
+"All of the code should now be ready to go. All you need now is some pictures "
+"to load. By default, the pictures are loaded from a <file>berlin_images</"
+"file> directory. If you want, you can change the <code>#define "
+"IMAGE_DIR_PATH</code> line near the top to refer to your photo directory, or "
+"create a <file>berlin_images</file> directory by clicking "
+"<guiseq><gui>Project</gui><gui>New Directory...</gui></guiseq> and creating "
+"a <file>berlin_images</file> directory as a subdirectory of the <file>photo-"
+"wall</file> directory. Make sure to put at least twelve images in the "
+"directory!"
+msgstr ""
+"Todo el código debería estar listo para ejecutarse. Todo lo que necesita son "
+"algunas imágenes para cargar. De manera predeterminada, las imágenes se "
+"cargan desde la carpeta <file>berlin_images</file>. Si quiere, puede cambiar "
+"la línea <code>#define IMAGE_DIR_PATH</code> del principio para que haga "
+"referencia a su carpeta de fotos, o crear una carpeta <file>berlin_images</"
+"file> pulsando en <guiseq><gui>Proyecto</gui><gui>Carpeta nueva...</gui></"
+"guiseq> y creando una carpeta <file>berlin_images</file> como subcarpeta de "
+"la carpeta <file>mural-fotos</file>. Asegúrese de poner al menos doce "
+"imágenes en la carpeta."
+
+#. (itstool) path: section/p
+#: C/photo-wall.c.page:395
+msgid ""
+"When you have done that, click <guiseq><gui>Build</gui><gui>Build Project</"
+"gui></guiseq> to build everything again, then <guiseq><gui>Run</"
+"gui><gui>Execute</gui></guiseq> to start the application."
+msgstr ""
+"Cuando lo haya hecho, pulse <guiseq><gui>Construir</gui><gui>Construir "
+"proyecto</gui></guiseq> para construir todo otra vez, y entonces pulse "
+"<guiseq><gui>Ejecutar</gui><gui>Ejecutar</gui></guiseq> para iniciar la "
+"aplicación."
+
+#. (itstool) path: section/p
+#: C/photo-wall.c.page:396
+msgid ""
+"If you haven't already done so, choose the <file>Debug/src/photo-wall</file> "
+"application in the dialog that appears. Finally, hit <gui>Run</gui> and "
+"enjoy!"
+msgstr ""
+"Si todavía no lo ha hecho, elija la aplicación <file>Debug/src/photo-wall</"
+"file> en el diálogo que aparece. Finalmente, pulse <gui>Ejecutar</gui> y "
+"disfrute."
+
+#. (itstool) path: section/p
+#: C/photo-wall.c.page:401
+msgid ""
+"If you run into problems with the tutorial, compare your code with this "
+"<link href=\"photo-wall/photo-wall.c\">reference code</link>."
+msgstr ""
+"Si tiene problemas con este tutorial, compare su código con este <link href="
+"\"photo-wall/photo-wall.c\">código de referencia</link>."
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/progressbar.c.page:24 C/progressbar.vala.page:22
+msgctxt "_"
+msgid ""
+"external ref='media/progressbar_fill.ogv' "
+"md5='287763d1d3f4a328212ea2243910f5e4'"
+msgstr ""
+"external ref='media/progressbar_fill.ogv' "
+"md5='287763d1d3f4a328212ea2243910f5e4'"
+
+#. (itstool) path: info/title
+#: C/progressbar.c.page:8
+msgctxt "text"
+msgid "ProgressBar (C)"
+msgstr "ProgressBar (C)"
+
+#. (itstool) path: info/desc
+#: C/progressbar.c.page:19 C/progressbar.vala.page:18
+msgid "A widget which indicates progress visually"
+msgstr "Un widget que indica el progreso de manera visual"
+
+#. (itstool) path: page/title
+#: C/progressbar.c.page:22 C/progressbar.js.page:20 C/progressbar.py.page:22
+#: C/progressbar.vala.page:21
+msgid "ProgressBar"
+msgstr "ProgressBar"
+
+#. (itstool) path: page/p
+#: C/progressbar.c.page:25 C/progressbar.vala.page:23
+msgid ""
+"This ProgressBar \"fills in\" by a fraction of the bar until it is full."
+msgstr "Esta barra de progreso «se llena» una fracción hasta que está llena."
+
+#. (itstool) path: page/code
+#: C/progressbar.c.page:27
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"static gboolean\n"
+"fill (gpointer user_data)\n"
+"{\n"
+" GtkWidget *progress_bar = user_data;\n"
+"\n"
+" /*Get the current progress*/\n"
+" gdouble fraction;\n"
+" fraction = gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (progress_bar));\n"
+"\n"
+" /*Increase the bar by 10% each time this function is called*/\n"
+" fraction += 0.1;\n"
+"\n"
+" /*Fill in the bar with the new fraction*/\n"
+" gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), fraction);\n"
+"\n"
+" /*Ensures that the fraction stays below 1.0*/\n"
+" if (fraction < 1.0) \n"
+" return TRUE;\n"
+" \n"
+" return FALSE;\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *progress_bar;\n"
+"\n"
+" gdouble fraction = 0.0;\n"
+"\n"
+" /*Create a window with a title, and a default size*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"ProgressBar Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 220, 20);\n"
+" \n"
+" /*Create a progressbar and add it to the window*/\n"
+" progress_bar = gtk_progress_bar_new ();\n"
+" gtk_container_add (GTK_CONTAINER (window), progress_bar);\n"
+"\n"
+" /*Fill in the given fraction of the bar. Has to be between 0.0-1.0 inclusive*/\n"
+" gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), fraction);\n"
+"\n"
+" /*Use the created fill function every 500 milliseconds*/\n"
+" g_timeout_add (500, fill, GTK_PROGRESS_BAR (progress_bar));\n"
+" \n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+" \n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+" \n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" \n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"static gboolean\n"
+"fill (gpointer user_data)\n"
+"{\n"
+" GtkWidget *progress_bar = user_data;\n"
+"\n"
+" /*Get the current progress*/\n"
+" gdouble fraction;\n"
+" fraction = gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (progress_bar));\n"
+"\n"
+" /*Increase the bar by 10% each time this function is called*/\n"
+" fraction += 0.1;\n"
+"\n"
+" /*Fill in the bar with the new fraction*/\n"
+" gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), fraction);\n"
+"\n"
+" /*Ensures that the fraction stays below 1.0*/\n"
+" if (fraction < 1.0) \n"
+" return TRUE;\n"
+" \n"
+" return FALSE;\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *progress_bar;\n"
+"\n"
+" gdouble fraction = 0.0;\n"
+"\n"
+" /*Create a window with a title, and a default size*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"ProgressBar Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 220, 20);\n"
+" \n"
+" /*Create a progressbar and add it to the window*/\n"
+" progress_bar = gtk_progress_bar_new ();\n"
+" gtk_container_add (GTK_CONTAINER (window), progress_bar);\n"
+"\n"
+" /*Fill in the given fraction of the bar. Has to be between 0.0-1.0 inclusive*/\n"
+" gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), fraction);\n"
+"\n"
+" /*Use the created fill function every 500 milliseconds*/\n"
+" g_timeout_add (500, fill, GTK_PROGRESS_BAR (progress_bar));\n"
+" \n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+" \n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+" \n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" \n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/progressbar.c.page:36
+msgid ""
+"<link href=\"http://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop."
+"html#g-timeout-add\">G_Timeout</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop."
+"html#g-timeout-add\">G_Timeout</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/progressbar.js.page:21 C/progressbar.py.page:23
+msgctxt "_"
+msgid ""
+"external ref='media/progressbar.ogv' md5='36deab3dd4b5be968828fa2ef416d612'"
+msgstr ""
+"external ref='media/progressbar.ogv' md5='36deab3dd4b5be968828fa2ef416d612'"
+
+#. (itstool) path: info/title
+#: C/progressbar.js.page:7
+msgctxt "text"
+msgid "ProgressBar (JavaScript)"
+msgstr "ProgressBar (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/progressbar.js.page:17
+msgid "A bar which animates to indicate progress"
+msgstr "Una barra que indica el progreso de manera visual"
+
+#. (itstool) path: div/p
+#: C/progressbar.js.page:25 C/progressbar.py.page:27
+msgid "Pressing any key stops and starts this ProgressBar."
+msgstr "Pulsar cualquier tecla detiene e inicia esta ProgressBar."
+
+#. (itstool) path: page/p
+#: C/progressbar.js.page:32 C/progressbar.py.page:34
+msgid "This ProgressBar is stopped and started by pressing any key."
+msgstr "La ProgressBar se detiene y se inicia pulsando una tecla."
+
+#. (itstool) path: page/code
+#: C/progressbar.js.page:34
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ProgressBarExample = new Lang.Class({\n"
+" Name: 'ProgressBar Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsprogressbar',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 20,\n"
+" default_width: 220,\n"
+" title: \"ProgressBar Example\"});\n"
+"\n"
+" // Create the progress bar\n"
+" this.progressBar = new Gtk.ProgressBar ();\n"
+" this._window.add(this.progressBar);\n"
+"\n"
+" // Start the function that pulses the bar every 100 milliseconds\n"
+" this.sourceID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, Lang.bind(this, this._barPulse));\n"
+"\n"
+" // Connect a keypress event to the function that toggles the bar to start or stop pulsing\n"
+" this._window.connect(\"key-press-event\", Lang.bind(this, this._onKeyPress));\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Pulse the progressbar (unless it has been disabled by a keypress)\n"
+" _barPulse: function() {\n"
+" this.progressBar.pulse();\n"
+" return true;\n"
+" },\n"
+"\n"
+" // Start or stop the progressbar when a key is pressed\n"
+" _onKeyPress: function() {\n"
+" if (this.sourceID == 0)\n"
+" this.sourceID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, Lang.bind(this,
this._barPulse));\n"
+" else {\n"
+" GLib.source_remove(this.sourceID);\n"
+" this.sourceID = 0;\n"
+" }\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ProgressBarExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ProgressBarExample = new Lang.Class({\n"
+" Name: 'ProgressBar Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsprogressbar',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 20,\n"
+" default_width: 220,\n"
+" title: \"ProgressBar Example\"});\n"
+"\n"
+" // Create the progress bar\n"
+" this.progressBar = new Gtk.ProgressBar ();\n"
+" this._window.add(this.progressBar);\n"
+"\n"
+" // Start the function that pulses the bar every 100 milliseconds\n"
+" this.sourceID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, Lang.bind(this, this._barPulse));\n"
+"\n"
+" // Connect a keypress event to the function that toggles the bar to start or stop pulsing\n"
+" this._window.connect(\"key-press-event\", Lang.bind(this, this._onKeyPress));\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Pulse the progressbar (unless it has been disabled by a keypress)\n"
+" _barPulse: function() {\n"
+" this.progressBar.pulse();\n"
+" return true;\n"
+" },\n"
+"\n"
+" // Start or stop the progressbar when a key is pressed\n"
+" _onKeyPress: function() {\n"
+" if (this.sourceID == 0)\n"
+" this.sourceID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, Lang.bind(this,
this._barPulse));\n"
+" else {\n"
+" GLib.source_remove(this.sourceID);\n"
+" this.sourceID = 0;\n"
+" }\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ProgressBarExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/progressbar.js.page:39
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/GLib.html\">GLib</"
+"link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/GLib.html\">GLib</"
+"link>"
+
+#. (itstool) path: info/title
+#: C/progressbar.py.page:8
+msgctxt "text"
+msgid "ProgressBar (Python)"
+msgstr "ProgressBar (Python)"
+
+#. (itstool) path: info/desc
+#: C/progressbar.py.page:19
+msgid "A widget which indicates progress visually."
+msgstr "Un widget que indica el progreso de manera visual."
+
+#. (itstool) path: section/code
+#: C/progressbar.py.page:41
+#, no-wrap
+msgid ""
+"from gi.repository import GLib\n"
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"ProgressBar Example\", application=app)\n"
+" self.set_default_size(220, 20)\n"
+"\n"
+" # a progressbar\n"
+" self.progress_bar = Gtk.ProgressBar()\n"
+" # add the progressbar to the window\n"
+" self.add(self.progress_bar)\n"
+"\n"
+" # the method self.pulse is called each 100 milliseconds\n"
+" # and self.source_id is set to be the ID of the event source\n"
+" # (i.e. the bar changes position every 100 milliseconds)\n"
+" self.source_id = GLib.timeout_add(100, self.pulse)\n"
+"\n"
+" # event handler\n"
+" # any signal from the keyboard controls if the progressbar stops/starts\n"
+" def do_key_press_event(self, event):\n"
+" # if the progressbar has been stopped (therefore source_id == 0 - see\n"
+" # \"else\" below), turn it back on\n"
+" if (self.source_id == 0):\n"
+" self.source_id = GLib.timeout_add(100, self.pulse)\n"
+" # if the bar is moving, remove the source with the ID of source_id\n"
+" # from the main context (stop the bar) and set the source_id to 0\n"
+" else:\n"
+" GLib.source_remove(self.source_id)\n"
+" self.source_id = 0\n"
+" # stop the signal emission\n"
+" return True\n"
+"\n"
+" # source function\n"
+" # the progressbar is in \"activity mode\" when this method is called\n"
+" def pulse(self):\n"
+" self.progress_bar.pulse()\n"
+" # call the function again\n"
+" return True\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import GLib\n"
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"ProgressBar Example\", application=app)\n"
+" self.set_default_size(220, 20)\n"
+"\n"
+" # a progressbar\n"
+" self.progress_bar = Gtk.ProgressBar()\n"
+" # add the progressbar to the window\n"
+" self.add(self.progress_bar)\n"
+"\n"
+" # the method self.pulse is called each 100 milliseconds\n"
+" # and self.source_id is set to be the ID of the event source\n"
+" # (i.e. the bar changes position every 100 milliseconds)\n"
+" self.source_id = GLib.timeout_add(100, self.pulse)\n"
+"\n"
+" # event handler\n"
+" # any signal from the keyboard controls if the progressbar stops/starts\n"
+" def do_key_press_event(self, event):\n"
+" # if the progressbar has been stopped (therefore source_id == 0 - see\n"
+" # \"else\" below), turn it back on\n"
+" if (self.source_id == 0):\n"
+" self.source_id = GLib.timeout_add(100, self.pulse)\n"
+" # if the bar is moving, remove the source with the ID of source_id\n"
+" # from the main context (stop the bar) and set the source_id to 0\n"
+" else:\n"
+" GLib.source_remove(self.source_id)\n"
+" self.source_id = 0\n"
+" # stop the signal emission\n"
+" return True\n"
+"\n"
+" # source function\n"
+" # the progressbar is in \"activity mode\" when this method is called\n"
+" def pulse(self):\n"
+" self.progress_bar.pulse()\n"
+" # call the function again\n"
+" return True\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/progressbar.py.page:46
+msgid "Useful methods for a ProgressBar widget"
+msgstr "Métodos útiles para un widget «ProgressBar»"
+
+#. (itstool) path: item/p
+#: C/progressbar.py.page:48
+msgid ""
+"Instead of <code>pulse()</code>, that makes the bar go back and forth, if we "
+"want the ProgressBar to \"fill in\" a fraction (a <code>float</code> between "
+"<code>0.0</code> and <code>1.0</code> included) of the bar that has been "
+"completed, use <code>set_fraction(fraction)</code>."
+msgstr ""
+"En lugar de <code>pulse()</code>, que hace que la barra avance y retroceda, "
+"si se quiere que la barra de progreso «llene» una fracción (un <code>float</"
+"code> entre <code>0.0</code> y <code>1.0</code> inclusive) de la barra que "
+"se ha completado, use <code>set_fraction(fracción)</code>."
+
+#. (itstool) path: item/p
+#: C/progressbar.py.page:49
+msgid ""
+"To set a text and show it (superimposed over the bar) use "
+"<code>set_text(<var>\"text\"</var>)</code> and <code>set_show_text(True)</"
+"code>. If a text is not set and <code>set_show_text(True)</code> the text "
+"will be the percentage of the work that has been completed."
+msgstr ""
+"Para establecer un texto y mostrarlo (superpuesto a la barra) use "
+"<code>set_text(<var>\"texto\"</var>)</code> y <code>set_show_text(True)</"
+"code>. Si no se establece un texto y <code>set_show_text(True)</code>, el "
+"texto será el porcentaje del trabajo que se ha completado."
+
+#. (itstool) path: item/p
+#: C/progressbar.py.page:57
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkProgressBar.html"
+"\">GtkProgressBar</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkProgressBar.html"
+"\">GtkProgressBar</link>"
+
+#. (itstool) path: item/p
+#: C/progressbar.py.page:58
+msgid ""
+"<link href=\"http://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop."
+"html\">GLib - The Main Event Loop</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop."
+"html\">GLib: el bucle de eventos principal</link>"
+
+#. (itstool) path: item/p
+#: C/progressbar.py.page:59
+msgid ""
+"<link href=\"http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling"
+"\">Gdk - Key Values</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling"
+"\">Gdk: valores de teclas</link>"
+
+#. (itstool) path: info/title
+#: C/progressbar.vala.page:8
+msgctxt "text"
+msgid "ProgressBar (Vala)"
+msgstr "ProgressBar (Vala)"
+
+#. (itstool) path: page/code
+#: C/progressbar.vala.page:25
+#, no-wrap
+msgid ""
+"public class MyApplication : Gtk.Application {\n"
+"\n"
+"\tGtk.ProgressBar progress_bar;\n"
+"\n"
+"\tprotected override void activate () {\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.set_title (\"ProgressBar Example\");\n"
+"\t\twindow.set_default_size (220, 20);\n"
+"\n"
+"\t\tprogress_bar = new Gtk.ProgressBar ();\n"
+"\t\twindow.add (progress_bar);\n"
+"\t\twindow.show_all ();\n"
+"\n"
+"\t\tdouble fraction = 0.0;\n"
+"\t\tprogress_bar.set_fraction (fraction);\n"
+"\t\tGLib.Timeout.add (500, fill);\n"
+"\t}\n"
+"\n"
+"\tbool fill () {\n"
+"\t\tdouble fraction = progress_bar.get_fraction (); //get current progress\n"
+"\t\tfraction += 0.1; //increase by 10% each time this function is called\n"
+"\n"
+"\t\tprogress_bar.set_fraction (fraction);\n"
+"\n"
+"\t\t/* This function is only called by GLib.Timeout.add while it returns true; */\n"
+"\t\tif (fraction < 1.0)\n"
+"\t\t\treturn true;\n"
+"\t\treturn false;\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\tvar progress_bar_application = new MyApplication ();\n"
+"\tint status = progress_bar_application.run (args);\n"
+"\treturn status;\n"
+"}\n"
+msgstr ""
+"public class MyApplication : Gtk.Application {\n"
+"\n"
+"\tGtk.ProgressBar progress_bar;\n"
+"\n"
+"\tprotected override void activate () {\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.set_title (\"ProgressBar Example\");\n"
+"\t\twindow.set_default_size (220, 20);\n"
+"\n"
+"\t\tprogress_bar = new Gtk.ProgressBar ();\n"
+"\t\twindow.add (progress_bar);\n"
+"\t\twindow.show_all ();\n"
+"\n"
+"\t\tdouble fraction = 0.0;\n"
+"\t\tprogress_bar.set_fraction (fraction);\n"
+"\t\tGLib.Timeout.add (500, fill);\n"
+"\t}\n"
+"\n"
+"\tbool fill () {\n"
+"\t\tdouble fraction = progress_bar.get_fraction (); //get current progress\n"
+"\t\tfraction += 0.1; //increase by 10% each time this function is called\n"
+"\n"
+"\t\tprogress_bar.set_fraction (fraction);\n"
+"\n"
+"\t\t/* This function is only called by GLib.Timeout.add while it returns true; */\n"
+"\t\tif (fraction < 1.0)\n"
+"\t\t\treturn true;\n"
+"\t\treturn false;\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\tvar progress_bar_application = new MyApplication ();\n"
+"\tint status = progress_bar_application.run (args);\n"
+"\treturn status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/progressbar.vala.page:30
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ProgressBar.html\">Gtk."
+"ProgressBar</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ProgressBar.html\">Gtk."
+"ProgressBar</link>"
+
+#. (itstool) path: item/p
+#: C/progressbar.vala.page:31
+msgid ""
+"<link href=\"http://www.valadoc.org/glib-2.0/GLib.Timeout.html\">GLib."
+"Timeout</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/glib-2.0/GLib.Timeout.html\">GLib."
+"Timeout</link>"
+
+#. (itstool) path: info/title
+#: C/properties.py.page:9
+msgctxt "text"
+msgid "Properties (Python)"
+msgstr "Properties (Python)"
+
+#. (itstool) path: info/desc
+#: C/properties.py.page:14
+msgid "An explanation of properties, getters and setters."
+msgstr "Una explicación de propiedades, funciones de obtención y asignación."
+
+#. (itstool) path: page/title
+#: C/properties.py.page:27
+msgid "Properties"
+msgstr "Propiedades"
+
+#. (itstool) path: section/p
+#: C/properties.py.page:34
+msgid ""
+"<em>Properties</em> describe the configuration and state of widgets. Each "
+"widget has its own particular set of properties. For example, a widget such "
+"as a button has the property <code>label</code> which contains the text of "
+"the widget. You can specify the name and value of any number of properties "
+"as keyword arguments when creating an instance of a widget. For example, to "
+"create a label with the text “Hello World”, an angle of 25 degrees, and "
+"aligned to the right, you can use:"
+msgstr ""
+"Las <em>propiedades</em> describen la configuración y el estado de los "
+"widgets, y cada widget tiene su conjunto particular de propiedades. Por "
+"ejemplo, un widget como un botón o una etiqueta tiene la propiedad "
+"<code>label</code> que contiene el texto del widget. Puede especificar el "
+"nombre y el valor de cualquier número de propiedades como argumentos de "
+"palabras clave cuando cree una instancia de un widget: por ejemplo, para "
+"crear una etiqueta alineada a la derecha con el texto «Hello World» y un "
+"ángulo de 25 grados, puede usar:"
+
+#. (itstool) path: section/code
+#: C/properties.py.page:41
+#, no-wrap
+msgid ""
+"\n"
+"label = Gtk.Label(label=\"Hello World\", angle=25, halign=Gtk.Align.END)"
+msgstr ""
+"\n"
+"label = Gtk.Label(label=\"Hello World\", angle=25, halign=Gtk.Align.END)"
+
+#. (itstool) path: section/p
+#: C/properties.py.page:44
+msgid ""
+"Alternatively, you can define these properties separately by using the "
+"method associated with it."
+msgstr ""
+"Alternativamente, puede definir estas propiedades por separado usando el "
+"método asociado a ellas."
+
+#. (itstool) path: section/code
+#: C/properties.py.page:45
+#, no-wrap
+msgid ""
+"\n"
+"label = Gtk.Label()\n"
+"label.set_label(\"Hello World\")\n"
+"label.set_angle(25)\n"
+"label.set_halign(Gtk.Align.END)"
+msgstr ""
+"\n"
+"label = Gtk.Label()\n"
+"label.set_label(\"Hello World\")\n"
+"label.set_angle(25)\n"
+"label.set_halign(Gtk.Align.END)"
+
+#. (itstool) path: section/p
+#: C/properties.py.page:51
+msgid ""
+"Once you have created such a label, you can get the text of the label with "
+"<code>label.get_label()</code>, and analogously for the other properties."
+msgstr ""
+"Una vez que haya creado esta etiqueta, puede obtener su texto con "
+"<code>label.get_label()</code>, y análogamente para las otras propiedades."
+
+#. (itstool) path: section/p
+#: C/properties.py.page:53
+msgid ""
+"Instead of using getters and setters you can also get and set the properties "
+"with <code>get_property(<var>\"prop-name\"</var>)</code> and "
+"<code>set_property(<var>\"prop-name\"</var>, <var>value</var>)</code>, "
+"respectively."
+msgstr ""
+"En lugar de usar funciones de obtención y asignación, también puede obtener "
+"y establecer las propiedades con <code>get_property(<var>\"nombre-propiedad"
+"\"</var>)</code> y <code>set_property(\"<var>nombre-propiedad</var>\")</"
+"code>, respectivamente."
+
+#. (itstool) path: section/p
+#: C/properties.py.page:59
+msgid ""
+"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/basics."
+"html\">Basics - Properties</link> in Python GTK+ 3 Tutorial"
+msgstr ""
+"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/basics."
+"html\">Conceptos básicos sobre propiedades</link> en el tutorial de GTK+3 "
+"con Python"
+
+#. (itstool) path: info/title
+#: C/py.page:7
+msgctxt "link"
+msgid "Python"
+msgstr "Python"
+
+#. (itstool) path: page/title
+#: C/py.page:21
+msgid "Tutorials, code samples and platform demos in Python"
+msgstr ""
+"Tutoriales, ejemplos de código y demostraciones de la plataforma en Python"
+
+#. (itstool) path: section/title
+#. (itstool) path: page/title
+#: C/py.page:26 C/tutorial.py.page:31
+msgid "Tutorial for beginners"
+msgstr "Tutoriales para principiantes"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/radiobutton.c.page:25 C/radiobutton.py.page:24 C/radiobutton.vala.page:25
+msgctxt "_"
+msgid ""
+"external ref='media/radiobutton.png' md5='d115460280d8e41493dd98054b5822a5'"
+msgstr ""
+"external ref='media/radiobutton.png' md5='d115460280d8e41493dd98054b5822a5'"
+
+#. (itstool) path: info/title
+#: C/radiobutton.c.page:8
+msgctxt "text"
+msgid "RadioButton (C)"
+msgstr "RadioButton (C)"
+
+#. (itstool) path: info/desc
+#: C/radiobutton.c.page:20
+msgid "A choice from multiple checkbuttons"
+msgstr "Una elección desde varios «CheckButton»."
+
+#. (itstool) path: page/title
+#: C/radiobutton.c.page:23 C/radiobutton.js.page:21 C/radiobutton.py.page:23
+#: C/radiobutton.vala.page:24
+msgid "RadioButton"
+msgstr "RadioButton"
+
+#. (itstool) path: page/p
+#: C/radiobutton.c.page:26
+msgid "These radiobuttons report their activity in the terminal."
+msgstr "Estos RadioButton informan de su actividad en la terminal."
+
+#. (itstool) path: page/code
+#: C/radiobutton.c.page:28
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/*Signal handler for the \"toggled\" signal of the RadioButton*/\n"
+"static void\n"
+"button_toggled_cb (GtkWidget *button,\n"
+" gpointer user_data)\n"
+"{\n"
+" char *b_state;\n"
+" const char *button_label;\n"
+"\n"
+" if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))\n"
+" b_state = \"on\";\n"
+" else {\n"
+" b_state = \"off\";\n"
+" g_print (\"\\n\");\n"
+" }\n"
+"\n"
+" button_label = gtk_button_get_label (GTK_BUTTON (button));\n"
+"\n"
+" g_print (\"%s was turned %s\\n\", button_label, b_state);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *grid;\n"
+" GtkWidget *window;\n"
+"\n"
+" GtkWidget *button1;\n"
+" GtkWidget *button2;\n"
+" GtkWidget *button3;\n"
+"\n"
+" /*Create a window with a set title and default size.\n"
+" Also, set a border width for the amount of space to leave\n"
+" inside the window*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"RadioButton Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 250, 100);\n"
+" gtk_container_set_border_width (GTK_CONTAINER(window), 20);\n"
+"\n"
+"\n"
+" /*Create an initial radio button*/\n"
+" button1 = gtk_radio_button_new_with_label (NULL, \"Button 1\");\n"
+"\n"
+" /*Create a second radio button, and add it to the same group as Button 1*/\n"
+" button2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button1), \n"
+" \"Button 2\");\n"
+"\n"
+" /*Create a third button, and add it to the same group as Button 1*/\n"
+" button3 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button1), \n"
+" \"Button 3\");\n"
+"\n"
+"\n"
+" /*Create a grid, attach the buttons, and position them accordingly*/\n"
+" grid = gtk_grid_new ();\n"
+" gtk_grid_attach (GTK_GRID (grid), button1, 0, 0, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), button2, 0, 1, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), button3, 0, 2, 1, 1);\n"
+"\n"
+" /*Be sure to set the initial state of each button*/\n"
+" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button2), TRUE);\n"
+" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button1), FALSE);\n"
+" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button3), FALSE);\n"
+"\n"
+" /*Connect the signal handlers (aka Callback functions) to the buttons*/\n"
+" g_signal_connect (GTK_TOGGLE_BUTTON (button1), \"toggled\", \n"
+" G_CALLBACK (button_toggled_cb), window);\n"
+" g_signal_connect (GTK_TOGGLE_BUTTON (button2), \"toggled\", \n"
+" G_CALLBACK (button_toggled_cb), window);\n"
+" g_signal_connect (GTK_TOGGLE_BUTTON (button3), \"toggled\", \n"
+" G_CALLBACK (button_toggled_cb), window);\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/*Signal handler for the \"toggled\" signal of the RadioButton*/\n"
+"static void\n"
+"button_toggled_cb (GtkWidget *button,\n"
+" gpointer user_data)\n"
+"{\n"
+" char *b_state;\n"
+" const char *button_label;\n"
+"\n"
+" if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))\n"
+" b_state = \"on\";\n"
+" else {\n"
+" b_state = \"off\";\n"
+" g_print (\"\\n\");\n"
+" }\n"
+"\n"
+" button_label = gtk_button_get_label (GTK_BUTTON (button));\n"
+"\n"
+" g_print (\"%s was turned %s\\n\", button_label, b_state);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *grid;\n"
+" GtkWidget *window;\n"
+"\n"
+" GtkWidget *button1;\n"
+" GtkWidget *button2;\n"
+" GtkWidget *button3;\n"
+"\n"
+" /*Create a window with a set title and default size.\n"
+" Also, set a border width for the amount of space to leave\n"
+" inside the window*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"RadioButton Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 250, 100);\n"
+" gtk_container_set_border_width (GTK_CONTAINER(window), 20);\n"
+"\n"
+"\n"
+" /*Create an initial radio button*/\n"
+" button1 = gtk_radio_button_new_with_label (NULL, \"Button 1\");\n"
+"\n"
+" /*Create a second radio button, and add it to the same group as Button 1*/\n"
+" button2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button1), \n"
+" \"Button 2\");\n"
+"\n"
+" /*Create a third button, and add it to the same group as Button 1*/\n"
+" button3 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button1), \n"
+" \"Button 3\");\n"
+"\n"
+"\n"
+" /*Create a grid, attach the buttons, and position them accordingly*/\n"
+" grid = gtk_grid_new ();\n"
+" gtk_grid_attach (GTK_GRID (grid), button1, 0, 0, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), button2, 0, 1, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), button3, 0, 2, 1, 1);\n"
+"\n"
+" /*Be sure to set the initial state of each button*/\n"
+" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button2), TRUE);\n"
+" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button1), FALSE);\n"
+" gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button3), FALSE);\n"
+"\n"
+" /*Connect the signal handlers (aka Callback functions) to the buttons*/\n"
+" g_signal_connect (GTK_TOGGLE_BUTTON (button1), \"toggled\", \n"
+" G_CALLBACK (button_toggled_cb), window);\n"
+" g_signal_connect (GTK_TOGGLE_BUTTON (button2), \"toggled\", \n"
+" G_CALLBACK (button_toggled_cb), window);\n"
+" g_signal_connect (GTK_TOGGLE_BUTTON (button3), \"toggled\", \n"
+" G_CALLBACK (button_toggled_cb), window);\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/radiobutton.c.page:38 C/switch.c.page:36
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkSwitch.html"
+"\">GtkSwitch</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkSwitch.html"
+"\">GtkSwitch</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/radiobutton.js.page:22
+msgctxt "_"
+msgid ""
+"external ref='media/radiobuttontravel.png' "
+"md5='0c5f01ee160bb42716ccf5dccbd080c0'"
+msgstr ""
+"external ref='media/radiobuttontravel.png' "
+"md5='0c5f01ee160bb42716ccf5dccbd080c0'"
+
+#. (itstool) path: info/title
+#: C/radiobutton.js.page:8
+msgctxt "text"
+msgid "RadioButton (JavaScript)"
+msgstr "RadioButton (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/radiobutton.js.page:18
+msgid "Only one can be selected at a time"
+msgstr "Sólo se puede seleccionar uno a la vez"
+
+#. (itstool) path: page/p
+#: C/radiobutton.js.page:23
+msgid ""
+"RadioButtons are named after old-style car radios, which had buttons for "
+"switching between channel presets. Because the radio could only be tuned to "
+"one station at a time, only one button could be pressed in at a time; if you "
+"pressed a new one, the one that was already pressed in would pop back out. "
+"That's how these buttons work, too."
+msgstr ""
+"Los botones de radio se llaman así por las radios de los coches viejos, que "
+"tenían botones para alternar entre canales programados. Dado que la radio "
+"sólo podía sintonizar una estación a la vez, sólo se podía apretar un botón "
+"por vez; si presionaba uno nuevo, el que ya estaba presionado saltaba. Así "
+"es como estos botones funcionan."
+
+#. (itstool) path: page/p
+#: C/radiobutton.js.page:24
+msgid ""
+"Each RadioButton needs a text label and a group. Only one button in a group "
+"can be selected at a time. You don't name each group; you just set new "
+"RadioButtons to be part of the same group as an existing one. If you create "
+"a new one outside of a group, it automatically creates a new group for it to "
+"be part of."
+msgstr ""
+"Cada botón de radio necesita una etiqueta de texto y un grupo. Sólo se puede "
+"seleccionar un botón de cada grupo por vez. No necesita nombrar cada grupo; "
+"sólo configure varios botones de radio para que sean parte del mismo grupo "
+"que otro existente. Si crea uno nuevo fuera de un grupo, automáticamente "
+"crea un grupo nuevo para que forme parte."
+
+#. (itstool) path: section/code
+#: C/radiobutton.js.page:41
+#, no-wrap
+msgid ""
+"\n"
+"const RadioButtonExample = new Lang.Class({\n"
+" Name: 'RadioButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsradiobutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+"const RadioButtonExample = new Lang.Class({\n"
+" Name: 'RadioButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsradiobutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/radiobutton.js.page:67 C/togglebutton.js.page:67
+msgid ""
+"All the code for this sample goes in the RadioButtonExample class. The above "
+"code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> for our widgets and window to "
+"go in."
+msgstr ""
+"Todo el código de este ejemplo va en la clase RadioButtonExample. El código "
+"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> para que vayan los widgets y "
+"la ventana."
+
+#. (itstool) path: section/code
+#: C/radiobutton.js.page:68
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Travel Planning\"});\n"
+msgstr ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Travel Planning\"});\n"
+
+#. (itstool) path: section/title
+#: C/radiobutton.js.page:83
+msgid "Creating the radiobuttons"
+msgstr "Crear los botones de radio"
+
+#. (itstool) path: section/code
+#: C/radiobutton.js.page:84
+#, no-wrap
+msgid ""
+"\n"
+" // Create a label for the first group of buttons\n"
+" this._placeLabel = new Gtk.Label ({label: \"Where would you like to travel to?\"});\n"
+msgstr ""
+"\n"
+" // Create a label for the first group of buttons\n"
+" this._placeLabel = new Gtk.Label ({label: \"Where would you like to travel to?\"});\n"
+
+#. (itstool) path: section/p
+#: C/radiobutton.js.page:89
+msgid ""
+"We use a <link xref=\"label.js\">Gtk.Label</link> to set each group of "
+"RadioButtons apart. Nothing will stop you from putting RadioButtons from all "
+"different groups wherever you want, so if you want people to know which ones "
+"go together you need to organize things accordingly."
+msgstr ""
+"Se usa una <link xref=\"label.js\">Gtk.Label</link> para diferenciar cada "
+"grupo de botones de radio. Nada le impedirá poner botones de radio de grupos "
+"diferentes donde quiera, así que si quiere que la gente sepa cuáles van "
+"juntos, necesita ordenar las cosas adecuadamente."
+
+#. (itstool) path: section/code
+#: C/radiobutton.js.page:91
+#, no-wrap
+msgid ""
+"\n"
+" // Create three radio buttons three different ways\n"
+" this._place1 = new Gtk.RadioButton ({label: \"The Beach\"});\n"
+"\n"
+" this._place2 = Gtk.RadioButton.new_from_widget (this._place1);\n"
+" this._place2.set_label (\"The Moon\");\n"
+"\n"
+" this._place3 = Gtk.RadioButton.new_with_label_from_widget (this._place1, \"Antarctica\");\n"
+" // this._place3.set_active (true);\n"
+msgstr ""
+"\n"
+" // Create three radio buttons three different ways\n"
+" this._place1 = new Gtk.RadioButton ({label: \"The Beach\"});\n"
+"\n"
+" this._place2 = Gtk.RadioButton.new_from_widget (this._place1);\n"
+" this._place2.set_label (\"The Moon\");\n"
+"\n"
+" this._place3 = Gtk.RadioButton.new_with_label_from_widget (this._place1, \"Antarctica\");\n"
+" // this._place3.set_active (true);\n"
+
+#. (itstool) path: section/p
+#: C/radiobutton.js.page:102
+msgid ""
+"Here are three different ways to create RadioButtons. The first is the usual "
+"way, where we create a new Gtk.RadioButton and assign its properties at the "
+"same time. The second and third use functions which automatically handle "
+"some of the properties; new_from_widget takes a single argument, the "
+"RadioButton that you want to put this new one in the same group as. "
+"Meanwhile, new_with_label_from_widget takes that and the RadioButton's label "
+"at the same time."
+msgstr ""
+"Aquí hay tres maneras diferentes de crear botones de radio. La primera es la "
+"manera común, donde se crea un «Gtk.RadioButton» nuevo y se le asignan sus "
+"propiedades al mismo tiempo. La segunda y la tercera usan funciones que "
+"manejan algunas de sus propiedades automáticamente; «new_from_widget» toma "
+"un solo argumento, un botón de radio del mismo grupo en el que quiere poner "
+"el nuevo. «new_with_label_from_widget», además, toma eso y la etiqueta del "
+"botón de radio al mismo tiempo."
+
+#. (itstool) path: section/p
+#: C/radiobutton.js.page:103
+msgid ""
+"The first RadioButton in a group is the one that's selected by default. Try "
+"uncommenting the last line in this sample code to see how you can set a "
+"different one to be the default selection."
+msgstr ""
+"El primer botón de radio en un grupo es el que está seleccionado de manera "
+"predeterminada. Pruebe a descomentar la última línea en este código de "
+"ejemplo para ver cómo puede configurar uno diferente para que sea la "
+"selección predeterminada."
+
+#. (itstool) path: section/code
+#: C/radiobutton.js.page:105
+#, no-wrap
+msgid ""
+"\n"
+" // Create a label for the second group of buttons\n"
+" this._thingLabel = new Gtk.Label ({label: \"And what would you like to bring?\" });\n"
+"\n"
+" // Create three more radio buttons\n"
+" this._thing1 = new Gtk.RadioButton ({label: \"Penguins\" });\n"
+" this._thing2 = new Gtk.RadioButton ({label: \"Sunscreen\", group: this._thing1 });\n"
+" this._thing3 = new Gtk.RadioButton ({label: \"A spacesuit\", group: this._thing1 });\n"
+msgstr ""
+"\n"
+" // Create a label for the second group of buttons\n"
+" this._thingLabel = new Gtk.Label ({label: \"And what would you like to bring?\" });\n"
+"\n"
+" // Create three more radio buttons\n"
+" this._thing1 = new Gtk.RadioButton ({label: \"Penguins\" });\n"
+" this._thing2 = new Gtk.RadioButton ({label: \"Sunscreen\", group: this._thing1 });\n"
+" this._thing3 = new Gtk.RadioButton ({label: \"A spacesuit\", group: this._thing1 });\n"
+
+#. (itstool) path: section/p
+#: C/radiobutton.js.page:114
+msgid ""
+"Here we create the label for the second group of buttons, and then create "
+"them all the same way."
+msgstr ""
+"Aquí se crea la etiqueta para el segundo grupo de botones, y después se "
+"crean todos de la misma manera."
+
+#. (itstool) path: section/title
+#: C/radiobutton.js.page:118 C/textview.js.page:132
+msgid "Creating the rest of the user interface"
+msgstr "Crear el resto de la interfaz de usuario"
+
+#. (itstool) path: section/code
+#: C/radiobutton.js.page:120
+#, no-wrap
+msgid ""
+"\n"
+" // Create a stock OK button\n"
+" this._okButton = new Gtk.Button ({\n"
+" label: 'gtk-ok',\n"
+" use_stock: 'true',\n"
+" halign: Gtk.Align.END });\n"
+"\n"
+" // Connect the button to the function which handles clicking it\n"
+" this._okButton.connect ('clicked', Lang.bind (this, this._okClicked));\n"
+msgstr ""
+"\n"
+" // Create a stock OK button\n"
+" this._okButton = new Gtk.Button ({\n"
+" label: 'gtk-ok',\n"
+" use_stock: 'true',\n"
+" halign: Gtk.Align.END });\n"
+"\n"
+" // Connect the button to the function which handles clicking it\n"
+" this._okButton.connect ('clicked', Lang.bind (this, this._okClicked));\n"
+
+#. (itstool) path: section/p
+#: C/radiobutton.js.page:130
+msgid ""
+"This code creates a <link xref=\"button.js\">Gtk.Button</link> and binds it "
+"to a function which will show people a silly message when they click OK, "
+"depending on which RadioButtons were selected."
+msgstr ""
+"Este código crea un <link xref=\"button.js\">Gtk.Button</link> y lo enlaza a "
+"una función que mostrará un mensaje tonto cuando pulse «OK», dependiendo de "
+"qué botones de radio se seleccionaron."
+
+#. (itstool) path: section/p
+#: C/radiobutton.js.page:131
+msgid ""
+"To make sure the button's \"OK\" label shows up properly in every language "
+"that GNOME is translated into, remember to use one of Gtk's <link href="
+"\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html\">stock button "
+"types</link>."
+msgstr ""
+"Para asegurarse de que la etiqueta «OK» del botón se muestra correctamente "
+"en cada idioma al que se traduce GNOME, recuerde usar uno de los <link href="
+"\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html\">tipos de "
+"botón del almacén</link> de GTK+."
+
+#. (itstool) path: section/code
+#: C/radiobutton.js.page:133
+#, no-wrap
+msgid ""
+"\n"
+" // Create a grid to put the \"place\" items in\n"
+" this._places = new Gtk.Grid ();\n"
+"\n"
+" // Attach the \"place\" items to the grid\n"
+" this._places.attach (this._placeLabel, 0, 0, 1, 1);\n"
+" this._places.attach (this._place1, 0, 1, 1, 1);\n"
+" this._places.attach (this._place2, 0, 2, 1, 1);\n"
+" this._places.attach (this._place3, 0, 3, 1, 1);\n"
+"\n"
+" // Create a grid to put the \"thing\" items in\n"
+" this._things = new Gtk.Grid ({ margin_top: 50 });\n"
+"\n"
+" // Attach the \"thing\" items to the grid\n"
+" this._things.attach (this._thingLabel, 0, 0, 1, 1);\n"
+" this._things.attach (this._thing1, 0, 1, 1, 1);\n"
+" this._things.attach (this._thing2, 0, 2, 1, 1);\n"
+" this._things.attach (this._thing3, 0, 3, 1, 1);\n"
+"\n"
+" // Create a grid to put everything in\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_left: 40,\n"
+" margin_right: 50 });\n"
+"\n"
+" // Attach everything to the grid\n"
+" this._grid.attach (this._places, 0, 0, 1, 1);\n"
+" this._grid.attach (this._things, 0, 1, 1, 1);\n"
+" this._grid.attach (this._okButton, 0, 2, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+msgstr ""
+"\n"
+" // Create a grid to put the \"place\" items in\n"
+" this._places = new Gtk.Grid ();\n"
+"\n"
+" // Attach the \"place\" items to the grid\n"
+" this._places.attach (this._placeLabel, 0, 0, 1, 1);\n"
+" this._places.attach (this._place1, 0, 1, 1, 1);\n"
+" this._places.attach (this._place2, 0, 2, 1, 1);\n"
+" this._places.attach (this._place3, 0, 3, 1, 1);\n"
+"\n"
+" // Create a grid to put the \"thing\" items in\n"
+" this._things = new Gtk.Grid ({ margin_top: 50 });\n"
+"\n"
+" // Attach the \"thing\" items to the grid\n"
+" this._things.attach (this._thingLabel, 0, 0, 1, 1);\n"
+" this._things.attach (this._thing1, 0, 1, 1, 1);\n"
+" this._things.attach (this._thing2, 0, 2, 1, 1);\n"
+" this._things.attach (this._thing3, 0, 3, 1, 1);\n"
+"\n"
+" // Create a grid to put everything in\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_left: 40,\n"
+" margin_right: 50 });\n"
+"\n"
+" // Attach everything to the grid\n"
+" this._grid.attach (this._places, 0, 0, 1, 1);\n"
+" this._grid.attach (this._things, 0, 1, 1, 1);\n"
+" this._grid.attach (this._okButton, 0, 2, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+
+#. (itstool) path: section/p
+#: C/radiobutton.js.page:167
+msgid ""
+"We use a separate <link xref=\"grid.js\">Gtk.Grid</link> to organize each "
+"group of radio buttons. This way we can change the layout with less fuss "
+"later on. The second Grid has a margin on top, to visually separate the two "
+"sets of choices."
+msgstr ""
+"Se usa una <link xref=\"grid.js\">Gtk.Grid</link> separada para organizar "
+"cada grupo de botones de radio. De esta manera se puede cambiar la "
+"distribución sin liarse más adelante. La segunda rejilla tiene un margen en "
+"la parte superior, para separar visualmente los dos conjuntos de opciones."
+
+#. (itstool) path: section/p
+#: C/radiobutton.js.page:168
+msgid ""
+"After we've organized them, we put them into a third, master Grid, along "
+"with the OK button. Then we attach that to the window."
+msgstr ""
+"Después de haberlos organizado, se ponen en una tercera rejilla maestra, "
+"junto con el botón «OK». Luego se adjuntan a la ventana."
+
+#. (itstool) path: section/p
+#: C/radiobutton.js.page:176
+msgid ""
+"Finally, we tell the window and everything inside it to become visible when "
+"the application is run."
+msgstr ""
+"Finalmente, se le dice a la ventana y a todo dentro que se vuelva visible "
+"cuando se ejecute la aplicación."
+
+#. (itstool) path: section/code
+#: C/radiobutton.js.page:182
+#, no-wrap
+msgid ""
+"\n"
+" _okClicked: function () {\n"
+"\n"
+" // Create a popup that shows a silly message\n"
+" this._travel = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" message_type: Gtk.MessageType.OTHER,\n"
+" buttons: Gtk.ButtonsType.OK,\n"
+" text: this._messageText() });\n"
+"\n"
+" // Show the popup\n"
+" this._travel.show();\n"
+"\n"
+" // Bind the OK button to the function that closes the popup\n"
+" this._travel.connect (\"response\", Lang.bind (this, this._clearTravelPopUp));\n"
+"\n"
+" },\n"
+msgstr ""
+"\n"
+" _okClicked: function () {\n"
+"\n"
+" // Create a popup that shows a silly message\n"
+" this._travel = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" message_type: Gtk.MessageType.OTHER,\n"
+" buttons: Gtk.ButtonsType.OK,\n"
+" text: this._messageText() });\n"
+"\n"
+" // Show the popup\n"
+" this._travel.show();\n"
+"\n"
+" // Bind the OK button to the function that closes the popup\n"
+" this._travel.connect (\"response\", Lang.bind (this, this._clearTravelPopUp));\n"
+"\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/radiobutton.js.page:201
+msgid ""
+"When you click OK, a <link xref=\"messagedialog.js\">Gtk.MessageDialog</"
+"link> appears. This function creates and displays the popup window, then "
+"binds its OK button to a function that closes it. What text appears in the "
+"popup depends on the _messageText() function, which returns a different "
+"value depending on which set of options you chose."
+msgstr ""
+"Cuando pulsa «OK», aparece un <link xref=\"messagedialog.js\">Gtk."
+"MessageDialog</link>. Esta función crea y muestra la ventana emergente, "
+"después enlaza su botón «OK» a una función que la cierra. Qué texto aparece "
+"en el mensaje emergente depende de la función «_messageText()», que devuelve "
+"un valor diferente dependiendo de qué conjunto de opciones elija."
+
+#. (itstool) path: section/code
+#: C/radiobutton.js.page:203
+#, no-wrap
+msgid ""
+"\n"
+" _messageText: function() {\n"
+"\n"
+" // Create a silly message for the popup depending on what you selected\n"
+" var stringMessage = \"\";\n"
+"\n"
+" if (this._place1.get_active()) {\n"
+"\n"
+" if (this._thing1.get_active())\n"
+" stringMessage = \"Penguins love the beach, too!\";\n"
+"\n"
+" else if (this._thing2.get_active())\n"
+" stringMessage = \"Make sure to put on that sunscreen!\";\n"
+"\n"
+" else stringMessage = \"Are you going to the beach in space?\";\n"
+"\n"
+" }\n"
+"\n"
+" else if (this._place2.get_active()) {\n"
+"\n"
+" if (this._thing1.get_active())\n"
+" stringMessage = \"The penguins will take over the moon!\";\n"
+"\n"
+" else if (this._thing2.get_active())\n"
+" stringMessage = \"A lack of sunscreen will be the least of your problems!\";\n"
+"\n"
+" else stringMessage = \"You'll probably want a spaceship, too!\";\n"
+" }\n"
+"\n"
+" else if (this._place3.get_active()) {\n"
+"\n"
+" if (this._thing1.get_active())\n"
+" stringMessage = \"The penguins will be happy to be back home!\";\n"
+"\n"
+" else if (this._thing2.get_active())\n"
+" stringMessage = \"Antarctic sunbathing may be hazardous to your health!\";\n"
+"\n"
+" else stringMessage = \"Try bringing a parka instead!\";\n"
+" }\n"
+"\n"
+" return stringMessage;\n"
+"\n"
+" },\n"
+msgstr ""
+"\n"
+" _messageText: function() {\n"
+"\n"
+" // Create a silly message for the popup depending on what you selected\n"
+" var stringMessage = \"\";\n"
+"\n"
+" if (this._place1.get_active()) {\n"
+"\n"
+" if (this._thing1.get_active())\n"
+" stringMessage = \"Penguins love the beach, too!\";\n"
+"\n"
+" else if (this._thing2.get_active())\n"
+" stringMessage = \"Make sure to put on that sunscreen!\";\n"
+"\n"
+" else stringMessage = \"Are you going to the beach in space?\";\n"
+"\n"
+" }\n"
+"\n"
+" else if (this._place2.get_active()) {\n"
+"\n"
+" if (this._thing1.get_active())\n"
+" stringMessage = \"The penguins will take over the moon!\";\n"
+"\n"
+" else if (this._thing2.get_active())\n"
+" stringMessage = \"A lack of sunscreen will be the least of your problems!\";\n"
+"\n"
+" else stringMessage = \"You'll probably want a spaceship, too!\";\n"
+" }\n"
+"\n"
+" else if (this._place3.get_active()) {\n"
+"\n"
+" if (this._thing1.get_active())\n"
+" stringMessage = \"The penguins will be happy to be back home!\";\n"
+"\n"
+" else if (this._thing2.get_active())\n"
+" stringMessage = \"Antarctic sunbathing may be hazardous to your health!\";\n"
+"\n"
+" else stringMessage = \"Try bringing a parka instead!\";\n"
+" }\n"
+"\n"
+" return stringMessage;\n"
+"\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/radiobutton.js.page:247
+msgid ""
+"The get_active() method is how we can tell which RadioButton's pressed in. "
+"This function returns a different silly message depending on which set of "
+"buttons was pressed. Its return value is used as the MessageDialog's text "
+"property."
+msgstr ""
+"El método «get_active()» indica qué botón de radio está presionado. Esta "
+"función devuelve un mensaje tonto diferente dependiendo de qué conjunto de "
+"botones se presionó. Su valor de retorno se usa como propiedad «text» del "
+"«MessageDialog»."
+
+#. (itstool) path: section/code
+#: C/radiobutton.js.page:249
+#, no-wrap
+msgid ""
+"\n"
+" _clearTravelPopUp: function () {\n"
+"\n"
+" this._travel.destroy();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+msgstr ""
+"\n"
+" _clearTravelPopUp: function () {\n"
+"\n"
+" this._travel.destroy();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+
+#. (itstool) path: section/p
+#: C/radiobutton.js.page:258
+msgid ""
+"This function is called when the MessageDialog's OK button is pressed. It "
+"simply makes the popup go away."
+msgstr ""
+"Esta función se llama cuando se presiona el botón «OK» del «MessageDialog». "
+"Simplemente hace desaparecer el diálogo emergente."
+
+#. (itstool) path: section/code
+#: C/radiobutton.js.page:260
+#, no-wrap
+msgid ""
+"\n"
+"// Run the application\n"
+"let app = new RadioButtonExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"// Run the application\n"
+"let app = new RadioButtonExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/p
+#: C/radiobutton.js.page:265 C/togglebutton.js.page:144
+msgid ""
+"Finally, we create a new instance of the finished RadioButtonExample class, "
+"and set the application running."
+msgstr ""
+"Finalmente, se crea una instancia nueva de la clase RadioButtonExample "
+"terminada, y se ejecuta la aplicación."
+
+#. (itstool) path: section/code
+#: C/radiobutton.js.page:270
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const RadioButtonExample = new Lang.Class({\n"
+" Name: 'RadioButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsradiobutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Travel Planning\"});\n"
+"\n"
+" // Create a label for the first group of buttons\n"
+" this._placeLabel = new Gtk.Label ({label: \"Where would you like to travel to?\"});\n"
+"\n"
+" // Create three radio buttons three different ways\n"
+" this._place1 = new Gtk.RadioButton ({label: \"The Beach\"});\n"
+"\n"
+" this._place2 = Gtk.RadioButton.new_from_widget (this._place1);\n"
+" this._place2.set_label (\"The Moon\");\n"
+"\n"
+" this._place3 = Gtk.RadioButton.new_with_label_from_widget (this._place1, \"Antarctica\");\n"
+" // this._place3.set_active (true);\n"
+"\n"
+" // Create a label for the second group of buttons\n"
+" this._thingLabel = new Gtk.Label ({label: \"And what would you like to bring?\" });\n"
+"\n"
+" // Create three more radio buttons\n"
+" this._thing1 = new Gtk.RadioButton ({label: \"Penguins\" });\n"
+" this._thing2 = new Gtk.RadioButton ({label: \"Sunscreen\", group: this._thing1 });\n"
+" this._thing3 = new Gtk.RadioButton ({label: \"A spacesuit\", group: this._thing1 });\n"
+"\n"
+" // Create a stock OK button\n"
+" this._okButton = new Gtk.Button ({\n"
+" label: 'gtk-ok',\n"
+" use_stock: 'true',\n"
+" halign: Gtk.Align.END });\n"
+"\n"
+" // Connect the button to the function which handles clicking it\n"
+" this._okButton.connect ('clicked', Lang.bind (this, this._okClicked));\n"
+"\n"
+" // Create a grid to put the \"place\" items in\n"
+" this._places = new Gtk.Grid ();\n"
+"\n"
+" // Attach the \"place\" items to the grid\n"
+" this._places.attach (this._placeLabel, 0, 0, 1, 1);\n"
+" this._places.attach (this._place1, 0, 1, 1, 1);\n"
+" this._places.attach (this._place2, 0, 2, 1, 1);\n"
+" this._places.attach (this._place3, 0, 3, 1, 1);\n"
+"\n"
+" // Create a grid to put the \"thing\" items in\n"
+" this._things = new Gtk.Grid ({ margin_top: 50 });\n"
+"\n"
+" // Attach the \"thing\" items to the grid\n"
+" this._things.attach (this._thingLabel, 0, 0, 1, 1);\n"
+" this._things.attach (this._thing1, 0, 1, 1, 1);\n"
+" this._things.attach (this._thing2, 0, 2, 1, 1);\n"
+" this._things.attach (this._thing3, 0, 3, 1, 1);\n"
+"\n"
+" // Create a grid to put everything in\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_left: 40,\n"
+" margin_right: 50 });\n"
+"\n"
+" // Attach everything to the grid\n"
+" this._grid.attach (this._places, 0, 0, 1, 1);\n"
+" this._grid.attach (this._things, 0, 1, 1, 1);\n"
+" this._grid.attach (this._okButton, 0, 2, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _okClicked: function () {\n"
+"\n"
+" // Create a popup that shows a silly message\n"
+" this._travel = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" message_type: Gtk.MessageType.OTHER,\n"
+" buttons: Gtk.ButtonsType.OK,\n"
+" text: this._messageText() });\n"
+"\n"
+" // Show the popup\n"
+" this._travel.show();\n"
+"\n"
+" // Bind the OK button to the function that closes the popup\n"
+" this._travel.connect (\"response\", Lang.bind (this, this._clearTravelPopUp));\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _messageText: function() {\n"
+"\n"
+" // Create a silly message for the popup depending on what you selected\n"
+" var stringMessage = \"\";\n"
+"\n"
+" if (this._place1.get_active()) {\n"
+"\n"
+" if (this._thing1.get_active())\n"
+" stringMessage = \"Penguins love the beach, too!\";\n"
+"\n"
+" else if (this._thing2.get_active())\n"
+" stringMessage = \"Make sure to put on that sunscreen!\";\n"
+"\n"
+" else stringMessage = \"Are you going to the beach in space?\";\n"
+"\n"
+" }\n"
+"\n"
+" else if (this._place2.get_active()) {\n"
+"\n"
+" if (this._thing1.get_active())\n"
+" stringMessage = \"The penguins will take over the moon!\";\n"
+"\n"
+" else if (this._thing2.get_active())\n"
+" stringMessage = \"A lack of sunscreen will be the least of your problems!\";\n"
+"\n"
+" else stringMessage = \"You'll probably want a spaceship, too!\";\n"
+" }\n"
+"\n"
+" else if (this._place3.get_active()) {\n"
+"\n"
+" if (this._thing1.get_active())\n"
+" stringMessage = \"The penguins will be happy to be back home!\";\n"
+"\n"
+" else if (this._thing2.get_active())\n"
+" stringMessage = \"Antarctic sunbathing may be hazardous to your health!\";\n"
+"\n"
+" else stringMessage = \"Try bringing a parka instead!\";\n"
+" }\n"
+"\n"
+" return stringMessage;\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+"\n"
+" _clearTravelPopUp: function () {\n"
+"\n"
+" this._travel.destroy();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new RadioButtonExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const RadioButtonExample = new Lang.Class({\n"
+" Name: 'RadioButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsradiobutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Travel Planning\"});\n"
+"\n"
+" // Create a label for the first group of buttons\n"
+" this._placeLabel = new Gtk.Label ({label: \"Where would you like to travel to?\"});\n"
+"\n"
+" // Create three radio buttons three different ways\n"
+" this._place1 = new Gtk.RadioButton ({label: \"The Beach\"});\n"
+"\n"
+" this._place2 = Gtk.RadioButton.new_from_widget (this._place1);\n"
+" this._place2.set_label (\"The Moon\");\n"
+"\n"
+" this._place3 = Gtk.RadioButton.new_with_label_from_widget (this._place1, \"Antarctica\");\n"
+" // this._place3.set_active (true);\n"
+"\n"
+" // Create a label for the second group of buttons\n"
+" this._thingLabel = new Gtk.Label ({label: \"And what would you like to bring?\" });\n"
+"\n"
+" // Create three more radio buttons\n"
+" this._thing1 = new Gtk.RadioButton ({label: \"Penguins\" });\n"
+" this._thing2 = new Gtk.RadioButton ({label: \"Sunscreen\", group: this._thing1 });\n"
+" this._thing3 = new Gtk.RadioButton ({label: \"A spacesuit\", group: this._thing1 });\n"
+"\n"
+" // Create a stock OK button\n"
+" this._okButton = new Gtk.Button ({\n"
+" label: 'gtk-ok',\n"
+" use_stock: 'true',\n"
+" halign: Gtk.Align.END });\n"
+"\n"
+" // Connect the button to the function which handles clicking it\n"
+" this._okButton.connect ('clicked', Lang.bind (this, this._okClicked));\n"
+"\n"
+" // Create a grid to put the \"place\" items in\n"
+" this._places = new Gtk.Grid ();\n"
+"\n"
+" // Attach the \"place\" items to the grid\n"
+" this._places.attach (this._placeLabel, 0, 0, 1, 1);\n"
+" this._places.attach (this._place1, 0, 1, 1, 1);\n"
+" this._places.attach (this._place2, 0, 2, 1, 1);\n"
+" this._places.attach (this._place3, 0, 3, 1, 1);\n"
+"\n"
+" // Create a grid to put the \"thing\" items in\n"
+" this._things = new Gtk.Grid ({ margin_top: 50 });\n"
+"\n"
+" // Attach the \"thing\" items to the grid\n"
+" this._things.attach (this._thingLabel, 0, 0, 1, 1);\n"
+" this._things.attach (this._thing1, 0, 1, 1, 1);\n"
+" this._things.attach (this._thing2, 0, 2, 1, 1);\n"
+" this._things.attach (this._thing3, 0, 3, 1, 1);\n"
+"\n"
+" // Create a grid to put everything in\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_left: 40,\n"
+" margin_right: 50 });\n"
+"\n"
+" // Attach everything to the grid\n"
+" this._grid.attach (this._places, 0, 0, 1, 1);\n"
+" this._grid.attach (this._things, 0, 1, 1, 1);\n"
+" this._grid.attach (this._okButton, 0, 2, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _okClicked: function () {\n"
+"\n"
+" // Create a popup that shows a silly message\n"
+" this._travel = new Gtk.MessageDialog ({\n"
+" transient_for: this._window,\n"
+" modal: true,\n"
+" message_type: Gtk.MessageType.OTHER,\n"
+" buttons: Gtk.ButtonsType.OK,\n"
+" text: this._messageText() });\n"
+"\n"
+" // Show the popup\n"
+" this._travel.show();\n"
+"\n"
+" // Bind the OK button to the function that closes the popup\n"
+" this._travel.connect (\"response\", Lang.bind (this, this._clearTravelPopUp));\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _messageText: function() {\n"
+"\n"
+" // Create a silly message for the popup depending on what you selected\n"
+" var stringMessage = \"\";\n"
+"\n"
+" if (this._place1.get_active()) {\n"
+"\n"
+" if (this._thing1.get_active())\n"
+" stringMessage = \"Penguins love the beach, too!\";\n"
+"\n"
+" else if (this._thing2.get_active())\n"
+" stringMessage = \"Make sure to put on that sunscreen!\";\n"
+"\n"
+" else stringMessage = \"Are you going to the beach in space?\";\n"
+"\n"
+" }\n"
+"\n"
+" else if (this._place2.get_active()) {\n"
+"\n"
+" if (this._thing1.get_active())\n"
+" stringMessage = \"The penguins will take over the moon!\";\n"
+"\n"
+" else if (this._thing2.get_active())\n"
+" stringMessage = \"A lack of sunscreen will be the least of your problems!\";\n"
+"\n"
+" else stringMessage = \"You'll probably want a spaceship, too!\";\n"
+" }\n"
+"\n"
+" else if (this._place3.get_active()) {\n"
+"\n"
+" if (this._thing1.get_active())\n"
+" stringMessage = \"The penguins will be happy to be back home!\";\n"
+"\n"
+" else if (this._thing2.get_active())\n"
+" stringMessage = \"Antarctic sunbathing may be hazardous to your health!\";\n"
+"\n"
+" else stringMessage = \"Try bringing a parka instead!\";\n"
+" }\n"
+"\n"
+" return stringMessage;\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+"\n"
+" _clearTravelPopUp: function () {\n"
+"\n"
+" this._travel.destroy();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new RadioButtonExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/radiobutton.js.page:278 C/statusbar.js.page:225 C/textview.js.page:252
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html"
+"\">Gtk.Button</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html"
+"\">Gtk.Button</link>"
+
+#. (itstool) path: item/p
+#: C/radiobutton.js.page:279 C/scale.js.page:213 C/spinbutton.js.page:204
+#: C/switch.js.page:270 C/textview.js.page:253 C/togglebutton.js.page:157
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html"
+"\">Gtk.Grid</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html"
+"\">Gtk.Grid</link>"
+
+#. (itstool) path: item/p
+#: C/radiobutton.js.page:280 C/scale.js.page:214 C/spinbutton.js.page:205
+#: C/switch.js.page:272 C/textview.js.page:254
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Label.html"
+"\">Gtk.Label</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Label.html"
+"\">Gtk.Label</link>"
+
+#. (itstool) path: item/p
+#: C/radiobutton.js.page:281 C/textview.js.page:255
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.RadioButton."
+"html\">Gtk.RadioButton</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.RadioButton."
+"html\">Gtk.RadioButton</link>"
+
+#. (itstool) path: info/title
+#: C/radiobutton.py.page:8
+msgctxt "text"
+msgid "RadioButton (Python)"
+msgstr "RadioButton (Python)"
+
+#. (itstool) path: info/desc
+#: C/radiobutton.py.page:20
+msgid "Mutually exclusive buttons."
+msgstr "Botones mutuamente excluyentes."
+
+#. (itstool) path: page/p
+#: C/radiobutton.py.page:25
+msgid ""
+"Three RadioButtons. You can see in the terminal if they are turned off or on."
+msgstr "Tres «RadioButton». Puede ver en la terminal si están activados o no."
+
+#. (itstool) path: section/code
+#: C/radiobutton.py.page:31
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"RadioButton Example\", application=app)\n"
+" self.set_default_size(250, 100)\n"
+" self.set_border_width(20)\n"
+"\n"
+" # a new radiobutton with a label\n"
+" button1 = Gtk.RadioButton(label=\"Button 1\")\n"
+" # connect the signal \"toggled\" emitted by the radiobutton\n"
+" # with the callback function toggled_cb\n"
+" button1.connect(\"toggled\", self.toggled_cb)\n"
+"\n"
+" # another radiobutton, in the same group as button1\n"
+" button2 = Gtk.RadioButton.new_from_widget(button1)\n"
+" # with label \"Button 2\"\n"
+" button2.set_label(\"Button 2\")\n"
+" # connect the signal \"toggled\" emitted by the radiobutton\n"
+" # with the callback function toggled_cb\n"
+" button2.connect(\"toggled\", self.toggled_cb)\n"
+" # set button2 not active by default\n"
+" button2.set_active(False)\n"
+"\n"
+" # another radiobutton, in the same group as button1,\n"
+" # with label \"Button 3\"\n"
+" button3 = Gtk.RadioButton.new_with_label_from_widget(\n"
+" button1, \"Button 3\")\n"
+" # connect the signal \"toggled\" emitted by the radiobutton\n"
+" # with the callback function toggled_cb\n"
+" button3.connect(\"toggled\", self.toggled_cb)\n"
+" # set button3 not active by default\n"
+" button3.set_active(False)\n"
+"\n"
+" # a grid to place the buttons\n"
+" grid = Gtk.Grid.new()\n"
+" grid.attach(button1, 0, 0, 1, 1)\n"
+" grid.attach(button2, 0, 1, 1, 1)\n"
+" grid.attach(button3, 0, 2, 1, 1)\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" # callback function\n"
+" def toggled_cb(self, button):\n"
+" # a string to describe the state of the button\n"
+" state = \"unknown\"\n"
+" # whenever the button is turned on, state is on\n"
+" if button.get_active():\n"
+" state = \"on\"\n"
+" # else state is off\n"
+" else:\n"
+" state = \"off\"\n"
+" # whenever the function is called (a button is turned on or off)\n"
+" # print on the terminal which button was turned on/off\n"
+" print(button.get_label() + \" was turned \" + state)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"RadioButton Example\", application=app)\n"
+" self.set_default_size(250, 100)\n"
+" self.set_border_width(20)\n"
+"\n"
+" # a new radiobutton with a label\n"
+" button1 = Gtk.RadioButton(label=\"Button 1\")\n"
+" # connect the signal \"toggled\" emitted by the radiobutton\n"
+" # with the callback function toggled_cb\n"
+" button1.connect(\"toggled\", self.toggled_cb)\n"
+"\n"
+" # another radiobutton, in the same group as button1\n"
+" button2 = Gtk.RadioButton.new_from_widget(button1)\n"
+" # with label \"Button 2\"\n"
+" button2.set_label(\"Button 2\")\n"
+" # connect the signal \"toggled\" emitted by the radiobutton\n"
+" # with the callback function toggled_cb\n"
+" button2.connect(\"toggled\", self.toggled_cb)\n"
+" # set button2 not active by default\n"
+" button2.set_active(False)\n"
+"\n"
+" # another radiobutton, in the same group as button1,\n"
+" # with label \"Button 3\"\n"
+" button3 = Gtk.RadioButton.new_with_label_from_widget(\n"
+" button1, \"Button 3\")\n"
+" # connect the signal \"toggled\" emitted by the radiobutton\n"
+" # with the callback function toggled_cb\n"
+" button3.connect(\"toggled\", self.toggled_cb)\n"
+" # set button3 not active by default\n"
+" button3.set_active(False)\n"
+"\n"
+" # a grid to place the buttons\n"
+" grid = Gtk.Grid.new()\n"
+" grid.attach(button1, 0, 0, 1, 1)\n"
+" grid.attach(button2, 0, 1, 1, 1)\n"
+" grid.attach(button3, 0, 2, 1, 1)\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" # callback function\n"
+" def toggled_cb(self, button):\n"
+" # a string to describe the state of the button\n"
+" state = \"unknown\"\n"
+" # whenever the button is turned on, state is on\n"
+" if button.get_active():\n"
+" state = \"on\"\n"
+" # else state is off\n"
+" else:\n"
+" state = \"off\"\n"
+" # whenever the function is called (a button is turned on or off)\n"
+" # print on the terminal which button was turned on/off\n"
+" print(button.get_label() + \" was turned \" + state)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/radiobutton.py.page:35
+msgid "Useful methods for a RadioButton widget"
+msgstr "Métodos útiles para un widget «RadioButton»"
+
+#. (itstool) path: section/p
+#: C/radiobutton.py.page:36
+msgid ""
+"In line 16 the signal <code>\"toggled\"</code> is connected to the callback "
+"function <code>toggled_cb()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 16, la señal <code>«toggled»</code> se conecta a la función de "
+"retorno de llamada <code>toggled_cb()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
+"detallada."
+
+#. (itstool) path: section/p
+#: C/radiobutton.py.page:38
+msgid ""
+"As seen in <link xref=\"properties.py\"/>, instead of <code>button1 = Gtk."
+"RadioButton(label=\"Button 1\")</code> we could create the button and label "
+"it with"
+msgstr ""
+"Como se vio en la <link xref=\"properties.py\"/>, en lugar de <code>button1 "
+"= Gtk.RadioButton(label=\"Button 1\")</code> se podría crear el botón y su "
+"etiqueta con"
+
+#. (itstool) path: section/code
+#: C/radiobutton.py.page:39
+#, no-wrap
+msgid ""
+"\n"
+"button1 = Gtk.RadioButton()\n"
+"button1.set_label(\"Button 1\")."
+msgstr ""
+"\n"
+"button1 = Gtk.RadioButton()\n"
+"button1.set_label(\"Button 1\")."
+
+#. (itstool) path: section/p
+#: C/radiobutton.py.page:42
+msgid ""
+"Yet another way to create a new RadioButton with a label is <code>button1 = "
+"Gtk.RadioButton.new_with_label(None, \"Button 1\")</code> (the first "
+"argument is the group of the radiobuttons, which we can get with "
+"<code>get_group()</code>, the second argument is the label)."
+msgstr ""
+"Otra manera de crear un «RadioButton» nuevo con una etiqueta es "
+"<code>button1 = Gtk.RadioButton.new_with_label(None, \"Button 1\")</code> "
+"(El primer argumento es el grupo de botones de radio, que puede obtener con "
+"<code>get_group()</code>, el segundo argumento es la etiqueta)."
+
+#. (itstool) path: item/p
+#: C/radiobutton.py.page:51
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkRadioButton.html"
+"\">GtkRadioButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkRadioButton.html"
+"\">GtkRadioButton</link>"
+
+#. (itstool) path: info/title
+#: C/radiobutton.vala.page:8
+msgctxt "text"
+msgid "RadioButton (Vala)"
+msgstr "RadioButton (Vala)"
+
+#. (itstool) path: info/desc
+#: C/radiobutton.vala.page:21
+msgid "A choice from multiple CheckButtons."
+msgstr "Una elección desde varios CheckButton."
+
+#. (itstool) path: page/p
+#: C/radiobutton.vala.page:26
+msgid "These RadioButtons report their activity in the terminal."
+msgstr "Estos RadioButton informan de su actividad en la terminal."
+
+#. (itstool) path: page/code
+#: C/radiobutton.vala.page:28
+#, no-wrap
+msgid ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"RadioButton Example\");\n"
+"\n"
+"\t\tthis.border_width = 20;\n"
+"\t\tthis.set_default_size (250, 100);\n"
+"\n"
+"\t\t/* We demonstrate 3 different RadioButton creation methods */\n"
+"\n"
+"\t\t//Create a Radio Button\n"
+"\t\tvar button1 = new Gtk.RadioButton (null);\n"
+"\t\tbutton1.set_label (\"Button 1\");\n"
+"\n"
+"\t\t//Create a RadioButton with a label, and add it to the same group as button1.\n"
+"\t\tvar button2 = new Gtk.RadioButton.with_label (button1.get_group(),\"Button 2\");\n"
+"\n"
+"\t\t//Create a RadioButton with a label, adding it to button1's group.\n"
+"\t\tvar button3 = new Gtk.RadioButton.with_label_from_widget (button1, \"Button 3\");\n"
+"\n"
+"\t\t//Attach the buttons to a grid.\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tgrid.attach (button1, 0, 0, 1, 1);\n"
+"\t\tgrid.attach (button2, 0, 1, 1, 1);\n"
+"\t\tgrid.attach (button3, 0, 2, 1, 1);\n"
+"\n"
+"\t\t//Add the button to the window.\n"
+"\t\tthis.add (grid);\n"
+"\n"
+"\t\t//Connect the signal handlers (aka. callback functions) to the buttons.\n"
+"\t\tbutton1.toggled.connect (button_toggled_cb);\n"
+"\t\tbutton2.toggled.connect (button_toggled_cb);\n"
+"\t\tbutton3.toggled.connect (button_toggled_cb);\n"
+"\t}\n"
+"\n"
+"\tvoid button_toggled_cb (Gtk.ToggleButton button)\n"
+"\t{\n"
+"\t\tvar state = \"unknown\";\n"
+"\n"
+"\t\tif (button.get_active ())\n"
+"\t\t\tstate = \"on\";\n"
+"\t\telse {\n"
+"\t\t\tstate = \"off\";\n"
+"\t\t\tprint (\"\\n\");\n"
+"\t\t}\n"
+"\t\tprint (button.get_label() + \" was turned \" + state + \"\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t//Show all of the things.\n"
+"\t\tnew MyWindow (this).show_all ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"RadioButton Example\");\n"
+"\n"
+"\t\tthis.border_width = 20;\n"
+"\t\tthis.set_default_size (250, 100);\n"
+"\n"
+"\t\t/* We demonstrate 3 different RadioButton creation methods */\n"
+"\n"
+"\t\t//Create a Radio Button\n"
+"\t\tvar button1 = new Gtk.RadioButton (null);\n"
+"\t\tbutton1.set_label (\"Button 1\");\n"
+"\n"
+"\t\t//Create a RadioButton with a label, and add it to the same group as button1.\n"
+"\t\tvar button2 = new Gtk.RadioButton.with_label (button1.get_group(),\"Button 2\");\n"
+"\n"
+"\t\t//Create a RadioButton with a label, adding it to button1's group.\n"
+"\t\tvar button3 = new Gtk.RadioButton.with_label_from_widget (button1, \"Button 3\");\n"
+"\n"
+"\t\t//Attach the buttons to a grid.\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tgrid.attach (button1, 0, 0, 1, 1);\n"
+"\t\tgrid.attach (button2, 0, 1, 1, 1);\n"
+"\t\tgrid.attach (button3, 0, 2, 1, 1);\n"
+"\n"
+"\t\t//Add the button to the window.\n"
+"\t\tthis.add (grid);\n"
+"\n"
+"\t\t//Connect the signal handlers (aka. callback functions) to the buttons.\n"
+"\t\tbutton1.toggled.connect (button_toggled_cb);\n"
+"\t\tbutton2.toggled.connect (button_toggled_cb);\n"
+"\t\tbutton3.toggled.connect (button_toggled_cb);\n"
+"\t}\n"
+"\n"
+"\tvoid button_toggled_cb (Gtk.ToggleButton button)\n"
+"\t{\n"
+"\t\tvar state = \"unknown\";\n"
+"\n"
+"\t\tif (button.get_active ())\n"
+"\t\t\tstate = \"on\";\n"
+"\t\telse {\n"
+"\t\t\tstate = \"off\";\n"
+"\t\t\tprint (\"\\n\");\n"
+"\t\t}\n"
+"\t\tprint (button.get_label() + \" was turned \" + state + \"\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t//Show all of the things.\n"
+"\t\tnew MyWindow (this).show_all ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.MyApplication\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/radiobutton.vala.page:33
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.RadioButton.html\">Gtk."
+"RadioButton</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.RadioButton.html\">Gtk."
+"RadioButton</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/record-collection.js.page:70
+msgctxt "_"
+msgid ""
+"external ref='media/record-collection.png' "
+"md5='2d645997687ed5aacd36aafafc16e072'"
+msgstr ""
+"external ref='media/record-collection.png' "
+"md5='2d645997687ed5aacd36aafafc16e072'"
+
+#. (itstool) path: info/title
+#: C/record-collection.js.page:8
+msgctxt "text"
+msgid "Record collection (JavaScript)"
+msgstr "Colección de música (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/record-collection.js.page:11
+msgid "Create a small database application for ordering your music collection"
+msgstr ""
+"Cree una pequeña aplicación con una base de datos para ordenar su colección "
+"de música"
+
+#. (itstool) path: page/title
+#: C/record-collection.js.page:29
+msgid "Record collection"
+msgstr "Colección de música"
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:34
+msgid "How to connect to a database using libgda"
+msgstr "Cómo conectar con una base de datos usando libgda"
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:35
+msgid "How to insert and browse records in a database table"
+msgstr "Cómo insertar y examinar registros en una tabla de una base de datos"
+
+#. (itstool) path: section/p
+#: C/record-collection.js.page:41
+msgid ""
+"This demo uses the Javascript language. We are going to demonstrate how to "
+"connect and use a database from a GTK program, by using the GDA (GNOME Data "
+"Access) library. Thus you also need this library installed."
+msgstr ""
+"Esta demostración usa el lenguaje Javascript. Se va a demostrar cómo "
+"conectar y usar una base de datos desde un programa GTK, usando la "
+"bilbioteca GDA («GNOME Data Access», Acceso a datos de GNOME). Por lo tanto, "
+"es necesario tener instalada también esta biblioteca."
+
+#. (itstool) path: section/p
+#: C/record-collection.js.page:44
+msgid ""
+"GNOME Data Access (GDA) is library whose purpose is to provide universal "
+"access to different kinds and types of data sources. This goes from "
+"traditional relational database systems, to any imaginable kind of data "
+"source such as a mail server, a LDAP directory, etc. For more information, "
+"and for a full API and documentation, visit the <link href=\"http://library."
+"gnome.org/devel/libgda/stable/\">GDA website</link>."
+msgstr ""
+"Acceso a Datos de GNOME (GDA) es una biblioteca cuyo propósito es "
+"proporcionar acceso universal a diferentes tipos de fuentes de datos. Esto "
+"abarca desde los tradicionales sistemas de bases da datos relacionales hasta "
+"cualquier fuente de datos imaginable como un servidor de correo-e, un "
+"directorio LDAP, etc. Para obtener más información y una documentación "
+"completa de la API, visite la <link href=\"http://library.gnome.org/devel/"
+"libgda/stable/\">página web de GDA</link>."
+
+#. (itstool) path: section/p
+#: C/record-collection.js.page:47
+msgid ""
+"Although a big part of the code is related to user interface (GUI), we are "
+"going to focus our tutorial on the database parts (we might mention other "
+"parts we think are relevant though). To know more about Javascript programs "
+"in GNOME, see the <link xref=\"image-viewer.js\">Image Viewer program</link> "
+"tutorial."
+msgstr ""
+"Aunque una gran parte del código se refiere a la interfaz de usuario (IU), "
+"el tutorial se enfocará a las partes de las bases de datos (aunque se puede "
+"hacer mención a otras partes que se consideren relevantes). Para aprender "
+"más sobre los programas en Javascript en GNOME, consulte el tutorial del "
+"programa<link xref=\"image-viewer.js\">Visor de Imágenes</link>"
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:60
+msgid ""
+"Choose <gui>Generic Javascript</gui> from the <gui>JS</gui> tab, click "
+"<gui>Forward</gui>, and fill-out your details on the next few pages. Use "
+"<file>record-collection</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>coleccion-de-albumes</file> como nombre de proyecto y de carpeta."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:63
+msgid ""
+"Click <gui>Finished</gui> and the project will be created for you. Open "
+"<file>src/main.js</file> from the <gui>Project</gui> or <gui>File</gui> "
+"tabs. It contains very basic example code."
+msgstr ""
+"Pulse <gui>Finalizar</gui> y se creará el proyecto. Abra <file>src/main.js</"
+"file> desde la pestaña <gui>Proyecto</gui> o <gui>Archivo</gui>. Contiene un "
+"ejemplo de código muy básico."
+
+#. (itstool) path: section/title
+#: C/record-collection.js.page:69
+msgid "Program Structure"
+msgstr "Estructura del programa"
+
+#. (itstool) path: section/p
+#: C/record-collection.js.page:71
+msgid ""
+"This demo is a simple GTK application (with a single window) capable of "
+"inserting records into a database table as well as browsing all records of "
+"the table. The table has two fields: <code>id</code>, an integer, and "
+"<code>name</code>, a varchar. The first section (on the top) of the "
+"application allows you to insert a record into the table. The last section "
+"(bottom) allows you to see all the records of that table. Its content is "
+"refreshed every time a new record is inserted and on the application startup."
+msgstr ""
+"Esta demostración es una aplicación GTK sencilla (con una única ventana) "
+"capaz de insertar registros en la tabla de una base de datos, así como de "
+"examinar todos los registros de la tabla. La tabla tiene dos campos: "
+"<code>id</code>, un entero, y <code>name</code>, un «varchar». La primera "
+"sección (en la parte superior) de la aplicación le permite insertar un "
+"registro en la tabla. La última sección (en la parte inferior) le permite "
+"ver todos los registros de la tabla. El contenido se actualiza cada vez que "
+"se insertar un registro y al inicio de la aplicación."
+
+#. (itstool) path: section/title
+#: C/record-collection.js.page:76
+msgid "Starting the fun"
+msgstr "Empezar la diversión"
+
+#. (itstool) path: section/p
+#: C/record-collection.js.page:77
+msgid "Let's start by examining the skeleton of the program:"
+msgstr "Empezar examinando el esqueleto del programa:"
+
+#. (itstool) path: section/code
+#: C/record-collection.js.page:78
+#, no-wrap
+msgid ""
+"\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Gda = imports.gi.Gda;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"function Demo () {\n"
+" this._init ();\n"
+"}\n"
+"\n"
+"Demo.prototype = {\n"
+"\n"
+" _init: function () {\n"
+" this.setupWindow ();\n"
+" this.setupDatabase ();\n"
+" this.selectData ();\n"
+" }\n"
+"}\n"
+"\n"
+"Gtk.init (null, null);\n"
+"\n"
+"var demo = new Demo ();\n"
+"\n"
+"Gtk.main ();"
+msgstr ""
+"\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Gda = imports.gi.Gda;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"function Demo () {\n"
+" this._init ();\n"
+"}\n"
+"\n"
+"Demo.prototype = {\n"
+"\n"
+" _init: function () {\n"
+" this.setupWindow ();\n"
+" this.setupDatabase ();\n"
+" this.selectData ();\n"
+" }\n"
+"}\n"
+"\n"
+"Gtk.init (null, null);\n"
+"\n"
+"var demo = new Demo ();\n"
+"\n"
+"Gtk.main ();"
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:103
+msgid ""
+"Lines 1‒4: Initial imports. Pay special attention to line 3, which tells "
+"Javascript to import the GDA library, our focus in this tutorial."
+msgstr ""
+"Líneas 1‒4: importaciones iniciales. Preste especial atención a la línea 3, "
+"que indica a Javascript que importe la biblioteca GDA, nuestro objetivo en "
+"este tutorial."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:104
+msgid ""
+"Lines 6‒17: Define our <code>Demo</code> class. Pay special attention to "
+"lines 13‒15, where we call 3 methods which will do the whole job. They will "
+"be detailed below."
+msgstr ""
+"Líneas 6‒17: definir la clase <code>Demo</code>. Preste especial atención a "
+"las líneas 13‒15, donde se llama a 3 métodos que harán todo el trabajo. Se "
+"detallarán más adelante."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:105
+msgid "Lines 19‒23: Start the application."
+msgstr "Líneas 19‒23: iniciar la aplicación."
+
+#. (itstool) path: section/title
+#: C/record-collection.js.page:110
+msgid "Designing the application"
+msgstr "Diseñar la aplicación"
+
+#. (itstool) path: section/p
+#: C/record-collection.js.page:111
+msgid ""
+"Let's take a look at the <code>setupWindow</code> method. It is responsible "
+"for creating the User Interface (UI). As UI is not our focus, we will "
+"explain only the relevant parts."
+msgstr ""
+"Eche un vistazo al método <code>setupWindow</code>. Es el responsable de "
+"crear la interfaz de usuario (IU). Ya que la IU no es el objetivo, sólo se "
+"explicarán las partes relevantes."
+
+#. (itstool) path: section/code
+#: C/record-collection.js.page:112
+#, no-wrap
+msgid ""
+"\n"
+" setupWindow: function () {\n"
+" this.window = new Gtk.Window ({title: \"Data Access Demo\", height_request: 350});\n"
+" this.window.connect (\"delete-event\", function () {\n"
+" Gtk.main_quit();\n"
+" return true;\n"
+" });\n"
+"\n"
+" // main box\n"
+" var main_box = new Gtk.Box ({orientation: Gtk.Orientation.VERTICAL, spacing: 5});\n"
+" this.window.add (main_box);\n"
+"\n"
+" // first label\n"
+" var info1 = new Gtk.Label ({label: \"<b>Insert a record</b>\", xalign: 0, use_markup:
true});\n"
+" main_box.pack_start (info1, false, false, 5);\n"
+"\n"
+" // \"insert a record\" horizontal box\n"
+" var insert_box = new Gtk.Box ({orientation: Gtk.Orientation.HORIZONTAL, spacing: 5});\n"
+" main_box.pack_start (insert_box, false, false, 5);\n"
+"\n"
+" // ID field\n"
+" insert_box.pack_start (new Gtk.Label ({label: \"ID:\"}), false, false, 5);\n"
+" this.id_entry = new Gtk.Entry ();\n"
+" insert_box.pack_start (this.id_entry, false, false, 5);\n"
+"\n"
+" // Name field\n"
+" insert_box.pack_start (new Gtk.Label ({label: \"Name:\"}), false, false, 5);\n"
+" this.name_entry = new Gtk.Entry ({activates_default: true});\n"
+" insert_box.pack_start (this.name_entry, true, true, 5);\n"
+"\n"
+" // Insert button\n"
+" var insert_button = new Gtk.Button ({label: \"Insert\", can_default: true});\n"
+" insert_button.connect (\"clicked\", Lang.bind (this, this._insertClicked));\n"
+" insert_box.pack_start (insert_button, false, false, 5);\n"
+" insert_button.grab_default ();\n"
+"\n"
+" // Browse textview\n"
+" var info2 = new Gtk.Label ({label: \"<b>Browse the table</b>\", xalign: 0, use_markup:
true});\n"
+" main_box.pack_start (info2, false, false, 5);\n"
+" this.text = new Gtk.TextView ({editable: false});\n"
+" var sw = new Gtk.ScrolledWindow ({shadow_type:Gtk.ShadowType.IN});\n"
+" sw.add (this.text);\n"
+" main_box.pack_start (sw, true, true, 5);\n"
+"\n"
+" this.count_label = new Gtk.Label ({label: \"\", xalign: 0, use_markup: true});\n"
+" main_box.pack_start (this.count_label, false, false, 0);\n"
+"\n"
+" this.window.show_all ();\n"
+" },"
+msgstr ""
+"\n"
+" setupWindow: function () {\n"
+" this.window = new Gtk.Window ({title: \"Data Access Demo\", height_request: 350});\n"
+" this.window.connect (\"delete-event\", function () {\n"
+" Gtk.main_quit();\n"
+" return true;\n"
+" });\n"
+"\n"
+" // main box\n"
+" var main_box = new Gtk.Box ({orientation: Gtk.Orientation.VERTICAL, spacing: 5});\n"
+" this.window.add (main_box);\n"
+"\n"
+" // first label\n"
+" var info1 = new Gtk.Label ({label: \"<b>Insert a record</b>\", xalign: 0, use_markup:
true});\n"
+" main_box.pack_start (info1, false, false, 5);\n"
+"\n"
+" // \"insert a record\" horizontal box\n"
+" var insert_box = new Gtk.Box ({orientation: Gtk.Orientation.HORIZONTAL, spacing: 5});\n"
+" main_box.pack_start (insert_box, false, false, 5);\n"
+"\n"
+" // ID field\n"
+" insert_box.pack_start (new Gtk.Label ({label: \"ID:\"}), false, false, 5);\n"
+" this.id_entry = new Gtk.Entry ();\n"
+" insert_box.pack_start (this.id_entry, false, false, 5);\n"
+"\n"
+" // Name field\n"
+" insert_box.pack_start (new Gtk.Label ({label: \"Name:\"}), false, false, 5);\n"
+" this.name_entry = new Gtk.Entry ({activates_default: true});\n"
+" insert_box.pack_start (this.name_entry, true, true, 5);\n"
+"\n"
+" // Insert button\n"
+" var insert_button = new Gtk.Button ({label: \"Insert\", can_default: true});\n"
+" insert_button.connect (\"clicked\", Lang.bind (this, this._insertClicked));\n"
+" insert_box.pack_start (insert_button, false, false, 5);\n"
+" insert_button.grab_default ();\n"
+"\n"
+" // Browse textview\n"
+" var info2 = new Gtk.Label ({label: \"<b>Browse the table</b>\", xalign: 0, use_markup:
true});\n"
+" main_box.pack_start (info2, false, false, 5);\n"
+" this.text = new Gtk.TextView ({editable: false});\n"
+" var sw = new Gtk.ScrolledWindow ({shadow_type:Gtk.ShadowType.IN});\n"
+" sw.add (this.text);\n"
+" main_box.pack_start (sw, true, true, 5);\n"
+"\n"
+" this.count_label = new Gtk.Label ({label: \"\", xalign: 0, use_markup: true});\n"
+" main_box.pack_start (this.count_label, false, false, 0);\n"
+"\n"
+" this.window.show_all ();\n"
+" },"
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:162
+msgid ""
+"Lines 22 and 27: Create the 2 entries (for the two fields) in which users "
+"will type something to get inserted in the database."
+msgstr ""
+"Líneas 22 y 27: crear las dos entradas (para los dos campos) en las que el "
+"usuario escribirá algo para insertarlo en la base de datos."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:163
+msgid ""
+"Lines 31‒34: Create the Insert button. We connect its <code>clicked</code> "
+"signal to the <code>_insertClicked</code> private method of the class. This "
+"method is detailed below."
+msgstr ""
+"Líneas 31‒34: crear el botón «Insertar». Se conecta su señal <code>clicked</"
+"code> con el método privado <code>_insertClicked</code> de la clase. Este "
+"método se detalla a continuación."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:164
+msgid ""
+"Line 39: Create the widget (<code>TextView</code>) where we will show the "
+"contents of the table."
+msgstr ""
+"Línea 39: crear el widget (<code>TextView</code>) donde se mostrarán los "
+"contenidos de la tabla."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:165
+msgid ""
+"Line 44: Create the label where we will show the number of records in the "
+"table. Initially it's empty, it will be updated later."
+msgstr ""
+"Línea 44: crear la etiqueta donde se mostrará el número de registros de la "
+"tabla. Inicialmente está vacía, se actualizará más tarde."
+
+#. (itstool) path: section/title
+#: C/record-collection.js.page:170
+msgid "Connecting to and initializing the database"
+msgstr "Conectar e inicializar la base de datos"
+
+#. (itstool) path: section/p
+#: C/record-collection.js.page:171
+msgid ""
+"The code which makes the connection to the database is in the "
+"<code>setupDatabase</code> method below:"
+msgstr ""
+"El código que hace la conexión con la base de datos está en método "
+"<code>setupDatabase</code> siguiente:"
+
+#. (itstool) path: section/code
+#: C/record-collection.js.page:174
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| " setupDatabase: function () {\n"
+#| " this.connection = new Gda.Connection ({provider: Gda.Config.get_provider(\"SQLite\"),\n"
+#| " cnc_string:\"DB_DIR=\" + GLib.get_home_dir () +
\";DB_NAME=gnome_demo\"});\n"
+#| " this.connection.open ();\n"
+#| "\n"
+#| " try {\n"
+#| " var dm = Gda.execute_select_command (this.connection, \"select * from demo\");\n"
+#| " } catch (e) {\n"
+#| " Gda.execute_non_select_command (this.connection, \"create table demo (id integer, name
varchar(100))\");\n"
+#| " }\n"
+#| " },"
+msgid ""
+"\n"
+" setupDatabase: function () {\n"
+" this.connection = new Gda.Connection ({provider: Gda.Config.get_provider(\"SQLite\"),\n"
+" cnc_string:\"DB_DIR=\" + GLib.get_home_dir () +
\";DB_NAME=gnome_demo\"});\n"
+" this.connection.open ();\n"
+"\n"
+" try {\n"
+" var dm = this.connection.execute_select_command (\"select * from demo\");\n"
+" } catch (e) {\n"
+" this.connection.execute_non_select_command (\"create table demo (id integer, name varchar(100))\");\n"
+" }\n"
+" },"
+msgstr ""
+"\n"
+" setupDatabase: function () {\n"
+" this.connection = new Gda.Connection ({provider: Gda.Config.get_provider(\"SQLite\"),\n"
+" cnc_string:\"DB_DIR=\" + GLib.get_home_dir () +
\";DB_NAME=gnome_demo\"});\n"
+" this.connection.open ();\n"
+"\n"
+" try {\n"
+" var dm = this.connection.execute_select_command (\"select * from demo\");\n"
+" } catch (e) {\n"
+" this.connection.execute_non_select_command (\"create table demo (id integer, name varchar(100))\");\n"
+" }\n"
+" },"
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:188
+msgid ""
+"Lines 2‒3: Create the GDA's <code>Connection</code> object. We must supply "
+"to its constructor some properties:"
+msgstr ""
+"Líneas 2‒3: crear el objeto de GDA <code>Connection</code>. Se deben "
+"proporcionar a su constructor algunas propiedades:"
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:191
+msgid ""
+"<code>provider</code>: One of GDA's supported providers. GDA supports "
+"SQLite, MySQL, PostgreSQL, Oracle and many others. For demo purposes we will "
+"use a SQLite database, as it comes installed by default in most "
+"distributions and it is simple to use (it just uses a file as a database)."
+msgstr ""
+"<code>provider</code>: uno de los proveedores de GDA soportados. GDA soporta "
+"SQLite, MySQL, PostgreSQL, Oracle y muchos otros. Para la demostración se "
+"usará una base de datos SQLite, ya que viene instalada de manera "
+"predeterminada en la mayoría de las distribuciones y es fácil de usar (sólo "
+"usa un archivo como base de datos)."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:194
+msgid ""
+"<code>cnc_string</code>: The connection string. It may change from provider "
+"to provider. The syntax for SQLite is: <code>DB_DIR=<var>PATH</var>;"
+"DB_NAME=<var>FILENAME</var></code>. In this demo we are accessing a database "
+"called gnome_demo in the user home dir (note the call to GLib's "
+"<code>get_home_dir</code> function)."
+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)."
+
+#. (itstool) path: note/p
+#: C/record-collection.js.page:198
+msgid ""
+"If the provider is not supported by GDA, or if the connection string is "
+"missing some element, line 2 will raise an exception. So, in real life we "
+"should handle it with JavaScript's statement <code>try</code>...<code>catch</"
+"code>."
+msgstr ""
+"Si GDA no soporta el proveedor, o si falta algún elemento en la cadena de "
+"conexión, la línea 2 elevará una excepción. Por esto, en la vida real hay "
+"que manejarlo con la sentencia <code>try</code>...<code>catch</code> de "
+"JavaScript."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:202
+msgid ""
+"Line 4: Open the connection. In the SQLite provider, if the database does "
+"not exist, it will be created in this step."
+msgstr ""
+"Línea 4: abrir la conexión. En el proveedor de SQLite, si la base de datos "
+"no existe, se creará en este paso."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:204
+msgid ""
+"Lines 6‒10: Try to do a simple select to check if the table exists (line 7). "
+"If it does not exist (because the database was just created), this command "
+"will raise an exception, which is handled by the <code>try</code>..."
+"<code>catch</code> block. If it is the case, we run the create table "
+"statement (line 9)."
+msgstr ""
+"Líneas 6‒10: intentar hacer una selección simple para comprobar si la tabla "
+"existe. Si no existe (porque la base de datos se acaba de crear), este "
+"comando elevará una excepción, que se maneja en el bloque <code>try</code>..."
+"<code>catch</code> block. Si este es el caso, se ejecuta la sentencia para "
+"crear tabla (línea 9)."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:205
+#| msgid ""
+#| "In order to run the SQL commands above we are using global GDA functions, "
+#| "<code>execute_select_command</code> and <code>execute_non_select_command</"
+#| "code>. They are simple to use, and just require two arguments: The "
+#| "<code>Connection</code> object and the SQL command to be parsed."
+msgid ""
+"In order to run the SQL commands above we are using the GDA connection "
+"methods <code>execute_select_command</code> and "
+"<code>execute_non_select_command</code>. They are simple to use, and just "
+"require two arguments: The <code>Connection</code> object and the SQL "
+"command to be parsed."
+msgstr ""
+"Para ejecutar los comandos SQL anteriores se usan los métodos de conexión de "
+"GDA <code>execute_select_command</code> y <code>execute_non_select_command</"
+"code>. Son fáciles de usar, y sólo requieren dos argumentos: el objeto "
+"<code>Connection</code> y el comando SQL que analizar."
+
+#. (itstool) path: section/p
+#: C/record-collection.js.page:209
+msgid "At this point we have the database set up, and are ready to use it."
+msgstr ""
+"En este punto, ya está configurada la base de datos y lista para usarse."
+
+#. (itstool) path: section/title
+#: C/record-collection.js.page:213
+msgid "Selecting"
+msgstr "Seleccionar"
+
+#. (itstool) path: section/p
+#: C/record-collection.js.page:214
+msgid ""
+"After connecting to the database, our demo's constructor calls the "
+"<code>selectData</code> method. It is responsible for getting all the "
+"records in the table and showing them on the <code>TextView</code> widget. "
+"Let's take a look at it:"
+msgstr ""
+"Después de conectar a la base de datos, el constructor de la demostración "
+"llama al método <code>selectData</code>. Es el responsable de obtener todos "
+"los registros de la tabla y de mostrarlos en el widget <code>TextView</"
+"code>. Échele un vistazo:"
+
+#. (itstool) path: section/code
+#: C/record-collection.js.page:217
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| " selectData: function () {\n"
+#| " var dm = Gda.execute_select_command (this.connection, \"select * from demo order by 1, 2\");\n"
+#| " var iter = dm.create_iter ();\n"
+#| "\n"
+#| " var text = \"\";\n"
+#| "\n"
+#| " while (iter.move_next ()) {\n"
+#| " var id_field = Gda.value_stringify (iter.get_value_at (0));\n"
+#| " var name_field = Gda.value_stringify (iter.get_value_at (1));\n"
+#| "\n"
+#| " text += id_field + \"\\t=>\\t\" + name_field + '\\n';\n"
+#| " }\n"
+#| "\n"
+#| " this.text.buffer.text = text;\n"
+#| " this.count_label.label = \"<i>\" + dm.get_n_rows () + \" record(s)</i>\";\n"
+#| " },"
+msgid ""
+"\n"
+" selectData: function () {\n"
+" var dm = this.connection.execute_select_command (\"select * from demo order by 1, 2\");\n"
+" var iter = dm.create_iter ();\n"
+"\n"
+" var text = \"\";\n"
+"\n"
+" while (iter.move_next ()) {\n"
+" var id_field = Gda.value_stringify (iter.get_value_at (0));\n"
+" var name_field = Gda.value_stringify (iter.get_value_at (1));\n"
+"\n"
+" text += id_field + \"\\t=>\\t\" + name_field + '\\n';\n"
+" }\n"
+"\n"
+" this.text.buffer.text = text;\n"
+" this.count_label.label = \"<i>\" + dm.get_n_rows () + \" record(s)</i>\";\n"
+" },"
+msgstr ""
+"\n"
+" selectData: function () {\n"
+" var dm = this.connection.execute_select_command (\"select * from demo order by 1, 2\");\n"
+" var iter = dm.create_iter ();\n"
+"\n"
+" var text = \"\";\n"
+"\n"
+" while (iter.move_next ()) {\n"
+" var id_field = Gda.value_stringify (iter.get_value_at (0));\n"
+" var name_field = Gda.value_stringify (iter.get_value_at (1));\n"
+"\n"
+" text += id_field + \"\\t=>\\t\" + name_field + '\\n';\n"
+" }\n"
+"\n"
+" this.text.buffer.text = text;\n"
+" this.count_label.label = \"<i>\" + dm.get_n_rows () + \" record(s)</i>\";\n"
+" },"
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:235
+#| msgid ""
+#| "Line 2: The <code>SELECT</code> command. We are using the global GDA's "
+#| "function <code>execute_select_command</code> for that. It returns a "
+#| "<code>DataModel</code> object, which is later used to retrieve the rows."
+msgid ""
+"Line 2: The <code>SELECT</code> command. We are using the GDA connection's "
+"<code>execute_select_command</code> method for that. It returns a "
+"<code>DataModel</code> object, which is later used to retrieve the rows."
+msgstr ""
+"Línea 2: el comando <code>SELECT</code>. Se usa el método de conexión "
+"<code>execute_select_command</code> de GDA. Devuelve un objeto "
+"<code>DataModel</code>, que se usa más tarde para obtener las filas."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:236
+msgid ""
+"Line 3: Create an <code>Iter</code> object, which is used to iterate over "
+"the <code>DataModel</code>'s records."
+msgstr ""
+"Línea 3: crear un objeto <code>Iter</code>, que se usa para iterar sobre los "
+"registros de <code>DataModel</code>."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:237
+msgid ""
+"Line 7: Loop through all the records, fetching them with the help of the "
+"<code>Iter</code> object. At this point, the <code>iter</code> variable "
+"contains the actual, retrieved data. Its <code>move_next</code> method "
+"returns <code>false</code> when it reaches the last record."
+msgstr ""
+"Línea 7: recorrer todos los registros, recuperándolos con la ayuda del "
+"objeto <code>Iter</code>. En este punto, la variable <code>iter</code> "
+"contiene los datos obtenidos actualmente. Su método <code>move_next</code> "
+"devuelve <code>false</code> cuando se alcanza el último registro."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:239
+msgid "Lines 8‒9: We do two things in each line:"
+msgstr "Líneas 8‒9: se hacen dos cosas en cada línea:"
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:241
+msgid ""
+"Use <code>Iter</code>'s method <code>get_value_at</code>, which requires "
+"only one argument: the column number to retrieve, starting at 0. As our "
+"<code>SELECT</code> command returns only two columns, we are retrieving "
+"columns 0 and 1."
+msgstr ""
+"Use el método <code>get_value_at</code> de <code>Iter</code>, que sólo "
+"necesita un argumento: el número de columna que recuperar, empezando por 0. "
+"Ya que el comando <code>SELECT</code> sólo devuelve dos columnas, se están "
+"recuperando las columnas 0 y 1."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:242
+msgid ""
+"The method <code>get_value_at</code> returns the field in GLib's "
+"<code>GValue</code> format. A simple way to convert this format to a string "
+"is by using GDA's global function <code>value_stringify</code>. That's what "
+"we are doing here, and we store the results in the variables <code>id_field</"
+"code> and <code>name_field</code>."
+msgstr ""
+"El método <code>get_value_at</code> devuelve el campo en el formato "
+"<code>GValue</code> de GLib. Una manera sencilla de convertir este valor en "
+"una cadena es usar la función global de GDA <code>value_stringify</code>. Es "
+"lo que se está haciendo aquí, y el resultado se almacena en las variables "
+"<code>id_field</code> y <code>name_field</code>."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:245
+msgid ""
+"Line 11: Concatenate the two fields to make one text line, separated by "
+"<code>\"=>\"</code>, and store it in the <code>text</code> variable."
+msgstr ""
+"Línea 11: concatenar los dos registros para formar una línea de texto, "
+"separados por <code>\"=>\"</code>, y almacenarla en la variable "
+"<code>text</code>."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:246
+msgid ""
+"Line 14: After the loop is finished, we have all the records formatted in "
+"the <code>text</code> variable. In this line we just set the contents of the "
+"<code>TextView</code> with that variable."
+msgstr ""
+"Línea 14: cuando termine el bucle, se tendrán todos los registros "
+"formateados en la variable <code>text</code>. En esta línea, simplemente se "
+"establece el contenido del <code>TextView</code> con esta variable."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:247
+msgid ""
+"Line 15: Display the number of records in the table, making use of the "
+"<code>DataModel</code>'s <code>get_n_rows</code> method."
+msgstr ""
+"Línea 15: mostrar el número de registros en la tabla, usando el método "
+"<code>get_n_rows</code> de <code>DataModel</code> <code>get_n_rows</code>."
+
+#. (itstool) path: section/title
+#: C/record-collection.js.page:252
+msgid "Inserting"
+msgstr "Insertar"
+
+#. (itstool) path: section/p
+#: C/record-collection.js.page:253
+msgid ""
+"OK, we know how to connect to a database and how to select rows from a "
+"table. Now it's time to do an <code>INSERT</code> on the table. Do you "
+"remember above, in the method <code>setupWindow</code> we connected the "
+"<gui>Insert</gui> button's <code>clicked</code> signal to the method "
+"<code>_insertClicked</code>? Let's see the implementation of this method."
+msgstr ""
+"Bien, ahora ya sabe cómo conectarse a la base de datos y cómo seleccionar "
+"filas de una tabla. Ahora es el momento de hacer un <code>INSERT</code> en "
+"la tabla. ¿Recuerda cuando antes, en el método <code>setupWindow</code>, se "
+"conectó la señal <code>clicked</code> del botón <gui>Insertar</gui> al "
+"método <code>_insertClicked</code>?. Vea la implementación de este método."
+
+#. (itstool) path: section/code
+#: C/record-collection.js.page:256
+#, no-wrap
+msgid ""
+"\n"
+" _insertClicked: function () {\n"
+" if (!this._validateFields ())\n"
+" return;\n"
+"\n"
+" // Gda.execute_non_select_command (this.connection,\n"
+" // \"insert into demo values ('\" + this.id_entry.text + \"', '\" + this.name_entry.text + \"')\");\n"
+"\n"
+" var b = new Gda.SqlBuilder ({stmt_type:Gda.SqlStatementType.INSERT});\n"
+" b.set_table (\"demo\");\n"
+" b.add_field_value_as_gvalue (\"id\", this.id_entry.text);\n"
+" b.add_field_value_as_gvalue (\"name\", this.name_entry.text);\n"
+" var stmt = b.get_statement ();\n"
+" this.connection.statement_execute_non_select (stmt, null);\n"
+"\n"
+" this._clearFields ();\n"
+" this.selectData ();\n"
+" },"
+msgstr ""
+"\n"
+" _insertClicked: function () {\n"
+" if (!this._validateFields ())\n"
+" return;\n"
+"\n"
+" // Gda.execute_non_select_command (this.connection,\n"
+" // \"insert into demo values ('\" + this.id_entry.text + \"', '\" + this.name_entry.text + \"')\");\n"
+"\n"
+" var b = new Gda.SqlBuilder ({stmt_type:Gda.SqlStatementType.INSERT});\n"
+" b.set_table (\"demo\");\n"
+" b.add_field_value_as_gvalue (\"id\", this.id_entry.text);\n"
+" b.add_field_value_as_gvalue (\"name\", this.name_entry.text);\n"
+" var stmt = b.get_statement ();\n"
+" this.connection.statement_execute_non_select (stmt, null);\n"
+"\n"
+" this._clearFields ();\n"
+" this.selectData ();\n"
+" },"
+
+#. (itstool) path: section/p
+#: C/record-collection.js.page:274
+#| msgid ""
+#| "We have learned how to use GDA's convenience functions "
+#| "<code>execute_select_command</code> and <code>execute_non_select_command</"
+#| "code> to quickly execute SQL commands on the database. GDA allows one to "
+#| "build a SQL statement indirectly, by using its <code>SqlBuilder</code> "
+#| "object. What are the benefits of this? GDA will generate the SQL "
+#| "statement dynamically, and it will be valid for the connection provider "
+#| "used (it will use the same SQL dialect the provider uses). Let's study "
+#| "the code:"
+msgid ""
+"We have learned how to use the GDA connection's methods "
+"<code>execute_select_command</code> and <code>execute_non_select_command</"
+"code> to quickly execute SQL commands on the database. GDA allows one to "
+"build a SQL statement indirectly, by using its <code>SqlBuilder</code> "
+"object. What are the benefits of this? GDA will generate the SQL statement "
+"dynamically, and it will be valid for the connection provider used (it will "
+"use the same SQL dialect the provider uses). Let's study the code:"
+msgstr ""
+"Se ha aprendido a usar los métodos de conexión de GDA "
+"<code>execute_select_command</code> y <code>execute_non_select_command</"
+"code> para ejecutar comandos SQL rápidamente en la base de datos. GDA le "
+"permite construir una sentencia SQL de manera indirecta, usando su objeto "
+"<code>SqlBuilder</code>. ¿Cuáles son los beneficios de esto? GDA generará la "
+"sentencia SQL dinámicamente, y será válida para el proveedor de la conexión "
+"usado (usará el mismo dialecto de SQL que usa el proveedor). Estudie el "
+"código:"
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:278
+msgid ""
+"Lines 2‒3: Check if the user filled all the fields. The code for the private "
+"method <code>_validateFields</code> is really simple and you can read it in "
+"the full demo source code."
+msgstr ""
+"Líneas 2‒3: comprobar si el usuario ha rellenado todos los campos. El código "
+"del método privado <code>_validateFields</code> es realmente simple y puede "
+"leerlo en el código fuente completo de la demostración."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:279
+msgid ""
+"Line 5: The faster way of doing the <code>INSERT</code>. It's commented out "
+"as we want to show how to use the <code>SqlBuilder</code> object to build a "
+"SQL statement portable across databases."
+msgstr ""
+"Línea 5: la manera más rápida de hacer el <code>INSERT</code>. Se ha "
+"comentado que se quiere mostrar cómo usar el objeto <code>SqlBuilder</code> "
+"para construir una sentencia SQL portable entre bases de datos."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:280
+msgid ""
+"Line 7: Create the <code>SqlBuilder</code> object. We must pass the type of "
+"statement we are going to build. It can be <code>SELECT</code>, "
+"<code>UPDATE</code>, <code>INSERT</code> or <code>DELETE</code>."
+msgstr ""
+"Línea 7: crear el objeto <code>SqlBuilder</code>. Se debe pasar el tipo de "
+"sentencia que se va a construir. Puede ser <code>SELECT</code>, "
+"<code>UPDATE</code>, <code>INSERT</code> o <code>DELETE</code>."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:281
+msgid ""
+"Line 8: Set the name of the table on which the built statement will operate "
+"(it will generate <code>INSERT INTO demo</code>)"
+msgstr ""
+"Línea 8: establecer el nombre de la base de datos en la que operará la "
+"sentencia construida (generará <code>INSERT INTO demo</code>)"
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:282
+msgid ""
+"Lines 9‒10: Set the fields and its values that will be part of the "
+"statement. The first argument is the field name (as in the table). The "
+"second one is the value for that field."
+msgstr ""
+"Líneas 9‒10: establecer los campos que formarán parte de la sentencia y sus "
+"valores. El primer argumento es el nombre del campo (como aparece en la "
+"tabla). El segundo es el valor de este campo."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:283
+msgid ""
+"Line 11: Get the dynamically generated <code>Statement</code> object, which "
+"represents a SQL statement."
+msgstr ""
+"Línea 11: obtener el objeto <code>Statement</code> generado dinámicamente, "
+"que representa una sentencia SQL."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:284
+msgid "Line 12: Finally, execute the SQL statement (<code>INSERT</code>)."
+msgstr "Línea 12: finalmente, ejecutar la sentencia SQL (<code>INSERT</code>)."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:285
+msgid ""
+"Line 14: Clear the id and name fields on the screen. The code for the "
+"private method <code>_clearFields</code> is really simple and you can read "
+"it in the full demo source code."
+msgstr ""
+"Línea 14: limpiar los campos «id» y «name» en la pantalla. El código del "
+"método privado <code>_clearFields</code> es muy sencillo, y puede leerlo en "
+"el código fuente de la demostración completa."
+
+#. (itstool) path: item/p
+#: C/record-collection.js.page:286
+msgid ""
+"Line 15: Refresh the view on the screen by doing another <code>SELECT</code>."
+msgstr ""
+"Línea 15: actualizar la vista en la pantalla haciendo otro <code>SELECT</"
+"code>."
+
+#. (itstool) path: note/p
+#: C/record-collection.js.page:288
+msgid ""
+"You can also make use of parameters while building the statement. By using "
+"the <code>SqlBuilder</code> objects and parameters you are less subject to "
+"attacks like SQL injection. Check the <link href=\"http://library.gnome.org/"
+"devel/libgda/stable/\">GDA documentation</link> for more information about "
+"parameters."
+msgstr ""
+"También puede usar parámetros mientras construye la sentencia. Usando "
+"objetos y parámetros <code>SqlBuilder</code> será menos susceptible a "
+"ataques de inyección de SQL. Para obtener información adicional sobre los "
+"parámetros, consulte la <link href=\"http://library.gnome.org/devel/libgda/"
+"stable/\">documentación de GDA</link>."
+
+#. (itstool) path: section/p
+#: C/record-collection.js.page:293
+msgid ""
+"All of the code you need should now be in place, so try running the code. "
+"You now have a database for your record collection!"
+msgstr ""
+"Todo el código que necesita debe estar en su lugar, así que trate de "
+"ejecutar el código. Ahora tiene una base de datos para su colección de "
+"registros."
+
+#. (itstool) path: section/p
+#: C/record-collection.js.page:298
+msgid ""
+"If you run into problems with the tutorial, compare your code with this "
+"<link href=\"record-collection/record-collection.js\">reference code</link>."
+msgstr ""
+"Si tiene problemas con este tutorial, compare su código con este <link href="
+"\"record-collection/record-collection.js\">código de referencia</link>."
+
+#. (itstool) path: page/title
+#: C/response-type.page:17
+msgid "enum ResponseType"
+msgstr "enum ResponseType"
+
+#. (itstool) path: item/title
+#: C/response-type.page:21
+msgid "ResponseType.NONE = -1"
+msgstr "ResponseType.NONE = -1"
+
+#. (itstool) path: item/p
+#: C/response-type.page:22
+msgid ""
+"Returned if an action widget has no response id, or if the dialog gets "
+"programmatically hidden or destroyed"
+msgstr ""
+"Valor devuelto si un widget de acción no tiene ID de respuesta, o si el "
+"diálogo se oculta o se destruye mediante código"
+
+#. (itstool) path: item/title
+#: C/response-type.page:25
+msgid "ResponseType.REJECT = -2"
+msgstr "ResponseType.REJECT = -2"
+
+#. (itstool) path: item/p
+#: C/response-type.page:26 C/response-type.page:30
+msgid "Generic response id, not used by GTK+ dialogs"
+msgstr "ID de respuesta genérica, no usado en diálogos de GTK+"
+
+#. (itstool) path: item/title
+#: C/response-type.page:29
+msgid "ResponseType.ACCEPT = -3"
+msgstr "ResponseType.ACCEPT = -3"
+
+#. (itstool) path: item/title
+#: C/response-type.page:33
+msgid "ResponseType.DELETE_EVENT = -4"
+msgstr "ResponseType.DELETE_EVENT = -4"
+
+#. (itstool) path: item/p
+#: C/response-type.page:34
+msgid "Returned if the dialog is deleted"
+msgstr "Valor devuelto si se elimina el diálogo"
+
+#. (itstool) path: item/title
+#: C/response-type.page:37
+msgid "ResponseType.OK = -5"
+msgstr "ResponseType.OK = -5"
+
+#. (itstool) path: item/p
+#: C/response-type.page:38
+msgid "Returned by OK buttons in GTK+ dialogs"
+msgstr "Valor devuelto por los botones «Aceptar» en diálogos de GTK+"
+
+#. (itstool) path: item/title
+#: C/response-type.page:41
+msgid "ResponseType.CANCEL = -6"
+msgstr "ResponseType.CANCEL = -6"
+
+#. (itstool) path: item/p
+#: C/response-type.page:42
+msgid "Returned by Cancel buttons in GTK+ dialogs"
+msgstr "Valor devuelto por los botones «Cancelar» en diálogos de GTK+"
+
+#. (itstool) path: item/title
+#: C/response-type.page:45
+msgid "ResponseType.CLOSE = -7"
+msgstr "ResponseType.CLOSE = -7"
+
+#. (itstool) path: item/p
+#: C/response-type.page:46
+msgid "Returned by Close buttons in GTK+ dialogs"
+msgstr "Valor devuelto por los botones «Cerrar» en diálogos de GTK+"
+
+#. (itstool) path: item/title
+#: C/response-type.page:49
+msgid "ResponseType.YES = -8"
+msgstr "ResponseType.YES = -8"
+
+#. (itstool) path: item/p
+#: C/response-type.page:50
+msgid "Returned by Yes buttons in GTK+ dialogs"
+msgstr "Valor devuelto por los botones «Sí» en diálogos de GTK+"
+
+#. (itstool) path: item/title
+#: C/response-type.page:53
+msgid "ResponseType.NO = -9"
+msgstr "ResponseType.NO = -9"
+
+#. (itstool) path: item/p
+#: C/response-type.page:54
+msgid "Returned by No buttons in GTK+ dialogs"
+msgstr "Valor devuelto por los botones «No» en diálogos de GTK+"
+
+#. (itstool) path: item/title
+#: C/response-type.page:57
+msgid "ResponseType.APPLY = -10"
+msgstr "ResponseType.APPLY = -10"
+
+#. (itstool) path: item/p
+#: C/response-type.page:58
+msgid "Returned by Apply buttons in GTK+ dialogs"
+msgstr "Valor devuelto por los botones «Aplicar» en diálogos de GTK+"
+
+#. (itstool) path: item/title
+#: C/response-type.page:61
+msgid "ResponseType.HELP = -11"
+msgstr "ResponseType.HELP = -11"
+
+#. (itstool) path: item/p
+#: C/response-type.page:62
+msgid "Returned by Help buttons in GTK+ dialogs"
+msgstr "Valor devuelto por los botones «Ayuda» en diálogos de GTK+"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/scale.c.page:25
+msgctxt "_"
+msgid "external ref='media/scale2.png' md5='ae2ba0a6675f3d9cdcd961cdf32f1a5c'"
+msgstr "external ref='media/scale2.png' md5='ae2ba0a6675f3d9cdcd961cdf32f1a5c'"
+
+#. (itstool) path: info/title
+#: C/scale.c.page:8
+msgctxt "text"
+msgid "Scale (C)"
+msgstr "Escala (C)"
+
+#. (itstool) path: info/desc
+#: C/scale.c.page:20 C/scale.py.page:20 C/scale.vala.page:20
+msgid "A slider widget for selecting a value from a range"
+msgstr "Un widget deslizador para seleccionar un valor de un rango"
+
+#. (itstool) path: page/title
+#: C/scale.c.page:23 C/scale.js.page:21 C/scale.py.page:23
+#: C/scale.vala.page:23
+msgid "Scale"
+msgstr "Escala"
+
+#. (itstool) path: page/p
+#: C/scale.c.page:26 C/scale.py.page:25 C/scale.vala.page:25
+msgid "Slide the scales!"
+msgstr "Desplace las escalas."
+
+#. (itstool) path: page/code
+#: C/scale.c.page:28
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/* This is the callback function. \n"
+" * It is a handler function which reacts to the signal. \n"
+" * In this case, it will notify the user the value of their scale as a label.\n"
+" */\n"
+"static void\n"
+"hscale_moved (GtkRange *range,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *label = user_data;\n"
+"\n"
+" /* Get the value of the range, and convert it into a string which will be\n"
+" * used as a new label for the horizontal scale.\n"
+" * %.0f - stands for a double that will have 0 decimal places.\n"
+" */\n"
+" gdouble pos = gtk_range_get_value (range);\n"
+" /* Note: Using g_strdup_printf returns a string that must be freed. \n"
+" * (In which is done below)\n"
+" */\n"
+" gchar *str = g_strdup_printf (\"Horizontal scale is %.0f\", pos);\n"
+" gtk_label_set_text (GTK_LABEL (label), str);\n"
+"\n"
+" g_free(str);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* This is the second callback function. It is a handler function which \n"
+" * reacts to the signal. It does the same thing as the function above, except with\n"
+" * the vertical scale.\n"
+" */\n"
+"vscale_moved (GtkRange *range,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *label = user_data;\n"
+" \n"
+" gdouble pos = gtk_range_get_value (range);\n"
+" /* %.1f - stands for a double that will have 1 decimal place */\n"
+" gchar *str = g_strdup_printf (\"Vertical scale is %.1f\", pos);\n"
+" gtk_label_set_text (GTK_LABEL (label), str);\n"
+"\n"
+" \n"
+" g_free (str);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* Declare variables */\n"
+" GtkWidget *window;\n"
+" GtkWidget *h_scale;\n"
+" GtkWidget *v_scale;\n"
+" GtkWidget *hlabel;\n"
+" GtkWidget *vlabel;\n"
+" GtkWidget *grid;\n"
+"\n"
+" /* The Adjustment object represents a value \n"
+" * which has an associated lower and upper bound.\n"
+" */\n"
+" GtkAdjustment *hadjustment;\n"
+" GtkAdjustment *vadjustment;\n"
+"\n"
+" /* Create a window with a title and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Scale Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);\n"
+" gtk_container_set_border_width (GTK_CONTAINER (window), 5);\n"
+"\n"
+" /* Two labels to be shown in the window */\n"
+" hlabel = gtk_label_new (\"Move the scale handle...\");\n"
+" vlabel = gtk_label_new (\"Move the scale handle...\");\n"
+"\n"
+" \n"
+" /* gtk_adjustment_new takes six parameters, three of which \n"
+" * may be difficult to understand:\n"
+" * step increment- move the handle with the arrow keys on your keyboard to see.\n"
+" * page increment - move the handle by clicking away from it \n"
+" * on the scale to see.\n"
+" * page size - not used here.\n"
+" */\n"
+" hadjustment = gtk_adjustment_new (0, 0, 100, 5, 10, 0);\n"
+" vadjustment = gtk_adjustment_new (50, 0, 100, 5, 10, 0); \n"
+"\n"
+" /* Create the Horizontal scale, making sure the \n"
+" * digits used have no decimals.\n"
+" */\n"
+" h_scale = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, hadjustment);\n"
+" gtk_scale_set_digits (GTK_SCALE (h_scale), 0); \n"
+"\n"
+" /* Allow it to expand horizontally (if there's space), and \n"
+" * set the vertical alignment\n"
+" */\n"
+" gtk_widget_set_hexpand (h_scale, TRUE);\n"
+" gtk_widget_set_valign (h_scale, GTK_ALIGN_START);\n"
+" \n"
+" /* Connecting the \"value-changed\" signal for the horizontal scale \n"
+" * to the appropriate callback function. \n"
+" * take note that GtkRange is part of GtkScale's Object Hierarchy.\n"
+" */\n"
+" g_signal_connect (h_scale, \n"
+" \"value-changed\", \n"
+" G_CALLBACK (hscale_moved), \n"
+" hlabel);\n"
+"\n"
+"\n"
+"\n"
+" /* Create the Vertical scale. This time, we will see what happens \n"
+" * when the digits arent initially set.\n"
+" */\n"
+" v_scale = gtk_scale_new (GTK_ORIENTATION_VERTICAL, vadjustment);\n"
+" gtk_widget_set_vexpand (v_scale, TRUE);\n"
+"\n"
+" /* Connecting the \"value-changed\" signal for the vertical scale to \n"
+" * the appropriate callback function.\n"
+" */\n"
+" g_signal_connect (v_scale, \n"
+" \"value-changed\", \n"
+" G_CALLBACK (vscale_moved), \n"
+" vlabel);\n"
+"\n"
+" /* Create a grid and arrange everything accordingly */\n"
+" grid = gtk_grid_new ();\n"
+" gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n"
+" gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n"
+" gtk_grid_attach (GTK_GRID (grid), h_scale, 0, 0, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), v_scale, 1, 0, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), hlabel, 0, 1, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), vlabel, 1, 1, 1, 1);\n"
+" \n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), grid);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/* This is the callback function. \n"
+" * It is a handler function which reacts to the signal. \n"
+" * In this case, it will notify the user the value of their scale as a label.\n"
+" */\n"
+"static void\n"
+"hscale_moved (GtkRange *range,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *label = user_data;\n"
+"\n"
+" /* Get the value of the range, and convert it into a string which will be\n"
+" * used as a new label for the horizontal scale.\n"
+" * %.0f - stands for a double that will have 0 decimal places.\n"
+" */\n"
+" gdouble pos = gtk_range_get_value (range);\n"
+" /* Note: Using g_strdup_printf returns a string that must be freed. \n"
+" * (In which is done below)\n"
+" */\n"
+" gchar *str = g_strdup_printf (\"Horizontal scale is %.0f\", pos);\n"
+" gtk_label_set_text (GTK_LABEL (label), str);\n"
+"\n"
+" g_free(str);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* This is the second callback function. It is a handler function which \n"
+" * reacts to the signal. It does the same thing as the function above, except with\n"
+" * the vertical scale.\n"
+" */\n"
+"vscale_moved (GtkRange *range,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *label = user_data;\n"
+" \n"
+" gdouble pos = gtk_range_get_value (range);\n"
+" /* %.1f - stands for a double that will have 1 decimal place */\n"
+" gchar *str = g_strdup_printf (\"Vertical scale is %.1f\", pos);\n"
+" gtk_label_set_text (GTK_LABEL (label), str);\n"
+"\n"
+" \n"
+" g_free (str);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* Declare variables */\n"
+" GtkWidget *window;\n"
+" GtkWidget *h_scale;\n"
+" GtkWidget *v_scale;\n"
+" GtkWidget *hlabel;\n"
+" GtkWidget *vlabel;\n"
+" GtkWidget *grid;\n"
+"\n"
+" /* The Adjustment object represents a value \n"
+" * which has an associated lower and upper bound.\n"
+" */\n"
+" GtkAdjustment *hadjustment;\n"
+" GtkAdjustment *vadjustment;\n"
+"\n"
+" /* Create a window with a title and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Scale Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);\n"
+" gtk_container_set_border_width (GTK_CONTAINER (window), 5);\n"
+"\n"
+" /* Two labels to be shown in the window */\n"
+" hlabel = gtk_label_new (\"Move the scale handle...\");\n"
+" vlabel = gtk_label_new (\"Move the scale handle...\");\n"
+"\n"
+" \n"
+" /* gtk_adjustment_new takes six parameters, three of which \n"
+" * may be difficult to understand:\n"
+" * step increment- move the handle with the arrow keys on your keyboard to see.\n"
+" * page increment - move the handle by clicking away from it \n"
+" * on the scale to see.\n"
+" * page size - not used here.\n"
+" */\n"
+" hadjustment = gtk_adjustment_new (0, 0, 100, 5, 10, 0);\n"
+" vadjustment = gtk_adjustment_new (50, 0, 100, 5, 10, 0); \n"
+"\n"
+" /* Create the Horizontal scale, making sure the \n"
+" * digits used have no decimals.\n"
+" */\n"
+" h_scale = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, hadjustment);\n"
+" gtk_scale_set_digits (GTK_SCALE (h_scale), 0); \n"
+"\n"
+" /* Allow it to expand horizontally (if there's space), and \n"
+" * set the vertical alignment\n"
+" */\n"
+" gtk_widget_set_hexpand (h_scale, TRUE);\n"
+" gtk_widget_set_valign (h_scale, GTK_ALIGN_START);\n"
+" \n"
+" /* Connecting the \"value-changed\" signal for the horizontal scale \n"
+" * to the appropriate callback function. \n"
+" * take note that GtkRange is part of GtkScale's Object Hierarchy.\n"
+" */\n"
+" g_signal_connect (h_scale, \n"
+" \"value-changed\", \n"
+" G_CALLBACK (hscale_moved), \n"
+" hlabel);\n"
+"\n"
+"\n"
+"\n"
+" /* Create the Vertical scale. This time, we will see what happens \n"
+" * when the digits arent initially set.\n"
+" */\n"
+" v_scale = gtk_scale_new (GTK_ORIENTATION_VERTICAL, vadjustment);\n"
+" gtk_widget_set_vexpand (v_scale, TRUE);\n"
+"\n"
+" /* Connecting the \"value-changed\" signal for the vertical scale to \n"
+" * the appropriate callback function.\n"
+" */\n"
+" g_signal_connect (v_scale, \n"
+" \"value-changed\", \n"
+" G_CALLBACK (vscale_moved), \n"
+" vlabel);\n"
+"\n"
+" /* Create a grid and arrange everything accordingly */\n"
+" grid = gtk_grid_new ();\n"
+" gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n"
+" gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n"
+" gtk_grid_attach (GTK_GRID (grid), h_scale, 0, 0, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), v_scale, 1, 0, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), hlabel, 0, 1, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), vlabel, 1, 1, 1, 1);\n"
+" \n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), grid);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/scale.c.page:36
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkScale.html"
+"\">GtkScale</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkScale.html"
+"\">GtkScale</link>"
+
+#. (itstool) path: item/p
+#: C/scale.c.page:37
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkRange.html"
+"\">GtkRange</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkRange.html"
+"\">GtkRange</link>"
+
+#. (itstool) path: item/p
+#: C/scale.c.page:38 C/spinbutton.c.page:39
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkAdjustment.html"
+"\">GtkAdjustment</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkAdjustment.html"
+"\">GtkAdjustment</link>"
+
+#. (itstool) path: item/p
+#: C/scale.c.page:39
+msgid ""
+"<link href=\"http://developer.gnome.org/glib/stable/glib-String-Utility-"
+"Functions.html#g-strdup-printf\">String Utility Functions</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/glib/stable/glib-String-Utility-"
+"Functions.html#g-strdup-printf\">Funciones útiles de cadenas</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/scale.js.page:22
+msgctxt "_"
+msgid ""
+"external ref='media/scalepenguins.png' md5='2dbe6a833fec86fde71a5ddb421e2cd5'"
+msgstr ""
+"external ref='media/scalepenguins.png' md5='2dbe6a833fec86fde71a5ddb421e2cd5'"
+
+#. (itstool) path: info/title
+#: C/scale.js.page:8
+msgctxt "text"
+msgid "Scale (JavaScript)"
+msgstr "Escala (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/scale.js.page:18
+msgid "A slider which corresponds to a numerical value"
+msgstr "Un deslizador que corresponde a un valor numérico"
+
+#. (itstool) path: page/p
+#: C/scale.js.page:23
+msgid ""
+"A Scale is a horizontal or vertical slider, that represents a value inside a "
+"numerical range. When you create a new Scale, you set what its default "
+"position is, what the numbers at the top and bottom of the range are, and "
+"things like how much it moves up or down when you click on the Scale to "
+"either side of the knob. To keep from having to type all that in every time "
+"you create a new Scale, you can create an object called an Adjustment which "
+"keeps track of all that, then tell each new Scale to use that Adjustment."
+msgstr ""
+"Una escala es un deslizador horizontal o vertical, que representa un valor "
+"dentro de un rango numérico. Cuando crea una escala nueva, establece cuál es "
+"su posición predeterminada, cuáles son los números en la parte inferior y "
+"superior del rango, y cosas como cuánto sube o baja cuando pulsa en la "
+"escala o en cada lado de la perilla. Para no tener que introducir todo eso "
+"cada vez que cree una escala nueva, puede crear un objeto llamado ajuste que "
+"registra todo eso, y decirle a cada escala nueva que use ese ajuste."
+
+#. (itstool) path: page/p
+#: C/scale.js.page:24
+msgid ""
+"This scale is a simple widget that lets you adjust the size of an iceberg "
+"that penguins live on. The number of penguins on the iceberg is the product "
+"of the values of the two sliders. Try playing with them and seeing what "
+"happens."
+msgstr ""
+"Esta escala es un widget simple que le permite ajustar el tamaño de un "
+"iceberg en el que viven pingüinos. El número de pingüinos en el iceberg es "
+"el producto de los valores de ambos deslizadores. Juegue con ellos y vea qué "
+"sucede."
+
+#. (itstool) path: section/code
+#: C/scale.js.page:41
+#, no-wrap
+msgid ""
+"\n"
+"const ScaleExample = new Lang.Class({\n"
+" Name: 'Scale Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsscale'\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+"const ScaleExample = new Lang.Class({\n"
+" Name: 'Scale Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsscale'\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/scale.js.page:66
+msgid ""
+"All the code for this sample goes in the ScaleExample class. The above code "
+"creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk."
+"Application.html\">Gtk.Application</link> for our widgets and window to go "
+"in."
+msgstr ""
+"Todo el código de este ejemplo va en la clase «ScaleExample». El código "
+"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> para que vayan los widgets y "
+"la ventana."
+
+#. (itstool) path: section/code
+#: C/scale.js.page:67
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Birds on a Floe\"});\n"
+msgstr ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Birds on a Floe\"});\n"
+
+#. (itstool) path: section/title
+#: C/scale.js.page:82
+msgid "Creating the scales"
+msgstr "Crear las escalas"
+
+#. (itstool) path: section/code
+#: C/scale.js.page:83
+#, no-wrap
+msgid ""
+"\n"
+" // Create the horizontal scale\n"
+" this._hScale = Gtk.Scale.new_with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n"
+" this._hScale.set_valign (Gtk.Align.START);\n"
+" this._hScale.set_value (50);\n"
+" this._hScale.set_digits (0);\n"
+" // this._hScale.set_draw_value (false);\n"
+msgstr ""
+"\n"
+" // Create the horizontal scale\n"
+" this._hScale = Gtk.Scale.new_with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n"
+" this._hScale.set_valign (Gtk.Align.START);\n"
+" this._hScale.set_value (50);\n"
+" this._hScale.set_digits (0);\n"
+" // this._hScale.set_draw_value (false);\n"
+
+#. (itstool) path: section/p
+#: C/scale.js.page:92
+msgid ""
+"The new_with_range method is one way to create a new Scale widget. The "
+"parameters it takes are a <link href=\"http://www.roojs.org/seed/gir-1.2-"
+"gtk-3.0/gjs/Gtk.Orientation.html\">Gtk.Orientation</link>, the minimum "
+"value, the maximum value, and the increment for a single step. After that we "
+"use the Scale's methods to set its starting value, and how many decimal "
+"places it runs to. We also set its vertical alignment in this case, to "
+"control where it appears in the window."
+msgstr ""
+"El método nuevo «new_with_range» es una manera de crear un widget de escala. "
+"Los parámetros que toma son una <link href=\"http://www.roojs.org/seed/"
+"gir-1.2-gtk-3.0/gjs/Gtk.Orientation.html\">Gtk.Orientation</link>, el valor "
+"mínimo, el valor máximo, y el incremento para un solo paso. Después de eso "
+"se usan los métodos de la escala para establecer su valor de inicio, y "
+"cuántos lugares decimales abarca. También se establece su alineación "
+"vertical en este caso, para controlar dónde aparece en la ventana."
+
+#. (itstool) path: section/p
+#: C/scale.js.page:93
+msgid ""
+"We can use the set_draw_value method to tell it whether or not to show the "
+"number next to the sliding scale. It's commented out in this example."
+msgstr ""
+"Se puede usar el método «set_draw_value» para decirle si muestra o no el "
+"número junto a la escala deslizante. En este ejemplo está comentado."
+
+#. (itstool) path: section/code
+#: C/scale.js.page:95
+#, no-wrap
+msgid ""
+"\n"
+" // Create a master adjustment to use for the vertical (or any other) scale\n"
+" this._adjustment = new Gtk.Adjustment ({\n"
+" value: 95,\n"
+" lower: 0,\n"
+" upper: 100,\n"
+" step_increment: 5,\n"
+" page_increment: 10 });\n"
+msgstr ""
+"\n"
+" // Create a master adjustment to use for the vertical (or any other) scale\n"
+" this._adjustment = new Gtk.Adjustment ({\n"
+" value: 95,\n"
+" lower: 0,\n"
+" upper: 100,\n"
+" step_increment: 5,\n"
+" page_increment: 10 });\n"
+
+#. (itstool) path: section/p
+#: C/scale.js.page:105
+msgid ""
+"An Adjustment is an object we can use to simplify things when creating a new "
+"Scale. The Adjustment's \"value\" property is what the Scale's default value "
+"is, while \"upper\" and \"lower\" make the high and low ends of the "
+"numerical range. Meanwhile, the increment values show how much the slider "
+"moves when you do things like click on it."
+msgstr ""
+"Un ajuste es un objeto que se puede usar para simplificar las cosas cuando "
+"se crea una escala nueva. La propiedad «value» del ajuste es el valor "
+"predeterminado de la escala, mientras que «upper» y «lower» son los límites "
+"superior e inferior del rango numérico. Además, las valores de incremento "
+"muestran cuánto se mueve el deslizador cuando hace cosas como pulsarlo."
+
+#. (itstool) path: section/code
+#: C/scale.js.page:107
+#, no-wrap
+msgid ""
+"\n"
+" // Create a vertical scale using the adjustment we just made\n"
+" this._vScale = new Gtk.Scale ({\n"
+" orientation: Gtk.Orientation.VERTICAL,\n"
+" adjustment: this._adjustment,\n"
+" digits: 0,\n"
+" // draw_value: false,\n"
+" margin_left: 10 });\n"
+msgstr ""
+"\n"
+" // Create a vertical scale using the adjustment we just made\n"
+" this._vScale = new Gtk.Scale ({\n"
+" orientation: Gtk.Orientation.VERTICAL,\n"
+" adjustment: this._adjustment,\n"
+" digits: 0,\n"
+" // draw_value: false,\n"
+" margin_left: 10 });\n"
+
+#. (itstool) path: section/p
+#: C/scale.js.page:117
+msgid ""
+"Here we create a new Scale object using _adjustment as its \"adjustment\" "
+"property. This is a great shortcut. We still have to tell it to round off "
+"the decimal place, though. Note that the draw_value property is commented "
+"out; this is how you tell it not to show the number next to the Scale when "
+"you're creating one this way."
+msgstr ""
+"Aquí se crea un objeto de escala nuevo usando «_adjustment» como su "
+"propiedad «ajuste». Este es un buen atajo. Sin embargo, todavía hay que "
+"decirle que redondee el lugar decimal. Tenga en cuenta que la propiedad "
+"«draw_value» está comentada; así es como se le dice que no muestre el número "
+"junto a la escala cuando está creando una de esta manera."
+
+#. (itstool) path: section/code
+#: C/scale.js.page:119
+#, no-wrap
+msgid ""
+"\n"
+" // Create the label that shows the product of the two values\n"
+" this._product = (this._hScale.get_value() * this._vScale.get_value());\n"
+" this._label = new Gtk.Label ({\n"
+" label: (String(this._product) + \" penguins on the iceberg.\"),\n"
+" height_request: 200,\n"
+" width_request: 200,\n"
+" wrap: true});\n"
+"\n"
+" // Connect the two scales to functions which recalculate the label\n"
+" this._hScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
+" this._vScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
+msgstr ""
+"\n"
+" // Create the label that shows the product of the two values\n"
+" this._product = (this._hScale.get_value() * this._vScale.get_value());\n"
+" this._label = new Gtk.Label ({\n"
+" label: (String(this._product) + \" penguins on the iceberg.\"),\n"
+" height_request: 200,\n"
+" width_request: 200,\n"
+" wrap: true});\n"
+"\n"
+" // Connect the two scales to functions which recalculate the label\n"
+" this._hScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
+" this._vScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
+
+#. (itstool) path: section/p
+#: C/scale.js.page:133
+msgid ""
+"We can use the get_value method to find out the numerical value a Scale is "
+"set at. We can then do whatever we want with it, including multiply the two "
+"Scales' values together and have a <link xref=\"label.js\">Label</link> show "
+"us the product. We set the label's text to wrap around, because we're having "
+"it display a silly message too."
+msgstr ""
+"Se puede usar el método «get_value» para obtener el valor numérico en el que "
+"se estableció una escala. Después se puede hacer lo que se quiera con él, "
+"incluyendo multiplicar los dos valores de las escalas y hacer que una <link "
+"xref=\"label.js\">etiqueta</link> muestre el producto. Se configura el texto "
+"de la etiqueta para que ajuste su línea, porque también se hace que muestre "
+"un mensaje tonto."
+
+#. (itstool) path: section/p
+#: C/scale.js.page:134
+msgid ""
+"After we create the Label, we connect the two Scales' \"value-changed\" "
+"signals to _recalc, a function that will recalculate the number of penguins "
+"on the iceberg and come up with a new message."
+msgstr ""
+"Después de crear la etiqueta, se conectan las señales «value-changed» de las "
+"dos escalas a «_recalc», una función que recalculará el número de pingüinos "
+"en el iceberg y elaborará un mensaje nuevo."
+
+#. (itstool) path: section/code
+#: C/scale.js.page:136
+#, no-wrap
+msgid ""
+"\n"
+" // Create a grid to arrange things in\n"
+" this._UIGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_top: 20,\n"
+" margin_left: 20});\n"
+"\n"
+" // Attach everything to the grid\n"
+" this._UIGrid.attach (this._label, 0, 0, 1, 1);\n"
+" this._UIGrid.attach (this._hScale, 0, 1, 1, 1);\n"
+" this._UIGrid.attach (this._vScale, 1, 0, 1, 1);\n"
+msgstr ""
+"\n"
+" // Create a grid to arrange things in\n"
+" this._UIGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_top: 20,\n"
+" margin_left: 20});\n"
+"\n"
+" // Attach everything to the grid\n"
+" this._UIGrid.attach (this._label, 0, 0, 1, 1);\n"
+" this._UIGrid.attach (this._hScale, 0, 1, 1, 1);\n"
+" this._UIGrid.attach (this._vScale, 1, 0, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/scale.js.page:149
+msgid ""
+"Here we create a <link xref=\"grid.js\">Grid</link> to put everything in, "
+"then attach all our widgets to it. Note that here and on some of the widgets "
+"themselves we're using margins to keep things neatly spaced."
+msgstr ""
+"Aquí se crea una <link xref=\"grid.js\">rejilla</link> para poner todo "
+"dentro, después se le adjuntan todos los widgets. Tenga en cuenta que aquí y "
+"en algunos de los widgets se usan márgenes para mantener las cosas "
+"prolijamente espaciadas."
+
+#. (itstool) path: section/code
+#: C/scale.js.page:150
+#, no-wrap
+msgid ""
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._UIGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+msgstr ""
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._UIGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/scale.js.page:158
+msgid ""
+"Finally, we add the Grid to the window, then tell the window to show itself "
+"and all the widgets inside of it."
+msgstr ""
+"Finalmente, se le añade la rejilla a la ventana, y después se le dice a la "
+"ventana que se muestre con todos sus widgets dentro."
+
+#. (itstool) path: section/title
+#: C/scale.js.page:162
+msgid "Function which handles the scales' values changing"
+msgstr "Función que maneja el cambio de los valores de las escalas"
+
+#. (itstool) path: section/code
+#: C/scale.js.page:164
+#, no-wrap
+msgid ""
+"\n"
+" _recalc: function() {\n"
+"\n"
+" // Figure out what the product of the two scales' values is\n"
+" var product = (this._hScale.get_value() * this._vScale.get_value());\n"
+"\n"
+" // Create a blank comment line in case there isn't a silly comment to make\n"
+" var comment = \"\";\n"
+"\n"
+" // Make a silly comment based on the number of penguins\n"
+" if (product > 9000) {\n"
+" comment = \"It's over 9000!\";\n"
+" }\n"
+" else if (product < 1000 && product > 0) {\n"
+" comment = \"They're getting lonely.\";\n"
+" }\n"
+" else if (product == 0) {\n"
+" comment = \"They're all gone ...\";\n"
+" }\n"
+" else comment = \"\";\n"
+"\n"
+" // Set ._label's new text\n"
+" this._label.set_label (String (product) + \" penguins on the iceberg. \" + comment);\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+msgstr ""
+"\n"
+" _recalc: function() {\n"
+"\n"
+" // Figure out what the product of the two scales' values is\n"
+" var product = (this._hScale.get_value() * this._vScale.get_value());\n"
+"\n"
+" // Create a blank comment line in case there isn't a silly comment to make\n"
+" var comment = \"\";\n"
+"\n"
+" // Make a silly comment based on the number of penguins\n"
+" if (product > 9000) {\n"
+" comment = \"It's over 9000!\";\n"
+" }\n"
+" else if (product < 1000 && product > 0) {\n"
+" comment = \"They're getting lonely.\";\n"
+" }\n"
+" else if (product == 0) {\n"
+" comment = \"They're all gone ...\";\n"
+" }\n"
+" else comment = \"\";\n"
+"\n"
+" // Set ._label's new text\n"
+" this._label.set_label (String (product) + \" penguins on the iceberg. \" + comment);\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+
+#. (itstool) path: section/p
+#: C/scale.js.page:192
+msgid ""
+"Remember, we can get a Scale's value using its get_value method. Here we "
+"simply recalculate what the product of the two values is after one of the "
+"Scales is moved, add in a silly message depending on how many penguins are "
+"left, and change the wording on _label to show the new number and message."
+msgstr ""
+"Recuerde, se puede obtener el valor de una escala usando su método "
+"«get_value». Aquí simplemente se recalcula cuál es el producto de los dos "
+"valores después de que se mueva una de las escalas, se añade un mensaje "
+"tonto dependiendo de cuántos pingüinos quedan, y se cambian las palabras en "
+"«_label» para mostrar el número y mensaje nuevos."
+
+#. (itstool) path: section/code
+#: C/scale.js.page:194
+#, no-wrap
+msgid ""
+"\n"
+"// Run the application\n"
+"let app = new ScaleExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"// Run the application\n"
+"let app = new ScaleExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/p
+#: C/scale.js.page:199
+msgid ""
+"Finally, we create a new instance of the finished ScaleExample class, and "
+"set the application running."
+msgstr ""
+"Finalmente, se crea una instancia nueva de la clase «ScaleExample» "
+"terminada, y se ejecuta la aplicación."
+
+#. (itstool) path: section/code
+#: C/scale.js.page:204
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ScaleExample = new Lang.Class({\n"
+" Name: 'Scale Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsscale'\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Birds on a Floe\"});\n"
+"\n"
+" // Create the horizontal scale\n"
+" this._hScale = Gtk.Scale.new_with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n"
+" this._hScale.set_valign (Gtk.Align.START);\n"
+" this._hScale.set_value (50);\n"
+" this._hScale.set_digits (0);\n"
+" // this._hScale.set_draw_value (false);\n"
+"\n"
+" // Create a master adjustment to use for the vertical (or any other) scale\n"
+" this._adjustment = new Gtk.Adjustment ({\n"
+" value: 95,\n"
+" lower: 0,\n"
+" upper: 100,\n"
+" step_increment: 5,\n"
+" page_increment: 10 });\n"
+"\n"
+" // Create a vertical scale using the adjustment we just made\n"
+" this._vScale = new Gtk.Scale ({\n"
+" orientation: Gtk.Orientation.VERTICAL,\n"
+" adjustment: this._adjustment,\n"
+" digits: 0,\n"
+" // draw_value: false,\n"
+" margin_left: 10 });\n"
+"\n"
+" // Create the label that shows the product of the two values\n"
+" this._product = (this._hScale.get_value() * this._vScale.get_value());\n"
+" this._label = new Gtk.Label ({\n"
+" label: (String(this._product) + \" penguins on the iceberg.\"),\n"
+" height_request: 200,\n"
+" width_request: 200,\n"
+" wrap: true});\n"
+"\n"
+" // Connect the two scales to functions which recalculate the label\n"
+" this._hScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
+" this._vScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
+"\n"
+" // Create a grid to arrange things in\n"
+" this._UIGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_top: 20,\n"
+" margin_left: 20});\n"
+"\n"
+" // Attach everything to the grid\n"
+" this._UIGrid.attach (this._label, 0, 0, 1, 1);\n"
+" this._UIGrid.attach (this._hScale, 0, 1, 1, 1);\n"
+" this._UIGrid.attach (this._vScale, 1, 0, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._UIGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _recalc: function() {\n"
+"\n"
+" // Figure out what the product of the two scales' values is\n"
+" var product = (this._hScale.get_value() * this._vScale.get_value());\n"
+"\n"
+" // Create a blank comment line in case there isn't a silly comment to make\n"
+" var comment = \"\";\n"
+"\n"
+" // Make a silly comment based on the number of penguins\n"
+" if (product > 9000) {\n"
+" comment = \"It's over 9000!\";\n"
+" }\n"
+" else if (product < 1000 && product > 0) {\n"
+" comment = \"They're getting lonely.\";\n"
+" }\n"
+" else if (product == 0) {\n"
+" comment = \"They're all gone ...\";\n"
+" }\n"
+" else comment = \"\";\n"
+"\n"
+" // Set ._label's new text\n"
+" this._label.set_label (String (product) + \" penguins on the iceberg. \" + comment);\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ScaleExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ScaleExample = new Lang.Class({\n"
+" Name: 'Scale Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsscale'\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Birds on a Floe\"});\n"
+"\n"
+" // Create the horizontal scale\n"
+" this._hScale = Gtk.Scale.new_with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n"
+" this._hScale.set_valign (Gtk.Align.START);\n"
+" this._hScale.set_value (50);\n"
+" this._hScale.set_digits (0);\n"
+" // this._hScale.set_draw_value (false);\n"
+"\n"
+" // Create a master adjustment to use for the vertical (or any other) scale\n"
+" this._adjustment = new Gtk.Adjustment ({\n"
+" value: 95,\n"
+" lower: 0,\n"
+" upper: 100,\n"
+" step_increment: 5,\n"
+" page_increment: 10 });\n"
+"\n"
+" // Create a vertical scale using the adjustment we just made\n"
+" this._vScale = new Gtk.Scale ({\n"
+" orientation: Gtk.Orientation.VERTICAL,\n"
+" adjustment: this._adjustment,\n"
+" digits: 0,\n"
+" // draw_value: false,\n"
+" margin_left: 10 });\n"
+"\n"
+" // Create the label that shows the product of the two values\n"
+" this._product = (this._hScale.get_value() * this._vScale.get_value());\n"
+" this._label = new Gtk.Label ({\n"
+" label: (String(this._product) + \" penguins on the iceberg.\"),\n"
+" height_request: 200,\n"
+" width_request: 200,\n"
+" wrap: true});\n"
+"\n"
+" // Connect the two scales to functions which recalculate the label\n"
+" this._hScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
+" this._vScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n"
+"\n"
+" // Create a grid to arrange things in\n"
+" this._UIGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_top: 20,\n"
+" margin_left: 20});\n"
+"\n"
+" // Attach everything to the grid\n"
+" this._UIGrid.attach (this._label, 0, 0, 1, 1);\n"
+" this._UIGrid.attach (this._hScale, 0, 1, 1, 1);\n"
+" this._UIGrid.attach (this._vScale, 1, 0, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._UIGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _recalc: function() {\n"
+"\n"
+" // Figure out what the product of the two scales' values is\n"
+" var product = (this._hScale.get_value() * this._vScale.get_value());\n"
+"\n"
+" // Create a blank comment line in case there isn't a silly comment to make\n"
+" var comment = \"\";\n"
+"\n"
+" // Make a silly comment based on the number of penguins\n"
+" if (product > 9000) {\n"
+" comment = \"It's over 9000!\";\n"
+" }\n"
+" else if (product < 1000 && product > 0) {\n"
+" comment = \"They're getting lonely.\";\n"
+" }\n"
+" else if (product == 0) {\n"
+" comment = \"They're all gone ...\";\n"
+" }\n"
+" else comment = \"\";\n"
+"\n"
+" // Set ._label's new text\n"
+" this._label.set_label (String (product) + \" penguins on the iceberg. \" + comment);\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ScaleExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/scale.js.page:210 C/spinbutton.js.page:201
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Adjustment."
+"html\">Gtk.Adjustment</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Adjustment."
+"html\">Gtk.Adjustment</link>"
+
+#. (itstool) path: item/p
+#: C/scale.js.page:215
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Scale.html"
+"\">Gtk.Scale</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Scale.html"
+"\">Gtk.Scale</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/scale.py.page:24 C/scale.vala.page:24
+msgctxt "_"
+msgid "external ref='media/scale.png' md5='462c52a53b773cb9e8c62c646bf88452'"
+msgstr "external ref='media/scale.png' md5='462c52a53b773cb9e8c62c646bf88452'"
+
+#. (itstool) path: info/title
+#: C/scale.py.page:8
+msgctxt "text"
+msgid "Scale (Python)"
+msgstr "Escala (Python)"
+
+#. (itstool) path: section/code
+#: C/scale.py.page:31
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Scale Example\", application=app)\n"
+" self.set_default_size(400, 300)\n"
+" self.set_border_width(5)\n"
+"\n"
+" # two adjustments (initial value, min value, max value,\n"
+" # step increment - press cursor keys to see!,\n"
+" # page increment - click around the handle to see!,\n"
+" # page size - not used here)\n"
+" ad1 = Gtk.Adjustment(0, 0, 100, 5, 10, 0)\n"
+" ad2 = Gtk.Adjustment(50, 0, 100, 5, 10, 0)\n"
+"\n"
+" # an horizontal scale\n"
+" self.h_scale = Gtk.Scale(\n"
+" orientation=Gtk.Orientation.HORIZONTAL, adjustment=ad1)\n"
+" # of integers (no digits)\n"
+" self.h_scale.set_digits(0)\n"
+" # that can expand horizontally if there is space in the grid (see\n"
+" # below)\n"
+" self.h_scale.set_hexpand(True)\n"
+" # that is aligned at the top of the space allowed in the grid (see\n"
+" # below)\n"
+" self.h_scale.set_valign(Gtk.Align.START)\n"
+"\n"
+" # we connect the signal \"value-changed\" emitted by the scale with the callback\n"
+" # function scale_moved\n"
+" self.h_scale.connect(\"value-changed\", self.scale_moved)\n"
+"\n"
+" # a vertical scale\n"
+" self.v_scale = Gtk.Scale(\n"
+" orientation=Gtk.Orientation.VERTICAL, adjustment=ad2)\n"
+" # that can expand vertically if there is space in the grid (see below)\n"
+" self.v_scale.set_vexpand(True)\n"
+"\n"
+" # we connect the signal \"value-changed\" emitted by the scale with the callback\n"
+" # function scale_moved\n"
+" self.v_scale.connect(\"value-changed\", self.scale_moved)\n"
+"\n"
+" # a label\n"
+" self.label = Gtk.Label()\n"
+" self.label.set_text(\"Move the scale handles...\")\n"
+"\n"
+" # a grid to attach the widgets\n"
+" grid = Gtk.Grid()\n"
+" grid.set_column_spacing(10)\n"
+" grid.set_column_homogeneous(True)\n"
+" grid.attach(self.h_scale, 0, 0, 1, 1)\n"
+" grid.attach_next_to(\n"
+" self.v_scale, self.h_scale, Gtk.PositionType.RIGHT, 1, 1)\n"
+" grid.attach(self.label, 0, 1, 2, 1)\n"
+"\n"
+" self.add(grid)\n"
+"\n"
+" # any signal from the scales is signaled to the label the text of which is\n"
+" # changed\n"
+" def scale_moved(self, event):\n"
+" self.label.set_text(\"Horizontal scale is \" + str(int(self.h_scale.get_value())) +\n"
+" \"; vertical scale is \" + str(self.v_scale.get_value()) + \".\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Scale Example\", application=app)\n"
+" self.set_default_size(400, 300)\n"
+" self.set_border_width(5)\n"
+"\n"
+" # two adjustments (initial value, min value, max value,\n"
+" # step increment - press cursor keys to see!,\n"
+" # page increment - click around the handle to see!,\n"
+" # page size - not used here)\n"
+" ad1 = Gtk.Adjustment(0, 0, 100, 5, 10, 0)\n"
+" ad2 = Gtk.Adjustment(50, 0, 100, 5, 10, 0)\n"
+"\n"
+" # an horizontal scale\n"
+" self.h_scale = Gtk.Scale(\n"
+" orientation=Gtk.Orientation.HORIZONTAL, adjustment=ad1)\n"
+" # of integers (no digits)\n"
+" self.h_scale.set_digits(0)\n"
+" # that can expand horizontally if there is space in the grid (see\n"
+" # below)\n"
+" self.h_scale.set_hexpand(True)\n"
+" # that is aligned at the top of the space allowed in the grid (see\n"
+" # below)\n"
+" self.h_scale.set_valign(Gtk.Align.START)\n"
+"\n"
+" # we connect the signal \"value-changed\" emitted by the scale with the callback\n"
+" # function scale_moved\n"
+" self.h_scale.connect(\"value-changed\", self.scale_moved)\n"
+"\n"
+" # a vertical scale\n"
+" self.v_scale = Gtk.Scale(\n"
+" orientation=Gtk.Orientation.VERTICAL, adjustment=ad2)\n"
+" # that can expand vertically if there is space in the grid (see below)\n"
+" self.v_scale.set_vexpand(True)\n"
+"\n"
+" # we connect the signal \"value-changed\" emitted by the scale with the callback\n"
+" # function scale_moved\n"
+" self.v_scale.connect(\"value-changed\", self.scale_moved)\n"
+"\n"
+" # a label\n"
+" self.label = Gtk.Label()\n"
+" self.label.set_text(\"Move the scale handles...\")\n"
+"\n"
+" # a grid to attach the widgets\n"
+" grid = Gtk.Grid()\n"
+" grid.set_column_spacing(10)\n"
+" grid.set_column_homogeneous(True)\n"
+" grid.attach(self.h_scale, 0, 0, 1, 1)\n"
+" grid.attach_next_to(\n"
+" self.v_scale, self.h_scale, Gtk.PositionType.RIGHT, 1, 1)\n"
+" grid.attach(self.label, 0, 1, 2, 1)\n"
+"\n"
+" self.add(grid)\n"
+"\n"
+" # any signal from the scales is signaled to the label the text of which is\n"
+" # changed\n"
+" def scale_moved(self, event):\n"
+" self.label.set_text(\"Horizontal scale is \" + str(int(self.h_scale.get_value())) +\n"
+" \"; vertical scale is \" + str(self.v_scale.get_value()) + \".\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/scale.py.page:35
+msgid "Useful methods for a Scale widget"
+msgstr "Métodos útiles para un widget «Escala»"
+
+#. (itstool) path: section/p
+#: C/scale.py.page:36
+msgid ""
+"A Gtk.Adjustment is needed to construct the Gtk.Scale. This is the "
+"representation of a value with a lower and upper bound, together with step "
+"and page increments, and a page size, and it is constructed as <code>Gtk."
+"Adjustment(value, lower, upper, step_increment, page_increment, page_size)</"
+"code> where the fields are of type <code>float</code>; <code>step_increment</"
+"code> is the increment/decrement that is obtained by using the cursor keys, "
+"<code>page_increment</code> the one that is obtained clicking on the scale "
+"itself. Note that <code>page_size</code> is not used in this case, it should "
+"be set to <code>0</code>."
+msgstr ""
+"Se necesita un «Gtk.Adjustment» para construir la «Gtk.Scale». Este es la "
+"representación de un valor con un límite superior e inferior, junto con "
+"pasos y páginas de incrementos, y un tamaño de página, y se construye como "
+"<code>Gtk.Adjustment(valor, mínimo, ,máximo, paso, página, "
+"tamaño_de_página)</code> donde los campos son del tipo <code>float</code>; "
+"<code>paso</code> es el incremento/decremento que se obtiene usando las "
+"teclas de dirección, <code>página</code> es el que se obtiene pulsando en la "
+"escala en sí. Tenga en cuenta que <code>tamaño_de_página</code> no se usa en "
+"este caso, y debe establecerse a <code>0</code>."
+
+#. (itstool) path: section/p
+#: C/scale.py.page:37
+msgid ""
+"In line 28 the signal <code>\"value-changed\"</code> is connected to the "
+"callback function <code>scale_moved()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 28, la señal <code>«value-changed»</code> se conecta a la "
+"función de retorno de llamada <code>scale_moved()</code> usando "
+"<code><var>widget</var>.connect(<var>señal</var>, <var>función de retorno de "
+"llamada</var>)</code>. Consulte la <link xref=\"signals-callbacks.py\"/> "
+"para una explicación más detallada."
+
+#. (itstool) path: item/p
+#: C/scale.py.page:39
+msgid ""
+"<code>get_value()</code> retrieves the current value of the scale; "
+"<code>set_value(value)</code> sets it (if the <code>value</code>, of type "
+"<code>float</code>, is outside the minimum or maximum range, it will be "
+"clamped to fit inside them). These are methods of the class Gtk.Range."
+msgstr ""
+"<code>get_value()</code> obtiene el valor actual de la escala; "
+"<code>set_value(valor)</code> lo establece (si el <code>valor</code>, del "
+"tipo <code>float</code>, está fuera del rango mínimo o máximo, se ajustará "
+"para que entre). Estos son métodos de la clase «Gtk.Range»."
+
+#. (itstool) path: item/p
+#: C/scale.py.page:40
+msgid ""
+"Use <code>set_draw_value(False)</code> to avoid displaying the current value "
+"as a string next to the slider."
+msgstr ""
+"Use <code>set_draw_value(False)</code> para evitar mostrar el valor actual "
+"como una cadena junto al deslizador."
+
+#. (itstool) path: item/p
+#: C/scale.py.page:41
+msgid ""
+"To highlight the part of the scale between the origin and the current value:"
+msgstr "Para resaltar la parte de la escala entre el origen y el valor actual:"
+
+#. (itstool) path: item/code
+#: C/scale.py.page:42
+#, no-wrap
+msgid ""
+"\n"
+"self.h_scale.set_restrict_to_fill_level(False)\n"
+"self.h_scale.set_fill_level(self.h_scale.get_value())\n"
+"self.h_scale.set_show_fill_level(True)"
+msgstr ""
+"\n"
+"self.h_scale.set_restrict_to_fill_level(False)\n"
+"self.h_scale.set_fill_level(self.h_scale.get_value())\n"
+"self.h_scale.set_show_fill_level(True)"
+
+#. (itstool) path: item/p
+#: C/scale.py.page:46
+msgid ""
+"in the callback function of the \"value-changed\" signal, so to have the new "
+"filling every time the value is changed. These are methods of the class Gtk."
+"Range."
+msgstr ""
+"en la función de retorno de llamada de la señal «value-changed», para tener "
+"el relleno nuevo cada vez que cambie el valor. Estos son métodos de la clase "
+"«Gtk.Range»."
+
+#. (itstool) path: item/p
+#: C/scale.py.page:48
+msgid ""
+"<code>add_mark(value, position, markup)</code> adds a mark at the "
+"<code>value</code> (<code>float</code> or <code>int</code> if that is the "
+"precision of the scale), in <code>position</code> (<code>Gtk.PositionType."
+"LEFT, Gtk.PositionType.RIGHT, Gtk.PositionType.TOP, Gtk.PositionType.BOTTOM</"
+"code>) with text <code>Null</code> or <code>markup</code> in the Pango "
+"Markup Language. To clear marks, <code>clear_marks()</code>."
+msgstr ""
+"<code>add_mark(valor, posición, marca)</code> añade una marca en el "
+"<code>valor</code> (<code>float</code> o <code>int</code> si esa es la "
+"precisión de la escala), en <code>posición</code> (<code>Gtk.PositionType."
+"LEFT, Gtk.PositionType.RIGHT, Gtk.PositionType.TOP, Gtk.PositionType.BOTTOM</"
+"code>) con texto <code>Null</code> o <code>marca</code> en el lenguaje de "
+"marcado de Pango. Para limpiar las marcas, <code>clear_marks()</code>."
+
+#. (itstool) path: item/p
+#: C/scale.py.page:49
+msgid ""
+"<code>set_digits(digits)</code> sets the precision of the scale at "
+"<code>digits</code> digits."
+msgstr ""
+"<code>set_digits(dígitos)</code> establece la precisión de la escala en "
+"<code>dígitos</code> dígitos."
+
+#. (itstool) path: item/p
+#: C/scale.py.page:57
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkScale.html"
+"\">GtkScale</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkScale.html"
+"\">GtkScale</link>"
+
+#. (itstool) path: item/p
+#: C/scale.py.page:58 C/spinbutton.py.page:50
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkAdjustment.html"
+"\">GtkAdjustment</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkAdjustment.html"
+"\">GtkAdjustment</link>"
+
+#. (itstool) path: item/p
+#: C/scale.py.page:59 C/scrolledwindow.js.page:37 C/scrolledwindow.py.page:46
+#: C/textview.py.page:100
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/gtk3-Standard-"
+"Enumerations.html\">Standard Enumerations</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/gtk3-Standard-"
+"Enumerations.html\">Enumeraciones estándar</link>"
+
+#. (itstool) path: info/title
+#: C/scale.vala.page:8
+msgctxt "text"
+msgid "Scale (Vala)"
+msgstr "Escala (Vala)"
+
+#. (itstool) path: page/code
+#: C/scale.vala.page:27
+#, no-wrap
+msgid ""
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tGtk.Scale h_scale;\n"
+"\tGtk.Scale v_scale;\n"
+"\tGtk.Label label;\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"Scale Example\";\n"
+"\t\twindow.set_default_size (400, 300);\n"
+"\t\twindow.set_border_width (5);\n"
+"\n"
+"\t\th_scale = new Gtk.Scale.with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n"
+"\t\th_scale.set_digits (0); //number of decimal places displayed\n"
+"\t\th_scale.set_valign (Gtk.Align.START); //horizontal alignment\n"
+"\n"
+"\t\tvar adjustment = new Gtk.Adjustment (42.0, 0.0, 100.0, 5.0, 10.0, 0.0);\n"
+"\t\tv_scale = new Gtk.Scale (Gtk.Orientation.VERTICAL, adjustment);\n"
+"\t\tv_scale.set_vexpand(true);\n"
+"\n"
+"\t\tlabel = new Gtk.Label (\"Move the scale handles...\");\n"
+"\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tgrid.set_column_spacing (10); //amount of space between columns\n"
+"\t\tgrid.set_column_homogeneous (true); //all columns same width\n"
+"\t\tgrid.attach (h_scale, 0, 0, 1, 1);\n"
+"\t\tgrid.attach_next_to (v_scale, h_scale, Gtk.PositionType.RIGHT, 1, 1);\n"
+"\t\tgrid.attach (label, 0, 1, 2, 1);\n"
+"\n"
+"\t\th_scale.value_changed.connect (scale_moved);\n"
+"\t\tv_scale.value_changed.connect (scale_moved);\n"
+"\n"
+"\t\twindow.add (grid);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"\n"
+"\t/* Callback function for \"value-changed\" signal.\n"
+"\t * The parameter refers to the scale which emitted the signal.\n"
+"\t * Since we are accessing the values of not one, but two scales,\n"
+"\t * we made the ranges instance variables, and ignore the\n"
+"\t * parameter.\n"
+"\t */\n"
+"\tvoid scale_moved (Gtk.Range range) {\n"
+"\t\tlabel.set_text (\"Horizontal scale is %.1f; vertical scale is %.1f.\".printf (h_scale.get_value (),
v_scale.get_value ()));\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tGtk.Scale h_scale;\n"
+"\tGtk.Scale v_scale;\n"
+"\tGtk.Label label;\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"Scale Example\";\n"
+"\t\twindow.set_default_size (400, 300);\n"
+"\t\twindow.set_border_width (5);\n"
+"\n"
+"\t\th_scale = new Gtk.Scale.with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n"
+"\t\th_scale.set_digits (0); //number of decimal places displayed\n"
+"\t\th_scale.set_valign (Gtk.Align.START); //horizontal alignment\n"
+"\n"
+"\t\tvar adjustment = new Gtk.Adjustment (42.0, 0.0, 100.0, 5.0, 10.0, 0.0);\n"
+"\t\tv_scale = new Gtk.Scale (Gtk.Orientation.VERTICAL, adjustment);\n"
+"\t\tv_scale.set_vexpand(true);\n"
+"\n"
+"\t\tlabel = new Gtk.Label (\"Move the scale handles...\");\n"
+"\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tgrid.set_column_spacing (10); //amount of space between columns\n"
+"\t\tgrid.set_column_homogeneous (true); //all columns same width\n"
+"\t\tgrid.attach (h_scale, 0, 0, 1, 1);\n"
+"\t\tgrid.attach_next_to (v_scale, h_scale, Gtk.PositionType.RIGHT, 1, 1);\n"
+"\t\tgrid.attach (label, 0, 1, 2, 1);\n"
+"\n"
+"\t\th_scale.value_changed.connect (scale_moved);\n"
+"\t\tv_scale.value_changed.connect (scale_moved);\n"
+"\n"
+"\t\twindow.add (grid);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"\n"
+"\t/* Callback function for \"value-changed\" signal.\n"
+"\t * The parameter refers to the scale which emitted the signal.\n"
+"\t * Since we are accessing the values of not one, but two scales,\n"
+"\t * we made the ranges instance variables, and ignore the\n"
+"\t * parameter.\n"
+"\t */\n"
+"\tvoid scale_moved (Gtk.Range range) {\n"
+"\t\tlabel.set_text (\"Horizontal scale is %.1f; vertical scale is %.1f.\".printf (h_scale.get_value (),
v_scale.get_value ()));\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/scale.vala.page:32
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Scale.html\">Gtk.Scale</"
+"link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Scale.html\">Gtk.Scale</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/scale.vala.page:33
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Adjustment.html\">Gtk."
+"Adjustment</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Adjustment.html\">Gtk."
+"Adjustment</link>"
+
+#. (itstool) path: item/p
+#: C/scale.vala.page:34
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.PositionType.html\">Gtk."
+"PositionType</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.PositionType.html\">Gtk."
+"PositionType</link>"
+
+#. (itstool) path: item/p
+#: C/scale.vala.page:35
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Orientation.html\">Gtk."
+"Orientation</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Orientation.html\">Gtk."
+"Orientation</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/scrolledwindow.c.page:25 C/scrolledwindow.js.page:22
+#: C/scrolledwindow.py.page:23 C/scrolledwindow.vala.page:23
+msgctxt "_"
+msgid ""
+"external ref='media/scrolledwindow.png' "
+"md5='697bb3205d5c4fb0b4ea8db435843157'"
+msgstr ""
+"external ref='media/scrolledwindow.png' "
+"md5='697bb3205d5c4fb0b4ea8db435843157'"
+
+#. (itstool) path: info/title
+#: C/scrolledwindow.c.page:8
+msgctxt "text"
+msgid "ScrolledWindow (C)"
+msgstr "ScrolledWindow (C)"
+
+#. (itstool) path: info/desc
+#: C/scrolledwindow.c.page:20 C/scrolledwindow.js.page:18
+#: C/scrolledwindow.py.page:19 C/scrolledwindow.vala.page:19
+msgid "Adds scrollbars to its child widget"
+msgstr "Añade barras de desplazamiento a su widget hijo"
+
+#. (itstool) path: page/title
+#: C/scrolledwindow.c.page:23 C/scrolledwindow.js.page:21
+#: C/scrolledwindow.py.page:22 C/scrolledwindow.vala.page:22
+msgid "ScrolledWindow"
+msgstr "ScrolledWindow"
+
+#. (itstool) path: page/p
+#: C/scrolledwindow.c.page:26 C/scrolledwindow.js.page:23
+#: C/scrolledwindow.py.page:24 C/scrolledwindow.vala.page:24
+msgid "An image in a scrolled window."
+msgstr "Una imagen en una ventana con barras de desplazamiento."
+
+#. (itstool) path: page/code
+#: C/scrolledwindow.c.page:28
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* Declare variables */\n"
+" GtkWidget *window;\n"
+" GtkWidget *scrolled_window;\n"
+" GtkWidget *image;\n"
+"\n"
+" /* Create a window with a title, and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"ScrolledWindow Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 220, 200);\n"
+"\n"
+" /* Create the scrolled window. Usually NULL is passed for both parameters so\n"
+" * that it creates the horizontal/vertical adjustments automatically. Setting\n"
+" * the scrollbar policy to automatic allows the scrollbars to only show up\n"
+" * when needed.\n"
+" */\n"
+" scrolled_window = gtk_scrolled_window_new (NULL, NULL);\n"
+" /* Set the border width */\n"
+" gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 10);\n"
+" /* Extract our desired image from a file that we have */\n"
+" image = gtk_image_new_from_file (\"gnome-image.png\");\n"
+" /* And add it to the scrolled window */\n"
+" gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), image);\n"
+" /* Set the policy of the horizontal and vertical scrollbars to automatic.\n"
+" * What this means is that the scrollbars are only present if needed.\n"
+" */\n"
+" gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),\n"
+" GTK_POLICY_AUTOMATIC,\n"
+" GTK_POLICY_AUTOMATIC);\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), scrolled_window);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* Declare variables */\n"
+" GtkWidget *window;\n"
+" GtkWidget *scrolled_window;\n"
+" GtkWidget *image;\n"
+"\n"
+" /* Create a window with a title, and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"ScrolledWindow Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 220, 200);\n"
+"\n"
+" /* Create the scrolled window. Usually NULL is passed for both parameters so\n"
+" * that it creates the horizontal/vertical adjustments automatically. Setting\n"
+" * the scrollbar policy to automatic allows the scrollbars to only show up\n"
+" * when needed.\n"
+" */\n"
+" scrolled_window = gtk_scrolled_window_new (NULL, NULL);\n"
+" /* Set the border width */\n"
+" gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 10);\n"
+" /* Extract our desired image from a file that we have */\n"
+" image = gtk_image_new_from_file (\"gnome-image.png\");\n"
+" /* And add it to the scrolled window */\n"
+" gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), image);\n"
+" /* Set the policy of the horizontal and vertical scrollbars to automatic.\n"
+" * What this means is that the scrollbars are only present if needed.\n"
+" */\n"
+" gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),\n"
+" GTK_POLICY_AUTOMATIC,\n"
+" GTK_POLICY_AUTOMATIC);\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), scrolled_window);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/scrolledwindow.c.page:37
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk/stable/gtk3-Standard-"
+"Enumerations.html#GtkPolicyType\">GtkPolicyType</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk/stable/gtk3-Standard-"
+"Enumerations.html#GtkPolicyType\">GtkPolicyType</link>"
+
+#. (itstool) path: info/title
+#: C/scrolledwindow.js.page:8
+msgctxt "text"
+msgid "ScrolledWindow (JavaScript)"
+msgstr "ScrolledWindow (JavaScript)"
+
+#. (itstool) path: section/code
+#: C/scrolledwindow.js.page:29
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ScrolledWindowExample = new Lang.Class ({\n"
+" Name: 'ScrolledWindow Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application({ application_id: 'org.example.jscrolledwindow' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this.window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+" // Create the application window\n"
+" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"ScrolledWindow Example\",\n"
+" default_width: 200,\n"
+" default_height: 200,\n"
+" border_width: 10 });\n"
+" // the scrolledwindow\n"
+" this.scrolledWindow = new Gtk.ScrolledWindow();\n"
+" this.scrolledWindow.set_border_width(10);\n"
+" // there is always the scrollbar (otherwise: AUTOMATIC - only if needed - or NEVER)\n"
+" this.scrolledWindow.set_policy(Gtk.PolicyType.ALWAYS, Gtk.PolicyType.ALWAYS);\n"
+" // an image - slightly larger than the window\n"
+" this.image = new Gtk.Image();\n"
+" this.image.set_from_file(\"gnome-image.png\");\n"
+"\n"
+" // add the image to the scrolledwindow\n"
+" this.scrolledWindow.add_with_viewport(this.image);\n"
+"\n"
+" // add the scrolledwindow to the window\n"
+" this.window.add(this.scrolledWindow);\n"
+" this.window.show_all();\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ScrolledWindowExample();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ScrolledWindowExample = new Lang.Class ({\n"
+" Name: 'ScrolledWindow Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application({ application_id: 'org.example.jscrolledwindow' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this.window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+" // Create the application window\n"
+" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"ScrolledWindow Example\",\n"
+" default_width: 200,\n"
+" default_height: 200,\n"
+" border_width: 10 });\n"
+" // the scrolledwindow\n"
+" this.scrolledWindow = new Gtk.ScrolledWindow();\n"
+" this.scrolledWindow.set_border_width(10);\n"
+" // there is always the scrollbar (otherwise: AUTOMATIC - only if needed - or NEVER)\n"
+" this.scrolledWindow.set_policy(Gtk.PolicyType.ALWAYS, Gtk.PolicyType.ALWAYS);\n"
+" // an image - slightly larger than the window\n"
+" this.image = new Gtk.Image();\n"
+" this.image.set_from_file(\"gnome-image.png\");\n"
+"\n"
+" // add the image to the scrolledwindow\n"
+" this.scrolledWindow.add_with_viewport(this.image);\n"
+"\n"
+" // add the scrolledwindow to the window\n"
+" this.window.add(this.scrolledWindow);\n"
+" this.window.show_all();\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ScrolledWindowExample();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/scrolledwindow.js.page:36
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk."
+"ScrolledWindow.html\">GtkScrolledWindow</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk."
+"ScrolledWindow.html\">GtkScrolledWindow</link>"
+
+#. (itstool) path: info/title
+#: C/scrolledwindow.py.page:8
+msgctxt "text"
+msgid "ScrolledWindow (Python)"
+msgstr "ScrolledWindow (Python)"
+
+#. (itstool) path: section/code
+#: C/scrolledwindow.py.page:30
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(\n"
+" self, title=\"ScrolledWindow Example\", application=app)\n"
+" self.set_default_size(200, 200)\n"
+"\n"
+" # the scrolledwindow\n"
+" scrolled_window = Gtk.ScrolledWindow()\n"
+" scrolled_window.set_border_width(10)\n"
+" # there is always the scrollbar (otherwise: AUTOMATIC - only if needed\n"
+" # - or NEVER)\n"
+" scrolled_window.set_policy(\n"
+" Gtk.PolicyType.ALWAYS, Gtk.PolicyType.ALWAYS)\n"
+"\n"
+" # an image - slightly larger than the window...\n"
+" image = Gtk.Image()\n"
+" image.set_from_file(\"gnome-image.png\")\n"
+"\n"
+" # add the image to the scrolledwindow\n"
+" scrolled_window.add_with_viewport(image)\n"
+"\n"
+" # add the scrolledwindow to the window\n"
+" self.add(scrolled_window)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(\n"
+" self, title=\"ScrolledWindow Example\", application=app)\n"
+" self.set_default_size(200, 200)\n"
+"\n"
+" # the scrolledwindow\n"
+" scrolled_window = Gtk.ScrolledWindow()\n"
+" scrolled_window.set_border_width(10)\n"
+" # there is always the scrollbar (otherwise: AUTOMATIC - only if needed\n"
+" # - or NEVER)\n"
+" scrolled_window.set_policy(\n"
+" Gtk.PolicyType.ALWAYS, Gtk.PolicyType.ALWAYS)\n"
+"\n"
+" # an image - slightly larger than the window...\n"
+" image = Gtk.Image()\n"
+" image.set_from_file(\"gnome-image.png\")\n"
+"\n"
+" # add the image to the scrolledwindow\n"
+" scrolled_window.add_with_viewport(image)\n"
+"\n"
+" # add the scrolledwindow to the window\n"
+" self.add(scrolled_window)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/scrolledwindow.py.page:33
+msgid "Useful methods for a ScrolledWindow widget"
+msgstr "Métodos útiles para un widget «ScrolledWindow»"
+
+#. (itstool) path: item/p
+#: C/scrolledwindow.py.page:35
+msgid ""
+"<code>set_policy(hscrollbar_policy, vscrollbar_policy)</code> where each of "
+"the arguments is one of <code>Gtk.Policy.AUTOMATIC, Gtk.Policy.ALWAYS, Gtk."
+"Policy.NEVER</code> regulates whether the horizontal and vertical scrollbars "
+"should appear: with <code>AUTOMATIC</code> they appear only if needed, "
+"<code>ALWAYS</code> and <code>NEVER</code> are self-explanatory."
+msgstr ""
+"<code>set_policy(norma_barra_despl_h, norma_barra_despl_v)</code> donde cada "
+"uno de los argumentos puede ser <code>Gtk.Policy.AUTOMATIC, Gtk.Policy."
+"ALWAYS, Gtk.Policy.NEVER</code>. Regulan si deben las aparecer barras de "
+"desplazamiento horizontal y vertical: con <code>AUTOMATIC</code> sólo "
+"aparecen si se necesitan, con <code>ALWAYS</code> aparecen siempre, y con "
+"<code>NEVER</code> no aparecen nunca."
+
+#. (itstool) path: item/p
+#: C/scrolledwindow.py.page:36
+msgid ""
+"<code>add_with_viewport(widget)</code> is used to add the Gtk.Widget "
+"<code>widget</code> without native scrolling capabilities inside the window."
+msgstr ""
+"<code>add_with_viewport(widget)</code> se usa para añadir el <code>widget</"
+"code> «Gtk.Widget» sin capacidad de desplazamiento nativo dentro de la "
+"ventana."
+
+#. (itstool) path: item/p
+#: C/scrolledwindow.py.page:37
+msgid ""
+"<code>set_placement(window_placement)</code> sets the placement of the "
+"contents with respect to the scrollbars for the scrolled window. The options "
+"for the argument are <code>Gtk.CornerType.TOP_LEFT</code> (default: the "
+"scrollbars are on the bottom and on the right of the window), <code>Gtk."
+"CornerType.TOP_RIGHT, Gtk.CornerType.BOTTOM_LEFT, Gtk.CornerType."
+"BOTTOM_RIGHT</code>."
+msgstr ""
+"<code>set_placement(lugar_de_ventana)</code> establece la ubicación del "
+"contenido con respecto a las barras de desplazamiento de la ventana. Las "
+"opciones para el argumento son <code>Gtk.CornerType.TOP_LEFT</code> "
+"(predeterminada: las barras de desplazamiento están en la parte inferior y "
+"derecha de la ventana), <code>Gtk.CornerType.TOP_RIGHT, Gtk.CornerType."
+"BOTTOM_LEFT, Gtk.CornerType.BOTTOM_RIGHT</code>."
+
+#. (itstool) path: item/p
+#: C/scrolledwindow.py.page:38
+msgid ""
+"<code>set_hadjustment(adjustment)</code> and "
+"<code>set_vadjustment(adjustment)</code> set the Gtk.Adjustment "
+"<code>adjustment</code>. This is the representation of a value with a lower "
+"and upper bound, together with step and page increments, and a page size, "
+"and it is constructed as <code>Gtk.Adjustment(value, lower, upper, "
+"step_increment, page_increment, page_size)</code> where the fields are of "
+"type <code>float</code>. (Note that <code>step_increment</code> is not used "
+"in this case, it can be set to <code>0</code>.)"
+msgstr ""
+"<code>set_hadjustment(ajuste)</code> y <code>set_vadjustment(ajuste)</code> "
+"establecen el <code>ajuste</code> «Gtk.Adjustment». Este es la "
+"representación de un valor con un límite superior e inferior, junto con "
+"pasos y páginas de incrementos, y un tamaño de página, y se construye como "
+"<code>Gtk.Adjustment(valor, mínimo, ,máximo, paso, página, "
+"tamaño_de_página)</code> donde los campos son del tipo <code>float</code>. "
+"Tenga en cuenta que <code>paso</code> no se usa en este caso, y puede "
+"establecerse a <code>0</code>."
+
+#. (itstool) path: item/p
+#: C/scrolledwindow.py.page:45 C/textview.py.page:99
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkScrolledWindow.html"
+"\">GtkScrolledWindow</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkScrolledWindow.html"
+"\">GtkScrolledWindow</link>"
+
+#. (itstool) path: info/title
+#: C/scrolledwindow.vala.page:8
+msgctxt "text"
+msgid "ScrolledWindow (Vala)"
+msgstr "ScrolledWindow (Vala)"
+
+#. (itstool) path: page/code
+#: C/scrolledwindow.vala.page:26
+#, no-wrap
+msgid ""
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\t\t/* Create the window of this application. */\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"ScrolledWindow Example\";\n"
+"\t\twindow.set_default_size (200, 200);\n"
+"\n"
+"\t\tvar scrolled_window = new Gtk.ScrolledWindow (null, null);\n"
+"\t\tscrolled_window.set_border_width (10);\n"
+"\t\tscrolled_window.add_with_viewport (new Gtk.Image.from_file (\"gnome-image.png\"));\n"
+"\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);\n"
+"\n"
+"\t\twindow.add (scrolled_window);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\t\t/* Create the window of this application. */\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"ScrolledWindow Example\";\n"
+"\t\twindow.set_default_size (200, 200);\n"
+"\n"
+"\t\tvar scrolled_window = new Gtk.ScrolledWindow (null, null);\n"
+"\t\tscrolled_window.set_border_width (10);\n"
+"\t\tscrolled_window.add_with_viewport (new Gtk.Image.from_file (\"gnome-image.png\"));\n"
+"\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);\n"
+"\n"
+"\t\twindow.add (scrolled_window);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/scrolledwindow.vala.page:31 C/textview.vala.page:37
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ScrolledWindow.html\">Gtk."
+"ScrolledWindow</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ScrolledWindow.html\">Gtk."
+"ScrolledWindow</link>"
+
+#. (itstool) path: item/p
+#: C/scrolledwindow.vala.page:32 C/textview.vala.page:39
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.PolicyType.html\">Gtk."
+"PolicyType</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.PolicyType.html\">Gtk."
+"PolicyType</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/separator.c.page:24 C/separator.py.page:25 C/separator.vala.page:26
+msgctxt "_"
+msgid ""
+"external ref='media/separator.png' md5='8769b27662ce5c77f99e9ce33751a21a'"
+msgstr ""
+"external ref='media/separator.png' md5='8769b27662ce5c77f99e9ce33751a21a'"
+
+#. (itstool) path: info/title
+#: C/separator.c.page:8
+msgctxt "text"
+msgid "Separator (C)"
+msgstr "Separador (C)"
+
+#. (itstool) path: info/desc
+#: C/separator.c.page:19 C/separator.py.page:20 C/separator.vala.page:21
+msgid "A separator widget"
+msgstr "Un widget separador"
+
+#. (itstool) path: page/title
+#: C/separator.c.page:22 C/separator.py.page:23 C/separator.vala.page:24
+msgid "Separator"
+msgstr "Separador"
+
+#. (itstool) path: page/p
+#: C/separator.c.page:25 C/separator.py.page:26 C/separator.vala.page:27
+msgid "A horizontal and a vertical separator divide some labels."
+msgstr "Un separador horizontal y uno vertical dividen algunas etiquetas."
+
+#. (itstool) path: section/code
+#: C/separator.c.page:31
+#, no-wrap
+msgid ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *grid;\n"
+" GtkWidget *window;\n"
+" GtkWidget *label1;\n"
+" GtkWidget *label2;\n"
+" GtkWidget *label3;\n"
+" GtkWidget *hseparator;\n"
+" GtkWidget *vseparator;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Separator Example\");\n"
+"\n"
+" label1 = gtk_label_new (\"Below, a horizontal separator.\");\n"
+" label2 = gtk_label_new (\"On the right, a vertical separator.\");\n"
+" label3 = gtk_label_new (\"On the left, a vertical separator.\");\n"
+"\n"
+" vseparator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);\n"
+" hseparator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);\n"
+"\n"
+" grid = gtk_grid_new ();\n"
+"\n"
+" gtk_grid_attach (GTK_GRID (grid), label1, 0, 0, 3, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), hseparator, 0, 1, 3, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), label2, 0, 2, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), vseparator, 1, 2, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), label3, 2, 2, 1, 1);\n"
+"\n"
+" gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), grid);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *grid;\n"
+" GtkWidget *window;\n"
+" GtkWidget *label1;\n"
+" GtkWidget *label2;\n"
+" GtkWidget *label3;\n"
+" GtkWidget *hseparator;\n"
+" GtkWidget *vseparator;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Separator Example\");\n"
+"\n"
+" label1 = gtk_label_new (\"Below, a horizontal separator.\");\n"
+" label2 = gtk_label_new (\"On the right, a vertical separator.\");\n"
+" label3 = gtk_label_new (\"On the left, a vertical separator.\");\n"
+"\n"
+" vseparator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);\n"
+" hseparator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);\n"
+"\n"
+" grid = gtk_grid_new ();\n"
+"\n"
+" gtk_grid_attach (GTK_GRID (grid), label1, 0, 0, 3, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), hseparator, 0, 1, 3, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), label2, 0, 2, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), vseparator, 1, 2, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), label3, 2, 2, 1, 1);\n"
+"\n"
+" gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), grid);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: section/title
+#: C/separator.c.page:35 C/separator.py.page:36 C/separator.vala.page:37
+msgid "API Reference"
+msgstr "Referencias de la API"
+
+#. (itstool) path: item/p
+#: C/separator.c.page:39 C/separator.py.page:40
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSeparator.html"
+"\">GtkSeparator</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSeparator.html"
+"\">GtkSeparator</link>"
+
+#. (itstool) path: info/title
+#: C/separator.py.page:8
+msgctxt "text"
+msgid "Separator (Python)"
+msgstr "Separador (Python)"
+
+#. (itstool) path: section/code
+#: C/separator.py.page:32
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Separator Example\", application=app)\n"
+"\n"
+" # three labels\n"
+" label1 = Gtk.Label()\n"
+" label1.set_text(\"Below, a horizontal separator.\")\n"
+"\n"
+" label2 = Gtk.Label()\n"
+" label2.set_text(\"On the right, a vertical separator.\")\n"
+"\n"
+" label3 = Gtk.Label()\n"
+" label3.set_text(\"On the left, a vertical separator.\")\n"
+"\n"
+" # a horizontal separator\n"
+" hseparator = Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL)\n"
+" # a vertical separator\n"
+" vseparator = Gtk.Separator(orientation=Gtk.Orientation.VERTICAL)\n"
+"\n"
+" # a grid to attach labels and separators\n"
+" grid = Gtk.Grid()\n"
+" grid.attach(label1, 0, 0, 3, 1)\n"
+" grid.attach(hseparator, 0, 1, 3, 1)\n"
+" grid.attach(label2, 0, 2, 1, 1)\n"
+" grid.attach(vseparator, 1, 2, 1, 1)\n"
+" grid.attach(label3, 2, 2, 1, 1)\n"
+" grid.set_column_homogeneous(True)\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Separator Example\", application=app)\n"
+"\n"
+" # three labels\n"
+" label1 = Gtk.Label()\n"
+" label1.set_text(\"Below, a horizontal separator.\")\n"
+"\n"
+" label2 = Gtk.Label()\n"
+" label2.set_text(\"On the right, a vertical separator.\")\n"
+"\n"
+" label3 = Gtk.Label()\n"
+" label3.set_text(\"On the left, a vertical separator.\")\n"
+"\n"
+" # a horizontal separator\n"
+" hseparator = Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL)\n"
+" # a vertical separator\n"
+" vseparator = Gtk.Separator(orientation=Gtk.Orientation.VERTICAL)\n"
+"\n"
+" # a grid to attach labels and separators\n"
+" grid = Gtk.Grid()\n"
+" grid.attach(label1, 0, 0, 3, 1)\n"
+" grid.attach(hseparator, 0, 1, 3, 1)\n"
+" grid.attach(label2, 0, 2, 1, 1)\n"
+" grid.attach(vseparator, 1, 2, 1, 1)\n"
+" grid.attach(label3, 2, 2, 1, 1)\n"
+" grid.set_column_homogeneous(True)\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: info/title
+#: C/separator.vala.page:8
+msgctxt "text"
+msgid "Separator (Vala)"
+msgstr "Separador (Vala)"
+
+#. (itstool) path: section/code
+#: C/separator.vala.page:33
+#, no-wrap
+msgid ""
+"/* This is the application. */\n"
+"public class Application : Gtk.Application {\n"
+"\n"
+"\tpublic Application () {\n"
+"\t\tObject (application_id: \"org.example.window\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application,\n"
+"\t * which is inherited by Gtk.Application. */\n"
+"\tpublic override void activate () {\n"
+"\n"
+"\t\tvar window = new Gtk.Window ();\n"
+"\t\twindow.title = \"Separator Example\";\n"
+"\n"
+"\t\tvar label1 = new Gtk.Label (\"Below, a horizontal separator.\");\n"
+"\t\tvar label2 = new Gtk.Label (\"On the right, a vertical separator.\");\n"
+"\t\tvar label3 = new Gtk.Label (\"On the left, a vertical separator.\");\n"
+"\n"
+"\t\tvar hseparator = new Gtk.Separator (Gtk.Orientation.HORIZONTAL);\n"
+"\t\tvar vseparator = new Gtk.Separator (Gtk.Orientation.VERTICAL);\n"
+"\n"
+"\t\tvar grid = new Gtk.Grid();\n"
+"\n"
+"\t\tgrid.attach (label1, 0, 0, 3, 1);\n"
+"\t\tgrid.attach (hseparator, 0, 1, 3, 1);\n"
+"\t\tgrid.attach (label2, 0, 2, 1, 1);\n"
+"\t\tgrid.attach (vseparator, 1, 2, 1, 1);\n"
+"\t\tgrid.attach (label3, 2, 2, 1, 1);\n"
+"\n"
+"\t\tgrid.set_column_homogeneous(true);\n"
+"\n"
+"\t\twindow.add (grid);\n"
+"\t\tthis.add_window (window);\n"
+"\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates the application and runs it.*/\n"
+"int main (string[] args) {\n"
+"\tvar app = new Application ();\n"
+"\treturn app.run (args);\n"
+"}\n"
+msgstr ""
+"/* This is the application. */\n"
+"public class Application : Gtk.Application {\n"
+"\n"
+"\tpublic Application () {\n"
+"\t\tObject (application_id: \"org.example.window\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application,\n"
+"\t * which is inherited by Gtk.Application. */\n"
+"\tpublic override void activate () {\n"
+"\n"
+"\t\tvar window = new Gtk.Window ();\n"
+"\t\twindow.title = \"Separator Example\";\n"
+"\n"
+"\t\tvar label1 = new Gtk.Label (\"Below, a horizontal separator.\");\n"
+"\t\tvar label2 = new Gtk.Label (\"On the right, a vertical separator.\");\n"
+"\t\tvar label3 = new Gtk.Label (\"On the left, a vertical separator.\");\n"
+"\n"
+"\t\tvar hseparator = new Gtk.Separator (Gtk.Orientation.HORIZONTAL);\n"
+"\t\tvar vseparator = new Gtk.Separator (Gtk.Orientation.VERTICAL);\n"
+"\n"
+"\t\tvar grid = new Gtk.Grid();\n"
+"\n"
+"\t\tgrid.attach (label1, 0, 0, 3, 1);\n"
+"\t\tgrid.attach (hseparator, 0, 1, 3, 1);\n"
+"\t\tgrid.attach (label2, 0, 2, 1, 1);\n"
+"\t\tgrid.attach (vseparator, 1, 2, 1, 1);\n"
+"\t\tgrid.attach (label3, 2, 2, 1, 1);\n"
+"\n"
+"\t\tgrid.set_column_homogeneous(true);\n"
+"\n"
+"\t\twindow.add (grid);\n"
+"\t\tthis.add_window (window);\n"
+"\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates the application and runs it.*/\n"
+"int main (string[] args) {\n"
+"\tvar app = new Application ();\n"
+"\treturn app.run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/separator.vala.page:41
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.html\">GtkWindow</"
+"link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.html\">GtkWindow</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/separator.vala.page:42
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Separator.html"
+"\">GtkSeparator</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Separator.html"
+"\">GtkSeparator</link>"
+
+#. (itstool) path: item/p
+#: C/separator.vala.page:43
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Grid.html\">GtkGrid</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Grid.html\">GtkGrid</link>"
+
+#. (itstool) path: item/p
+#: C/separator.vala.page:44
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Label.html\">GtkLabel</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Label.html\">GtkLabel</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/set-up-gedit.js.page:25
+msgctxt "_"
+msgid ""
+"external ref='media/geditview.png' md5='f1438295662d95f56fcd1d8200efaaf2'"
+msgstr ""
+"external ref='media/geditview.png' md5='f1438295662d95f56fcd1d8200efaaf2'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/set-up-gedit.js.page:37
+msgctxt "_"
+msgid ""
+"external ref='media/gediteditor.png' md5='50db1ee8f2c545744879ee9fba5b4b24'"
+msgstr ""
+"external ref='media/gediteditor.png' md5='50db1ee8f2c545744879ee9fba5b4b24'"
+
+#. (itstool) path: page/title
+#: C/set-up-gedit.js.page:19
+msgid "Set up gedit for JavaScript development"
+msgstr "Configurar gedit para el desarrollo de JavaScript"
+
+#. (itstool) path: page/p
+#: C/set-up-gedit.js.page:20
+msgid ""
+"This tutorial will show you how to set up <link href=\"http://projects.gnome."
+"org/gedit/\">gedit</link>, GNOME's basic text editor, so that it has a "
+"handful of extra features which are useful for writing JavaScript code."
+msgstr ""
+"Este tutorial le mostrará cómo configurar <link href=\"http://projects.gnome."
+"org/gedit/\">gedit</link>, el editor de texto básico de GNOME para que tenga "
+"algunas características adicionales que son útiles para escribir código de "
+"JavaScript."
+
+#. (itstool) path: section/title
+#: C/set-up-gedit.js.page:23
+msgid "Making code clearer"
+msgstr "Simplificar el código"
+
+#. (itstool) path: section/p
+#: C/set-up-gedit.js.page:24
+msgid ""
+"Click on <gui>Edit</gui> in gedit's menu bar, then click on "
+"<gui>Preferences</gui>. You should see something like this:"
+msgstr ""
+"Pulse en <gui>Editar</gui> en la barra de menú de gedit, después pulse en "
+"<gui>Preferencias</gui>. Debería ver algo así:"
+
+#. (itstool) path: section/p
+#: C/set-up-gedit.js.page:26
+msgid "Here are the options you want to make sure are turned on."
+msgstr "Aquí están las opciones que quiere asegurarse que estén activadas."
+
+#. (itstool) path: item/p
+#: C/set-up-gedit.js.page:28
+msgid ""
+"<gui>Display line numbers</gui> will help you compare the code you type in "
+"with the original, and make it easier to see which line is causing an error "
+"if there is a bug."
+msgstr ""
+"<gui>Mostrar números de línea</gui> le ayudará a comparar el código que "
+"introduce con el original, y le hará más fácil ver qué línea está causando "
+"un error si hay alguno."
+
+#. (itstool) path: item/p
+#: C/set-up-gedit.js.page:29
+msgid ""
+"<gui>Highlight current line</gui> makes it easier to see which line you're "
+"on, when you have to go back and forth a lot."
+msgstr ""
+"<gui>Resaltar la línea actual</gui> hace más fácil ver en qué línea está, "
+"cuando tiene que ir hacia atrás y adelante mucho."
+
+#. (itstool) path: item/p
+#: C/set-up-gedit.js.page:30
+msgid ""
+"<gui>Highlight matching brackets</gui> helps you make sure you didn't leave "
+"out a bracket by accident."
+msgstr ""
+"<gui>Resaltar corchetes correspondientes</gui> le ayuda a asegurarse de que "
+"no dejó fuera un corchete por accidente."
+
+#. (itstool) path: section/title
+#: C/set-up-gedit.js.page:35
+msgid "Making editing easier"
+msgstr "Facilitar la edición"
+
+#. (itstool) path: section/p
+#: C/set-up-gedit.js.page:36
+msgid ""
+"In gedit's <gui>Preferences</gui> dialog, click on the <gui>Editor</gui> "
+"tab. You should see something like this:"
+msgstr ""
+"En el diálogo <gui>Preferencias</gui> de gedit, pulse en la pestaña "
+"<gui>Editor</gui>. Debería ver algo así:"
+
+#. (itstool) path: section/p
+#: C/set-up-gedit.js.page:38
+msgid ""
+"Here, you want to have <gui>Enable automatic indentation</gui> turned on. "
+"This means that when you hit <key>Enter</key> the cursor stays indented as "
+"far as the last line was. This is extremely useful when writing JavaScript "
+"code, since it uses indentation to make it clearer which parts do what."
+msgstr ""
+"Aquí, puede querer tener activada la opción <gui>Activar sangría automática</"
+"gui>. Esto significa que cuando pulse <key>Intro</key> el cursor mantendrá "
+"la sangría de la última línea. Esto es extremadamente útil cuando escribe "
+"código de JavaScript, dado que usa la sangría para hacer más claro qué "
+"partes hacen qué."
+
+#. (itstool) path: note/p
+#: C/set-up-gedit.js.page:39
+msgid ""
+"If you want to share code with other people who write GNOME JavaScript "
+"applications, you'll also want to set <gui>Tab width</gui> to 4 and turn on "
+"<gui>Insert spaces instead of tabs</gui>."
+msgstr ""
+"Si quiere compartir código con otras personas que escriben aplicaciones de "
+"GNOME en JavaScript, también querrá establecer la <gui>Anchura del "
+"tabulador</gui> a 4 y activar <gui>Insertar espacios en lugar de "
+"tabuladores</gui>."
+
+#. (itstool) path: info/title
+#: C/signals-callbacks.py.page:9
+msgctxt "text"
+msgid "Signals and callbacks (Python)"
+msgstr "Señales y retornos de llamada (Python)"
+
+#. (itstool) path: info/desc
+#: C/signals-callbacks.py.page:14
+msgid "An explanation of signals and callbacks in GTK+."
+msgstr "Una explicación de señales y retornos de llamada en GTK+."
+
+#. (itstool) path: page/title
+#: C/signals-callbacks.py.page:27
+msgid "Signals and callbacks"
+msgstr "Señales y retornos de llamada"
+
+#. (itstool) path: section/p
+#: C/signals-callbacks.py.page:34
+msgid ""
+"Like most GUI toolkits, GTK+ uses an event-driven programming model. When "
+"the user is doing nothing, GTK+ sits in the main loop and waits for input. "
+"If the user performs some action - say, a mouse click - then the main loop "
+"\"wakes up\" and delivers an event to GTK+."
+msgstr ""
+"Al igual que la mayoría de los kits de herramientas de IGU, GTK+ usa un "
+"modelo de programación dirigida por eventos. Cuando el usuario no hace nada, "
+"GTK+ se queda en el bucle principal y espera la entrada. Si el usuario "
+"realiza alguna acción (como una pulsación del ratón), entonces el bucle "
+"principal «despierta» y le envía un evento a GTK+."
+
+#. (itstool) path: section/p
+#: C/signals-callbacks.py.page:36
+msgid ""
+"When widgets receive an event, they frequently emit one or more signals. "
+"Signals notify your program that \"something interesting happened\" by "
+"invoking functions you have connected to the signal. Such functions are "
+"commonly known as callbacks. When your callbacks are invoked, you would "
+"typically take some action. After a callback finishes, GTK+ will return to "
+"the main loop and await more user input."
+msgstr ""
+"Cuando los widgets reciben un evento, frecuentemente emiten una o más "
+"señales. Las señales le notifican a su programa que «algo interesante "
+"sucedió» invocando funciones que les ha conectado. Estas funciones se "
+"conocen comúnmente como retornos de llamada. Cuando sus retornos de llamada "
+"se invoquen, típicamente realizaría alguna acción. Después de que un retorno "
+"de llamada termina, GTK+ retorna al bucle principal y espera más entrada del "
+"usuario."
+
+#. (itstool) path: section/p
+#: C/signals-callbacks.py.page:38
+msgid ""
+"A generic example is: <code>handler_id = widget.connect(\"event\", callback, "
+"data)</code>. <code>widget</code> is an instance of a widget we created "
+"earlier. Next, the <code>event</code> we are interested in. Each widget has "
+"its own particular events which can occur. For instance, if you have a Gtk."
+"Button you usually want to connect to the \"clicked\" event: this means that "
+"when the button is clicked, the signal is issued. Another example is the "
+"<code>notify::property</code> signal: whenever a <link xref=\"properties.py"
+"\">property</link> is modified on a GObject, instead of just emitting the "
+"<code>notify</code> signal, GObject associates as a detail to this signal "
+"emission the name of the property modified. This allows clients who wish to "
+"be notified of changes to only one property to filter most events before "
+"receiving them. Thirdly, the callback argument is the name of the callback "
+"function, which contains the code which runs when signals of the specified "
+"type are issued. Finally, the optional data argument includes any data which "
+"should be passed when the signal is issued."
+msgstr ""
+"Un ejemplo genérico es: <code>id_de_manejador = widget.connect(\"evento\", "
+"retorno_de_llamada, datos)</code>. <code>widget</code> es una instancia de "
+"un widget que creó anteriormente. A continuación, el <code>evento</code> en "
+"el que está interesado. Cada widget tiene sus propios eventos particulares "
+"que pueden ocurrir. Por ejemplo, si tiene un «Gtk.Button» generalmente "
+"querrá conectar el evento «clicked»: esto significa que cuando el botón se "
+"pulsa, la señal se envía. Otro ejemplo es la señal <code>notify::property</"
+"code>: cada vez que una <link xref=\"properties.py\">propiedad</link> se "
+"modifica en un «GObject», en lugar de sólo emitir la señal <code>notify</"
+"code>, GObject asocia como un detalle a la emisión de la señal el nombre de "
+"la propiedad modificada. Esto permite clientes que quieran notificarse de "
+"cambios de una sola propiedad para filtrar la mayoría de los eventos antes "
+"de recibirlos. Tercero, el argumento «retorno_de_llamada» es el nombre de la "
+"función de retorno de llamada, que contiene el código que se ejecuta cuando "
+"se emiten las señales del tipo especificado. Finalmente, el argumento "
+"opcional «datos» incluye cualquier dato que debe pasarse cuando se emita la "
+"señal."
+
+#. (itstool) path: section/p
+#: C/signals-callbacks.py.page:40
+msgid ""
+"The function returns a number (the <code>handler_id</code>) that identifies "
+"this particular signal-callback pair. This number is required to disconnect "
+"from a signal such that the callback function will not be called during any "
+"future or currently ongoing emissions of the signal it has been connected "
+"to, as in <code>widget.disconnect(handler_id)</code>."
+msgstr ""
+"La función devuelve un número (el <code>id_de_manejador</code>) que "
+"identifica este par «señal-retorno de llamada» particular. Este número se "
+"requiere para desconectar una señal para que la función de retorno de "
+"llamada no se llame durante emisiones de la señal a la que se ha conectado "
+"futuras o en progreso, como en <code>widget.disconnect(id_de_manejador)</"
+"code>."
+
+#. (itstool) path: section/p
+#: C/signals-callbacks.py.page:47
+msgid ""
+"<link href=\"http://developer.gnome.org/gobject/stable/signal.html"
+"\">Signals</link> in GObject documentation"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gobject/stable/signal.html"
+"\">Señales</link> en la documentación de GObject"
+
+#. (itstool) path: section/p
+#: C/signals-callbacks.py.page:48
+msgid ""
+"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/basics."
+"html\">Basics - Main loop and Signals</link> in Python GTK+ 3 Tutorial"
+msgstr ""
+"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/basics."
+"html\">Conceptos básicos: bucle principal y señales</link> en el tutorial de "
+"GTK+ en Python 3"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/spinbutton.c.page:26 C/spinbutton.py.page:24 C/spinbutton.vala.page:24
+msgctxt "_"
+msgid ""
+"external ref='media/spinbutton.png' md5='993cbb7d9bd271a329727a926195712a'"
+msgstr ""
+"external ref='media/spinbutton.png' md5='993cbb7d9bd271a329727a926195712a'"
+
+#. (itstool) path: info/title
+#: C/spinbutton.c.page:8
+msgctxt "text"
+msgid "SpinButton (C)"
+msgstr "SpinButton (C)"
+
+#. (itstool) path: info/desc
+#: C/spinbutton.c.page:21
+msgid "Retrieve an integer or floating point number"
+msgstr "Obtener un número entero o en coma flotante"
+
+#. (itstool) path: page/title
+#: C/spinbutton.c.page:24 C/spinbutton.js.page:24 C/spinbutton.py.page:23
+#: C/spinbutton.vala.page:23
+msgid "SpinButton"
+msgstr "SpinButton"
+
+#. (itstool) path: page/p
+#: C/spinbutton.c.page:27 C/spinbutton.py.page:25 C/spinbutton.vala.page:25
+msgid "Choose a number, by entering it or by clicking on the -/+ buttons!"
+msgstr "Elija un número, escribiéndolo o pulsando los botones -/+."
+
+#. (itstool) path: page/code
+#: C/spinbutton.c.page:29
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/* This is the callback function. \n"
+" * It is a handler function which reacts to the signal. \n"
+" * In this case, it will notify the user the value of their spinbutton \n"
+" * as a label.\n"
+" */\n"
+"static void\n"
+"spin_clicked (GtkSpinButton *spinbutton,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *label = user_data;\n"
+" gint value = gtk_spin_button_get_value_as_int (spinbutton);\n"
+"\n"
+" /* %d - Is used when printing integers.\n"
+" * Note: Using g_strdup_printf returns a string that must be freed. \n"
+" * (In which is done below)\n"
+" */\n"
+" gchar *str = g_strdup_printf (\"The number you selected is %d.\", value);\n"
+" gtk_label_set_text (GTK_LABEL (label), str);\n"
+"\n"
+" g_free(str);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* Declare variables */\n"
+" GtkWidget *window;\n"
+" GtkWidget *label;\n"
+" GtkWidget *grid;\n"
+" GtkWidget *spin_button;\n"
+" GtkAdjustment *adjustment;\n"
+"\n"
+"\n"
+" /* Create a window with a title, a border width, and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"SpinButton Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 210, 70);\n"
+" gtk_container_set_border_width (GTK_CONTAINER (window), 5);\n"
+"\n"
+" /* Create a label to be shown in the window */\n"
+" label = gtk_label_new (\"Choose a number\");\n"
+"\n"
+" /* Create an adjustment representing an adjustable bounded value */\n"
+" adjustment = gtk_adjustment_new (0, 0, 100, 1, 0, 0);\n"
+"\n"
+"\n"
+" /* Create a spin button that is to be as wide as possible */\n"
+" spin_button = gtk_spin_button_new (adjustment, 1, 0);\n"
+" gtk_widget_set_hexpand (spin_button, TRUE);\n"
+" \n"
+" /* Connecting the \"value-changed\" signal for the spinbutton \n"
+" * to the appropriate callback function. \n"
+" */\n"
+" g_signal_connect (spin_button, \n"
+" \"value-changed\", \n"
+" G_CALLBACK (spin_clicked), \n"
+" label);\n"
+"\n"
+"\n"
+" /* Create a grid and arrange everything accordingly */\n"
+" grid = gtk_grid_new ();\n"
+" gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n"
+" gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n"
+" gtk_grid_attach (GTK_GRID (grid), spin_button, 0, 0, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1);\n"
+" \n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), grid);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/* This is the callback function. \n"
+" * It is a handler function which reacts to the signal. \n"
+" * In this case, it will notify the user the value of their spinbutton \n"
+" * as a label.\n"
+" */\n"
+"static void\n"
+"spin_clicked (GtkSpinButton *spinbutton,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *label = user_data;\n"
+" gint value = gtk_spin_button_get_value_as_int (spinbutton);\n"
+"\n"
+" /* %d - Is used when printing integers.\n"
+" * Note: Using g_strdup_printf returns a string that must be freed. \n"
+" * (In which is done below)\n"
+" */\n"
+" gchar *str = g_strdup_printf (\"The number you selected is %d.\", value);\n"
+" gtk_label_set_text (GTK_LABEL (label), str);\n"
+"\n"
+" g_free(str);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* Declare variables */\n"
+" GtkWidget *window;\n"
+" GtkWidget *label;\n"
+" GtkWidget *grid;\n"
+" GtkWidget *spin_button;\n"
+" GtkAdjustment *adjustment;\n"
+"\n"
+"\n"
+" /* Create a window with a title, a border width, and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"SpinButton Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 210, 70);\n"
+" gtk_container_set_border_width (GTK_CONTAINER (window), 5);\n"
+"\n"
+" /* Create a label to be shown in the window */\n"
+" label = gtk_label_new (\"Choose a number\");\n"
+"\n"
+" /* Create an adjustment representing an adjustable bounded value */\n"
+" adjustment = gtk_adjustment_new (0, 0, 100, 1, 0, 0);\n"
+"\n"
+"\n"
+" /* Create a spin button that is to be as wide as possible */\n"
+" spin_button = gtk_spin_button_new (adjustment, 1, 0);\n"
+" gtk_widget_set_hexpand (spin_button, TRUE);\n"
+" \n"
+" /* Connecting the \"value-changed\" signal for the spinbutton \n"
+" * to the appropriate callback function. \n"
+" */\n"
+" g_signal_connect (spin_button, \n"
+" \"value-changed\", \n"
+" G_CALLBACK (spin_clicked), \n"
+" label);\n"
+"\n"
+"\n"
+" /* Create a grid and arrange everything accordingly */\n"
+" grid = gtk_grid_new ();\n"
+" gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n"
+" gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n"
+" gtk_grid_attach (GTK_GRID (grid), spin_button, 0, 0, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1);\n"
+" \n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), grid);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/spinbutton.c.page:37
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkSpinButton.html"
+"\">GtkSpinButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkSpinButton.html"
+"\">GtkSpinButton</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/spinbutton.js.page:25
+msgctxt "_"
+msgid ""
+"external ref='media/spinbuttonkittens.png' "
+"md5='577cce8a902140aacbab73fe8a76a010'"
+msgstr ""
+"external ref='media/spinbuttonkittens.png' "
+"md5='577cce8a902140aacbab73fe8a76a010'"
+
+#. (itstool) path: info/title
+#: C/spinbutton.js.page:8
+msgctxt "text"
+msgid "SpinButton (JavaScript)"
+msgstr "SpinButton (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/spinbutton.js.page:21
+msgid "A number entry field that has + and - buttons"
+msgstr "Un campo de entrada numérico que tiene botones «+» y «-»."
+
+#. (itstool) path: page/p
+#: C/spinbutton.js.page:26
+msgid ""
+"A SpinButton is not related to a <link xref=\"spinner.js\">Spinner</link>. "
+"It's a text entry field which only accepts numbers, and which has plus and "
+"minus buttons to let you change the value without having to type anything in."
+msgstr ""
+"Un «SpinButton» no está relacionado con un <link xref=\"spinner.js"
+"\">Spinner</link>. Es un campo de entrada de texto que sólo acepta números, "
+"y que tiene botones más y menos para dejarle cambiar el valor sin tener que "
+"escribir nada."
+
+#. (itstool) path: page/p
+#: C/spinbutton.js.page:27
+msgid ""
+"It's best used when it's obvious that only a number can be entered into it. "
+"In this example, two SpinButtons are used for the number of kittens and "
+"number of cans of tuna to give them."
+msgstr ""
+"Su uso es bueno cuando es obvio que sólo se le puede introducir un número. "
+"En este ejemplo, se usan dos botones incrementales para el número de gatitos "
+"y el número de latas de atún para darles."
+
+#. (itstool) path: section/code
+#: C/spinbutton.js.page:44
+#, no-wrap
+msgid ""
+"\n"
+"const SpinButtonExample = new Lang.Class({\n"
+" Name: 'SpinButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsspinbutton'\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+"const SpinButtonExample = new Lang.Class({\n"
+" Name: 'SpinButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsspinbutton'\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/spinbutton.js.page:69
+msgid ""
+"All the code for this sample goes in the SpinButtonExample class. The above "
+"code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> for our widgets and window to "
+"go in."
+msgstr ""
+"Todo el código de este ejemplo va en la clase «SpinButtonExample». El código "
+"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> para que vayan los widgets y "
+"la ventana."
+
+#. (itstool) path: section/code
+#: C/spinbutton.js.page:70
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Kitten Feeder\"});\n"
+msgstr ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Kitten Feeder\"});\n"
+
+#. (itstool) path: section/title
+#: C/spinbutton.js.page:85
+msgid "Creating the SpinButtons"
+msgstr "Crear los botones incrementales"
+
+#. (itstool) path: section/code
+#: C/spinbutton.js.page:86
+#, no-wrap
+msgid ""
+"\n"
+" // Create the first spinbutton using a function\n"
+" this._kittens = Gtk.SpinButton.new_with_range (1, 9001, 1);\n"
+" this._kittens.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
+msgstr ""
+"\n"
+" // Create the first spinbutton using a function\n"
+" this._kittens = Gtk.SpinButton.new_with_range (1, 9001, 1);\n"
+" this._kittens.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
+
+#. (itstool) path: section/p
+#: C/spinbutton.js.page:92
+msgid ""
+"We can use the new_with_range function to create a new SpinButton quickly. "
+"Its first parameter is the SpinButton's starting value, its second is the "
+"maximum value, and its third is how much to increment it when the plus or "
+"minus buttons are pressed."
+msgstr ""
+"Se puede usar la función «new_with_range» para crear un botón incremental "
+"nuevo rápidamente. Su primer parámetro es el valor inicial del botón "
+"incremental, el segundo es el valor máximo, y el tercero es cuánto se "
+"incrementa cuando se presionan los botones más o menos."
+
+#. (itstool) path: section/p
+#: C/spinbutton.js.page:93
+msgid ""
+"After we create the first SpinButton, we connect its value-changed signal to "
+"a function which handles what happens when the number inside either "
+"SpinButton changes."
+msgstr ""
+"Después de crear el primer botón incremental, se conecta su señal «value-"
+"changed» a una función que maneja qué sucede cuando cambia el número dentro "
+"de cada botón incremental."
+
+#. (itstool) path: section/code
+#: C/spinbutton.js.page:95
+#, no-wrap
+msgid ""
+"\n"
+" // Create an adjustment to use for the second spinbutton\n"
+" this._adjustment = new Gtk.Adjustment ({\n"
+" value: 1,\n"
+" lower: 0,\n"
+" upper: 9001,\n"
+" step_increment: 1,\n"
+" page_increment: 10 });\n"
+"\n"
+" // Create the second spinbutton\n"
+" this._tuna = new Gtk.SpinButton ({ adjustment: this._adjustment });\n"
+" this._tuna.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
+"\n"
+" // this._tuna.set_digits (1);\n"
+" // this._tuna.set_wrap (true);\n"
+msgstr ""
+"\n"
+" // Create an adjustment to use for the second spinbutton\n"
+" this._adjustment = new Gtk.Adjustment ({\n"
+" value: 1,\n"
+" lower: 0,\n"
+" upper: 9001,\n"
+" step_increment: 1,\n"
+" page_increment: 10 });\n"
+"\n"
+" // Create the second spinbutton\n"
+" this._tuna = new Gtk.SpinButton ({ adjustment: this._adjustment });\n"
+" this._tuna.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
+"\n"
+" // this._tuna.set_digits (1);\n"
+" // this._tuna.set_wrap (true);\n"
+
+#. (itstool) path: section/p
+#: C/spinbutton.js.page:112
+msgid ""
+"If you want more fine-grained control over a SpinButton, or want to create a "
+"bunch of SpinButtons which all use the same parameters, you can create an "
+"object called an <link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Adjustment.html\">Adjustment</link>. Then you can use that object as a "
+"new SpinButton's adjustment property, and it sets all the values at once. "
+"Afterwards, you can change all the SpinButtons which use that adjustment by "
+"changing the Adjustment object's properties."
+msgstr ""
+"Si quiere un control más fino sobre un botón incremental, o si quiere crear "
+"varios botones incrementales que usen todos los mismos parámetros, puede "
+"crear un objeto llamado <link href=\"http://www.roojs.org/seed/gir-1.2-"
+"gtk-3.0/gjs/Gtk.Adjustment.html\">Ajuste</link>. Entonces, podrá usar ese "
+"objeto como una propiedad de ajuste nueva del botón incremental, y "
+"establecer todos los valores de una vez. Después, puede cambiar todos los "
+"botones incrementales que usan ese ajuste cambiando las propiedades de su "
+"objeto."
+
+#. (itstool) path: section/p
+#: C/spinbutton.js.page:113
+msgid ""
+"The commented-out lines here show things you can do to customize your "
+"SpinButton. You can set the number of digits which go after the decimal "
+"point, for example, or tell it to wrap the number around if it goes past the "
+"upper or lower bounds that you set."
+msgstr ""
+"Las líneas comentadas aquí muestran cosas que puede hacer para personalizar "
+"su botón incremental. Puede configurar el número de dígitos que van después "
+"de la coma decimal, por ejemplo, o decirle que dé la vuelta si pasa el "
+"límite superior o inferior que estableció."
+
+#. (itstool) path: note/p
+#: C/spinbutton.js.page:114
+msgid ""
+"For the kitties' sake, please don't use set_digits to allow a decimal number "
+"of kittens."
+msgstr ""
+"Por el bien de los gatitos, por favor no use «set_digits» para permitir un "
+"número decimal de gatitos."
+
+#. (itstool) path: section/title
+#: C/spinbutton.js.page:118
+msgid "Creating the rest of the UI"
+msgstr "Crear el resto de la IU"
+
+#. (itstool) path: section/code
+#: C/spinbutton.js.page:120
+#, no-wrap
+msgid ""
+"\n"
+" // Create the text labels to go with the spinbuttons\n"
+" this._startLabel = new Gtk.Label ({ label: \"There are \" });\n"
+" this._kittenLabel = new Gtk.Label ({ label: \" kitten(s), and \"});\n"
+" this._tunaLabel = new Gtk.Label ({ label: \" can(s) of tuna.\"});\n"
+" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()));\n"
+" this._lastLabel = new Gtk.Label ({\n"
+" label: \"That's \" + this.perKitten + \" can(s) of tuna per kitten.\" });\n"
+msgstr ""
+"\n"
+" // Create the text labels to go with the spinbuttons\n"
+" this._startLabel = new Gtk.Label ({ label: \"There are \" });\n"
+" this._kittenLabel = new Gtk.Label ({ label: \" kitten(s), and \"});\n"
+" this._tunaLabel = new Gtk.Label ({ label: \" can(s) of tuna.\"});\n"
+" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()));\n"
+" this._lastLabel = new Gtk.Label ({\n"
+" label: \"That's \" + this.perKitten + \" can(s) of tuna per kitten.\" });\n"
+
+#. (itstool) path: section/p
+#: C/spinbutton.js.page:129
+msgid ""
+"We create each <link xref=\"label.js\">Label</link> individually, and then "
+"string them together along with the SpinButtons. The last label needs to "
+"show the number of cans of tuna per kitten, so it has a variable in the "
+"middle, which corresponds to an equation that uses the SpinButtons' "
+"get_value functions to find out what they're set at. JavaScript's Math "
+"function's floor method is used to round the number of cans of tuna per "
+"kitten down to the nearest whole number."
+msgstr ""
+"Se crea cada <link xref=\"label.js\">etiqueta</link> individualmente, y "
+"después se encadenan con los botones incrementales. La última etiqueta tiene "
+"que mostrar el número de latas de atún por gatito, por lo que tiene una "
+"variable en el medio, que corresponde a una ecuación que usa las funciones "
+"«get_value» de los botones incrementales para descubrir sus valores. El "
+"método «floor» de las funciones «Math» de JavaScript se usa para redondear "
+"el número de latas atún por gatito al número entero inferior más cercano."
+
+#. (itstool) path: section/code
+#: C/spinbutton.js.page:131
+#, no-wrap
+msgid ""
+"\n"
+" // Create a grid to put the spinbuttons and their labels in\n"
+" this._spinGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_bottom: 20 });\n"
+"\n"
+" // Attach everything to the grid\n"
+" this._spinGrid.attach (this._startLabel, 0, 0, 1, 1);\n"
+" this._spinGrid.attach (this._kittens, 1, 0, 1, 1);\n"
+" this._spinGrid.attach (this._kittenLabel, 2, 0, 1, 1);\n"
+" this._spinGrid.attach (this._tuna, 3, 0, 1, 1);\n"
+" this._spinGrid.attach (this._tunaLabel, 4, 0, 1, 1);\n"
+"\n"
+" // Create a main grid to hold it and the last label\n"
+" this._mainGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Attach the smaller grid and the last label to the main grid\n"
+" this._mainGrid.attach (this._spinGrid, 0, 0, 1, 1);\n"
+" this._mainGrid.attach (this._lastLabel, 0, 1, 1, 1);\n"
+msgstr ""
+"\n"
+" // Create a grid to put the spinbuttons and their labels in\n"
+" this._spinGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_bottom: 20 });\n"
+"\n"
+" // Attach everything to the grid\n"
+" this._spinGrid.attach (this._startLabel, 0, 0, 1, 1);\n"
+" this._spinGrid.attach (this._kittens, 1, 0, 1, 1);\n"
+" this._spinGrid.attach (this._kittenLabel, 2, 0, 1, 1);\n"
+" this._spinGrid.attach (this._tuna, 3, 0, 1, 1);\n"
+" this._spinGrid.attach (this._tunaLabel, 4, 0, 1, 1);\n"
+"\n"
+" // Create a main grid to hold it and the last label\n"
+" this._mainGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Attach the smaller grid and the last label to the main grid\n"
+" this._mainGrid.attach (this._spinGrid, 0, 0, 1, 1);\n"
+" this._mainGrid.attach (this._lastLabel, 0, 1, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/spinbutton.js.page:155
+msgid ""
+"Here we use <link xref=\"grid.js\">Grid</link> widgets to keep everything "
+"organized. One Grid holds the labels and SpinButtons in order, while the "
+"next puts that Grid on top and the final Label on the bottom."
+msgstr ""
+"Aquí se usan widgets <link xref=\"grid.js\">rejilla</link> para mantener "
+"todo organizado. Una rejilla mantiene las etiquetas y los botones "
+"incrementales en orden, mientras que la otra pone esa rejilla en la parte "
+"superior y la última etiqueta en la parte inferior."
+
+#. (itstool) path: section/p
+#: C/spinbutton.js.page:156
+msgid ""
+"There isn't a wrong way to organize things in Grids, so long as you like how "
+"it turns out. In this case, the top Grid has a margin on the bottom to keep "
+"it evenly spaced from the bottom Label, and the bottom Label is inside a "
+"separate Grid so it will be centered relative to the Labels and SpinButtons "
+"on the top."
+msgstr ""
+"No hay una manera incorrecta de organizar cosas en rejillas, siempre que le "
+"agrade cómo resulta. En este caso, la rejilla superior tiene un margen en la "
+"parte inferior para mantenerla espaciada uniformemente de la etiqueta "
+"inferior, que está dentro de una rejilla separada por lo que se centrará en "
+"relación a las etiquetas y botones incrementales de la parte superior."
+
+#. (itstool) path: section/code
+#: C/spinbutton.js.page:158
+#, no-wrap
+msgid ""
+"\n"
+" // Add the main grid to the window\n"
+" this._window.add (this._mainGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+msgstr ""
+"\n"
+" // Add the main grid to the window\n"
+" this._window.add (this._mainGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/spinbutton.js.page:166 C/switch.js.page:154
+msgid ""
+"Finally, we add the larger Grid to the window, then tell the window to show "
+"itself and all the widgets inside of it."
+msgstr ""
+"Finalmente, se añade la rejilla más grande a la ventana, después se le dice "
+"a la ventana que se muestre con todos sus widgets."
+
+#. (itstool) path: section/title
+#: C/spinbutton.js.page:170
+msgid "Function which handles the SpinButtons' numerical values being adjusted"
+msgstr ""
+"Función que maneja los valores numéricos de los botones incrementales que se "
+"ajustan"
+
+#. (itstool) path: section/code
+#: C/spinbutton.js.page:172
+#, no-wrap
+msgid ""
+"\n"
+" _newValue: function () {\n"
+"\n"
+" // Update the label which shows how many cans there are per kitten\n"
+" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()))\n"
+" this._lastLabel.set_label (\"That's \" + this.perKitten + \" can(s) of tuna per kitten.\");\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+msgstr ""
+"\n"
+" _newValue: function () {\n"
+"\n"
+" // Update the label which shows how many cans there are per kitten\n"
+" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()))\n"
+" this._lastLabel.set_label (\"That's \" + this.perKitten + \" can(s) of tuna per kitten.\");\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+
+#. (itstool) path: section/p
+#: C/spinbutton.js.page:183
+msgid ""
+"Here we update the perKitten variable based on the SpinButtons' new values, "
+"and use the set_label property to refresh what _lastLabel shows. Since both "
+"SpinButtons have their value-changed signal connected to this function, "
+"every time either of the numbers changes this function will update the Label."
+msgstr ""
+"Aquí se actualiza la variable «perKitten» de acuerdo a los valores nuevos de "
+"los botones incrementales, y se usa la propiedad «set_label» para actualizar "
+"lo que «_lastLabel» muestra. Dado que ambos botones incrementales tienen su "
+"señal «value-changed» conectada a esta función, cada vez que cualquiera de "
+"los números cambie esta función actualizará la etiqueta."
+
+#. (itstool) path: section/code
+#: C/spinbutton.js.page:185
+#, no-wrap
+msgid ""
+"\n"
+"// Run the application\n"
+"let app = new SpinButtonExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"// Run the application\n"
+"let app = new SpinButtonExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/p
+#: C/spinbutton.js.page:190
+msgid ""
+"Finally, we create a new instance of the finished SpinButtonExample class, "
+"and set the application running."
+msgstr ""
+"Finalmente, se crea una instancia nueva de la clase «SpinButtonExample» "
+"terminada, y se ejecuta la aplicación."
+
+#. (itstool) path: section/code
+#: C/spinbutton.js.page:195
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const SpinButtonExample = new Lang.Class({\n"
+" Name: 'SpinButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsspinbutton'\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Kitten Feeder\"});\n"
+"\n"
+" // Create the first spinbutton using a function\n"
+" this._kittens = Gtk.SpinButton.new_with_range (1, 9001, 1);\n"
+" this._kittens.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
+"\n"
+" // Create an adjustment to use for the second spinbutton\n"
+" this._adjustment = new Gtk.Adjustment ({\n"
+" value: 1,\n"
+" lower: 0,\n"
+" upper: 9001,\n"
+" step_increment: 1,\n"
+" page_increment: 10 });\n"
+"\n"
+" // Create the second spinbutton\n"
+" this._tuna = new Gtk.SpinButton ({ adjustment: this._adjustment });\n"
+" this._tuna.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
+"\n"
+" // this._tuna.set_digits (1);\n"
+" // this._tuna.set_wrap (true);\n"
+"\n"
+" // Create the text labels to go with the spinbuttons\n"
+" this._startLabel = new Gtk.Label ({ label: \"There are \" });\n"
+" this._kittenLabel = new Gtk.Label ({ label: \" kitten(s), and \"});\n"
+" this._tunaLabel = new Gtk.Label ({ label: \" can(s) of tuna.\"});\n"
+" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()));\n"
+" this._lastLabel = new Gtk.Label ({\n"
+" label: \"That's \" + this.perKitten + \" can(s) of tuna per kitten.\" });\n"
+"\n"
+" // Create a grid to put the spinbuttons and their labels in\n"
+" this._spinGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_bottom: 20 });\n"
+"\n"
+" // Attach everything to the grid\n"
+" this._spinGrid.attach (this._startLabel, 0, 0, 1, 1);\n"
+" this._spinGrid.attach (this._kittens, 1, 0, 1, 1);\n"
+" this._spinGrid.attach (this._kittenLabel, 2, 0, 1, 1);\n"
+" this._spinGrid.attach (this._tuna, 3, 0, 1, 1);\n"
+" this._spinGrid.attach (this._tunaLabel, 4, 0, 1, 1);\n"
+"\n"
+" // Create a main grid to hold it and the last label\n"
+" this._mainGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Attach the smaller grid and the last label to the main grid\n"
+" this._mainGrid.attach (this._spinGrid, 0, 0, 1, 1);\n"
+" this._mainGrid.attach (this._lastLabel, 0, 1, 1, 1);\n"
+"\n"
+" // Add the main grid to the window\n"
+" this._window.add (this._mainGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _newValue: function () {\n"
+"\n"
+" // Update the label which shows how many cans there are per kitten\n"
+" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()))\n"
+" this._lastLabel.set_label (\"That's \" + this.perKitten + \" can(s) of tuna per kitten.\");\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new SpinButtonExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const SpinButtonExample = new Lang.Class({\n"
+" Name: 'SpinButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsspinbutton'\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Kitten Feeder\"});\n"
+"\n"
+" // Create the first spinbutton using a function\n"
+" this._kittens = Gtk.SpinButton.new_with_range (1, 9001, 1);\n"
+" this._kittens.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
+"\n"
+" // Create an adjustment to use for the second spinbutton\n"
+" this._adjustment = new Gtk.Adjustment ({\n"
+" value: 1,\n"
+" lower: 0,\n"
+" upper: 9001,\n"
+" step_increment: 1,\n"
+" page_increment: 10 });\n"
+"\n"
+" // Create the second spinbutton\n"
+" this._tuna = new Gtk.SpinButton ({ adjustment: this._adjustment });\n"
+" this._tuna.connect (\"value-changed\", Lang.bind (this, this._newValue));\n"
+"\n"
+" // this._tuna.set_digits (1);\n"
+" // this._tuna.set_wrap (true);\n"
+"\n"
+" // Create the text labels to go with the spinbuttons\n"
+" this._startLabel = new Gtk.Label ({ label: \"There are \" });\n"
+" this._kittenLabel = new Gtk.Label ({ label: \" kitten(s), and \"});\n"
+" this._tunaLabel = new Gtk.Label ({ label: \" can(s) of tuna.\"});\n"
+" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()));\n"
+" this._lastLabel = new Gtk.Label ({\n"
+" label: \"That's \" + this.perKitten + \" can(s) of tuna per kitten.\" });\n"
+"\n"
+" // Create a grid to put the spinbuttons and their labels in\n"
+" this._spinGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_bottom: 20 });\n"
+"\n"
+" // Attach everything to the grid\n"
+" this._spinGrid.attach (this._startLabel, 0, 0, 1, 1);\n"
+" this._spinGrid.attach (this._kittens, 1, 0, 1, 1);\n"
+" this._spinGrid.attach (this._kittenLabel, 2, 0, 1, 1);\n"
+" this._spinGrid.attach (this._tuna, 3, 0, 1, 1);\n"
+" this._spinGrid.attach (this._tunaLabel, 4, 0, 1, 1);\n"
+"\n"
+" // Create a main grid to hold it and the last label\n"
+" this._mainGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Attach the smaller grid and the last label to the main grid\n"
+" this._mainGrid.attach (this._spinGrid, 0, 0, 1, 1);\n"
+" this._mainGrid.attach (this._lastLabel, 0, 1, 1, 1);\n"
+"\n"
+" // Add the main grid to the window\n"
+" this._window.add (this._mainGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _newValue: function () {\n"
+"\n"
+" // Update the label which shows how many cans there are per kitten\n"
+" this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()))\n"
+" this._lastLabel.set_label (\"That's \" + this.perKitten + \" can(s) of tuna per kitten.\");\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new SpinButtonExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/spinbutton.js.page:206
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.SpinButton."
+"html\">Gtk.SpinButton</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.SpinButton."
+"html\">Gtk.SpinButton</link>"
+
+#. (itstool) path: info/title
+#: C/spinbutton.py.page:8
+msgctxt "text"
+msgid "SpinButton (Python)"
+msgstr "SpinButton (Python)"
+
+#. (itstool) path: info/desc
+#: C/spinbutton.py.page:20
+msgid "Retrieve an integer or floating-point number from the user."
+msgstr "Obtener un número entero o en coma flotante del usuario."
+
+#. (itstool) path: section/code
+#: C/spinbutton.py.page:31
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"SpinButton Example\", application=app)\n"
+" self.set_default_size(210, 70)\n"
+" self.set_border_width(5)\n"
+"\n"
+" # an adjustment (initial value, min value, max value,\n"
+" # step increment - press cursor keys or +/- buttons to see!,\n"
+" # page increment - not used here,\n"
+" # page size - not used here)\n"
+" ad = Gtk.Adjustment(0, 0, 100, 1, 0, 0)\n"
+"\n"
+" # a spin button for integers (digits=0)\n"
+" self.spin = Gtk.SpinButton(adjustment=ad, climb_rate=1, digits=0)\n"
+" # as wide as possible\n"
+" self.spin.set_hexpand(True)\n"
+"\n"
+" # we connect the signal \"value-changed\" emitted by the spinbutton with the callback\n"
+" # function spin_selected\n"
+" self.spin.connect(\"value-changed\", self.spin_selected)\n"
+"\n"
+" # a label\n"
+" self.label = Gtk.Label()\n"
+" self.label.set_text(\"Choose a number\")\n"
+"\n"
+" # a grid to attach the widgets\n"
+" grid = Gtk.Grid()\n"
+" grid.attach(self.spin, 0, 0, 1, 1)\n"
+" grid.attach(self.label, 0, 1, 2, 1)\n"
+"\n"
+" self.add(grid)\n"
+"\n"
+" # callback function: the signal of the spinbutton is used to change the\n"
+" # text of the label\n"
+" def spin_selected(self, event):\n"
+" self.label.set_text(\n"
+" \"The number you selected is \" + str(self.spin.get_value_as_int()) + \".\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"SpinButton Example\", application=app)\n"
+" self.set_default_size(210, 70)\n"
+" self.set_border_width(5)\n"
+"\n"
+" # an adjustment (initial value, min value, max value,\n"
+" # step increment - press cursor keys or +/- buttons to see!,\n"
+" # page increment - not used here,\n"
+" # page size - not used here)\n"
+" ad = Gtk.Adjustment(0, 0, 100, 1, 0, 0)\n"
+"\n"
+" # a spin button for integers (digits=0)\n"
+" self.spin = Gtk.SpinButton(adjustment=ad, climb_rate=1, digits=0)\n"
+" # as wide as possible\n"
+" self.spin.set_hexpand(True)\n"
+"\n"
+" # we connect the signal \"value-changed\" emitted by the spinbutton with the callback\n"
+" # function spin_selected\n"
+" self.spin.connect(\"value-changed\", self.spin_selected)\n"
+"\n"
+" # a label\n"
+" self.label = Gtk.Label()\n"
+" self.label.set_text(\"Choose a number\")\n"
+"\n"
+" # a grid to attach the widgets\n"
+" grid = Gtk.Grid()\n"
+" grid.attach(self.spin, 0, 0, 1, 1)\n"
+" grid.attach(self.label, 0, 1, 2, 1)\n"
+"\n"
+" self.add(grid)\n"
+"\n"
+" # callback function: the signal of the spinbutton is used to change the\n"
+" # text of the label\n"
+" def spin_selected(self, event):\n"
+" self.label.set_text(\n"
+" \"The number you selected is \" + str(self.spin.get_value_as_int()) + \".\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/spinbutton.py.page:35
+msgid "Useful methods for a SpinButton widget"
+msgstr "Métodos útiles para un widget «SpinButton»"
+
+#. (itstool) path: section/p
+#: C/spinbutton.py.page:36
+msgid ""
+"A Gtk.Adjustment is needed to construct the Gtk.SpinButton. This is the "
+"representation of a value with a lower and upper bound, together with step "
+"and page increments, and a page size, and it is constructed as <code>Gtk."
+"Adjustment(value, lower, upper, step_increment, page_increment, page_size)</"
+"code> where the fields are of type <code>float</code>; <code>step_increment</"
+"code> is the increment/decrement that is obtained by using the cursor keys "
+"or the buttons of the spinbutton. Note that <code>page_increment</code> and "
+"<code>page_size</code> are not used in this case, and they should be set to "
+"<code>0</code>."
+msgstr ""
+"Se necesita un «Gtk.Adjustment» para construir el «Gtk.SpinButton». Este es "
+"la representación de un valor con un límite superior e inferior, junto con "
+"pasos y páginas de incrementos, y un tamaño de página, y se construye como "
+"<code>Gtk.Adjustment(valor, mínimo, ,máximo, paso, página, "
+"tamaño_de_página)</code> donde los campos son del tipo <code>float</code>; "
+"<code>paso</code> es el incremento/decremento que se obtiene usando las "
+"teclas de dirección o los botones del botón incremental. Tenga en cuenta que "
+"<code>página</code> y <code>tamaño_de_página</code> no se usan en este caso, "
+"y deben establecerse a <code>0</code>."
+
+#. (itstool) path: section/p
+#: C/spinbutton.py.page:37
+msgid ""
+"In line 23 the signal <code>\"value-changed\"</code> is connected to the "
+"callback function <code>spin_selected()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 23, la señal <code>«value-changed»</code> se conecta a la "
+"función de retorno de llamada <code>spin_selected()</code> usando "
+"<code><var>widget</var>.connect(<var>señal</var>, <var>función de retorno de "
+"llamada</var>)</code>. Consulte la <link xref=\"signals-callbacks.py\"/> "
+"para una explicación más detallada."
+
+#. (itstool) path: item/p
+#: C/spinbutton.py.page:39
+msgid ""
+"If you want the value of the spinbutton to wrap around when they exceed the "
+"maximum or the minimum, set <code>set_wrap(True)</code>. The <code>\"wrapped"
+"\"</code> signal is emitted when this happens."
+msgstr ""
+"Si quiere que el valor del botón incremental dé la vuelta cuando exceda el "
+"máximo o el mínimo, establezca <code>set_wrap(True)</code>. La señal <code>"
+"\"wrapped\"</code> se emite cuando esto sucede."
+
+#. (itstool) path: item/p
+#: C/spinbutton.py.page:40
+msgid ""
+"<code>set_digits(digits)</code> sets the precision to be displayed by the "
+"spinbutton, up to 20 digits."
+msgstr ""
+"<code>set_digits(dígitos)</code> establece la precisión que muestra el botón "
+"incremental, hasta 20 dígitos."
+
+#. (itstool) path: item/p
+#: C/spinbutton.py.page:41
+msgid ""
+"To get the value of the spinbutton as an integer, use "
+"<code>get_value_as_int()</code>."
+msgstr ""
+"Para obtener el valor del botón incremental como un entero, use "
+"<code>get_value_as_int()</code>."
+
+#. (itstool) path: item/p
+#: C/spinbutton.py.page:49
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSpinButton.html"
+"\">GtkSpinButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSpinButton.html"
+"\">GtkSpinButton</link>"
+
+#. (itstool) path: info/title
+#: C/spinbutton.vala.page:8
+msgctxt "text"
+msgid "SpinButton (Vala)"
+msgstr "SpinButton (Vala)"
+
+#. (itstool) path: info/desc
+#: C/spinbutton.vala.page:20
+msgid "Retrieve an integer or floating point number."
+msgstr "Obtener un número entero o en coma flotante."
+
+#. (itstool) path: page/code
+#: C/spinbutton.vala.page:27
+#, no-wrap
+msgid ""
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tGtk.Label label;\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"SpinButton Example\";\n"
+"\t\twindow.set_default_size (210, 70);\n"
+"\t\twindow.set_border_width (5);\n"
+"\n"
+"\t\tvar spinbutton = new Gtk.SpinButton.with_range (0, 100, 1);\n"
+"\t\tspinbutton.set_hexpand (true);\n"
+"\n"
+"\t\tlabel = new Gtk.Label (\"Choose a number\");\n"
+"\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tgrid.attach (spinbutton, 0, 0, 1, 1);\n"
+"\t\tgrid.attach (label, 0, 1, 1, 1);\n"
+"\n"
+"\t\tspinbutton.value_changed.connect (this.value_changed_cb);\n"
+"\n"
+"\t\twindow.add (grid);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"\n"
+"\tvoid value_changed_cb (Gtk.SpinButton spin) {\n"
+"\t\tlabel.set_text (\"The number you selected is %.0f.\".printf (spin.get_value()));\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tGtk.Label label;\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\t\tvar window = new Gtk.ApplicationWindow (this);\n"
+"\t\twindow.title = \"SpinButton Example\";\n"
+"\t\twindow.set_default_size (210, 70);\n"
+"\t\twindow.set_border_width (5);\n"
+"\n"
+"\t\tvar spinbutton = new Gtk.SpinButton.with_range (0, 100, 1);\n"
+"\t\tspinbutton.set_hexpand (true);\n"
+"\n"
+"\t\tlabel = new Gtk.Label (\"Choose a number\");\n"
+"\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tgrid.attach (spinbutton, 0, 0, 1, 1);\n"
+"\t\tgrid.attach (label, 0, 1, 1, 1);\n"
+"\n"
+"\t\tspinbutton.value_changed.connect (this.value_changed_cb);\n"
+"\n"
+"\t\twindow.add (grid);\n"
+"\t\twindow.show_all ();\n"
+"\t}\n"
+"\n"
+"\tvoid value_changed_cb (Gtk.SpinButton spin) {\n"
+"\t\tlabel.set_text (\"The number you selected is %.0f.\".printf (spin.get_value()));\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/spinbutton.vala.page:32
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.SpinButton.html\">Gtk."
+"SpinButton</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.SpinButton.html\">Gtk."
+"SpinButton</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/spinner.c.page:24 C/spinner.js.page:22 C/spinner.py.page:23
+#: C/spinner.vala.page:22
+msgctxt "_"
+msgid "external ref='media/spinner.png' md5='d04f2d81f1d72c6c2f97e8729947dfed'"
+msgstr ""
+"external ref='media/spinner.png' md5='d04f2d81f1d72c6c2f97e8729947dfed'"
+
+#. (itstool) path: info/title
+#: C/spinner.c.page:8
+msgctxt "text"
+msgid "Spinner (C)"
+msgstr "Spinner (C)"
+
+#. (itstool) path: info/desc
+#: C/spinner.c.page:19 C/spinner.js.page:18 C/spinner.py.page:19
+#: C/spinner.vala.page:18
+msgid "A spinner animation"
+msgstr "Una animación giratoria"
+
+#. (itstool) path: page/title
+#: C/spinner.c.page:22 C/spinner.js.page:21 C/spinner.py.page:22
+#: C/spinner.vala.page:21
+msgid "Spinner"
+msgstr "Spinner"
+
+#. (itstool) path: page/p
+#: C/spinner.c.page:25 C/spinner.js.page:23 C/spinner.py.page:24
+#: C/spinner.vala.page:23
+msgid "This Spinner is stopped and started by pressing the spacebar."
+msgstr ""
+"Este indicador de progreso está detenido y se inicia al pulsar la barra "
+"espaciadora."
+
+#. (itstool) path: page/code
+#: C/spinner.c.page:27
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+" \n"
+"\n"
+"\n"
+" /*Global variable used to indicate active state of the\n"
+"spinner. TRUE = active, FALSE = not-active. This is because \n"
+"there isn't a current function for C that does this for us*/\n"
+"gboolean active; \n"
+" \n"
+"\n"
+"\n"
+"/*This is the callback function. It is a handler function \n"
+"which reacts to the signal. In this case, it will cause the \n"
+"spinner to start and stop according to how many times the user \n"
+"presses the spacebar.*/ \n"
+"static gboolean\n"
+"key_pressed_event (GtkWidget *widget,\n"
+" GdkEvent *event,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *spinner = user_data;\n"
+" guint keyval;\n"
+" \n"
+" /*Extracts the keyval from an event. And stores it in the variable \n"
+" \"keyval\" (we give the function the address). In this case, the \n"
+" event is GdkEventKey, a key press event*/\n"
+" gdk_event_get_keyval (event, &keyval); \n"
+"\n"
+" /*Grabbing the boolean value from the spinner*/\n"
+" g_object_get (GTK_SPINNER (spinner), \"active\", &active, NULL);\n"
+" \n"
+" if (keyval == GDK_KEY_space) {\n"
+" if (active) {\n"
+" gtk_spinner_stop (GTK_SPINNER (spinner));\n"
+" }\n"
+" else {\n"
+" gtk_spinner_start (GTK_SPINNER (spinner));\n"
+" } \n"
+" }\n"
+" \n"
+"return TRUE;\n"
+"}\n"
+" \n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *spinner;\n"
+" \n"
+" /*Create a window with a title, border width and a default size*/\n"
+" window = gtk_application_window_new (app);\n"
+" \n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Spinner Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n"
+" gtk_container_set_border_width (GTK_CONTAINER(window), 30);\n"
+" \n"
+" /*Create a spinner, with extra horizontal and vertical space*/\n"
+" spinner = gtk_spinner_new ();\n"
+" gtk_spinner_start (GTK_SPINNER (spinner));\n"
+" \n"
+" gtk_container_add (GTK_CONTAINER (window), spinner);\n"
+" \n"
+" /*Connecting the key-press-event signal to the callback*/\n"
+" g_signal_connect (GTK_WINDOW (window), \"key-press-event\", \n"
+" G_CALLBACK (key_pressed_event), spinner);\n"
+" \n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+" \n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+" \n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" \n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+" \n"
+"\n"
+"\n"
+" /*Global variable used to indicate active state of the\n"
+"spinner. TRUE = active, FALSE = not-active. This is because \n"
+"there isn't a current function for C that does this for us*/\n"
+"gboolean active; \n"
+" \n"
+"\n"
+"\n"
+"/*This is the callback function. It is a handler function \n"
+"which reacts to the signal. In this case, it will cause the \n"
+"spinner to start and stop according to how many times the user \n"
+"presses the spacebar.*/ \n"
+"static gboolean\n"
+"key_pressed_event (GtkWidget *widget,\n"
+" GdkEvent *event,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *spinner = user_data;\n"
+" guint keyval;\n"
+" \n"
+" /*Extracts the keyval from an event. And stores it in the variable \n"
+" \"keyval\" (we give the function the address). In this case, the \n"
+" event is GdkEventKey, a key press event*/\n"
+" gdk_event_get_keyval (event, &keyval); \n"
+"\n"
+" /*Grabbing the boolean value from the spinner*/\n"
+" g_object_get (GTK_SPINNER (spinner), \"active\", &active, NULL);\n"
+" \n"
+" if (keyval == GDK_KEY_space) {\n"
+" if (active) {\n"
+" gtk_spinner_stop (GTK_SPINNER (spinner));\n"
+" }\n"
+" else {\n"
+" gtk_spinner_start (GTK_SPINNER (spinner));\n"
+" } \n"
+" }\n"
+" \n"
+"return TRUE;\n"
+"}\n"
+" \n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *spinner;\n"
+" \n"
+" /*Create a window with a title, border width and a default size*/\n"
+" window = gtk_application_window_new (app);\n"
+" \n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Spinner Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n"
+" gtk_container_set_border_width (GTK_CONTAINER(window), 30);\n"
+" \n"
+" /*Create a spinner, with extra horizontal and vertical space*/\n"
+" spinner = gtk_spinner_new ();\n"
+" gtk_spinner_start (GTK_SPINNER (spinner));\n"
+" \n"
+" gtk_container_add (GTK_CONTAINER (window), spinner);\n"
+" \n"
+" /*Connecting the key-press-event signal to the callback*/\n"
+" g_signal_connect (GTK_WINDOW (window), \"key-press-event\", \n"
+" G_CALLBACK (key_pressed_event), spinner);\n"
+" \n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+" \n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+" \n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" \n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/spinner.c.page:35
+msgid ""
+"<link href=\"http://developer.gnome.org/gobject/stable/gobject-The-Base-"
+"Object-Type.html#g-object-get\">GObject</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gobject/stable/gobject-The-Base-"
+"Object-Type.html#g-object-get\">GObject</link>"
+
+#. (itstool) path: item/p
+#: C/spinner.c.page:36 C/togglebutton.c.page:38
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkSpinner.html"
+"\">GtkSpinner</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkSpinner.html"
+"\">GtkSpinner</link>"
+
+#. (itstool) path: info/title
+#: C/spinner.js.page:8
+msgctxt "text"
+msgid "Spinner (JavaScript)"
+msgstr "Spinner (JavaScript)"
+
+#. (itstool) path: page/code
+#: C/spinner.js.page:25
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Gdk = imports.gi.Gdk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const SpinnerExample = new Lang.Class ({\n"
+" Name: 'Spinner Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jsspinner',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Spinner Example\",\n"
+" default_height: 200,\n"
+" default_width: 200,\n"
+" border_width: 30 });\n"
+"\n"
+" // Create a spinner which starts spinning automatically\n"
+" this._spinner = new Gtk.Spinner ({active: true});\n"
+" this._window.add (this._spinner);\n"
+"\n"
+" // Connect a keypress event to the function that makes it start or stop spinning\n"
+" this._window.connect(\"key-press-event\", Lang.bind(this, this._onKeyPress));\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _onKeyPress: function(widget, event) {\n"
+"\n"
+" // Get the value of the key that was pressed\n"
+" let keyval = event.get_keyval()[1];\n"
+"\n"
+" // If it was the spacebar, toggle the spinner to start or stop\n"
+" if (keyval == Gdk.KEY_space) {\n"
+" if (this._spinner.active == true)\n"
+" this._spinner.stop();\n"
+" else\n"
+" this._spinner.start();\n"
+" }\n"
+" }\n"
+"\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new SpinnerExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Gdk = imports.gi.Gdk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const SpinnerExample = new Lang.Class ({\n"
+" Name: 'Spinner Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jsspinner',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Spinner Example\",\n"
+" default_height: 200,\n"
+" default_width: 200,\n"
+" border_width: 30 });\n"
+"\n"
+" // Create a spinner which starts spinning automatically\n"
+" this._spinner = new Gtk.Spinner ({active: true});\n"
+" this._window.add (this._spinner);\n"
+"\n"
+" // Connect a keypress event to the function that makes it start or stop spinning\n"
+" this._window.connect(\"key-press-event\", Lang.bind(this, this._onKeyPress));\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _onKeyPress: function(widget, event) {\n"
+"\n"
+" // Get the value of the key that was pressed\n"
+" let keyval = event.get_keyval()[1];\n"
+"\n"
+" // If it was the spacebar, toggle the spinner to start or stop\n"
+" if (keyval == Gdk.KEY_space) {\n"
+" if (this._spinner.active == true)\n"
+" this._spinner.stop();\n"
+" else\n"
+" this._spinner.start();\n"
+" }\n"
+" }\n"
+"\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new SpinnerExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/spinner.js.page:30
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gdk.html\">Gdk - "
+"Key Values</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gdk.html\">Gdk: "
+"valores de teclas</link>"
+
+#. (itstool) path: item/p
+#: C/spinner.js.page:33 C/togglebutton.js.page:158
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Spinner.html"
+"\">Gtk.Spinner</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Spinner.html"
+"\">Gtk.Spinner</link>"
+
+#. (itstool) path: info/title
+#: C/spinner.py.page:8
+msgctxt "text"
+msgid "Spinner (Python)"
+msgstr "Spinner (Python)"
+
+#. (itstool) path: section/code
+#: C/spinner.py.page:31
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gdk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Spinner Example\", application=app)\n"
+" self.set_default_size(200, 200)\n"
+" self.set_border_width(30)\n"
+"\n"
+" # a spinner\n"
+" self.spinner = Gtk.Spinner()\n"
+" # that by default spins\n"
+" self.spinner.start()\n"
+" # add the spinner to the window\n"
+" self.add(self.spinner)\n"
+"\n"
+" # event handler\n"
+" # a signal from the keyboard (space) controls if the spinner stops/starts\n"
+" def do_key_press_event(self, event):\n"
+" # keyname is the symbolic name of the key value given by the event\n"
+" keyname = Gdk.keyval_name(event.keyval)\n"
+" # if it is \"space\"\n"
+" if keyname == \"space\":\n"
+" # and the spinner is active\n"
+" if self.spinner.get_property(\"active\"):\n"
+" # stop the spinner\n"
+" self.spinner.stop()\n"
+" # if the spinner is not active\n"
+" else:\n"
+" # start it again\n"
+" self.spinner.start()\n"
+" # stop the signal emission\n"
+" return True\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gdk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Spinner Example\", application=app)\n"
+" self.set_default_size(200, 200)\n"
+" self.set_border_width(30)\n"
+"\n"
+" # a spinner\n"
+" self.spinner = Gtk.Spinner()\n"
+" # that by default spins\n"
+" self.spinner.start()\n"
+" # add the spinner to the window\n"
+" self.add(self.spinner)\n"
+"\n"
+" # event handler\n"
+" # a signal from the keyboard (space) controls if the spinner stops/starts\n"
+" def do_key_press_event(self, event):\n"
+" # keyname is the symbolic name of the key value given by the event\n"
+" keyname = Gdk.keyval_name(event.keyval)\n"
+" # if it is \"space\"\n"
+" if keyname == \"space\":\n"
+" # and the spinner is active\n"
+" if self.spinner.get_property(\"active\"):\n"
+" # stop the spinner\n"
+" self.spinner.stop()\n"
+" # if the spinner is not active\n"
+" else:\n"
+" # start it again\n"
+" self.spinner.start()\n"
+" # stop the signal emission\n"
+" return True\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: note/p
+#: C/spinner.py.page:33
+msgid ""
+"<code>Gdk.keyval_name(event.keyval)</code> converts the key value "
+"<code>event.keyval</code> into a symbolic name. The names and corresponding "
+"key values can be found <link href=\"http://git.gnome.org/browse/gtk+/tree/"
+"gdk/gdkkeysyms.h\">here</link>,but for instance <code>GDK_KEY_BackSpace</"
+"code> becomes the string <code>\"BackSpace\"</code>."
+msgstr ""
+"<code>Gdk.keyval_name(event.keyval)</code> convierte el valor de tecla "
+"<code>event.keyval</code> en un nombre simbólico. Los nombres y los valores "
+"de tecla correspondientes pueden encontrarse <link href=\"http://git.gnome."
+"org/browse/gtk+/tree/gdk/gdkkeysyms.h\">aquí</link>, pero por ejemplo "
+"<code>GDK_KEY_BackSpace</code> se convierte en la cadena <code>\"BackSpace"
+"\"</code>."
+
+#. (itstool) path: item/p
+#: C/spinner.py.page:42 C/togglebutton.py.page:46
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSpinner.html"
+"\">GtkSpinner</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSpinner.html"
+"\">GtkSpinner</link>"
+
+#. (itstool) path: item/p
+#: C/spinner.py.page:43
+msgid ""
+"<link href=\"http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling.html"
+"\">Key Values</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling.html"
+"\">Valores de teclas</link>"
+
+#. (itstool) path: info/title
+#: C/spinner.vala.page:8
+msgctxt "text"
+msgid "Spinner (Vala)"
+msgstr "Spinner (Vala)"
+
+#. (itstool) path: page/code
+#: C/spinner.vala.page:25
+#, no-wrap
+msgid ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tGtk.Widget spinner;\n"
+"\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\n"
+"\t\tObject (application: app, title: \"Spinner Example\");\n"
+"\n"
+"\t\tthis.set_default_size (200, 200);\n"
+"\t\tthis.border_width = 30;\n"
+"\n"
+"\t\tspinner = new Gtk.Spinner ();\n"
+"\n"
+"\t\tthis.add (spinner);\n"
+"\t\t(spinner as Gtk.Spinner).active = true;\n"
+"\t\tspinner.show ();\n"
+"\t}\n"
+"\n"
+"\tprotected override bool key_press_event (Gdk.EventKey event) {\n"
+"\n"
+"\t\t//print (Gdk.keyval_name(event.keyval) +\"\\n\");\n"
+"\t\tif (Gdk.keyval_name(event.keyval) == \"space\") {\n"
+"\n"
+"\t\t\tif ((spinner as Gtk.Spinner).active) {\n"
+"\t\t\t\t(spinner as Gtk.Spinner).stop ();\n"
+"\t\t\t\t//spinner.visible = false;\n"
+"\t\t\t}\n"
+"\t\t\telse {\n"
+"\t\t\t\t(spinner as Gtk.Spinner).start ();\n"
+"\t\t\t\t//spinner.visible = true;\n"
+"\t\t\t}\n"
+"\t\t}\n"
+"\t\treturn true;\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\n"
+"\tprotected override void activate () {\n"
+"\t\tMyWindow window = new MyWindow (this);\n"
+"\t\twindow.show ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.spinner\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tGtk.Widget spinner;\n"
+"\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\n"
+"\t\tObject (application: app, title: \"Spinner Example\");\n"
+"\n"
+"\t\tthis.set_default_size (200, 200);\n"
+"\t\tthis.border_width = 30;\n"
+"\n"
+"\t\tspinner = new Gtk.Spinner ();\n"
+"\n"
+"\t\tthis.add (spinner);\n"
+"\t\t(spinner as Gtk.Spinner).active = true;\n"
+"\t\tspinner.show ();\n"
+"\t}\n"
+"\n"
+"\tprotected override bool key_press_event (Gdk.EventKey event) {\n"
+"\n"
+"\t\t//print (Gdk.keyval_name(event.keyval) +\"\\n\");\n"
+"\t\tif (Gdk.keyval_name(event.keyval) == \"space\") {\n"
+"\n"
+"\t\t\tif ((spinner as Gtk.Spinner).active) {\n"
+"\t\t\t\t(spinner as Gtk.Spinner).stop ();\n"
+"\t\t\t\t//spinner.visible = false;\n"
+"\t\t\t}\n"
+"\t\t\telse {\n"
+"\t\t\t\t(spinner as Gtk.Spinner).start ();\n"
+"\t\t\t\t//spinner.visible = true;\n"
+"\t\t\t}\n"
+"\t\t}\n"
+"\t\treturn true;\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\n"
+"\tprotected override void activate () {\n"
+"\t\tMyWindow window = new MyWindow (this);\n"
+"\t\twindow.show ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.spinner\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/spinner.vala.page:30
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Widget.html\">Gtk.Widget</"
+"link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Widget.html\">Gtk.Widget</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/spinner.vala.page:31
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Spinner.html\">Gtk.Spinner</"
+"link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Spinner.html\">Gtk.Spinner</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/spinner.vala.page:32
+msgid ""
+"<link href=\"http://www.valadoc.org/gdk-3.0/Gdk.keyval_name.html\">Gdk."
+"keyval_name</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gdk-3.0/Gdk.keyval_name.html\">Gdk."
+"keyval_name</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/statusbar.c.page:27
+msgctxt "_"
+msgid ""
+"external ref='media/statusbar3.png' md5='60c71604fb44656237ee66dfb39a8689'"
+msgstr ""
+"external ref='media/statusbar3.png' md5='60c71604fb44656237ee66dfb39a8689'"
+
+#. (itstool) path: info/title
+#: C/statusbar.c.page:8
+msgctxt "text"
+msgid "Statusbar (C)"
+msgstr "Statusbar (C)"
+
+#. (itstool) path: info/desc
+#: C/statusbar.c.page:22 C/statusbar.py.page:20 C/statusbar.vala.page:21
+msgid "Report messages of minor importance to the user"
+msgstr "Enviar mensajes de menor importancia al usuario"
+
+#. (itstool) path: page/title
+#: C/statusbar.c.page:25 C/statusbar.js.page:21 C/statusbar.py.page:23
+#: C/statusbar.vala.page:24
+msgid "Statusbar"
+msgstr "Statusbar"
+
+#. (itstool) path: page/p
+#: C/statusbar.c.page:28
+msgid ""
+"This statusbar is used to demonstrate how messages are stacked in a last-in-"
+"first-out order. The message at the top of the stack is always the one "
+"displayed."
+msgstr ""
+"Esta barra de estado se usa para demostrar cómo se apilan los mensajes en un "
+"orden «último dentro, primero fuera». Siempre se muestra el mensaje en la "
+"parte superior de la pila."
+
+#. (itstool) path: page/code
+#: C/statusbar.c.page:30
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/*Callback function in which pushes an item onto the statusbar*/\n"
+"static void \n"
+"push_item (GtkWidget *widget,\n"
+" gpointer data)\n"
+"{\n"
+" GtkWidget *status_bar = data;\n"
+"\n"
+" /*Create a context id, which is used to uniquely identify \n"
+" *the source of a message*/\n"
+" guint context_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (status_bar), \n"
+" \"Statusbar example\");\n"
+"\n"
+" /*Count is used to keep track of the amount of items \n"
+" the user is pushing/popping*/\n"
+" static int count = 1;\n"
+" char hold_output[20];\n"
+" \n"
+" /*This is a safer form of the standard sprintf () function. The output is \n"
+" guaranteed in this case to not exceed 20 characters, and the result is stored\n"
+" into the 'hold_output' variable*/\n"
+" g_snprintf (hold_output, 20, \"Item %d\", count++);\n"
+" gtk_statusbar_push (GTK_STATUSBAR (status_bar), \n"
+" context_id, \n"
+" hold_output);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/*Callback function that is used to pop an item off the statusbar*/\n"
+"static void \n"
+"pop_item (GtkWidget *widget,\n"
+" gpointer data )\n"
+"{\n"
+" GtkWidget *status_bar = data;\n"
+" guint context_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (status_bar), \n"
+" \"Statusbar example\");\n"
+"\n"
+" gtk_statusbar_pop (GTK_STATUSBAR (status_bar), context_id);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *grid;\n"
+" GtkWidget *window;\n"
+" GtkWidget *status_bar;\n"
+" GtkWidget *pop_button;\n"
+" GtkWidget *push_button;\n"
+"\n"
+" /*Create a window with a title, border width, and a default size**/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 220, 100);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Statusbar Example\");\n"
+" gtk_container_set_border_width (GTK_CONTAINER(window), 10);\n"
+" \n"
+" /*Create the status bar, which is held in the global variable*/\n"
+" status_bar = gtk_statusbar_new (); \n"
+" \n"
+" /*Create the buttons with labels*/\n"
+" push_button = gtk_button_new_with_label (\"push item\");\n"
+" pop_button = gtk_button_new_with_label (\"pop last item\");\n"
+" \n"
+" /*Create the grid, and attach the buttons/statusbar accordingly*/\n"
+" grid = gtk_grid_new ();\n"
+" gtk_grid_attach (GTK_GRID (grid), push_button, 0,1,1,1);\n"
+" gtk_grid_attach (GTK_GRID (grid), pop_button, 0,2,1,1);\n"
+" gtk_grid_attach (GTK_GRID (grid), status_bar, 0,3,1,1);\n"
+" \n"
+" /*Connecting the clicked signals to the corresponding callback functions*/\n"
+" g_signal_connect (GTK_BUTTON (push_button), \"clicked\", \n"
+" G_CALLBACK (push_item), status_bar);\n"
+" g_signal_connect (GTK_BUTTON (pop_button), \"clicked\", \n"
+" G_CALLBACK (pop_item), status_bar);\n"
+" \n"
+" /*Attach the grid holding the child widgets onto the window, and show all*/\n"
+" gtk_container_add (GTK_CONTAINER (window), grid);\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/*Callback function in which pushes an item onto the statusbar*/\n"
+"static void \n"
+"push_item (GtkWidget *widget,\n"
+" gpointer data)\n"
+"{\n"
+" GtkWidget *status_bar = data;\n"
+"\n"
+" /*Create a context id, which is used to uniquely identify \n"
+" *the source of a message*/\n"
+" guint context_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (status_bar), \n"
+" \"Statusbar example\");\n"
+"\n"
+" /*Count is used to keep track of the amount of items \n"
+" the user is pushing/popping*/\n"
+" static int count = 1;\n"
+" char hold_output[20];\n"
+" \n"
+" /*This is a safer form of the standard sprintf () function. The output is \n"
+" guaranteed in this case to not exceed 20 characters, and the result is stored\n"
+" into the 'hold_output' variable*/\n"
+" g_snprintf (hold_output, 20, \"Item %d\", count++);\n"
+" gtk_statusbar_push (GTK_STATUSBAR (status_bar), \n"
+" context_id, \n"
+" hold_output);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/*Callback function that is used to pop an item off the statusbar*/\n"
+"static void \n"
+"pop_item (GtkWidget *widget,\n"
+" gpointer data )\n"
+"{\n"
+" GtkWidget *status_bar = data;\n"
+" guint context_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (status_bar), \n"
+" \"Statusbar example\");\n"
+"\n"
+" gtk_statusbar_pop (GTK_STATUSBAR (status_bar), context_id);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *grid;\n"
+" GtkWidget *window;\n"
+" GtkWidget *status_bar;\n"
+" GtkWidget *pop_button;\n"
+" GtkWidget *push_button;\n"
+"\n"
+" /*Create a window with a title, border width, and a default size**/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 220, 100);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Statusbar Example\");\n"
+" gtk_container_set_border_width (GTK_CONTAINER(window), 10);\n"
+" \n"
+" /*Create the status bar, which is held in the global variable*/\n"
+" status_bar = gtk_statusbar_new (); \n"
+" \n"
+" /*Create the buttons with labels*/\n"
+" push_button = gtk_button_new_with_label (\"push item\");\n"
+" pop_button = gtk_button_new_with_label (\"pop last item\");\n"
+" \n"
+" /*Create the grid, and attach the buttons/statusbar accordingly*/\n"
+" grid = gtk_grid_new ();\n"
+" gtk_grid_attach (GTK_GRID (grid), push_button, 0,1,1,1);\n"
+" gtk_grid_attach (GTK_GRID (grid), pop_button, 0,2,1,1);\n"
+" gtk_grid_attach (GTK_GRID (grid), status_bar, 0,3,1,1);\n"
+" \n"
+" /*Connecting the clicked signals to the corresponding callback functions*/\n"
+" g_signal_connect (GTK_BUTTON (push_button), \"clicked\", \n"
+" G_CALLBACK (push_item), status_bar);\n"
+" g_signal_connect (GTK_BUTTON (pop_button), \"clicked\", \n"
+" G_CALLBACK (pop_item), status_bar);\n"
+" \n"
+" /*Attach the grid holding the child widgets onto the window, and show all*/\n"
+" gtk_container_add (GTK_CONTAINER (window), grid);\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/statusbar.c.page:38
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkStatusbar.html"
+"\">GtkStatusBar</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkStatusbar.html"
+"\">GtkStatusBar</link>"
+
+#. (itstool) path: item/p
+#: C/statusbar.c.page:39
+msgid ""
+"<link href=\"http://developer.gnome.org/glib/stable/glib-String-Utility-"
+"Functions.html#g-snprintf\">String Utility Functions</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/glib/stable/glib-String-Utility-"
+"Functions.html#g-snprintf\">Funciones de cadenas útiles</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/statusbar.js.page:22
+msgctxt "_"
+msgid ""
+"external ref='media/statusbar2.png' md5='ff6f7e5b270827ca98b2d5f7087aa766'"
+msgstr ""
+"external ref='media/statusbar2.png' md5='ff6f7e5b270827ca98b2d5f7087aa766'"
+
+#. (itstool) path: info/title
+#: C/statusbar.js.page:8
+msgctxt "text"
+msgid "Statusbar (JavaScript)"
+msgstr "Statusbar (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/statusbar.js.page:18
+msgid "Show notifications in a dedicated statusbar"
+msgstr "Mostrar notificaciones en una barra de estado dedicada"
+
+#. (itstool) path: page/p
+#: C/statusbar.js.page:23
+msgid ""
+"This statusbar keeps track of how many times you've clicked a button. "
+"Applications like <link href=\"http://projects.gnome.org/gedit/\">gedit</"
+"link> use statusbars to display information at a glance, and show "
+"notifications without interrupting the user."
+msgstr ""
+"Esta barra de estado registra cuántas veces se pulsó un botón. Las "
+"aplicaciones como <link href=\"http://projects.gnome.org/gedit/\">gedit</"
+"link> usan barras de estado para mostrar información a simple vista, y "
+"mostrar notificaciones sin interrumpir al usuario."
+
+#. (itstool) path: page/p
+#: C/statusbar.js.page:24
+msgid ""
+"Messages pushed to a statusbar go on top of its stack, and can be popped off "
+"to show the next-most recent one. You can also clear away every message of a "
+"specific type all at once. This sample application demonstrates these "
+"functions."
+msgstr ""
+"Los mensajes que se muestran en una barra de estado van a la parte superior "
+"de su pila, y pueden extraerse para mostrar el siguiente más reciente. "
+"También puede limpiar todos los mensajes de un tipo específico de una vez. "
+"Esta aplicación de ejemplo demuestra estas funciones."
+
+#. (itstool) path: section/code
+#: C/statusbar.js.page:41
+#, no-wrap
+msgid ""
+"\n"
+"const StatusbarExample = new Lang.Class({\n"
+" Name: 'Statusbar Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsstatusbar',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+"const StatusbarExample = new Lang.Class({\n"
+" Name: 'Statusbar Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsstatusbar',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/statusbar.js.page:67
+msgid ""
+"All the code for this sample goes in the StatusbarExample class. The above "
+"code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> for our widgets and window to "
+"go in."
+msgstr ""
+"Todo el código de este ejemplo va en la clase «StatusBarExample». El código "
+"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> para que vayan los widgets y "
+"la ventana."
+
+#. (itstool) path: section/code
+#: C/statusbar.js.page:68
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 120,\n"
+" default_width: 300,\n"
+" title: \"Button Clicker\"});\n"
+"\n"
+" // Create a paned interface\n"
+" this._panes = new Gtk.Paned ({\n"
+" orientation: Gtk.Orientation.VERTICAL });\n"
+msgstr ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 120,\n"
+" default_width: 300,\n"
+" title: \"Button Clicker\"});\n"
+"\n"
+" // Create a paned interface\n"
+" this._panes = new Gtk.Paned ({\n"
+" orientation: Gtk.Orientation.VERTICAL });\n"
+
+#. (itstool) path: section/p
+#: C/statusbar.js.page:84
+msgid ""
+"The _buildUI function is where we put all the code to create the "
+"application's user interface. The first step is creating a new <link href="
+"\"GtkApplicationWindow.js.page\">Gtk.ApplicationWindow</link> to put all our "
+"widgets into. The next step is to create a vertically-oriented Gtk.Paned "
+"interface, to divide the window up into two sections. This way the statusbar "
+"looks like those used in other applications, and it stays at the bottom of "
+"the window, even if the user resizes it."
+msgstr ""
+"La función «_buildUI» es donde se pone todo el código para crear la interfaz "
+"de usuario de la aplicación. El primer paso es crear una <link href="
+"\"GtkApplicationWindow.js.page\">Gtk.ApplicationWindow</link> nueva para "
+"poner dentro todos los widgets. El siguiente paso es crear una interfaz «Gtk."
+"Paned» orientada verticalmente, para dividir la ventana en dos secciones. De "
+"esta manera la barra de estado se parece a aquellas usadas en otras "
+"aplicaciones, y permanece en la parte inferior de la ventana, incluso si el "
+"usuario la redimensiona."
+
+#. (itstool) path: section/title
+#: C/statusbar.js.page:88
+msgid "Creating the buttons"
+msgstr "Crear los botones"
+
+#. (itstool) path: section/code
+#: C/statusbar.js.page:89
+#, no-wrap
+msgid ""
+"\n"
+" // Create the main button\n"
+" this._clickMe = new Gtk.Button ({\n"
+" label: \"Click Me!\" });\n"
+" this._clickMe.connect (\"clicked\", Lang.bind (this, this._clicked));\n"
+"\n"
+" // Create the back button\n"
+" this._backButton = new Gtk.Button ({\n"
+" label: \"gtk-go-back\",\n"
+" use_stock: true });\n"
+" this._backButton.connect (\"clicked\", Lang.bind (this, this._back));\n"
+"\n"
+" // Create the clear button\n"
+" this._clearButton = new Gtk.Button ({\n"
+" label: \"gtk-clear\",\n"
+" use_stock: true });\n"
+" this._clearButton.connect (\"clicked\", Lang.bind (this, this._clear));\n"
+msgstr ""
+"\n"
+" // Create the main button\n"
+" this._clickMe = new Gtk.Button ({\n"
+" label: \"Click Me!\" });\n"
+" this._clickMe.connect (\"clicked\", Lang.bind (this, this._clicked));\n"
+"\n"
+" // Create the back button\n"
+" this._backButton = new Gtk.Button ({\n"
+" label: \"gtk-go-back\",\n"
+" use_stock: true });\n"
+" this._backButton.connect (\"clicked\", Lang.bind (this, this._back));\n"
+"\n"
+" // Create the clear button\n"
+" this._clearButton = new Gtk.Button ({\n"
+" label: \"gtk-clear\",\n"
+" use_stock: true });\n"
+" this._clearButton.connect (\"clicked\", Lang.bind (this, this._clear));\n"
+
+#. (itstool) path: section/p
+#: C/statusbar.js.page:107
+msgid ""
+"This code creates the three <link href=\"button.js.page\">Gtk.Buttons</link> "
+"we'll use to push a new message to the statusbar, pop the last one off, and "
+"clear all existing messages. The \"back\" and \"clear\" buttons are <link "
+"href=\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html\">stock "
+"buttons</link>, which are automatically translated into any language GNOME "
+"supports."
+msgstr ""
+"Este código crea los tres <link href=\"button.js.page\">Gtk.Buttons</link> "
+"que se usarán para empujar un mensaje nuevo a la barra de tareas, extraer el "
+"último, y limpiar todos los mensajes existentes. Los botones «back» y "
+"«clear» son <link href=\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-"
+"Items.html\">botones del almacén</link>, que se traducen automáticamente a "
+"cualquier idioma que GNOME soporte."
+
+#. (itstool) path: section/code
+#: C/statusbar.js.page:109
+#, no-wrap
+msgid ""
+"\n"
+" // Put the buttons in a grid\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+" this._grid.attach (this._backButton, 0, 0, 1, 1);\n"
+" this._grid.attach_next_to (this._clickMe, this._backButton, Gtk.PositionType.RIGHT, 1, 1);\n"
+" this._grid.attach_next_to (this._clearButton, this._clickMe, Gtk.PositionType.RIGHT, 1, 1);\n"
+"\n"
+" // Put the grid in a large frame that fills most of the window\n"
+" this._topFrame = new Gtk.Frame ({\n"
+" border_width: 20,\n"
+" height_request: 90,\n"
+" width_request: 300});\n"
+" this._topFrame.add (this._grid);\n"
+msgstr ""
+"\n"
+" // Put the buttons in a grid\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+" this._grid.attach (this._backButton, 0, 0, 1, 1);\n"
+" this._grid.attach_next_to (this._clickMe, this._backButton, Gtk.PositionType.RIGHT, 1, 1);\n"
+" this._grid.attach_next_to (this._clearButton, this._clickMe, Gtk.PositionType.RIGHT, 1, 1);\n"
+"\n"
+" // Put the grid in a large frame that fills most of the window\n"
+" this._topFrame = new Gtk.Frame ({\n"
+" border_width: 20,\n"
+" height_request: 90,\n"
+" width_request: 300});\n"
+" this._topFrame.add (this._grid);\n"
+
+#. (itstool) path: section/p
+#: C/statusbar.js.page:125
+msgid ""
+"This code creates the <link href=\"grid.js.page\">Gtk.Grid</link> that we'll "
+"use to organize the buttons, and attaches the buttons to it in order. It "
+"then creates a <link href=\"paned.js.page\">Gtk.Frame</link> which will take "
+"up most of the window and has a large amount of padding around the buttons, "
+"and adds the Grid to the Frame. Note that we still need to put the Frame "
+"into the Paned interface, and then add it to the ApplicationWindow."
+msgstr ""
+"Este código crea la <link href=\"grid.js.page\">Gtk.Grid</link> que se usará "
+"para organizar los botones, y le adjunta los botones en orden. Después crea "
+"un <link href=\"paned.js.page\">Gtk.Frame</link> que ocupará la mayor parte "
+"de la ventana y que tiene bastante relleno alrededor de los botones, y añade "
+"la rejilla al cuadro. Tenga en cuenta que todavía se necesita poner el "
+"cuadro en la interfaz con paneles, y después añadirlo a la "
+"«ApplicationWindow»."
+
+#. (itstool) path: section/title
+#: C/statusbar.js.page:129
+msgid "Creating the statusbar"
+msgstr "Crear la barra de estado"
+
+#. (itstool) path: section/code
+#: C/statusbar.js.page:130
+#, no-wrap
+msgid ""
+"\n"
+" // Create the statusbar\n"
+" this._statusbar = new Gtk.Statusbar();\n"
+"\n"
+" // Keep track of the number of times the button has been clicked\n"
+" this.Clicks = 0;\n"
+" this.ContextID = this._statusbar.get_context_id (\"Number of Clicks\");\n"
+"\n"
+" // Give the statusbar an initial message\n"
+" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
+"\n"
+" // Put the statusbar in its own frame at the bottom\n"
+" this._barFrame = new Gtk.Frame ({\n"
+" height_request: 30 });\n"
+" this._barFrame.add (this._statusbar);\n"
+msgstr ""
+"\n"
+" // Create the statusbar\n"
+" this._statusbar = new Gtk.Statusbar();\n"
+"\n"
+" // Keep track of the number of times the button has been clicked\n"
+" this.Clicks = 0;\n"
+" this.ContextID = this._statusbar.get_context_id (\"Number of Clicks\");\n"
+"\n"
+" // Give the statusbar an initial message\n"
+" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
+"\n"
+" // Put the statusbar in its own frame at the bottom\n"
+" this._barFrame = new Gtk.Frame ({\n"
+" height_request: 30 });\n"
+" this._barFrame.add (this._statusbar);\n"
+
+#. (itstool) path: section/p
+#: C/statusbar.js.page:146
+msgid ""
+"Here we create the Gtk.Statusbar, and push a message to it to start off "
+"with. Then we give it its own narrow frame at the bottom of the window."
+msgstr ""
+"Aquí se crea la «Gtk.Statusbar», y se le empuja un mensaje para comenzar. "
+"Después se le da su propio cuadro estrecho en la parte inferior de la "
+"ventana."
+
+#. (itstool) path: section/p
+#: C/statusbar.js.page:147
+msgid ""
+"Every message needs to have a context id, which is an integer value you can "
+"get from the statusbar with the get_context_id() function. Its only "
+"parameter is the string value you use to describe that particular context "
+"id. Normally, you'll get a new context id for different kinds of messages, "
+"so that you can use the remove() function to remove a specific message and "
+"not just the most recent one on the stack. This is a simple example with "
+"only one kind of message, though, so we're just using one for everything."
+msgstr ""
+"Cada mensaje necesita tener un ID de contexto, que es un valor entero que "
+"puede obtener de la barra de estado con la función «get_context_id()». Su "
+"único parámetro es el valor de la cadena que usa para describir ese ID de "
+"contexto particular. Normalmente, obtendría un ID de contexto nuevo para "
+"distintos tipos de mensajes, para que pueda usar la función «remove()» para "
+"eliminar un mensaje específico y no sólo el más reciente de la pila. Sin "
+"embargo, este es un ejemplo simple con sólo un tipo de mensaje, por lo que "
+"sólo se usa uno para todo."
+
+#. (itstool) path: section/p
+#: C/statusbar.js.page:148
+msgid ""
+"We use the push() function to push a new message onto the stack. Its first "
+"parameter is the context id, and its second is the message."
+msgstr ""
+"Se usa la función «push()» para empujar un mensaje nuevo a la pila. Su "
+"primer parámetro es el ID de contexto, y el segundo es el mensaje."
+
+#. (itstool) path: section/code
+#: C/statusbar.js.page:149
+#, no-wrap
+msgid ""
+"\n"
+" // Assemble the frames into the paned interface\n"
+" this._panes.pack1 (this._topFrame, true, false);\n"
+" this._panes.pack2 (this._barFrame, false, false);\n"
+"\n"
+" // Put the panes into the window\n"
+" this._window.add (this._panes);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+msgstr ""
+"\n"
+" // Assemble the frames into the paned interface\n"
+" this._panes.pack1 (this._topFrame, true, false);\n"
+" this._panes.pack2 (this._barFrame, false, false);\n"
+"\n"
+" // Put the panes into the window\n"
+" this._window.add (this._panes);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/statusbar.js.page:161
+msgid ""
+"This code finishes up creating the window, by packing the frames into the "
+"pane, adding it to the window, and telling the window to show all child "
+"widgets."
+msgstr ""
+"Este código termina de crear la ventana, empaquetando los marcos en el "
+"panel, añadiéndolo a la ventana, y diciéndole a la ventana que muestre todos "
+"los widgets hijos."
+
+#. (itstool) path: section/title
+#: C/statusbar.js.page:165
+msgid "Functions for interacting with the statusbar"
+msgstr "Funciones para interactuar con la barra de estado"
+
+#. (itstool) path: section/code
+#: C/statusbar.js.page:166
+#, no-wrap
+msgid ""
+"\n"
+" _clicked: function() {\n"
+"\n"
+" // Increment the number of clicks by 1\n"
+" this.Clicks++;\n"
+"\n"
+" // Update the statusbar with the new number of clicks\n"
+" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _back: function () {\n"
+"\n"
+" // If there have been any clicks, decrement by 1 and remove last statusbar update\n"
+" if (this.Clicks > 0 ) {\n"
+" this.Clicks--;\n"
+" this._statusbar.pop (this.ContextID);\n"
+" };\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _clear: function () {\n"
+"\n"
+" // Reset the number of clicks\n"
+" this.Clicks = 0;\n"
+"\n"
+" // Wipe out all the messages pushed to the statusbar\n"
+" this._statusbar.remove_all (this.ContextID);\n"
+"\n"
+" // Reset the statusbar's message\n"
+" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+msgstr ""
+"\n"
+" _clicked: function() {\n"
+"\n"
+" // Increment the number of clicks by 1\n"
+" this.Clicks++;\n"
+"\n"
+" // Update the statusbar with the new number of clicks\n"
+" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _back: function () {\n"
+"\n"
+" // If there have been any clicks, decrement by 1 and remove last statusbar update\n"
+" if (this.Clicks > 0 ) {\n"
+" this.Clicks--;\n"
+" this._statusbar.pop (this.ContextID);\n"
+" };\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _clear: function () {\n"
+"\n"
+" // Reset the number of clicks\n"
+" this.Clicks = 0;\n"
+"\n"
+" // Wipe out all the messages pushed to the statusbar\n"
+" this._statusbar.remove_all (this.ContextID);\n"
+"\n"
+" // Reset the statusbar's message\n"
+" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+
+#. (itstool) path: section/p
+#: C/statusbar.js.page:206
+msgid ""
+"Here we have functions which demonstrate pushing a message onto the stack, "
+"popping the top one off of it, and clearing all messages of a particular "
+"context id. The pop() function just takes one parameter, which is the "
+"context id for the type of message you want to pop off the most recent one "
+"of. The remove_all() function works the same way, except it removes all "
+"messages of that type from the stack."
+msgstr ""
+"Aquí están funciones que muestran cómo empujar un mensaje a la pila, extraer "
+"el que está arriba de todo, y limpiar todos los mensajes de un ID de "
+"contexto particular. La función «pop()» sólo toma un parámetro, que es el ID "
+"de contexto para el tipo de mensaje del que quiere extraer el más reciente. "
+"La función «remove_all()» funciona de la misma manera, excepto que elimina "
+"todos los mensajes de ese tipo de la pila."
+
+#. (itstool) path: section/code
+#: C/statusbar.js.page:207
+#, no-wrap
+msgid ""
+"\n"
+"// Run the application\n"
+"let app = new StatusbarExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"// Run the application\n"
+"let app = new StatusbarExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/p
+#: C/statusbar.js.page:212
+msgid ""
+"Finally, we create a new instance of the finished StatusbarExample class, "
+"and set the application running."
+msgstr ""
+"Finalmente, se crea una instancia nueva de la clase «StatusbarExample» "
+"terminada, y se ejecuta la aplicación."
+
+#. (itstool) path: section/code
+#: C/statusbar.js.page:217
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const StatusbarExample = new Lang.Class({\n"
+" Name: 'Statusbar Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsstatusbar',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 120,\n"
+" default_width: 300,\n"
+" title: \"Button Clicker\"});\n"
+"\n"
+" // Create a paned interface\n"
+" this._panes = new Gtk.Paned ({\n"
+" orientation: Gtk.Orientation.VERTICAL });\n"
+"\n"
+" // Create the main button\n"
+" this._clickMe = new Gtk.Button ({\n"
+" label: \"Click Me!\" });\n"
+" this._clickMe.connect (\"clicked\", Lang.bind (this, this._clicked));\n"
+"\n"
+" // Create the back button\n"
+" this._backButton = new Gtk.Button ({\n"
+" label: \"gtk-go-back\",\n"
+" use_stock: true });\n"
+" this._backButton.connect (\"clicked\", Lang.bind (this, this._back));\n"
+"\n"
+" // Create the clear button\n"
+" this._clearButton = new Gtk.Button ({\n"
+" label: \"gtk-clear\",\n"
+" use_stock: true });\n"
+" this._clearButton.connect (\"clicked\", Lang.bind (this, this._clear));\n"
+"\n"
+" // Put the buttons in a grid\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+" this._grid.attach (this._backButton, 0, 0, 1, 1);\n"
+" this._grid.attach_next_to (this._clickMe, this._backButton, Gtk.PositionType.RIGHT, 1, 1);\n"
+" this._grid.attach_next_to (this._clearButton, this._clickMe, Gtk.PositionType.RIGHT, 1, 1);\n"
+"\n"
+" // Put the grid in a large frame that fills most of the window\n"
+" this._topFrame = new Gtk.Frame ({\n"
+" border_width: 20,\n"
+" height_request: 90,\n"
+" width_request: 300});\n"
+" this._topFrame.add (this._grid);\n"
+"\n"
+" // Create the statusbar\n"
+" this._statusbar = new Gtk.Statusbar();\n"
+"\n"
+" // Keep track of the number of times the button has been clicked\n"
+" this.Clicks = 0;\n"
+" this.ContextID = this._statusbar.get_context_id (\"Number of Clicks\");\n"
+"\n"
+" // Give the statusbar an initial message\n"
+" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
+"\n"
+" // Put the statusbar in its own frame at the bottom\n"
+" this._barFrame = new Gtk.Frame ({\n"
+" height_request: 30 });\n"
+" this._barFrame.add (this._statusbar);\n"
+"\n"
+" // Assemble the frames into the paned interface\n"
+" this._panes.pack1 (this._topFrame, true, false);\n"
+" this._panes.pack2 (this._barFrame, false, false);\n"
+"\n"
+" // Put the panes into the window\n"
+" this._window.add (this._panes);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _clicked: function() {\n"
+"\n"
+" // Increment the number of clicks by 1\n"
+" this.Clicks++;\n"
+"\n"
+" // Update the statusbar with the new number of clicks\n"
+" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _back: function () {\n"
+"\n"
+" // If there have been any clicks, decrement by 1 and remove last statusbar update\n"
+" if (this.Clicks > 0 ) {\n"
+" this.Clicks--;\n"
+" this._statusbar.pop (this.ContextID);\n"
+" };\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _clear: function () {\n"
+"\n"
+" // Reset the number of clicks\n"
+" this.Clicks = 0;\n"
+"\n"
+" // Wipe out all the messages pushed to the statusbar\n"
+" this._statusbar.remove_all (this.ContextID);\n"
+"\n"
+" // Reset the statusbar's message\n"
+" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new StatusbarExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const StatusbarExample = new Lang.Class({\n"
+" Name: 'Statusbar Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsstatusbar',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 120,\n"
+" default_width: 300,\n"
+" title: \"Button Clicker\"});\n"
+"\n"
+" // Create a paned interface\n"
+" this._panes = new Gtk.Paned ({\n"
+" orientation: Gtk.Orientation.VERTICAL });\n"
+"\n"
+" // Create the main button\n"
+" this._clickMe = new Gtk.Button ({\n"
+" label: \"Click Me!\" });\n"
+" this._clickMe.connect (\"clicked\", Lang.bind (this, this._clicked));\n"
+"\n"
+" // Create the back button\n"
+" this._backButton = new Gtk.Button ({\n"
+" label: \"gtk-go-back\",\n"
+" use_stock: true });\n"
+" this._backButton.connect (\"clicked\", Lang.bind (this, this._back));\n"
+"\n"
+" // Create the clear button\n"
+" this._clearButton = new Gtk.Button ({\n"
+" label: \"gtk-clear\",\n"
+" use_stock: true });\n"
+" this._clearButton.connect (\"clicked\", Lang.bind (this, this._clear));\n"
+"\n"
+" // Put the buttons in a grid\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+" this._grid.attach (this._backButton, 0, 0, 1, 1);\n"
+" this._grid.attach_next_to (this._clickMe, this._backButton, Gtk.PositionType.RIGHT, 1, 1);\n"
+" this._grid.attach_next_to (this._clearButton, this._clickMe, Gtk.PositionType.RIGHT, 1, 1);\n"
+"\n"
+" // Put the grid in a large frame that fills most of the window\n"
+" this._topFrame = new Gtk.Frame ({\n"
+" border_width: 20,\n"
+" height_request: 90,\n"
+" width_request: 300});\n"
+" this._topFrame.add (this._grid);\n"
+"\n"
+" // Create the statusbar\n"
+" this._statusbar = new Gtk.Statusbar();\n"
+"\n"
+" // Keep track of the number of times the button has been clicked\n"
+" this.Clicks = 0;\n"
+" this.ContextID = this._statusbar.get_context_id (\"Number of Clicks\");\n"
+"\n"
+" // Give the statusbar an initial message\n"
+" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
+"\n"
+" // Put the statusbar in its own frame at the bottom\n"
+" this._barFrame = new Gtk.Frame ({\n"
+" height_request: 30 });\n"
+" this._barFrame.add (this._statusbar);\n"
+"\n"
+" // Assemble the frames into the paned interface\n"
+" this._panes.pack1 (this._topFrame, true, false);\n"
+" this._panes.pack2 (this._barFrame, false, false);\n"
+"\n"
+" // Put the panes into the window\n"
+" this._window.add (this._panes);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _clicked: function() {\n"
+"\n"
+" // Increment the number of clicks by 1\n"
+" this.Clicks++;\n"
+"\n"
+" // Update the statusbar with the new number of clicks\n"
+" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _back: function () {\n"
+"\n"
+" // If there have been any clicks, decrement by 1 and remove last statusbar update\n"
+" if (this.Clicks > 0 ) {\n"
+" this.Clicks--;\n"
+" this._statusbar.pop (this.ContextID);\n"
+" };\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _clear: function () {\n"
+"\n"
+" // Reset the number of clicks\n"
+" this.Clicks = 0;\n"
+"\n"
+" // Wipe out all the messages pushed to the statusbar\n"
+" this._statusbar.remove_all (this.ContextID);\n"
+"\n"
+" // Reset the statusbar's message\n"
+" this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new StatusbarExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/statusbar.js.page:226
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Frame.html"
+"\">Gtk.Frame</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Frame.html"
+"\">Gtk.Frame</link>"
+
+#. (itstool) path: item/p
+#: C/statusbar.js.page:227
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Paned.html"
+"\">Gtk.Paned</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Paned.html"
+"\">Gtk.Paned</link>"
+
+#. (itstool) path: item/p
+#: C/statusbar.js.page:228
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Statusbar.html"
+"\">Gtk.Statusbar</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Statusbar.html"
+"\">Gtk.Statusbar</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/statusbar.py.page:24 C/statusbar.vala.page:25
+msgctxt "_"
+msgid ""
+"external ref='media/statusbar.png' md5='eb1aca55315d6cda57b12a5f36058ba8'"
+msgstr ""
+"external ref='media/statusbar.png' md5='eb1aca55315d6cda57b12a5f36058ba8'"
+
+#. (itstool) path: info/title
+#: C/statusbar.py.page:8
+msgctxt "text"
+msgid "Statusbar (Python)"
+msgstr "Statusbar (Python)"
+
+#. (itstool) path: page/p
+#: C/statusbar.py.page:25
+msgid ""
+"This statusbar tells you if you click the button or if you press any key "
+"(and which key)."
+msgstr ""
+"Esta barra de estado indica si ha pulsado el botón o si ha pulsado una tecla "
+"(y qué tecla ha pulsado)."
+
+#. (itstool) path: section/code
+#: C/statusbar.py.page:32
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gdk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"StatusBar Example\", application=app)\n"
+" self.set_default_size(200, 100)\n"
+"\n"
+" # a label\n"
+" label = Gtk.Label(label=\"Press any key or \")\n"
+"\n"
+" # a button\n"
+" button = Gtk.Button(label=\"click me.\")\n"
+" # connected to a callback\n"
+" button.connect(\"clicked\", self.button_clicked_cb)\n"
+"\n"
+" # the statusbar\n"
+" self.statusbar = Gtk.Statusbar()\n"
+" # its context_id - not shown in the UI but needed to uniquely identify\n"
+" # the source of a message\n"
+" self.context_id = self.statusbar.get_context_id(\"example\")\n"
+" # we push a message onto the statusbar's stack\n"
+" self.statusbar.push(\n"
+" self.context_id, \"Waiting for you to do something...\")\n"
+"\n"
+" # a grid to attach the widgets\n"
+" grid = Gtk.Grid()\n"
+" grid.set_column_spacing(5)\n"
+" grid.set_column_homogeneous(True)\n"
+" grid.set_row_homogeneous(True)\n"
+" grid.attach(label, 0, 0, 1, 1)\n"
+" grid.attach_next_to(button, label, Gtk.PositionType.RIGHT, 1, 1)\n"
+" grid.attach(self.statusbar, 0, 1, 2, 1)\n"
+"\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" # callback function for the button clicked\n"
+" # if the button is clicked the event is signaled to the statusbar\n"
+" # onto which we push a new status\n"
+" def button_clicked_cb(self, button):\n"
+" self.statusbar.push(self.context_id, \"You clicked the button.\")\n"
+"\n"
+" # event handler\n"
+" def do_key_press_event(self, event):\n"
+" # any signal from the keyboard is signaled to the statusbar\n"
+" # onto which we push a new status with the symbolic name\n"
+" # of the key pressed\n"
+" self.statusbar.push(self.context_id, Gdk.keyval_name(event.keyval) +\n"
+" \" key was pressed.\")\n"
+" # stop the signal emission\n"
+" return True\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gdk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"StatusBar Example\", application=app)\n"
+" self.set_default_size(200, 100)\n"
+"\n"
+" # a label\n"
+" label = Gtk.Label(label=\"Press any key or \")\n"
+"\n"
+" # a button\n"
+" button = Gtk.Button(label=\"click me.\")\n"
+" # connected to a callback\n"
+" button.connect(\"clicked\", self.button_clicked_cb)\n"
+"\n"
+" # the statusbar\n"
+" self.statusbar = Gtk.Statusbar()\n"
+" # its context_id - not shown in the UI but needed to uniquely identify\n"
+" # the source of a message\n"
+" self.context_id = self.statusbar.get_context_id(\"example\")\n"
+" # we push a message onto the statusbar's stack\n"
+" self.statusbar.push(\n"
+" self.context_id, \"Waiting for you to do something...\")\n"
+"\n"
+" # a grid to attach the widgets\n"
+" grid = Gtk.Grid()\n"
+" grid.set_column_spacing(5)\n"
+" grid.set_column_homogeneous(True)\n"
+" grid.set_row_homogeneous(True)\n"
+" grid.attach(label, 0, 0, 1, 1)\n"
+" grid.attach_next_to(button, label, Gtk.PositionType.RIGHT, 1, 1)\n"
+" grid.attach(self.statusbar, 0, 1, 2, 1)\n"
+"\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" # callback function for the button clicked\n"
+" # if the button is clicked the event is signaled to the statusbar\n"
+" # onto which we push a new status\n"
+" def button_clicked_cb(self, button):\n"
+" self.statusbar.push(self.context_id, \"You clicked the button.\")\n"
+"\n"
+" # event handler\n"
+" def do_key_press_event(self, event):\n"
+" # any signal from the keyboard is signaled to the statusbar\n"
+" # onto which we push a new status with the symbolic name\n"
+" # of the key pressed\n"
+" self.statusbar.push(self.context_id, Gdk.keyval_name(event.keyval) +\n"
+" \" key was pressed.\")\n"
+" # stop the signal emission\n"
+" return True\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: note/p
+#: C/statusbar.py.page:34
+msgid ""
+"<code>Gdk.keyval_name(event.keyval)</code> converts the key value "
+"<code>event.keyval</code> into a symbolic name. The names and corresponding "
+"key values can be found <link href=\"http://git.gnome.org/browse/gtk+/tree/"
+"gdk/gdkkeysyms.h\">here</link>, but for instance <code>GDK_KEY_BackSpace</"
+"code> becomes the string <code>\"BackSpace\"</code>."
+msgstr ""
+"<code>Gdk.keyval_name(event.keyval)</code> convierte el valor de la tecla "
+"<code>event.keyval</code> en un nombre simbólico. Los nombres y los valores "
+"de teclas correspondientes pueden encontrarse <link href=\"http://git.gnome."
+"org/browse/gtk+/tree/gdk/gdkkeysyms.h\">aquí</link>, pero por ejemplo "
+"<code>GDK_KEY_BackSpace</code> se convierte en la cadena <code>\"BackSpace"
+"\"</code>."
+
+#. (itstool) path: section/title
+#: C/statusbar.py.page:40
+msgid "Useful methods for a Statusbar widget"
+msgstr "Métodos útiles para un widget «Statusbar»"
+
+#. (itstool) path: section/p
+#: C/statusbar.py.page:41
+msgid ""
+"In line 17 the signal <code>\"clicked\"</code> is connected to the callback "
+"function <code>button_clicked_cb()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 17, la señal <code>«clicked»</code> se conecta a la función de "
+"retorno de llamada <code>button_clicked_cb()</code> usando "
+"<code><var>widget</var>.connect(<var>señal</var>, <var>función de retorno de "
+"llamada</var>)</code>. Consulte la <link xref=\"signals-callbacks.py\"/> "
+"para una explicación más detallada."
+
+#. (itstool) path: item/p
+#: C/statusbar.py.page:43
+msgid ""
+"<code>pop(context_id)</code> removes the first message in the statusbar "
+"stack with the given <code>context_id</code>."
+msgstr ""
+"<code>pop(id_del_contexto)</code> elimina el primer mensaje en la pila de la "
+"barra de estado con el <code>id_del_contexto</code> dado."
+
+#. (itstool) path: item/p
+#: C/statusbar.py.page:44
+msgid ""
+"<code>remove_all(context_id)</code> removes all the messages in the "
+"statusbar stack with the given <code>context_id</code>."
+msgstr ""
+"<code>remove_all(id_del_contexto)</code> elimina todos los mensajes en la "
+"pila de la barra de estado con el <code>id_del_contexto</code> dado."
+
+#. (itstool) path: item/p
+#: C/statusbar.py.page:45
+msgid ""
+"<code>remove(context_id, message_id)</code> removes the message with the "
+"given <code>message_id</code> in the statusbar stack with the given "
+"<code>context_id</code>. The <code>message_id</code> is returned by "
+"<code>push(context_id, \"the message\")</code> when pushing the message on "
+"the statusbar."
+msgstr ""
+"<code>remove(id_del_contexto, id_del_mensaje)</code> elimina el mensaje con "
+"el <code>id_del_mensaje</code> dado en la pila de la barra de estado con el "
+"<code>id_del_contexto</code> dado. <code>push(id_del_contexto, \"el mensaje"
+"\")</code> devuelve el <code>id_del_mensaje</code> cuando se muestra el "
+"mensaje en la barra de estado."
+
+#. (itstool) path: item/p
+#: C/statusbar.py.page:53
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkStatusbar.html"
+"\">GtkStatusbar</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkStatusbar.html"
+"\">GtkStatusbar</link>"
+
+#. (itstool) path: item/p
+#: C/statusbar.py.page:54
+msgid ""
+"<link href=\"http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling.html"
+"\">Gdk - Key Values</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling.html"
+"\">Gdk: valores de teclas</link>"
+
+#. (itstool) path: info/title
+#: C/statusbar.vala.page:8
+msgctxt "text"
+msgid "Statusbar (Vala)"
+msgstr "Statusbar (Vala)"
+
+#. (itstool) path: page/p
+#: C/statusbar.vala.page:26
+msgid "This statusbar tells you what's going on."
+msgstr "Esta barra de estado le indica qué está pasando."
+
+#. (itstool) path: page/code
+#: C/statusbar.vala.page:28
+#, no-wrap
+msgid ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tGtk.Statusbar statusbar;\n"
+"\tuint context_id;\n"
+"\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Statusbar Example\");\n"
+"\n"
+"\t\tstatusbar = new Gtk.Statusbar ();\n"
+"\t\tcontext_id = statusbar.get_context_id (\"example\");\n"
+"\t\tstatusbar.push (context_id, \"Waiting for you to do something...\");\n"
+"\n"
+"\t\t//set the default size of the window\n"
+"\t\tthis.set_default_size (200, 100);\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tvar label = new Gtk.Label (\"Press any key or \");\n"
+"\n"
+"\t\tgrid.attach (label, 0, 0, 1, 1);\n"
+"\t\tlabel.show ();\n"
+"\n"
+"\t\tvar button = new Gtk.Button.with_label (\"click me.\");\n"
+"\t\tgrid.attach_next_to (button, label, Gtk.PositionType.RIGHT, 1, 1);\n"
+"\t\tbutton.show ();\n"
+"\n"
+"\t\tgrid.attach (statusbar, 0, 1, 2, 1);\n"
+"\t\tstatusbar.show ();\n"
+"\n"
+"\t\tgrid.set_column_spacing (5);\n"
+"\t\tgrid.set_column_homogeneous (true);\n"
+"\t\tgrid.set_row_homogeneous (true);\n"
+"\n"
+"\t\tthis.add (grid);\n"
+"\t\tgrid.show ();\n"
+"\n"
+"\t\tbutton.clicked.connect(button_clicked_cb);\n"
+"\t}\n"
+"\n"
+"\t/* Since the key-press-event is a signal received by the window, we don't need to connect\n"
+"\tthe window to a callback function. We can just override key_press_event. */\n"
+"\tprotected override bool key_press_event (Gdk.EventKey event) {\n"
+"\t\tstatusbar.push (context_id, Gdk.keyval_name(event.keyval) + \" key was pressed.\");\n"
+"\t\treturn true;\n"
+"\t}\n"
+"\n"
+"\tvoid button_clicked_cb (Gtk.Button button) {\n"
+"\t\tstatusbar.push (context_id, \"You clicked the button.\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.status\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tGtk.Statusbar statusbar;\n"
+"\tuint context_id;\n"
+"\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Statusbar Example\");\n"
+"\n"
+"\t\tstatusbar = new Gtk.Statusbar ();\n"
+"\t\tcontext_id = statusbar.get_context_id (\"example\");\n"
+"\t\tstatusbar.push (context_id, \"Waiting for you to do something...\");\n"
+"\n"
+"\t\t//set the default size of the window\n"
+"\t\tthis.set_default_size (200, 100);\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tvar label = new Gtk.Label (\"Press any key or \");\n"
+"\n"
+"\t\tgrid.attach (label, 0, 0, 1, 1);\n"
+"\t\tlabel.show ();\n"
+"\n"
+"\t\tvar button = new Gtk.Button.with_label (\"click me.\");\n"
+"\t\tgrid.attach_next_to (button, label, Gtk.PositionType.RIGHT, 1, 1);\n"
+"\t\tbutton.show ();\n"
+"\n"
+"\t\tgrid.attach (statusbar, 0, 1, 2, 1);\n"
+"\t\tstatusbar.show ();\n"
+"\n"
+"\t\tgrid.set_column_spacing (5);\n"
+"\t\tgrid.set_column_homogeneous (true);\n"
+"\t\tgrid.set_row_homogeneous (true);\n"
+"\n"
+"\t\tthis.add (grid);\n"
+"\t\tgrid.show ();\n"
+"\n"
+"\t\tbutton.clicked.connect(button_clicked_cb);\n"
+"\t}\n"
+"\n"
+"\t/* Since the key-press-event is a signal received by the window, we don't need to connect\n"
+"\tthe window to a callback function. We can just override key_press_event. */\n"
+"\tprotected override bool key_press_event (Gdk.EventKey event) {\n"
+"\t\tstatusbar.push (context_id, Gdk.keyval_name(event.keyval) + \" key was pressed.\");\n"
+"\t\treturn true;\n"
+"\t}\n"
+"\n"
+"\tvoid button_clicked_cb (Gtk.Button button) {\n"
+"\t\tstatusbar.push (context_id, \"You clicked the button.\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.status\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/statusbar.vala.page:33
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Statusbar.html\">Gtk."
+"Statusbar</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Statusbar.html\">Gtk."
+"Statusbar</link>"
+
+#. (itstool) path: info/title
+#: C/strings.py.page:9
+msgctxt "text"
+msgid "Strings (Python)"
+msgstr "Cadenas (Python)"
+
+#. (itstool) path: info/desc
+#: C/strings.py.page:14
+msgid "An explanation of how to deal with strings in Python and GTK+."
+msgstr "Una explicación de cómo trabajar con cadenas en Python y GTK+."
+
+#. (itstool) path: page/title
+#: C/strings.py.page:27
+msgid "Strings"
+msgstr "Cadenas"
+
+#. (itstool) path: note/p
+#: C/strings.py.page:31
+msgid "GNOME strongly encourages the use of Python 3 for writing applications!"
+msgstr ""
+"GNOME recomienda fuertemente el uso de Python 3 para escribir aplicaciones."
+
+#. (itstool) path: section/title
+#: C/strings.py.page:34
+msgid "Strings in Python 2"
+msgstr "Cadenas en Python 2"
+
+#. (itstool) path: section/p
+#: C/strings.py.page:36
+msgid ""
+"Python 2 comes with two different kinds of objects that can be used to "
+"represent strings, <code>str</code> and <code>unicode</code>. Instances of "
+"<code>unicode</code> are used to express Unicode strings, whereas instances "
+"of the <code>str</code> type are byte representations (the encoded string). "
+"Under the hood, Python represents Unicode strings as either 16- or 32-bit "
+"integers, depending on how the Python interpreter was compiled."
+msgstr ""
+"Python 2 viene con dos tipos de objetos diferentes que pueden usarse para "
+"representar cadenas, <code>str</code> y <code>unicode</code>. Las instancias "
+"de <code>unicode</code> se usan para expresar cadenas de Unicode, mientras "
+"que las instancias del tipo <code>str</code> son representaciones de bytes "
+"(la cadena codificada). A nivel funcional, Python representa las cadenas de "
+"Unicode como enteros de 16 ó 32 bits, dependiendo de cómo se compiló su "
+"intérprete."
+
+#. (itstool) path: section/code
+#: C/strings.py.page:38
+#, no-wrap
+msgid ""
+"\n"
+">>> unicode_string = u\"Fu\\u00dfb\\u00e4lle\"\n"
+">>> print unicode_string\n"
+"Fußbälle\n"
+msgstr ""
+"\n"
+">>> unicode_string = u\"Fu\\u00dfb\\u00e4lle\"\n"
+">>> print unicode_string\n"
+"Fußbälle\n"
+
+#. (itstool) path: section/p
+#: C/strings.py.page:44
+msgid ""
+"Unicode strings can be converted to 8-bit strings with <code>unicode."
+"encode()</code>. Python’s 8-bit strings have a <code>str.decode()</code> "
+"method that interprets the string using the given encoding (that is, it is "
+"the inverse of the <code>unicode.encode()</code>):"
+msgstr ""
+"Las cadenas de Unicode pueden convertirse a cadenas de 8 bits con "
+"<code>unicode.encode()</code>. Las cadenas de 8 bits de Python tienen un "
+"método <code>str.decode()</code> que interpreta la cadena usando la "
+"codificación dada (es decir, es la inversa de <code>unicode.encode()</code>):"
+
+#. (itstool) path: section/code
+#: C/strings.py.page:46
+#, no-wrap
+msgid ""
+"\n"
+">>> type(unicode_string)\n"
+"<type 'unicode'>\n"
+">>> unicode_string.encode(\"utf-8\")\n"
+"'Fu\\xc3\\x9fb\\xc3\\xa4lle'\n"
+">>> utf8_string = unicode_string.encode(\"utf-8\")\n"
+">>> type(utf8_string)\n"
+"<type 'str'>\n"
+">>> unicode_string == utf8_string.decode(\"utf-8\")\n"
+"True"
+msgstr ""
+"\n"
+">>> type(unicode_string)\n"
+"<type 'unicode'>\n"
+">>> unicode_string.encode(\"utf-8\")\n"
+"'Fu\\xc3\\x9fb\\xc3\\xa4lle'\n"
+">>> utf8_string = unicode_string.encode(\"utf-8\")\n"
+">>> type(utf8_string)\n"
+"<type 'str'>\n"
+">>> unicode_string == utf8_string.decode(\"utf-8\")\n"
+"True"
+
+#. (itstool) path: section/p
+#: C/strings.py.page:57
+msgid ""
+"Unfortunately, Python 2.x allows you to mix <code>unicode</code> and "
+"<code>str</code> if the 8-bit string happened to contain only 7-bit (ASCII) "
+"bytes, but would get <sys>UnicodeDecodeError</sys> if it contained non-ASCII "
+"values."
+msgstr ""
+"Desafortunadamente, Python 2.x le permite mezclar <code>unicode</code> y "
+"<code>str</code> si la cadena de 8 bits contuviera sólo bytes de 7 bits "
+"(ASCII), pero obtendría <sys>UnicodeDecodeError</sys> si contuviera valores "
+"no ASCII."
+
+#. (itstool) path: section/title
+#: C/strings.py.page:62
+msgid "Strings in Python 3"
+msgstr "Cadenas en Python 3"
+
+#. (itstool) path: section/p
+#: C/strings.py.page:64
+msgid ""
+"Since Python 3.0, all strings are stored as Unicode in an instance of the "
+"<code>str</code> type. Encoded strings on the other hand are represented as "
+"binary data in the form of instances of the bytes type. Conceptionally, "
+"<code>str</code> refers to text, whereas bytes refers to data. Use "
+"<code>encode()</code> to go from <code>str</code> to <code>bytes</code>, and "
+"<code>decode()</code> to go from <code>bytes</code> to <code>str</code>."
+msgstr ""
+"Desde Python 3.0, todas las cadenas se almacenan como Unicode en una "
+"instancia del tipo <code>str</code>. Las cadenas codificadas, por otro lado, "
+"se representan como datos binarios en la forma de instancias del tipo de "
+"bytes. Conceptualmente, <code>str</code> se refiere a texto, mientras que "
+"bytes se refieren a datos. Use <code>encode()</code> para ir de <code>str</"
+"code> a <code>bytes</code>, y <code>decode()</code> para ir de <code>bytes</"
+"code> a <code>str</code>."
+
+#. (itstool) path: section/p
+#: C/strings.py.page:66
+msgid ""
+"In addition, it is no longer possible to mix Unicode strings with encoded "
+"strings, because it will result in a <code>TypeError</code>:"
+msgstr ""
+"Además, ya no es posible mezclar cadenas de Unicode con cadenas codificadas, "
+"porque se producirá un <code>TypeError</code>:"
+
+#. (itstool) path: section/code
+#: C/strings.py.page:68
+#, no-wrap
+msgid ""
+"\n"
+">>> text = \"Fu\\u00dfb\\u00e4lle\"\n"
+">>> data = b\" sind rund\"\n"
+">>> text + data\n"
+"Traceback (most recent call last):\n"
+" File \"<stdin>\", line 1, in <module>\n"
+"TypeError: Can't convert 'bytes' object to str implicitly\n"
+">>> text + data.decode(\"utf-8\")\n"
+"'Fußbälle sind rund'\n"
+">>> text.encode(\"utf-8\") + data\n"
+"b'Fu\\xc3\\x9fb\\xc3\\xa4lle sind rund'"
+msgstr ""
+"\n"
+">>> text = \"Fu\\u00dfb\\u00e4lle\"\n"
+">>> data = b\" sind rund\"\n"
+">>> text + data\n"
+"Traceback (most recent call last):\n"
+" File \"<stdin>\", line 1, in <module>\n"
+"TypeError: Can't convert 'bytes' object to str implicitly\n"
+">>> text + data.decode(\"utf-8\")\n"
+"'Fußbälle sind rund'\n"
+">>> text.encode(\"utf-8\") + data\n"
+"b'Fu\\xc3\\x9fb\\xc3\\xa4lle sind rund'"
+
+#. (itstool) path: section/title
+#: C/strings.py.page:83
+msgid "Unicode in GTK+"
+msgstr "Unicode en GTK+"
+
+#. (itstool) path: section/p
+#: C/strings.py.page:85
+msgid ""
+"GTK+ uses UTF-8 encoded strings for all text. This means that if you call a "
+"method that returns a string you will always obtain an instance of the "
+"<code>str</code> type. The same applies to methods that expect one or more "
+"strings as parameter, they must be UTF-8 encoded. However, for convenience "
+"PyGObject will automatically convert any unicode instance to str if supplied "
+"as argument:"
+msgstr ""
+"GTK+ usa cadenas codificadas con UTF-8 para todo el texto. Esto significa "
+"que si llama a un método que devuelve una cadena, siempre obtendrá una "
+"instancia del tipo <code>str</code>. Lo mismo se aplica a métodos que "
+"esperan una o más cadenas como parámetro, deben estar codificadas con UTF-8. "
+"Sin embargo, por comodidad, PyGObject convertirá automáticamente cualquier "
+"instancia de Unicode a «str» si se proporciona como argumento:"
+
+#. (itstool) path: section/code
+#: C/strings.py.page:87
+#, no-wrap
+msgid ""
+"\n"
+">>> from gi.repository import Gtk\n"
+">>> label = Gtk.Label()\n"
+">>> unicode_string = u\"Fu\\u00dfb\\u00e4lle\"\n"
+">>> label.set_text(unicode_string)\n"
+">>> txt = label.get_text()\n"
+">>> type(txt)\n"
+"<type 'str'>"
+msgstr ""
+"\n"
+">>> from gi.repository import Gtk\n"
+">>> label = Gtk.Label()\n"
+">>> unicode_string = u\"Fu\\u00dfb\\u00e4lle\"\n"
+">>> label.set_text(unicode_string)\n"
+">>> txt = label.get_text()\n"
+">>> type(txt)\n"
+"<type 'str'>"
+
+#. (itstool) path: section/p
+#: C/strings.py.page:96
+msgid "Furthermore:"
+msgstr "Además:"
+
+#. (itstool) path: section/code
+#: C/strings.py.page:98
+#, no-wrap
+msgid ""
+"\n"
+">>> txt == unicode_string"
+msgstr ""
+"\n"
+">>> txt == unicode_string"
+
+#. (itstool) path: section/p
+#: C/strings.py.page:101
+msgid ""
+"would return <code>False</code>, with the warning <code>__main__:1: "
+"UnicodeWarning: Unicode equal comparison failed to convert both arguments to "
+"Unicode - interpreting them as being unequal</code> (<code>Gtk.Label."
+"get_text()</code> will always return a <code>str</code> instance; therefore, "
+"<code>txt</code> and <code>unicode_string</code> are not equal)."
+msgstr ""
+"devolvería <code>False</code>, con la advertencia <code>__main__:1: "
+"UnicodeWarning: Unicode equal comparison failed to convert both arguments to "
+"Unicode - interpreting them as being unequal</code> (<code>Gtk.Label."
+"get_text()</code> devolverá siempre una instancia de <code>str</code>; por "
+"lo tanto, <code>txt</code> y <code>unicode_string</code> no son iguales)."
+
+#. (itstool) path: section/p
+#: C/strings.py.page:103
+msgid ""
+"This is especially important if you want to internationalize your program "
+"using <link href=\"http://docs.python.org/library/gettext.html"
+"\"><code>gettext</code></link>. You have to make sure that <code>gettext</"
+"code> will return UTF-8 encoded 8-bit strings for all languages."
+msgstr ""
+"Esto es especialmente importante si quiere internacionalizar su programa "
+"usando <link href=\"http://docs.python.org/library/gettext.html"
+"\"><code>gettext</code></link>. Tiene que asegurarse de que <code>gettext</"
+"code> devuelva cadenas de 8 bits codificadas con UTF-8 para todos los "
+"idiomas."
+
+#. (itstool) path: section/p
+#: C/strings.py.page:105
+msgid ""
+"In general it is recommended to not use <code>unicode</code> objects in GTK+ "
+"applications at all, and only use UTF-8 encoded <code>str</code> objects "
+"since GTK+ does not fully integrate with <code>unicode</code> objects."
+msgstr ""
+"En general se recomienda no usar ningún objeto de <code>unicode</code> en "
+"aplicaciones de GTK+, y sólo usar objetos <code>str</code> codificados con "
+"UTF-8 dado que GTK+ no integra completamente objetos <code>unicode</code>."
+
+#. (itstool) path: section/p
+#: C/strings.py.page:107
+msgid ""
+"String encoding is more consistent in Python 3.x because PyGObject will "
+"automatically encode/decode to/from UTF-8 if you pass a string to a method "
+"or a method returns a string. Strings, or text, will always be represented "
+"as instances of <code>str</code> only."
+msgstr ""
+"En Python 3.x las codificación de cadenas es más consistente, porque "
+"PyGObject automáticamente codifica/decodifica hacia/desde UTF-8 si le pasa "
+"una cadena a un método o un método devuelve una cadena. Las cadenas, o el "
+"texto, siempre se representarán sólo como instancias de <code>str</code>."
+
+#. (itstool) path: section/p
+#: C/strings.py.page:114
+msgid ""
+"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/unicode."
+"html\">How To Deal With Strings - The Python GTK+ 3 Tutorial</link>"
+msgstr ""
+"<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/unicode."
+"html\">Cómo manejar cadenas: el tutorial de GTK+ 3 en Python</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/switch.c.page:23 C/switch.py.page:23 C/switch.vala.page:26
+msgctxt "_"
+msgid ""
+"external ref='media/switch_off.png' md5='211a2962708800697ad5373dcc86ad6d'"
+msgstr ""
+"external ref='media/switch_off.png' md5='211a2962708800697ad5373dcc86ad6d'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/switch.c.page:24 C/switch.py.page:24 C/switch.vala.page:27
+msgctxt "_"
+msgid ""
+"external ref='media/switch_on.png' md5='95e8769f758c2d95ace0fa8ecf30b29d'"
+msgstr ""
+"external ref='media/switch_on.png' md5='95e8769f758c2d95ace0fa8ecf30b29d'"
+
+#. (itstool) path: info/title
+#: C/switch.c.page:8
+msgctxt "text"
+msgid "Switch (C)"
+msgstr "Interruptor (C)"
+
+#. (itstool) path: info/desc
+#: C/switch.c.page:18 C/switch.py.page:19 C/switch.vala.page:22
+msgid "A \"light switch\" style toggle"
+msgstr "Un interruptor estilo «ligero»"
+
+#. (itstool) path: page/title
+#: C/switch.c.page:21 C/switch.js.page:21 C/switch.py.page:22
+#: C/switch.vala.page:25
+msgid "Switch"
+msgstr "Interruptor"
+
+#. (itstool) path: page/p
+#: C/switch.c.page:25
+msgid "This switch toggles the title of the window."
+msgstr "Este interruptor cambia el título de la ventana."
+
+#. (itstool) path: page/code
+#: C/switch.c.page:27
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/*Signal handler for the \"active\" signal of the Switch*/\n"
+"static void\n"
+"activate_cb (GObject *switcher,\n"
+" GParamSpec *pspec,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWindow *window = user_data;\n"
+"\n"
+" if (gtk_switch_get_active (GTK_SWITCH (switcher)))\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Switch Example\");\n"
+" else\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *grid;\n"
+" GtkWidget *window;\n"
+" GtkWidget *label;\n"
+" GtkWidget *switcher;\n"
+"\n"
+" /*Create a window with a set title and default size.\n"
+" Also, set a border width for the amount of space to leave\n"
+" inside the window*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Switch Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n"
+" gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n"
+"\n"
+" /*Create a label*/\n"
+" label = gtk_label_new (\"Title\");\n"
+"\n"
+" /*Create a switch with a default active state*/\n"
+" switcher = gtk_switch_new ();\n"
+" gtk_switch_set_active (GTK_SWITCH (switcher), TRUE);\n"
+"\n"
+" /*Create a grid and set the column spacing, attach the label and\n"
+" switch onto the grid and position them accordingly*/\n"
+" grid = gtk_grid_new();\n"
+" gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n"
+" gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), switcher, 1, 0, 1, 1);\n"
+"\n"
+" /*Connecting the clicked signal to the callback function*/\n"
+" g_signal_connect (GTK_SWITCH (switcher), \n"
+" \"notify::active\", \n"
+" G_CALLBACK (activate_cb), \n"
+" window);\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/*Signal handler for the \"active\" signal of the Switch*/\n"
+"static void\n"
+"activate_cb (GObject *switcher,\n"
+" GParamSpec *pspec,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWindow *window = user_data;\n"
+"\n"
+" if (gtk_switch_get_active (GTK_SWITCH (switcher)))\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Switch Example\");\n"
+" else\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *grid;\n"
+" GtkWidget *window;\n"
+" GtkWidget *label;\n"
+" GtkWidget *switcher;\n"
+"\n"
+" /*Create a window with a set title and default size.\n"
+" Also, set a border width for the amount of space to leave\n"
+" inside the window*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Switch Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n"
+" gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n"
+"\n"
+" /*Create a label*/\n"
+" label = gtk_label_new (\"Title\");\n"
+"\n"
+" /*Create a switch with a default active state*/\n"
+" switcher = gtk_switch_new ();\n"
+" gtk_switch_set_active (GTK_SWITCH (switcher), TRUE);\n"
+"\n"
+" /*Create a grid and set the column spacing, attach the label and\n"
+" switch onto the grid and position them accordingly*/\n"
+" grid = gtk_grid_new();\n"
+" gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n"
+" gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), switcher, 1, 0, 1, 1);\n"
+"\n"
+" /*Connecting the clicked signal to the callback function*/\n"
+" g_signal_connect (GTK_SWITCH (switcher), \n"
+" \"notify::active\", \n"
+" G_CALLBACK (activate_cb), \n"
+" window);\n"
+"\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/switch.js.page:22
+msgctxt "_"
+msgid ""
+"external ref='media/switchanimals.png' md5='513ae15dcf68e15eef30b76420b8c714'"
+msgstr ""
+"external ref='media/switchanimals.png' md5='513ae15dcf68e15eef30b76420b8c714'"
+
+#. (itstool) path: info/title
+#: C/switch.js.page:8
+msgctxt "text"
+msgid "Switch (JavaScript)"
+msgstr "Interruptor (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/switch.js.page:18
+msgid "A sliding switch that can be flipped on and off"
+msgstr "Un interruptor deslizante que se puede activar y desactivar"
+
+#. (itstool) path: page/p
+#: C/switch.js.page:23
+msgid ""
+"A Switch has two positions, on and off. This example shows how you can use "
+"multiple switches together to control which <link xref=\"image.js\">Image</"
+"link> is shown in the window. The pictures used in this example <link href="
+"\"https://live.gnome.org/TarynFox?action=AttachFile&do=get&"
+"target=Animal+Photos.zip\">can be downloaded here</link>."
+msgstr ""
+"Un interruptor tiene dos posiciones: encendido y apagado. Este ejemplo "
+"muestra cómo puede usar múltiples interruptores para controlar qué <link "
+"xref=\"image.js\">Imagen</link> se muestra en la ventana. Las imágenes "
+"usadas en este ejemplo <link href=\"https://live.gnome.org/TarynFox?"
+"action=AttachFile&do=get&target=Animal+Photos.zip\">se pueden "
+"descargar aquí</link>."
+
+#. (itstool) path: note/p
+#: C/switch.js.page:24
+msgid ""
+"The window will contain a \"broken image\" icon instead of a picture if "
+"picture files named <file>redfox.png</file>, <file>muteswan.png</file>, "
+"<file>fruitbat.png</file>, and <file>gentoopenguin.png</file> aren't in the "
+"same directory. You can change the code and the pictures around as you like, "
+"but the Creative Commons-licensed photos used in this example were taken "
+"from the following sources and cropped to 640x425:"
+msgstr ""
+"La ventana contendrá un icono de «imagen rota» en lugar de una imagen si los "
+"archivos llamados <file>redfox.png</file>, <file>muteswan.png</file>, "
+"<file>fruitbat.png</file>, y <file>gentoopenguin.png</file> no están en la "
+"misma carpeta. Puede cambiar el código y las imágenes como quiera, pero las "
+"fotos con licencia Creative Commons usadas en este ejemplo se tomaron desde "
+"las siguientes fuentes y se redujeron a 640x425:"
+
+#. (itstool) path: item/p
+#: C/switch.js.page:26
+msgid ""
+"<link href=\"http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.jpg\">Red fox "
+"photo</link> by Rob Lee, licensed <link href=\"http://creativecommons.org/"
+"licenses/by/2.0/deed.en\">CC-By</link>"
+msgstr ""
+"<link href=\"http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.jpg\">Foto de un "
+"zorro rojo</link> por Rob Lee, con licencia <link href=\"http://"
+"creativecommons.org/licenses/by/2.0/deed.en\">CC-By</link>"
+
+#. (itstool) path: item/p
+#: C/switch.js.page:27
+msgid ""
+"<link href=\"http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-"
+"Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.jpg\">Gentoo penguin "
+"photo</link> by Ken Funakoshi, licensed <link href=\"http://creativecommons."
+"org/licenses/by-sa/2.0/deed.en\">CC-By-SA</link>"
+msgstr ""
+"<link href=\"http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-"
+"Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.jpg\">Foto de un pingüino "
+"papúa</link> por Ken Funakoshi, con licencia <link href=\"http://"
+"creativecommons.org/licenses/by-sa/2.0/deed.en\">CC-By-SA</link>"
+
+#. (itstool) path: item/p
+#: C/switch.js.page:28
+msgid ""
+"<link href=\"http://www.flickr.com/photos/shekgraham/127431519/in/"
+"photostream/\">Fruit bat photo</link> by Shek Graham, licensed <link href="
+"\"http://creativecommons.org/licenses/by/2.0/deed.en\">CC-By</link>"
+msgstr ""
+"<link href=\"http://www.flickr.com/photos/shekgraham/127431519/in/"
+"photostream/\">Foto de un murciélago de la fruta</link> por Shek Graham, con "
+"licencia <link href=\"http://creativecommons.org/licenses/by/2.0/deed.en"
+"\">CC-By</link>"
+
+#. (itstool) path: item/p
+#: C/switch.js.page:29
+msgid ""
+"<link href=\"http://commons.wikimedia.org/wiki/File:Mute_Swan-"
+"Mindaugas_Urbonas.jpg\">Mute swan photo</link> by Mindaugas Urbonas, "
+"licensed <link href=\"http://creativecommons.org/licenses/by-sa/2.5/deed.en"
+"\">CC-By-SA</link>"
+msgstr ""
+"<link href=\"http://commons.wikimedia.org/wiki/File:Mute_Swan-"
+"Mindaugas_Urbonas.jpg\">Foto de un cisne mudo</link> por Mindaugas Urbonas, "
+"con licencia <link href=\"http://creativecommons.org/licenses/by-sa/2.5/deed."
+"en\">CC-By-SA</link>"
+
+#. (itstool) path: note/p
+#: C/switch.js.page:31
+msgid ""
+"Photo credits and licensing information are shown in the application's <link "
+"xref=\"aboutdialog.js\">AboutDialog</link>. Always remember to credit the "
+"original artist when using <link href=\"http://creativecommons.org"
+"\">Creative Commons-licensed works!</link>"
+msgstr ""
+"Los créditos de las fotografías y la información de licencia se muestran en "
+"el <link xref=\"aboutdialog.js\">AboutDialog</link> de la aplicación. "
+"Recuerde reconocer siempre al artista original cuando use <link href="
+"\"http://creativecommons.org\">trabajos con licencia Creative Commons</link>."
+
+#. (itstool) path: section/code
+#: C/switch.js.page:48
+#, no-wrap
+msgid ""
+"\n"
+"const SwitchExample = new Lang.Class({\n"
+" Name: 'Switch Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsswitch',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal creates the menu and builds the UI\n"
+" _onStartup: function() {\n"
+" this._initMenus();\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+"const SwitchExample = new Lang.Class({\n"
+" Name: 'Switch Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsswitch',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal creates the menu and builds the UI\n"
+" _onStartup: function() {\n"
+" this._initMenus();\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/switch.js.page:75
+msgid ""
+"All the code for this sample goes in the SwitchExample class. The above code "
+"creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk."
+"Application.html\">Gtk.Application</link> for our widgets and window to go "
+"in."
+msgstr ""
+"Todo el código de este ejemplo va en la clase «SwitchExample». El código "
+"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> para que vayan los widgets y "
+"la ventana. "
+
+#. (itstool) path: section/code
+#: C/switch.js.page:77
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Animal Creator\"});\n"
+msgstr ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Animal Creator\"});\n"
+
+#. (itstool) path: section/title
+#: C/switch.js.page:92
+msgid "Creating the switches"
+msgstr "Crear los interruptores"
+
+#. (itstool) path: section/code
+#: C/switch.js.page:93
+#, no-wrap
+msgid ""
+"\n"
+" // Create the image widget and set its default picture\n"
+" this._image = new Gtk.Image ({file: \"redfox.png\"});\n"
+msgstr ""
+"\n"
+" // Create the image widget and set its default picture\n"
+" this._image = new Gtk.Image ({file: \"redfox.png\"});\n"
+
+#. (itstool) path: section/p
+#: C/switch.js.page:98
+msgid ""
+"We first create the <link xref=\"image.js\">Image</link> that the switches "
+"will control. Remember that a file named <file>redfox.png</file> needs to be "
+"in the same directory as this application."
+msgstr ""
+"Primero se crea la <link xref=\"image.js\">Imagen</link> que los "
+"interruptores controlarán. Recuerde que el archivo llamado <file>redfox.png</"
+"file> debe estar en la misma carpeta que la aplicación."
+
+#. (itstool) path: section/code
+#: C/switch.js.page:100
+#, no-wrap
+msgid ""
+"\n"
+" // Create a label for the first switch\n"
+" this._flyLabel = new Gtk.Label ({\n"
+" label: \"Make it fly\",\n"
+" margin_right: 30});\n"
+"\n"
+" // Create the first switch and set its default position\n"
+" this._flySwitch = new Gtk.Switch ({active: false});\n"
+" this._flySwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
+"\n"
+" // Create a label for the second switch\n"
+" this._birdLabel = new Gtk.Label ({\n"
+" label: \"Make it a bird\",\n"
+" margin_right: 30});\n"
+"\n"
+" // Create the second switch\n"
+" this._birdSwitch = new Gtk.Switch ({active: false});\n"
+" this._birdSwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
+msgstr ""
+"\n"
+" // Create a label for the first switch\n"
+" this._flyLabel = new Gtk.Label ({\n"
+" label: \"Make it fly\",\n"
+" margin_right: 30});\n"
+"\n"
+" // Create the first switch and set its default position\n"
+" this._flySwitch = new Gtk.Switch ({active: false});\n"
+" this._flySwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
+"\n"
+" // Create a label for the second switch\n"
+" this._birdLabel = new Gtk.Label ({\n"
+" label: \"Make it a bird\",\n"
+" margin_right: 30});\n"
+"\n"
+" // Create the second switch\n"
+" this._birdSwitch = new Gtk.Switch ({active: false});\n"
+" this._birdSwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
+
+#. (itstool) path: section/p
+#: C/switch.js.page:120
+msgid ""
+"We use a <link xref=\"label.js\">Label</link> to mark each Switch, and give "
+"them a bit of a margin on the right so that they aren't crammed right next "
+"to the Switches. After that we create the Switches, and set them to be "
+"switched off by default."
+msgstr ""
+"Se usa una <link xref=\"label.js\">Etiqueta</link> para marcar cada "
+"interruptor, y se les da un poco de margen a la derecha para que no se "
+"peguen a los interruptores. Después de esto se crean los interruptores, y se "
+"configuran para que estén apagados de forma predeterminada."
+
+#. (itstool) path: section/p
+#: C/switch.js.page:121
+msgid ""
+"The signal a switch sends out when it's flipped on or off is called notify::"
+"active. After we create each switch, we connect its notify::active signal to "
+"a function called _switchFlip. If you have multiple switches that each do "
+"something different, you might want to connect them to different functions, "
+"but here they're both used for the same thing: To control what picture's "
+"displayed by _image."
+msgstr ""
+"La señal que envía un interruptor cuando se activa o desactiva se llama "
+"«notify::active». Después de crear cada interruptor, se conecta su señal "
+"«notify::active» a una función llamada «_switchFlip». Si tiene múltiples "
+"interruptores, y cada uno hace algo diferente, tal vez quiera conectarlos a "
+"funciones diferentes, pero aquí ambos se usan para lo mismo: para controlar "
+"qué imagen muestra «_image»."
+
+#. (itstool) path: section/code
+#: C/switch.js.page:123
+#, no-wrap
+msgid ""
+"\n"
+" // Create a grid for the labels and switches beneath the picture\n"
+" this._UIGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_top: 20});\n"
+"\n"
+" // Attach the labels and switches to that grid\n"
+" this._UIGrid.attach (this._flyLabel, 0, 0, 1, 1);\n"
+" this._UIGrid.attach (this._flySwitch, 1, 0, 1, 1);\n"
+" this._UIGrid.attach (this._birdLabel, 0, 1, 1, 1);\n"
+" this._UIGrid.attach (this._birdSwitch, 1, 1, 1, 1);\n"
+"\n"
+" // Create a master grid to put both the UI and the picture into\n"
+" this._mainGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Attach the picture and the UI grid to the master grid\n"
+" this._mainGrid.attach (this._image, 0, 0, 1, 1);\n"
+" this._mainGrid.attach (this._UIGrid, 0, 1, 1, 1);\n"
+msgstr ""
+"\n"
+" // Create a grid for the labels and switches beneath the picture\n"
+" this._UIGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_top: 20});\n"
+"\n"
+" // Attach the labels and switches to that grid\n"
+" this._UIGrid.attach (this._flyLabel, 0, 0, 1, 1);\n"
+" this._UIGrid.attach (this._flySwitch, 1, 0, 1, 1);\n"
+" this._UIGrid.attach (this._birdLabel, 0, 1, 1, 1);\n"
+" this._UIGrid.attach (this._birdSwitch, 1, 1, 1, 1);\n"
+"\n"
+" // Create a master grid to put both the UI and the picture into\n"
+" this._mainGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Attach the picture and the UI grid to the master grid\n"
+" this._mainGrid.attach (this._image, 0, 0, 1, 1);\n"
+" this._mainGrid.attach (this._UIGrid, 0, 1, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/switch.js.page:145
+msgid ""
+"We create a <link xref=\"grid.js\">Grid</link> for the Labels and Switches "
+"first, so that we can organize them in a 2x2 layout with a margin between it "
+"and the Image. Then we put that Grid into a larger 2x1 Grid that has the "
+"Image on top, and the Grid with the Labels and Switches on the bottom."
+msgstr ""
+"Primero se crea una <link xref=\"grid.js\">rejilla</link> para las etiquetas "
+"y los interruptores, para que se puedan organizar en una distribución 2x2 "
+"con un margen entre estos y la imagen. Después se pone esa rejilla en una "
+"rejilla más grande de 2x1 que tiene una imagen en su parte superior, y la "
+"rejilla con las etiquetas y los interruptores en su parte inferior."
+
+#. (itstool) path: section/code
+#: C/switch.js.page:146
+#, no-wrap
+msgid ""
+"\n"
+" // Add the master grid to the window\n"
+" this._window.add (this._mainGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+msgstr ""
+"\n"
+" // Add the master grid to the window\n"
+" this._window.add (this._mainGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+
+#. (itstool) path: section/title
+#: C/switch.js.page:158
+msgid "Function which handles the switches being flipped"
+msgstr "Función que maneja los interruptores que se están pulsando"
+
+#. (itstool) path: section/code
+#: C/switch.js.page:160
+#, no-wrap
+msgid ""
+"\n"
+" _switchFlip: function() {\n"
+"\n"
+" // Change the picture depending on which switches are flipped\n"
+" if (this._flySwitch.get_active()) {\n"
+"\n"
+" if (this._birdSwitch.get_active()) this._image.set_from_file (\"muteswan.png\");\n"
+"\n"
+" else this._image.set_from_file (\"fruitbat.png\");\n"
+" }\n"
+"\n"
+" else {\n"
+"\n"
+" if (this._birdSwitch.get_active()) this._image.set_from_file (\"gentoopenguin.png\");\n"
+"\n"
+" else this._image.set_from_file (\"redfox.png\");\n"
+"\n"
+" }\n"
+"\n"
+" },\n"
+msgstr ""
+"\n"
+" _switchFlip: function() {\n"
+"\n"
+" // Change the picture depending on which switches are flipped\n"
+" if (this._flySwitch.get_active()) {\n"
+"\n"
+" if (this._birdSwitch.get_active()) this._image.set_from_file (\"muteswan.png\");\n"
+"\n"
+" else this._image.set_from_file (\"fruitbat.png\");\n"
+" }\n"
+"\n"
+" else {\n"
+"\n"
+" if (this._birdSwitch.get_active()) this._image.set_from_file (\"gentoopenguin.png\");\n"
+"\n"
+" else this._image.set_from_file (\"redfox.png\");\n"
+"\n"
+" }\n"
+"\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/switch.js.page:181
+msgid ""
+"Each time a Switch is flipped, this function checks to see which of the two "
+"Switches are active afterwards, using the Switches' built-in get_active() "
+"function. It then changes the Image accordingly. You can change the "
+"filenames around as you like, so long as you have pictures to go with them."
+msgstr ""
+"Cada vez que un interruptor se pulsa, esta función verifica cuál de los dos "
+"interruptores está activo, usando la función «get_active()» empotrada al "
+"interruptor. Después cambia la imagen consecuentemente. Puede cambiar los "
+"nombres de archivo como quiera, siempre que tenga imágenes que correspondan."
+
+#. (itstool) path: section/title
+#: C/switch.js.page:185
+msgid "Creating the AboutDialog"
+msgstr "Crear el AboutDialog"
+
+#. (itstool) path: section/code
+#: C/switch.js.page:186
+#, no-wrap
+msgid ""
+"\n"
+" _initMenus: function() {\n"
+"\n"
+" // Build the application's menu so we can have an \"About\" button\n"
+" let menu = new Gio.Menu();\n"
+" menu.append(\"About\", 'app.about');\n"
+" menu.append(\"Quit\",'app.quit');\n"
+" this.application.set_app_menu(menu);\n"
+"\n"
+" // Bind the \"About\" button to the _showAbout() function\n"
+" let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n"
+" aboutAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showAbout();\n"
+" }));\n"
+" this.application.add_action(aboutAction);\n"
+"\n"
+" // Bind the \"Quit\" button to the function that closes the window\n"
+" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+" },\n"
+msgstr ""
+"\n"
+" _initMenus: function() {\n"
+"\n"
+" // Build the application's menu so we can have an \"About\" button\n"
+" let menu = new Gio.Menu();\n"
+" menu.append(\"About\", 'app.about');\n"
+" menu.append(\"Quit\",'app.quit');\n"
+" this.application.set_app_menu(menu);\n"
+"\n"
+" // Bind the \"About\" button to the _showAbout() function\n"
+" let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n"
+" aboutAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showAbout();\n"
+" }));\n"
+" this.application.add_action(aboutAction);\n"
+"\n"
+" // Bind the \"Quit\" button to the function that closes the window\n"
+" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/switch.js.page:212
+msgid ""
+"The first step is building the <link xref=\"gmenu.js\">GMenu</link> that the "
+"\"About\" button goes into. This is the menu that appears when you click the "
+"application's name in the upper-left corner of the screen, next to the "
+"Activities menu. Our menu only has two options in it: About, and Quit."
+msgstr ""
+"El primer paso es construir el <link xref=\"gmenu.js\">GMenu</link> en el "
+"que va el botón «About». Este es el menú que aparece cuando pulsa en el "
+"nombre de la aplicación en la esquina superior izquierda de la pantalla, al "
+"lado del menú de actividades. Este menú sólo tiene dos opciones: «About» y "
+"«Quit»."
+
+#. (itstool) path: section/code
+#: C/switch.js.page:214
+#, no-wrap
+msgid ""
+"\n"
+" _showAbout: function () {\n"
+"\n"
+" // String arrays of the names of the people involved in the project\n"
+" var artists = ['Rob Lee http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.jpg', 'Ken Funakoshi
http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.jpg',
'Shek Graham http://www.flickr.com/photos/shekgraham/127431519/in/photostream/', 'Mindaugas Urbonas
http://commons.wikimedia.org/wiki/File:Mute_Swan-Mindaugas_Urbonas.jpg'];\n"
+" var authors = [\"GNOME Documentation Team\"];\n"
+" var documenters = [\"GNOME Documentation Team\"];\n"
+"\n"
+" // Create the About dialog\n"
+" let aboutDialog = new Gtk.AboutDialog({\n"
+" title: \"AboutDialog Example\",\n"
+" program_name: \"Animal Creator\",\n"
+" copyright: \"Copyright \\xa9 2012 GNOME Documentation Team\\n\\nRed fox photo licensed CC-By by
Rob Lee\\nGentoo penguin photo licensed CC-By-SA by Ken Funakoshi\\nFruit bat photo licensed CC-By by Shek
Graham\\nMute swan photo licensed CC-By-SA by Mindaugas Urbonas\\nLinks to the originals are available under
Credits.\\n\\nHave you hugged a penguin today?\",\n"
+" artists: artists,\n"
+" authors: authors,\n"
+" documenters: documenters,\n"
+" website: \"http://developer.gnome.org\",\n"
+" website_label: \"GNOME Developer Website\" });\n"
+"\n"
+" // Attach the About dialog to the window\n"
+" aboutDialog.modal = true;\n"
+" aboutDialog.transient_for = this._window;\n"
+"\n"
+" // Show the About dialog\n"
+" aboutDialog.show();\n"
+"\n"
+" // Connect the Close button to the destroy signal for the dialog\n"
+" aboutDialog.connect('response', function() {\n"
+" aboutDialog.destroy();\n"
+" });\n"
+" }\n"
+"\n"
+"});\n"
+msgstr ""
+"\n"
+" _showAbout: function () {\n"
+"\n"
+" // String arrays of the names of the people involved in the project\n"
+" var artists = ['Rob Lee http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.jpg', 'Ken Funakoshi
http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.jpg',
'Shek Graham http://www.flickr.com/photos/shekgraham/127431519/in/photostream/', 'Mindaugas Urbonas
http://commons.wikimedia.org/wiki/File:Mute_Swan-Mindaugas_Urbonas.jpg'];\n"
+" var authors = [\"GNOME Documentation Team\"];\n"
+" var documenters = [\"GNOME Documentation Team\"];\n"
+"\n"
+" // Create the About dialog\n"
+" let aboutDialog = new Gtk.AboutDialog({\n"
+" title: \"AboutDialog Example\",\n"
+" program_name: \"Animal Creator\",\n"
+" copyright: \"Copyright \\xa9 2012 GNOME Documentation Team\\n\\nRed fox photo licensed CC-By by
Rob Lee\\nGentoo penguin photo licensed CC-By-SA by Ken Funakoshi\\nFruit bat photo licensed CC-By by Shek
Graham\\nMute swan photo licensed CC-By-SA by Mindaugas Urbonas\\nLinks to the originals are available under
Credits.\\n\\nHave you hugged a penguin today?\",\n"
+" artists: artists,\n"
+" authors: authors,\n"
+" documenters: documenters,\n"
+" website: \"http://developer.gnome.org\",\n"
+" website_label: \"GNOME Developer Website\" });\n"
+"\n"
+" // Attach the About dialog to the window\n"
+" aboutDialog.modal = true;\n"
+" aboutDialog.transient_for = this._window;\n"
+"\n"
+" // Show the About dialog\n"
+" aboutDialog.show();\n"
+"\n"
+" // Connect the Close button to the destroy signal for the dialog\n"
+" aboutDialog.connect('response', function() {\n"
+" aboutDialog.destroy();\n"
+" });\n"
+" }\n"
+"\n"
+"});\n"
+
+#. (itstool) path: section/p
+#: C/switch.js.page:248
+msgid ""
+"An <link xref=\"aboutdialog.js\">AboutDialog</link> has a lot of different "
+"things you can set, to credit everyone who worked on the application and "
+"leave a note to whomever reads it. In this case, the copyright section "
+"contains our note and credits the original photographers, while the artists "
+"section shows you a list of the photographers with links to the original "
+"photos when you click the Credits button. The web URLs put after their names "
+"in the array turn their names into clickable links in the Credits section."
+msgstr ""
+"Un <link xref=\"aboutdialog.js\">AboutDialog</link> tiene muchas cosas que "
+"puede establecer, para reconocer a todos los que trabajaron en la aplicación "
+"y dejar una nota a cualquiera que la lea. En este caso, la sección de "
+"derechos de autor contiene una nota y reconoce a los fotógrafos originales, "
+"mientras que la sección de artistas muestra una lista de los fotógrafos con "
+"enlaces a las fotografías originales cuando pulsa en el botón «Credits». Las "
+"URL web después de sus nombres en la matriz convierten sus nombres en "
+"enlaces que puede pulsar en la sección de créditos."
+
+#. (itstool) path: section/code
+#: C/switch.js.page:250
+#, no-wrap
+msgid ""
+"\n"
+"// Run the application\n"
+"let app = new SwitchExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"// Run the application\n"
+"let app = new SwitchExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/p
+#: C/switch.js.page:255
+msgid ""
+"Finally, we create a new instance of the finished SwitchExample class, and "
+"set the application running."
+msgstr ""
+"Finalmente, se crea una instancia nueva de la clase «SwitchExample» "
+"terminada, y se ejecuta la aplicación."
+
+#. (itstool) path: section/code
+#: C/switch.js.page:260
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const SwitchExample = new Lang.Class({\n"
+" Name: 'Switch Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsswitch'\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal creates the menu and builds the UI\n"
+" _onStartup: function() {\n"
+" this._initMenus();\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Animal Creator\"});\n"
+"\n"
+" // Create the image widget and set its default picture\n"
+" this._image = new Gtk.Image ({file: \"redfox.png\"});\n"
+"\n"
+" // Create a label for the first switch\n"
+" this._flyLabel = new Gtk.Label ({\n"
+" label: \"Make it fly\",\n"
+" margin_right: 30});\n"
+"\n"
+" // Create the first switch and set its default position\n"
+" this._flySwitch = new Gtk.Switch ({active: false});\n"
+" this._flySwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
+"\n"
+" // Create a label for the second switch\n"
+" this._birdLabel = new Gtk.Label ({\n"
+" label: \"Make it a bird\",\n"
+" margin_right: 30});\n"
+"\n"
+" // Create the second switch\n"
+" this._birdSwitch = new Gtk.Switch ({active: false});\n"
+" this._birdSwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
+"\n"
+" // Create a grid for the labels and switches beneath the picture\n"
+" this._UIGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_top: 20});\n"
+"\n"
+" // Attach the labels and switches to that grid\n"
+" this._UIGrid.attach (this._flyLabel, 0, 0, 1, 1);\n"
+" this._UIGrid.attach (this._flySwitch, 1, 0, 1, 1);\n"
+" this._UIGrid.attach (this._birdLabel, 0, 1, 1, 1);\n"
+" this._UIGrid.attach (this._birdSwitch, 1, 1, 1, 1);\n"
+"\n"
+" // Create a master grid to put both the UI and the picture into\n"
+" this._mainGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Attach the picture and the UI grid to the master grid\n"
+" this._mainGrid.attach (this._image, 0, 0, 1, 1);\n"
+" this._mainGrid.attach (this._UIGrid, 0, 1, 1, 1);\n"
+"\n"
+" // Add the master grid to the window\n"
+" this._window.add (this._mainGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _switchFlip: function() {\n"
+"\n"
+" // Change the picture depending on which switches are flipped\n"
+" if (this._flySwitch.get_active()) {\n"
+"\n"
+" if (this._birdSwitch.get_active()) this._image.set_from_file (\"muteswan.png\");\n"
+"\n"
+" else this._image.set_from_file (\"fruitbat.png\");\n"
+" }\n"
+"\n"
+" else {\n"
+"\n"
+" if (this._birdSwitch.get_active()) this._image.set_from_file (\"gentoopenguin.png\");\n"
+"\n"
+" else this._image.set_from_file (\"redfox.png\");\n"
+"\n"
+" }\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _initMenus: function() {\n"
+"\n"
+" // Build the application's menu so we can have an \"About\" button\n"
+" let menu = new Gio.Menu();\n"
+" menu.append(\"About\", 'app.about');\n"
+" menu.append(\"Quit\",'app.quit');\n"
+" this.application.set_app_menu(menu);\n"
+"\n"
+" // Bind the \"About\" button to the _showAbout() function\n"
+" let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n"
+" aboutAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showAbout();\n"
+" }));\n"
+" this.application.add_action(aboutAction);\n"
+"\n"
+" // Bind the \"Quit\" button to the function that closes the window\n"
+" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _showAbout: function () {\n"
+"\n"
+" // String arrays of the names of the people involved in the project\n"
+" var artists = ['Rob Lee http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.png', 'Ken Funakoshi
http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.png',
'Shek Graham http://www.flickr.com/photos/shekgraham/127431519/in/photostream/', 'Mindaugas Urbonas
http://commons.wikimedia.org/wiki/File:Mute_Swan-Mindaugas_Urbonas.png'];\n"
+" var authors = [\"GNOME Documentation Team\"];\n"
+" var documenters = [\"GNOME Documentation Team\"];\n"
+"\n"
+" // Create the About dialog\n"
+" let aboutDialog = new Gtk.AboutDialog({\n"
+" title: \"AboutDialog Example\",\n"
+" program_name: \"Animal Creator\",\n"
+" copyright: \"Copyright \\xa9 2012 GNOME Documentation Team\\n\\nRed fox photo licensed CC-By by
Rob Lee\\nGentoo penguin photo licensed CC-By-SA by Ken Funakoshi\\nFruit bat photo licensed CC-By by Shek
Graham\\nMute swan photo licensed CC-By-SA by Mindaugas Urbonas\\nLinks to the originals are available under
Credits.\\n\\nHave you hugged a penguin today?\",\n"
+" artists: artists,\n"
+" authors: authors,\n"
+" documenters: documenters,\n"
+" website: \"http://developer.gnome.org\",\n"
+" website_label: \"GNOME Developer Website\" });\n"
+"\n"
+" // Attach the About dialog to the window\n"
+" aboutDialog.modal = true;\n"
+" aboutDialog.transient_for = this._window;\n"
+"\n"
+" // Show the About dialog\n"
+" aboutDialog.show();\n"
+"\n"
+" // Connect the Close button to the destroy signal for the dialog\n"
+" aboutDialog.connect('response', function() {\n"
+" aboutDialog.destroy();\n"
+" });\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new SwitchExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const SwitchExample = new Lang.Class({\n"
+" Name: 'Switch Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jsswitch'\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal creates the menu and builds the UI\n"
+" _onStartup: function() {\n"
+" this._initMenus();\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" border_width: 20,\n"
+" title: \"Animal Creator\"});\n"
+"\n"
+" // Create the image widget and set its default picture\n"
+" this._image = new Gtk.Image ({file: \"redfox.png\"});\n"
+"\n"
+" // Create a label for the first switch\n"
+" this._flyLabel = new Gtk.Label ({\n"
+" label: \"Make it fly\",\n"
+" margin_right: 30});\n"
+"\n"
+" // Create the first switch and set its default position\n"
+" this._flySwitch = new Gtk.Switch ({active: false});\n"
+" this._flySwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
+"\n"
+" // Create a label for the second switch\n"
+" this._birdLabel = new Gtk.Label ({\n"
+" label: \"Make it a bird\",\n"
+" margin_right: 30});\n"
+"\n"
+" // Create the second switch\n"
+" this._birdSwitch = new Gtk.Switch ({active: false});\n"
+" this._birdSwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n"
+"\n"
+" // Create a grid for the labels and switches beneath the picture\n"
+" this._UIGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER,\n"
+" margin_top: 20});\n"
+"\n"
+" // Attach the labels and switches to that grid\n"
+" this._UIGrid.attach (this._flyLabel, 0, 0, 1, 1);\n"
+" this._UIGrid.attach (this._flySwitch, 1, 0, 1, 1);\n"
+" this._UIGrid.attach (this._birdLabel, 0, 1, 1, 1);\n"
+" this._UIGrid.attach (this._birdSwitch, 1, 1, 1, 1);\n"
+"\n"
+" // Create a master grid to put both the UI and the picture into\n"
+" this._mainGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Attach the picture and the UI grid to the master grid\n"
+" this._mainGrid.attach (this._image, 0, 0, 1, 1);\n"
+" this._mainGrid.attach (this._UIGrid, 0, 1, 1, 1);\n"
+"\n"
+" // Add the master grid to the window\n"
+" this._window.add (this._mainGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _switchFlip: function() {\n"
+"\n"
+" // Change the picture depending on which switches are flipped\n"
+" if (this._flySwitch.get_active()) {\n"
+"\n"
+" if (this._birdSwitch.get_active()) this._image.set_from_file (\"muteswan.png\");\n"
+"\n"
+" else this._image.set_from_file (\"fruitbat.png\");\n"
+" }\n"
+"\n"
+" else {\n"
+"\n"
+" if (this._birdSwitch.get_active()) this._image.set_from_file (\"gentoopenguin.png\");\n"
+"\n"
+" else this._image.set_from_file (\"redfox.png\");\n"
+"\n"
+" }\n"
+"\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _initMenus: function() {\n"
+"\n"
+" // Build the application's menu so we can have an \"About\" button\n"
+" let menu = new Gio.Menu();\n"
+" menu.append(\"About\", 'app.about');\n"
+" menu.append(\"Quit\",'app.quit');\n"
+" this.application.set_app_menu(menu);\n"
+"\n"
+" // Bind the \"About\" button to the _showAbout() function\n"
+" let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n"
+" aboutAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._showAbout();\n"
+" }));\n"
+" this.application.add_action(aboutAction);\n"
+"\n"
+" // Bind the \"Quit\" button to the function that closes the window\n"
+" let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _showAbout: function () {\n"
+"\n"
+" // String arrays of the names of the people involved in the project\n"
+" var artists = ['Rob Lee http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.png', 'Ken Funakoshi
http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.png',
'Shek Graham http://www.flickr.com/photos/shekgraham/127431519/in/photostream/', 'Mindaugas Urbonas
http://commons.wikimedia.org/wiki/File:Mute_Swan-Mindaugas_Urbonas.png'];\n"
+" var authors = [\"GNOME Documentation Team\"];\n"
+" var documenters = [\"GNOME Documentation Team\"];\n"
+"\n"
+" // Create the About dialog\n"
+" let aboutDialog = new Gtk.AboutDialog({\n"
+" title: \"AboutDialog Example\",\n"
+" program_name: \"Animal Creator\",\n"
+" copyright: \"Copyright \\xa9 2012 GNOME Documentation Team\\n\\nRed fox photo licensed CC-By by
Rob Lee\\nGentoo penguin photo licensed CC-By-SA by Ken Funakoshi\\nFruit bat photo licensed CC-By by Shek
Graham\\nMute swan photo licensed CC-By-SA by Mindaugas Urbonas\\nLinks to the originals are available under
Credits.\\n\\nHave you hugged a penguin today?\",\n"
+" artists: artists,\n"
+" authors: authors,\n"
+" documenters: documenters,\n"
+" website: \"http://developer.gnome.org\",\n"
+" website_label: \"GNOME Developer Website\" });\n"
+"\n"
+" // Attach the About dialog to the window\n"
+" aboutDialog.modal = true;\n"
+" aboutDialog.transient_for = this._window;\n"
+"\n"
+" // Show the About dialog\n"
+" aboutDialog.show();\n"
+"\n"
+" // Connect the Close button to the destroy signal for the dialog\n"
+" aboutDialog.connect('response', function() {\n"
+" aboutDialog.destroy();\n"
+" });\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new SwitchExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/switch.js.page:271
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html"
+"\">Gtk.Image</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html"
+"\">Gtk.Image</link>"
+
+#. (itstool) path: item/p
+#: C/switch.js.page:273
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Switch.html"
+"\">Gtk.Switch</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Switch.html"
+"\">Gtk.Switch</link>"
+
+#. (itstool) path: info/title
+#: C/switch.py.page:8
+msgctxt "text"
+msgid "Switch (Python)"
+msgstr "Interruptor (Python)"
+
+#. (itstool) path: page/p
+#: C/switch.py.page:26
+msgid "This Switch makes the title appears and disappear."
+msgstr "Este interruptor hace que el título aparezca y desaparezca."
+
+#. (itstool) path: section/code
+#: C/switch.py.page:33
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Switch Example\", application=app)\n"
+" self.set_default_size(300, 100)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # a switch\n"
+" switch = Gtk.Switch()\n"
+" # turned on by default\n"
+" switch.set_active(True)\n"
+" # connect the signal notify::active emitted by the switch\n"
+" # to the callback function activate_cb\n"
+" switch.connect(\"notify::active\", self.activate_cb)\n"
+"\n"
+" # a label\n"
+" label = Gtk.Label()\n"
+" label.set_text(\"Title\")\n"
+"\n"
+" # a grid to allocate the widgets\n"
+" grid = Gtk.Grid()\n"
+" grid.set_column_spacing(10)\n"
+" grid.attach(label, 0, 0, 1, 1)\n"
+" grid.attach(switch, 1, 0, 1, 1)\n"
+"\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" # Callback function. Since the signal is notify::active\n"
+" # we need the argument 'active'\n"
+" def activate_cb(self, button, active):\n"
+" # if the button (i.e. the switch) is active, set the title\n"
+" # of the window to \"Switch Example\"\n"
+" if button.get_active():\n"
+" self.set_title(\"Switch Example\")\n"
+" # else, set it to \"\" (empty string)\n"
+" else:\n"
+" self.set_title(\"\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Switch Example\", application=app)\n"
+" self.set_default_size(300, 100)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # a switch\n"
+" switch = Gtk.Switch()\n"
+" # turned on by default\n"
+" switch.set_active(True)\n"
+" # connect the signal notify::active emitted by the switch\n"
+" # to the callback function activate_cb\n"
+" switch.connect(\"notify::active\", self.activate_cb)\n"
+"\n"
+" # a label\n"
+" label = Gtk.Label()\n"
+" label.set_text(\"Title\")\n"
+"\n"
+" # a grid to allocate the widgets\n"
+" grid = Gtk.Grid()\n"
+" grid.set_column_spacing(10)\n"
+" grid.attach(label, 0, 0, 1, 1)\n"
+" grid.attach(switch, 1, 0, 1, 1)\n"
+"\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" # Callback function. Since the signal is notify::active\n"
+" # we need the argument 'active'\n"
+" def activate_cb(self, button, active):\n"
+" # if the button (i.e. the switch) is active, set the title\n"
+" # of the window to \"Switch Example\"\n"
+" if button.get_active():\n"
+" self.set_title(\"Switch Example\")\n"
+" # else, set it to \"\" (empty string)\n"
+" else:\n"
+" self.set_title(\"\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/switch.py.page:37
+msgid "Useful methods for a Switch widget"
+msgstr "Métodos útiles para un widget interruptor"
+
+#. (itstool) path: section/p
+#: C/switch.py.page:38
+msgid ""
+"In line 17 the signal <code>\"notify::active\"</code> is connected to the "
+"callback function <code>activate_cb()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 17, la señal <code>«notify::active»</code> se conecta a la "
+"función de retorno de llamada <code>activate_cb()</code> usando "
+"<code><var>widget</var>.connect(<var>señal</var>, <var>función de retorno de "
+"llamada</var>)</code>. Consulte la <link xref=\"signals-callbacks.py\"/> "
+"para una explicación más detallada."
+
+#. (itstool) path: item/p
+#: C/switch.py.page:45
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSwitch.html"
+"\">GtkSwitch</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkSwitch.html"
+"\">GtkSwitch</link>"
+
+#. (itstool) path: info/title
+#: C/switch.vala.page:8
+msgctxt "text"
+msgid "Switch (Vala)"
+msgstr "Interruptor (Vala)"
+
+#. (itstool) path: page/p
+#: C/switch.vala.page:29
+msgid "This Switch toggles the title."
+msgstr "Este interruptor cambia el título."
+
+#. (itstool) path: page/code
+#: C/switch.vala.page:31
+#, no-wrap
+msgid ""
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Switch Example\");\n"
+"\n"
+"\t\tthis.set_default_size (300, 100);\n"
+"\t\tthis.border_width = 10;\n"
+"\n"
+"\t\tvar label = new Gtk.Label (\"Title\");\n"
+"\t\tvar switcher = new Gtk.Switch ();\n"
+"\n"
+"\t\tswitcher.set_active (true);\n"
+"\n"
+"\t\tswitcher.notify[\"active\"].connect (switcher_cb);\n"
+"\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tgrid.set_column_spacing (10);\n"
+"\t\tgrid.attach (label, 0, 0, 1, 1);\n"
+"\t\tgrid.attach (switcher, 1, 0, 1, 1);\n"
+"\n"
+"\t\tthis.add (grid);\n"
+"\t}\n"
+"\n"
+"\tvoid switcher_cb (Object switcher, ParamSpec pspec) {\n"
+"\t\tif ((switcher as Gtk.Switch).get_active())\n"
+"\t\t\tthis.set_title (\"Switch Example\");\n"
+"\t\telse\n"
+"\t\t\tthis.set_title (\"\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\tvar window = new MyWindow (this);\n"
+"\t\twindow.show_all (); //show all the things\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.checkbutton\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Switch Example\");\n"
+"\n"
+"\t\tthis.set_default_size (300, 100);\n"
+"\t\tthis.border_width = 10;\n"
+"\n"
+"\t\tvar label = new Gtk.Label (\"Title\");\n"
+"\t\tvar switcher = new Gtk.Switch ();\n"
+"\n"
+"\t\tswitcher.set_active (true);\n"
+"\n"
+"\t\tswitcher.notify[\"active\"].connect (switcher_cb);\n"
+"\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tgrid.set_column_spacing (10);\n"
+"\t\tgrid.attach (label, 0, 0, 1, 1);\n"
+"\t\tgrid.attach (switcher, 1, 0, 1, 1);\n"
+"\n"
+"\t\tthis.add (grid);\n"
+"\t}\n"
+"\n"
+"\tvoid switcher_cb (Object switcher, ParamSpec pspec) {\n"
+"\t\tif ((switcher as Gtk.Switch).get_active())\n"
+"\t\t\tthis.set_title (\"Switch Example\");\n"
+"\t\telse\n"
+"\t\t\tthis.set_title (\"\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\tvar window = new MyWindow (this);\n"
+"\t\twindow.show_all (); //show all the things\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.checkbutton\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/switch.vala.page:36
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Switch.html\">Gtk.Switch</"
+"link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Switch.html\">Gtk.Switch</"
+"link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/textview.c.page:27 C/textview.py.page:39 C/textview.vala.page:27
+msgctxt "_"
+msgid ""
+"external ref='media/textview.png' md5='049e859ed1af2d7c93d8cb5cfd9f7792'"
+msgstr ""
+"external ref='media/textview.png' md5='049e859ed1af2d7c93d8cb5cfd9f7792'"
+
+#. (itstool) path: info/title
+#: C/textview.c.page:8
+msgctxt "text"
+msgid "TextView (C)"
+msgstr "TextView (C)"
+
+#. (itstool) path: info/desc
+#: C/textview.c.page:18 C/textview.vala.page:18
+msgid "Widget which displays a GtkTextBuffer"
+msgstr "Un widget que muestra un GtkTextBuffer"
+
+#. (itstool) path: page/title
+#: C/textview.c.page:21 C/textview.vala.page:21
+msgid "TextView widget"
+msgstr "Widget TextView"
+
+#. (itstool) path: note/p
+#: C/textview.c.page:22 C/textview.py.page:33 C/textview.vala.page:22
+msgid "If we press \"enter\", we have a new line."
+msgstr "Si se pulsa «Intro» se obtiene una línea nueva."
+
+#. (itstool) path: note/p
+#: C/textview.c.page:23 C/textview.vala.page:23
+msgid ""
+"If we press \"enter\" more times then there are lines in the default sized "
+"window, then a vertical scrollbar appears."
+msgstr ""
+"Si se pulsa «Intro» más veces entonces hay líneas en la ventana de tamaño "
+"predeterminado, y después aparece una barra de desplazamiento vertical."
+
+#. (itstool) path: note/p
+#: C/textview.c.page:24 C/textview.vala.page:24
+msgid ""
+"If we write a long sentence, the text will wrap breaking lines between words."
+msgstr ""
+"Si se escribe una frase larga, el texto se ajustará a los saltos de línea "
+"entre palabras."
+
+#. (itstool) path: note/p
+#: C/textview.c.page:25
+msgid ""
+"If we have a loooooooooooooooooooooooooooooooooooong (that was long) word, "
+"a* horizontal scrollbar will appear."
+msgstr ""
+"Si es escribe una palabra laaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarga (eso es "
+"largo), aparecerá una barra de desplazamiento horizontal."
+
+#. (itstool) path: page/p
+#: C/textview.c.page:28 C/textview.vala.page:28
+msgid "This is an example of Gtk.TextView"
+msgstr "Esto es un ejemplo de Gtk.TextView"
+
+#. (itstool) path: page/code
+#: C/textview.c.page:30
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* Declare variables */\n"
+" GtkWidget *window;\n"
+" GtkWidget *text_view;\n"
+" GtkWidget *scrolled_window;\n"
+"\n"
+" GtkTextBuffer *buffer;\n"
+"\n"
+"\n"
+" /* Create a window with a title, and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"TextView Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 220, 200);\n"
+"\n"
+"\n"
+" /* The text buffer represents the text being edited */\n"
+" buffer = gtk_text_buffer_new (NULL);\n"
+" \n"
+"\n"
+" /* Text view is a widget in which can display the text buffer. \n"
+" * The line wrapping is set to break lines in between words.\n"
+" */\n"
+" text_view = gtk_text_view_new_with_buffer (buffer);\n"
+" gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD); \n"
+"\n"
+"\n"
+" /* Create the scrolled window. Usually NULL is passed for both parameters so \n"
+" * that it creates the horizontal/vertical adjustments automatically. Setting \n"
+" * the scrollbar policy to automatic allows the scrollbars to only show up \n"
+" * when needed. \n"
+" */\n"
+" scrolled_window = gtk_scrolled_window_new (NULL, NULL);\n"
+" gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), \n"
+" GTK_POLICY_AUTOMATIC, \n"
+" GTK_POLICY_AUTOMATIC); \n"
+" /* The function directly below is used to add children to the scrolled window \n"
+" * with scrolling capabilities (e.g text_view), otherwise, \n"
+" * gtk_scrolled_window_add_with_viewport() would have been used\n"
+" */\n"
+" gtk_container_add (GTK_CONTAINER (scrolled_window), \n"
+" text_view);\n"
+" gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 5);\n"
+" \n"
+" \n"
+" gtk_container_add (GTK_CONTAINER (window), scrolled_window);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* Declare variables */\n"
+" GtkWidget *window;\n"
+" GtkWidget *text_view;\n"
+" GtkWidget *scrolled_window;\n"
+"\n"
+" GtkTextBuffer *buffer;\n"
+"\n"
+"\n"
+" /* Create a window with a title, and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"TextView Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 220, 200);\n"
+"\n"
+"\n"
+" /* The text buffer represents the text being edited */\n"
+" buffer = gtk_text_buffer_new (NULL);\n"
+" \n"
+"\n"
+" /* Text view is a widget in which can display the text buffer. \n"
+" * The line wrapping is set to break lines in between words.\n"
+" */\n"
+" text_view = gtk_text_view_new_with_buffer (buffer);\n"
+" gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD); \n"
+"\n"
+"\n"
+" /* Create the scrolled window. Usually NULL is passed for both parameters so \n"
+" * that it creates the horizontal/vertical adjustments automatically. Setting \n"
+" * the scrollbar policy to automatic allows the scrollbars to only show up \n"
+" * when needed. \n"
+" */\n"
+" scrolled_window = gtk_scrolled_window_new (NULL, NULL);\n"
+" gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), \n"
+" GTK_POLICY_AUTOMATIC, \n"
+" GTK_POLICY_AUTOMATIC); \n"
+" /* The function directly below is used to add children to the scrolled window \n"
+" * with scrolling capabilities (e.g text_view), otherwise, \n"
+" * gtk_scrolled_window_add_with_viewport() would have been used\n"
+" */\n"
+" gtk_container_add (GTK_CONTAINER (scrolled_window), \n"
+" text_view);\n"
+" gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 5);\n"
+" \n"
+" \n"
+" gtk_container_add (GTK_CONTAINER (window), scrolled_window);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/textview.c.page:41
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkContainer.html"
+"\">GtkContainer</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkContainer.html"
+"\">GtkContainer</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/textview.js.page:26
+msgctxt "_"
+msgid ""
+"external ref='media/textviewpenguinchat.png' "
+"md5='0dd6f6aa44aaeab7901bd90162ed4c9a'"
+msgstr ""
+"external ref='media/textviewpenguinchat.png' "
+"md5='0dd6f6aa44aaeab7901bd90162ed4c9a'"
+
+#. (itstool) path: info/title
+#: C/textview.js.page:8
+msgctxt "text"
+msgid "TextView (JavaScript)"
+msgstr "TextView (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/textview.js.page:22
+msgid "A multiline text editor"
+msgstr "Un editor de texto multilínea"
+
+#. (itstool) path: page/title
+#: C/textview.js.page:25 C/textview.py.page:30
+msgid "TextView"
+msgstr "TextView"
+
+#. (itstool) path: page/p
+#: C/textview.js.page:27
+msgid ""
+"A TextView is really (or at least usually) a nested set of three objects."
+msgstr ""
+"Un «TextView» es realmente (o al menos generalmente) un conjunto anidado de "
+"tres objetos."
+
+#. (itstool) path: item/p
+#: C/textview.js.page:29
+msgid ""
+"At the bottom there is a <link href=\"http://www.roojs.org/seed/gir-1.2-"
+"gtk-3.0/gjs/Gtk.TextBuffer.html\">TextBuffer</link>. This holds the text "
+"itself."
+msgstr ""
+"En la parte inferior hay un <link href=\"http://www.roojs.org/seed/gir-1.2-"
+"gtk-3.0/gjs/Gtk.TextBuffer.html\">Búfer de texto</link>. Este almacena el "
+"texto."
+
+#. (itstool) path: item/p
+#: C/textview.js.page:30
+msgid ""
+"In the middle there is the <link href=\"http://www.roojs.org/seed/gir-1.2-"
+"gtk-3.0/gjs/Gtk.TextView.html\">TextView</link>, which is a widget that lets "
+"you see and edit the text in the buffer. It automatically resizes itself "
+"depending on how much text there is."
+msgstr ""
+"En el medio está el <link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/"
+"gjs/Gtk.TextView.html\">TextView</link>, que es un widget que le permite ver "
+"y editar el texto en el búfer. Cambia su tamaño automáticamente dependiendo "
+"de cuánto texto hay."
+
+#. (itstool) path: item/p
+#: C/textview.js.page:31
+msgid ""
+"Since the automatic resizing can make a TextView unwieldy, you normally "
+"place it inside of a ScrolledWindow. Despite the name, it's not an actual "
+"window in terms of having a title bar and an X button; it's a widget you put "
+"on the application you're making, which acts like a window onto a more "
+"manageable chunk of a TextView. If the text in the buffer is too big to fit, "
+"scrollbars will appear."
+msgstr ""
+"Dado que el cambio de tamaño automático puede hacer un «TextView» difícil de "
+"manejar, normalmente se ubica dentro de una «ScrolledWindow». A pesar de su "
+"nombre, no es una ventana real en términos de tener una barra de título y un "
+"botón «X»; es un widget en el que pone la aplicación que está haciendo, que "
+"actúa como una ventana sobre un pedazo más manejable de un «TextView». Si el "
+"texto en el búfer es demasiado grande para entrar, aparecerán barras de "
+"desplazamiento."
+
+#. (itstool) path: page/p
+#: C/textview.js.page:33
+msgid ""
+"If you want to change what text is displayed in the TextView, you act on the "
+"TextBuffer, since it's what actually holds the text. The same goes for if "
+"you want to see what text someone typed in. This sample application lets you "
+"talk to a (make-believe) penguin, and checks the TextBuffer to see if you "
+"typed the word \"fish\" anywhere in it."
+msgstr ""
+"Si quiere cambiar el texto que se muestra en el «TextView», actúe en el "
+"búfer de texto, dado que es lo que realmente contiene al texto. Es lo mismo "
+"si quiere ver lo que se ha introducido en él. Esta aplicación de ejemplo le "
+"permite hablar con un pingüino de fantasía, y verifica el búfer de texto "
+"para ver si ha introducido la palabra «fish» en él."
+
+#. (itstool) path: note/p
+#: C/textview.js.page:34
+msgid ""
+"Real-life penguin populations are declining fast, because climate change is "
+"melting the ice that they live on and killing the fish that they eat. If "
+"you'd like to play a (somewhat silly) GNOME game based on this premise, take "
+"a look at <link href=\"http://pingus.seul.org/\">Pingus</link>."
+msgstr ""
+"Las poblaciones de pingüinos reales están decayendo rápidamente, porque el "
+"cambio climático está derritiendo el hielo en el que viven y matando a los "
+"peces que comen. Si le interesa jugar a un juego de GNOME algo tonto basado "
+"en esta premisa, échele un vistazo a <link href=\"http://pingus.seul.org/"
+"\">Pingus</link>."
+
+#. (itstool) path: section/code
+#: C/textview.js.page:50
+#, no-wrap
+msgid ""
+"\n"
+"const TextViewExample = new Lang.Class ({\n"
+" Name: 'TextView Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jstextview' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+"const TextViewExample = new Lang.Class ({\n"
+" Name: 'TextView Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jstextview' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/textview.js.page:74
+msgid ""
+"All the code for this sample goes in the TextViewExample class. The above "
+"code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> for our widgets and window to "
+"go in."
+msgstr ""
+"Todo el código de este ejemplo va en la clase «TextViewExample». El código "
+"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> para poner los widgets y la "
+"ventana."
+
+#. (itstool) path: section/code
+#: C/textview.js.page:75
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Talk to a Penguin\",\n"
+" default_height: 400,\n"
+" default_width: 440,\n"
+" border_width: 20 });\n"
+msgstr ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Talk to a Penguin\",\n"
+" default_height: 400,\n"
+" default_width: 440,\n"
+" border_width: 20 });\n"
+
+#. (itstool) path: section/title
+#: C/textview.js.page:92
+msgid "Creating the TextView"
+msgstr "Crear el «TextView»"
+
+#. (itstool) path: section/code
+#: C/textview.js.page:93
+#, no-wrap
+msgid ""
+"\n"
+" // Create a label for the penguin to talk to you\n"
+" this._penguin = new Gtk.Label ({\n"
+" height_request: 180,\n"
+" width_request: 400,\n"
+" label: \"Squaaaak?\",\n"
+" wrap: true });\n"
+msgstr ""
+"\n"
+" // Create a label for the penguin to talk to you\n"
+" this._penguin = new Gtk.Label ({\n"
+" height_request: 180,\n"
+" width_request: 400,\n"
+" label: \"Squaaaak?\",\n"
+" wrap: true });\n"
+
+#. (itstool) path: section/p
+#: C/textview.js.page:102
+msgid ""
+"Our first step in this example is to create the <link xref=\"label.js"
+"\">Label</link> that the penguin will use to talk to you. We set the text in "
+"it to wrap by setting its wrap property to true, but we'll use a different "
+"method on the TextView itself that allows for more fine-grained control."
+msgstr ""
+"El primer paso en este ejemplo es crear la <link xref=\"label.js\">Label</"
+"link> que el pingüino usará para hablarle. Se configura para que tenga "
+"ajuste de línea estableciendo su propiedad «wrap» a «true», pero usaremos un "
+"método distinto en el «TextView» propio que permite un control más preciso."
+
+#. (itstool) path: section/code
+#: C/textview.js.page:104
+#, no-wrap
+msgid ""
+"\n"
+" // Create a textview for you to talk to the penguin\n"
+" this.buffer = new Gtk.TextBuffer();\n"
+" this._textView = new Gtk.TextView ({\n"
+" buffer: this.buffer,\n"
+" editable: true,\n"
+" wrap_mode: Gtk.WrapMode.WORD });\n"
+msgstr ""
+"\n"
+" // Create a textview for you to talk to the penguin\n"
+" this.buffer = new Gtk.TextBuffer();\n"
+" this._textView = new Gtk.TextView ({\n"
+" buffer: this.buffer,\n"
+" editable: true,\n"
+" wrap_mode: Gtk.WrapMode.WORD });\n"
+
+#. (itstool) path: section/p
+#: C/textview.js.page:113
+msgid ""
+"Our first step is to create a TextBuffer to put the words into. After that "
+"we create the TextView, and tell it to use the TextBuffer we created as its "
+"buffer. We also set it to be editable, since we want to be able to type new "
+"things in."
+msgstr ""
+"El primer paso es crear un «TextBuffer» para poner dentro las palabras. "
+"Después de eso se crea el «TextView», y se le dice que use el «TextBuffer» "
+"que se creó como su búfer. También se configura para que sea editable, dado "
+"que se quiere poder introducir cosas nuevas dentro."
+
+#. (itstool) path: section/p
+#: C/textview.js.page:114
+msgid ""
+"The wrap_mode property lets you select from four different <link href="
+"\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.WrapMode.html"
+"\">WrapModes</link>. Gtk.WrapMode.CHAR, for instance, starts wrapping around "
+"in the middle of a word if you keep typing when it gets to the edge. Most "
+"people are probably used to Gtk.WrapMode.WORD, which will automatically put "
+"the word you're typing on the next line if it gets to be too long."
+msgstr ""
+"La propiedad «wrap_mode» le permite elegir entre cuatro <link href=\"http://"
+"www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.WrapMode.html\">Modos de ajuste "
+"de línea</link> diferentes. «Gtk.WrapMode.CHAR», por ejemplo, salta de línea "
+"en el medio de una palabra si sigue escribiendo cuando llega al borde. La "
+"mayoría de la gente está probablemente acostumbrada a «Gtk.WrapMode.WORD», "
+"que pondrá la palabra que está escribiendo en la línea siguiente "
+"automáticamente si es demasiado larga."
+
+#. (itstool) path: section/code
+#: C/textview.js.page:116
+#, no-wrap
+msgid ""
+"\n"
+" // Create a \"scrolled window\" to put your textview in so it will scroll\n"
+" this._scrolled = new Gtk.ScrolledWindow ({\n"
+" hscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
+" vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
+" shadow_type: Gtk.ShadowType.ETCHED_IN,\n"
+" height_request: 180,\n"
+" width_request: 400, });\n"
+"\n"
+" // Put the textview into the scrolled window\n"
+" this._scrolled.add_with_viewport (this._textView);\n"
+msgstr ""
+"\n"
+" // Create a \"scrolled window\" to put your textview in so it will scroll\n"
+" this._scrolled = new Gtk.ScrolledWindow ({\n"
+" hscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
+" vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
+" shadow_type: Gtk.ShadowType.ETCHED_IN,\n"
+" height_request: 180,\n"
+" width_request: 400, });\n"
+"\n"
+" // Put the textview into the scrolled window\n"
+" this._scrolled.add_with_viewport (this._textView);\n"
+
+#. (itstool) path: section/p
+#: C/textview.js.page:128
+msgid ""
+"Here we create a ScrolledWindow, and set it to automatically scroll if it "
+"gets to be too big horizontally or vertically. We also give it a nice-"
+"looking ETCHED_IN border. After that, we put our TextView inside, and tell "
+"the ScrolledWindow to give us a viewport onto it."
+msgstr ""
+"Aquí se crea una «ScrolledWindow», y se configura para que se desplace "
+"automáticamente si se vuelve demasiado grande horizontal o verticalmente. "
+"También se le da un borde bonito ETCHED_IN. Después de eso, se pone el "
+"«TextView» dentro, y se hace que la «ScrolledWindow» dé un punto de vista "
+"sobre él."
+
+#. (itstool) path: section/code
+#: C/textview.js.page:134
+#, no-wrap
+msgid ""
+"\n"
+" // Create a grid to organize them in\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Put the label and textview in the grid one on top of the other\n"
+" this._grid.attach (this._penguin, 0, 0, 1, 1);\n"
+" this._grid.attach (this._scrolled, 0, 1, 1, 1);\n"
+msgstr ""
+"\n"
+" // Create a grid to organize them in\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Put the label and textview in the grid one on top of the other\n"
+" this._grid.attach (this._penguin, 0, 0, 1, 1);\n"
+" this._grid.attach (this._scrolled, 0, 1, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/textview.js.page:144
+msgid ""
+"The first <link xref=\"grid.js\">Grid</link> we create only has the Label "
+"and the ScrolledWindow inside it."
+msgstr ""
+"La primera <link xref=\"grid.js\">Rejilla</link> que se crea sólo tiene "
+"dentro la etiqueta y la «ScrolledWindow»."
+
+#. (itstool) path: section/code
+#: C/textview.js.page:146
+#, no-wrap
+msgid ""
+"\n"
+" // Create a button to send your message to the penguin\n"
+" this._send = new Gtk.Button ({\n"
+" halign: Gtk.Align.END,\n"
+" margin_top: 20,\n"
+" label: \"Send\" });\n"
+" this._send.connect ('clicked', Lang.bind (this, this._chat));\n"
+"\n"
+" // Create a grid that will have the other grid on top and the button on bottom\n"
+" this._mainGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Add the other grid and the button to the main grid\n"
+" this._mainGrid.attach (this._grid, 0, 0, 1, 1);\n"
+" this._mainGrid.attach (this._send, 0, 1, 1, 1);\n"
+msgstr ""
+"\n"
+" // Create a button to send your message to the penguin\n"
+" this._send = new Gtk.Button ({\n"
+" halign: Gtk.Align.END,\n"
+" margin_top: 20,\n"
+" label: \"Send\" });\n"
+" this._send.connect ('clicked', Lang.bind (this, this._chat));\n"
+"\n"
+" // Create a grid that will have the other grid on top and the button on bottom\n"
+" this._mainGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Add the other grid and the button to the main grid\n"
+" this._mainGrid.attach (this._grid, 0, 0, 1, 1);\n"
+" this._mainGrid.attach (this._send, 0, 1, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/textview.js.page:163
+msgid ""
+"We create a <link xref=\"button.js\">Button</link> to send your message to "
+"the penguin, and a new Grid that has the other one on top and the Button on "
+"the bottom. The Button has a margin on top, so that it isn't squished up "
+"against the ScrolledWindow."
+msgstr ""
+"Se crea un <link xref=\"button.js\">Botón</link> para enviar su mensaje al "
+"pingüino, y una rejilla nueva que tiene la otra en su parte superior y el "
+"botón en la parte inferior. El botón tiene un margen en su parte superior, "
+"para que no se aplaste contra la «ScrolledWindow»."
+
+#. (itstool) path: section/code
+#: C/textview.js.page:165
+#, no-wrap
+msgid ""
+"\n"
+" // Attach the main grid to the window\n"
+" this._window.add (this._mainGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+msgstr ""
+"\n"
+" // Attach the main grid to the window\n"
+" this._window.add (this._mainGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/textview.js.page:174
+msgid ""
+"Finally, we attach the main Grid to the window, then we tell the window and "
+"everything inside it to become visible when the application is run."
+msgstr ""
+"Finalmente, se adjunta la rejilla principal a la ventana, después se le dice "
+"a la ventana y a todo lo que tiene dentro de ella que se vuelva visible "
+"cuando se ejecute la aplicación."
+
+#. (itstool) path: section/title
+#: C/textview.js.page:179
+msgid "Function which handles the penguin's response"
+msgstr "Función que maneja la respuesta del pingüino"
+
+#. (itstool) path: section/code
+#: C/textview.js.page:180
+#, no-wrap
+msgid ""
+"\n"
+" _chat: function () {\n"
+"\n"
+" // Create a random number to determine what the penguin says\n"
+" this.number = Math.floor ((Math.random() * 3) + 1);\n"
+"\n"
+" // Did you actually say anything?\n"
+" if (this.buffer.text) {\n"
+"\n"
+" // Did you mention fish?\n"
+" if (this.buffer.text.match (/fish/gi)) {\n"
+"\n"
+" // Have the penguin squaak about fish\n"
+" if (this.number == 1)\n"
+" this._penguin.set_label (\"FISH!\");\n"
+"\n"
+" else if (this.number == 2)\n"
+" this._penguin.set_label (\"Fish fish fish fish. Fish!\");\n"
+"\n"
+" else\n"
+" this._penguin.set_label (\"Fish? Fish fish fish. Fish fish. FISH!\");\n"
+"\n"
+" }\n"
+"\n"
+" // I guess you didn't mention fish\n"
+" else {\n"
+"\n"
+" // Have the penguin talk about penguinny stuff\n"
+" if (this.number == 1)\n"
+" this._penguin.set_label (\"SQUAAK!\");\n"
+"\n"
+" else if (this.number == 2)\n"
+" this._penguin.set_label (\"Ork ork ork ork squaak. Squaak squaak! *waves
flippers*\");\n"
+"\n"
+" else\n"
+" this._penguin.set_label (\"Ork ork ork ork ork?\");\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+"\n"
+" // Clear the buffer\n"
+" this.buffer.text = \"\";\n"
+"\n"
+" // Give focus back to the textview so you don't have to click it again\n"
+" this._textView.has_focus = true;\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+msgstr ""
+"\n"
+" _chat: function () {\n"
+"\n"
+" // Create a random number to determine what the penguin says\n"
+" this.number = Math.floor ((Math.random() * 3) + 1);\n"
+"\n"
+" // Did you actually say anything?\n"
+" if (this.buffer.text) {\n"
+"\n"
+" // Did you mention fish?\n"
+" if (this.buffer.text.match (/fish/gi)) {\n"
+"\n"
+" // Have the penguin squaak about fish\n"
+" if (this.number == 1)\n"
+" this._penguin.set_label (\"FISH!\");\n"
+"\n"
+" else if (this.number == 2)\n"
+" this._penguin.set_label (\"Fish fish fish fish. Fish!\");\n"
+"\n"
+" else\n"
+" this._penguin.set_label (\"Fish? Fish fish fish. Fish fish. FISH!\");\n"
+"\n"
+" }\n"
+"\n"
+" // I guess you didn't mention fish\n"
+" else {\n"
+"\n"
+" // Have the penguin talk about penguinny stuff\n"
+" if (this.number == 1)\n"
+" this._penguin.set_label (\"SQUAAK!\");\n"
+"\n"
+" else if (this.number == 2)\n"
+" this._penguin.set_label (\"Ork ork ork ork squaak. Squaak squaak! *waves
flippers*\");\n"
+"\n"
+" else\n"
+" this._penguin.set_label (\"Ork ork ork ork ork?\");\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+"\n"
+" // Clear the buffer\n"
+" this.buffer.text = \"\";\n"
+"\n"
+" // Give focus back to the textview so you don't have to click it again\n"
+" this._textView.has_focus = true;\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+
+#. (itstool) path: section/p
+#: C/textview.js.page:231
+msgid ""
+"Here we use some basic JavaScript functions to have the penguins say "
+"something random. Penguins like fish, though, so if you mention fish we want "
+"the penguin to respond to that. To do that, we use the JavaScript String "
+"object's match method on <file>this.buffer.text</file>, which returns the "
+"contents of our TextBuffer."
+msgstr ""
+"Aquí se usan algunas funciones básicas de JavaScript para que el pingüino "
+"diga algo aleatorio. Sin embargo, a los pingüinos les gusta el pescado, por "
+"lo que se quiere que si se menciona «fish», el pingüino responda. Para hacer "
+"eso, se usa el método «match» del objeto de cadena de JavaScript sobre "
+"<file>this.buffer.text</file>, que devuelve el contenido del búfer de texto."
+
+#. (itstool) path: section/p
+#: C/textview.js.page:232
+msgid ""
+"Since we want to clear out the TextBuffer after each time you click Send, we "
+"set <file>this.buffer.text</file> to contain an empty string afterwards. "
+"Then we return focus to our TextView, so that you can keep typing without "
+"having to click on it beforehand."
+msgstr ""
+"Dado que se quiere limpiar el búfer de texto después de cada vez que pulsa "
+"«Send», se configura <file>this.buffer.text</file> para que contenga una "
+"cadena vacía justo entonces. Después, se devuelve el foco al «TextView», "
+"para poder seguir escribiendo sin tener que pulsar en él antes."
+
+#. (itstool) path: section/code
+#: C/textview.js.page:234
+#, no-wrap
+msgid ""
+"\n"
+"// Run the application\n"
+"let app = new TextViewExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"// Run the application\n"
+"let app = new TextViewExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/p
+#: C/textview.js.page:239
+msgid ""
+"Finally, we create a new instance of the finished TextViewExample class, and "
+"set the application running."
+msgstr ""
+"Finalmente, se crea una instancia nueva de la clase «TextViewExample» "
+"terminada, y se ejecuta la aplicación."
+
+#. (itstool) path: section/code
+#: C/textview.js.page:244
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const TextViewExample = new Lang.Class ({\n"
+" Name: 'TextView Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jstextview' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Talk to a Penguin\",\n"
+" default_height: 400,\n"
+" default_width: 440,\n"
+" border_width: 20 });\n"
+"\n"
+" // Create a label for the penguin to talk to you\n"
+" this._penguin = new Gtk.Label ({\n"
+" height_request: 180,\n"
+" width_request: 400,\n"
+" label: \"Squaaaak?\",\n"
+" wrap: true });\n"
+"\n"
+" // Create a textview for you to talk to the penguin\n"
+" this.buffer = new Gtk.TextBuffer();\n"
+" this._textView = new Gtk.TextView ({\n"
+" buffer: this.buffer,\n"
+" editable: true,\n"
+" wrap_mode: Gtk.WrapMode.WORD });\n"
+"\n"
+" // Create a \"scrolled window\" to put your textview in so it will scroll\n"
+" this._scrolled = new Gtk.ScrolledWindow ({\n"
+" hscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
+" vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
+" shadow_type: Gtk.ShadowType.ETCHED_IN,\n"
+" height_request: 180,\n"
+" width_request: 400, });\n"
+"\n"
+" // Put the textview into the scrolled window\n"
+" this._scrolled.add_with_viewport (this._textView);\n"
+"\n"
+" // Create a grid to organize them in\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Put the label and textview in the grid one on top of the other\n"
+" this._grid.attach (this._penguin, 0, 0, 1, 1);\n"
+" this._grid.attach (this._scrolled, 0, 1, 1, 1);\n"
+"\n"
+" // Create a button to send your message to the penguin\n"
+" this._send = new Gtk.Button ({\n"
+" halign: Gtk.Align.END,\n"
+" margin_top: 20,\n"
+" label: \"Send\" });\n"
+" this._send.connect ('clicked', Lang.bind (this, this._chat));\n"
+"\n"
+" // Create a grid that will have the other grid on top and the button on bottom\n"
+" this._mainGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Add the other grid and the button to the main grid\n"
+" this._mainGrid.attach (this._grid, 0, 0, 1, 1);\n"
+" this._mainGrid.attach (this._send, 0, 1, 1, 1);\n"
+"\n"
+" // Attach the main grid to the window\n"
+" this._window.add (this._mainGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _chat: function () {\n"
+"\n"
+" // Create a random number to determine what the penguin says\n"
+" this.number = Math.floor ((Math.random() * 3) + 1);\n"
+"\n"
+" // Did you actually say anything?\n"
+" if (this.buffer.text) {\n"
+"\n"
+" // Did you mention fish?\n"
+" if (this.buffer.text.match (/fish/gi)) {\n"
+"\n"
+" // Have the penguin squaak about fish\n"
+" if (this.number == 1)\n"
+" this._penguin.set_label (\"FISH!\");\n"
+"\n"
+" else if (this.number == 2)\n"
+" this._penguin.set_label (\"Fish fish fish fish. Fish!\");\n"
+"\n"
+" else\n"
+" this._penguin.set_label (\"Fish? Fish fish fish. Fish fish. FISH!\");\n"
+"\n"
+" }\n"
+"\n"
+" // I guess you didn't mention fish\n"
+" else {\n"
+"\n"
+" // Have the penguin talk about penguinny stuff\n"
+" if (this.number == 1)\n"
+" this._penguin.set_label (\"SQUAAK!\");\n"
+"\n"
+" else if (this.number == 2)\n"
+" this._penguin.set_label (\"Ork ork ork ork squaak. Squaak squaak! *waves
flippers*\");\n"
+"\n"
+" else\n"
+" this._penguin.set_label (\"Ork ork ork ork ork?\");\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+"\n"
+" // Clear the buffer\n"
+" this.buffer.text = \"\";\n"
+"\n"
+" // Give focus back to the textview so you don't have to click it again\n"
+" this._textView.has_focus = true;\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new TextViewExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const TextViewExample = new Lang.Class ({\n"
+" Name: 'TextView Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.jstextview' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function () {\n"
+" this._window.present ();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow ({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Talk to a Penguin\",\n"
+" default_height: 400,\n"
+" default_width: 440,\n"
+" border_width: 20 });\n"
+"\n"
+" // Create a label for the penguin to talk to you\n"
+" this._penguin = new Gtk.Label ({\n"
+" height_request: 180,\n"
+" width_request: 400,\n"
+" label: \"Squaaaak?\",\n"
+" wrap: true });\n"
+"\n"
+" // Create a textview for you to talk to the penguin\n"
+" this.buffer = new Gtk.TextBuffer();\n"
+" this._textView = new Gtk.TextView ({\n"
+" buffer: this.buffer,\n"
+" editable: true,\n"
+" wrap_mode: Gtk.WrapMode.WORD });\n"
+"\n"
+" // Create a \"scrolled window\" to put your textview in so it will scroll\n"
+" this._scrolled = new Gtk.ScrolledWindow ({\n"
+" hscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
+" vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n"
+" shadow_type: Gtk.ShadowType.ETCHED_IN,\n"
+" height_request: 180,\n"
+" width_request: 400, });\n"
+"\n"
+" // Put the textview into the scrolled window\n"
+" this._scrolled.add_with_viewport (this._textView);\n"
+"\n"
+" // Create a grid to organize them in\n"
+" this._grid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Put the label and textview in the grid one on top of the other\n"
+" this._grid.attach (this._penguin, 0, 0, 1, 1);\n"
+" this._grid.attach (this._scrolled, 0, 1, 1, 1);\n"
+"\n"
+" // Create a button to send your message to the penguin\n"
+" this._send = new Gtk.Button ({\n"
+" halign: Gtk.Align.END,\n"
+" margin_top: 20,\n"
+" label: \"Send\" });\n"
+" this._send.connect ('clicked', Lang.bind (this, this._chat));\n"
+"\n"
+" // Create a grid that will have the other grid on top and the button on bottom\n"
+" this._mainGrid = new Gtk.Grid ({\n"
+" halign: Gtk.Align.CENTER,\n"
+" valign: Gtk.Align.CENTER });\n"
+"\n"
+" // Add the other grid and the button to the main grid\n"
+" this._mainGrid.attach (this._grid, 0, 0, 1, 1);\n"
+" this._mainGrid.attach (this._send, 0, 1, 1, 1);\n"
+"\n"
+" // Attach the main grid to the window\n"
+" this._window.add (this._mainGrid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _chat: function () {\n"
+"\n"
+" // Create a random number to determine what the penguin says\n"
+" this.number = Math.floor ((Math.random() * 3) + 1);\n"
+"\n"
+" // Did you actually say anything?\n"
+" if (this.buffer.text) {\n"
+"\n"
+" // Did you mention fish?\n"
+" if (this.buffer.text.match (/fish/gi)) {\n"
+"\n"
+" // Have the penguin squaak about fish\n"
+" if (this.number == 1)\n"
+" this._penguin.set_label (\"FISH!\");\n"
+"\n"
+" else if (this.number == 2)\n"
+" this._penguin.set_label (\"Fish fish fish fish. Fish!\");\n"
+"\n"
+" else\n"
+" this._penguin.set_label (\"Fish? Fish fish fish. Fish fish. FISH!\");\n"
+"\n"
+" }\n"
+"\n"
+" // I guess you didn't mention fish\n"
+" else {\n"
+"\n"
+" // Have the penguin talk about penguinny stuff\n"
+" if (this.number == 1)\n"
+" this._penguin.set_label (\"SQUAAK!\");\n"
+"\n"
+" else if (this.number == 2)\n"
+" this._penguin.set_label (\"Ork ork ork ork squaak. Squaak squaak! *waves
flippers*\");\n"
+"\n"
+" else\n"
+" this._penguin.set_label (\"Ork ork ork ork ork?\");\n"
+"\n"
+" }\n"
+"\n"
+" }\n"
+"\n"
+" // Clear the buffer\n"
+" this.buffer.text = \"\";\n"
+"\n"
+" // Give focus back to the textview so you don't have to click it again\n"
+" this._textView.has_focus = true;\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new TextViewExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/textview.js.page:256
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
+"ScrolledWindow.html\">Gtk.ScrolledWindow</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
+"ScrolledWindow.html\">Gtk.ScrolledWindow</link>"
+
+#. (itstool) path: item/p
+#: C/textview.js.page:257
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TextBuffer."
+"html\">Gtk.TextBuffer</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TextBuffer."
+"html\">Gtk.TextBuffer</link>"
+
+#. (itstool) path: item/p
+#: C/textview.js.page:258
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TextView.html"
+"\">Gtk.TextView</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TextView.html"
+"\">Gtk.TextView</link>"
+
+#. (itstool) path: info/title
+#: C/textview.py.page:8
+msgctxt "text"
+msgid "TextView (Python)"
+msgstr "TextView (Python)"
+
+#. (itstool) path: info/desc
+#: C/textview.py.page:27
+msgid "Widget that displays a GtkTextBuffer"
+msgstr "Un widget que muestra un GtkTextBuffer"
+
+#. (itstool) path: note/p
+#: C/textview.py.page:32
+msgid "This is an example of Gtk.TextView."
+msgstr "Esto es un ejemplo de Gtk.TextView."
+
+#. (itstool) path: note/p
+#: C/textview.py.page:34
+msgid ""
+"But we can also have a new line if we write a long sentence (the text will "
+"wrap breaking lines between words)."
+msgstr ""
+"Pero también se puede obtener una línea nueva si se escribe una frase larga "
+"(el texto se ajustará a los saltos de línea entre palabras."
+
+#. (itstool) path: note/p
+#: C/textview.py.page:35
+msgid "If we have a loooooooooooooooooooooooooooooooooooong"
+msgstr "Si es escribe una palabra laaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarga"
+
+#. (itstool) path: note/p
+#: C/textview.py.page:36
+msgid "(that was long)"
+msgstr "(esto es una palabra larga)"
+
+#. (itstool) path: note/p
+#: C/textview.py.page:37
+msgid "word, an horizontal scrollbar will appear."
+msgstr ", aparecerá una barra de desplazamiento horizontal."
+
+#. (itstool) path: section/code
+#: C/textview.py.page:46
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"TextView Example\", application=app)\n"
+" self.set_default_size(300, 450)\n"
+"\n"
+" # a scrollbar for the child widget (that is going to be the textview)\n"
+" scrolled_window = Gtk.ScrolledWindow()\n"
+" scrolled_window.set_border_width(5)\n"
+" # we scroll only if needed\n"
+" scrolled_window.set_policy(\n"
+" Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)\n"
+"\n"
+" # a text buffer (stores text)\n"
+" buffer1 = Gtk.TextBuffer()\n"
+"\n"
+" # a textview (displays the buffer)\n"
+" textview = Gtk.TextView(buffer=buffer1)\n"
+" # wrap the text, if needed, breaking lines in between words\n"
+" textview.set_wrap_mode(Gtk.WrapMode.WORD)\n"
+"\n"
+" # textview is scrolled\n"
+" scrolled_window.add(textview)\n"
+"\n"
+" self.add(scrolled_window)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"TextView Example\", application=app)\n"
+" self.set_default_size(300, 450)\n"
+"\n"
+" # a scrollbar for the child widget (that is going to be the textview)\n"
+" scrolled_window = Gtk.ScrolledWindow()\n"
+" scrolled_window.set_border_width(5)\n"
+" # we scroll only if needed\n"
+" scrolled_window.set_policy(\n"
+" Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)\n"
+"\n"
+" # a text buffer (stores text)\n"
+" buffer1 = Gtk.TextBuffer()\n"
+"\n"
+" # a textview (displays the buffer)\n"
+" textview = Gtk.TextView(buffer=buffer1)\n"
+" # wrap the text, if needed, breaking lines in between words\n"
+" textview.set_wrap_mode(Gtk.WrapMode.WORD)\n"
+"\n"
+" # textview is scrolled\n"
+" scrolled_window.add(textview)\n"
+"\n"
+" self.add(scrolled_window)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/textview.py.page:50
+msgid "Useful methods for a TextView widget"
+msgstr "Métodos útiles para un widget «TextView»"
+
+#. (itstool) path: section/p
+#: C/textview.py.page:51
+msgid ""
+"A <code>Gtk.TextView</code> displays the text stored in a <code>Gtk."
+"TextBuffer</code>. However, most text manipulation is accomplished with "
+"iterators, represented by a <code>Gtk.TextIter</code> - a position between "
+"two characters in the text buffer. Iterators are not valid indefinitely; "
+"whenever the buffer is modified in a way that affects the contents of the "
+"buffer, all outstanding iterators become invalid. Because of this, iterators "
+"can’t be used to preserve positions across buffer modifications. To preserve "
+"a position, we use a <code>Gtk.TextMark</code>, that can be set visible with "
+"<code>visible(True)</code>. A text buffer contains two built-in marks; an "
+"\"insert\" mark (the position of the cursor) and the \"selection_bound\" "
+"mark."
+msgstr ""
+"Un <code>Gtk.TextView</code> muestra el texto almacenado en un <code>Gtk."
+"TextBuffer</code>. Sin embargo, la mayor parte de la manipulación de texto "
+"se hace con iteradores, representados por un <code>Gtk.TextIter</code>: una "
+"posición entre dos caracteres en el búfer de texto. Los iteradores no son "
+"válidos indefinidamente; cada vez que se modifica el búfer de alguna manera "
+"que se altere su contenido, todos los iteradores relevantes dejan de ser "
+"válidos. Es por esto que no se pueden usar iteradores para mantener "
+"posiciones entre modificaciones del búfer. Para mantener una posición, se "
+"usa una <code>Gtk.TextMark</code>, que puede hacerse visible con "
+"<code>visible(True)</code>. Un búfer de texto contiene dos marcas "
+"empotradas: una marca «insert» (la posición del cursor) y la marca "
+"«selection_bound»."
+
+#. (itstool) path: section/p
+#: C/textview.py.page:52
+msgid "Methods for a TextView widget:"
+msgstr "Métodos para un widget «TextView»:"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:54
+msgid ""
+"The TextView widget is by default editable. If you prefer otherwise, use "
+"<code>set_editable(False)</code>. If the buffer has no editable text, it "
+"might be a good idea to use <code>set_cursor_visible(False)</code> as well."
+msgstr ""
+"El widget «TextView» es editable de manera predeterminada. Si prefiere que "
+"no lo sea, use <code>set_editable(False)</code>. Si el búfer no tiene texto "
+"editable, puede ser una buena idea usar <code>set_cursor_visible(False)</"
+"code> también."
+
+#. (itstool) path: item/p
+#: C/textview.py.page:55
+msgid ""
+"The justification of the text is set with <code>set_justification(Gtk."
+"Justification.JUSTIFICATION)</code> where <code>JUSTIFICATION</code> is one "
+"of <code>LEFT, RIGHT, CENTER, FILL</code>."
+msgstr ""
+"La alineación del texto se establece con <code>set_justification(Gtk."
+"Justification.JUSTIFICACIÓN)</code> donde <code>JUSTIFICACIÓN</code> puede "
+"ser <code>LEFT, RIGHT, CENTER, FILL</code>."
+
+#. (itstool) path: item/p
+#: C/textview.py.page:56
+msgid ""
+"The line wrapping of the text is set with <code>set_wrap_mode(Gtk.WrapMode."
+"WRAP)</code> where <code>WRAP</code> is one of <code>NONE</code> (the text "
+"area is made wider), <code>CHAR</code> (break lines anywhere the cursor can "
+"appear), <code>WORD</code> (break lines between words), <code>WORD_CHAR</"
+"code> (break lines between words, but if that is not enough between "
+"characters)."
+msgstr ""
+"El ajuste de línea del texto se establece con <code>set_wrap_mode(Gtk."
+"WrapMode.WRAP)</code> donde <code>WRAP</code> es uno de <code>NONE</code> "
+"(el área de texto se hace más ancha), <code>CHAR</code> (rompe líneas en "
+"cualquier lugar en que el cursor pueda aparecer), <code>WORD</code> (rompe "
+"líneas entre palabras), <code>WORD_CHAR</code> (rompe líneas entre palabras, "
+"pero si no es suficiente, entre caracteres)."
+
+#. (itstool) path: section/p
+#: C/textview.py.page:58
+msgid "Methods for a TextBuffer widget:"
+msgstr "Métodos para un widget «TextBuffer»:"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:60
+msgid ""
+"<code>get_insert()</code> returns the <code>Gtk.TextMark</code> that "
+"represents the cursor, that is the insertion point."
+msgstr ""
+"<code>get_insert()</code> devuelve la <code>Gtk.TextMark</code> que "
+"representa al cursor, que es el punto de inserción."
+
+#. (itstool) path: item/p
+#: C/textview.py.page:61
+msgid ""
+"<code>get_selection_bound()</code> returns the <code>Gtk.TextMark</code> "
+"that represents the selection bound."
+msgstr ""
+"<code>get_selection_bound()</code> devuelve la <code>Gtk.TextMark</code> que "
+"representa los límites de la selección."
+
+#. (itstool) path: item/p
+#: C/textview.py.page:62
+msgid ""
+"<code>set_text(\"some text\", length)</code> where <code>length</code> is a "
+"positive integer or <code>-1</code>, sets the content of the buffer as the "
+"first <code>length</code> characters of the <code>\"some text\"</code> text. "
+"If <code>length</code> is omitted or <code>-1</code>, the text is inserted "
+"completely. The content of the buffer, if there is any, is destroyed."
+msgstr ""
+"<code>set_text(\"texto\", longitud)</code> donde <code>longitud</code> es un "
+"entero positivo o <code>-1</code>, establece el contenido del búfer como los "
+"primeros <code>longitud</code> caracteres del <code>\"texto\"</code>. Si se "
+"omite <code>longitud</code> o es <code>-1</code>, se inserta todo el texto. "
+"El contenido del búfer, si existe, se destruye."
+
+#. (itstool) path: item/p
+#: C/textview.py.page:63
+msgid ""
+"<code>insert(iter, \"some text\", length)</code> where <code>iter</code> is "
+"a text iterator and <code>length</code> is a positive integer or <code>-1</"
+"code>, inserts in the buffer at <code>iter</code> the first <code>length</"
+"code> characters of the <code>\"some text\"</code> text. If <code>length</"
+"code> is omitted or <code>-1</code>, the text is inserted completely."
+msgstr ""
+"<code>insert(iter, \"texto\", longitud)</code>, donde <code>iter</code> es "
+"un iterador de texto y <code>longitud</code> es un entero positivo o "
+"<code>-1</code>, inserta en el búfer en <code>iter</code> los primeros "
+"<code>longitud</code> caracteres del <code>texto</code>. Si se omite "
+"<code>longitud</code> o es <code>-1</code>, se inserta todo el texto."
+
+#. (itstool) path: item/p
+#: C/textview.py.page:64
+msgid ""
+"<code>insert_at_cursor(\"some text\", length)</code> does the same as "
+"<code>insert(iter, \"some text\", length)</code>, with the current cursor "
+"taken as <code>iter</code>."
+msgstr ""
+"<code>insert_at_cursor(\"texto\", longitud)</code> hace los mismo que "
+"<code>insert(iter, \"texto\", longitud)</code>, tomando el cursor actual "
+"como <code>iter</code>."
+
+#. (itstool) path: item/p
+#: C/textview.py.page:65
+msgid ""
+"<code>create_mark(\"mark_name\", iter, left_gravity)</code> where "
+"<code>iter</code> is a <code>Gtk.TextIter</code> and <code>left_gravity</"
+"code> is a boolean, creates a <code>Gtk.TextMark</code> at the position of "
+"<code>iter</code>. If <code>\"mark_name\"</code> is <code>None</code>, the "
+"mark is anonymous; otherwise, the mark can be retrieved by name using "
+"<code>get_mark()</code>. If a mark has left gravity, and text is inserted at "
+"the mark’s current location, the mark will be moved to the left of the newly-"
+"inserted text. If <code>left_gravity</code> is omitted, it defaults to "
+"<code>False</code>."
+msgstr ""
+"<code>create_mark(\"nombre_de_la_marca\", iter, gravedad_izquierda)</code> "
+"donde <code>iter</code> es un <code>Gtk.TextIter</code> y "
+"<code>gravedad_izquierda</code> es un booleano, crea una <code>Gtk.TextMark</"
+"code> en la posición de <code>iter</code>. Si <code>\"nombre_de_la_marca\"</"
+"code> es <code>None</code>, la marca es anónima; de lo contrario, la marca "
+"puede obtenerse por su nombre usando <code>get_mark()</code>. Si una marca "
+"tiene gravedad izquierda, y el texto se inserta en la posición actual de la "
+"marca, esta se moverá a la izquierda del texto recién insertado. Si "
+"<code>gravedad_izquierda</code> se omite, su valor predeterminado es "
+"<code>False</code>."
+
+#. (itstool) path: item/p
+#: C/textview.py.page:67
+msgid ""
+"To specify that some text in the buffer should have specific formatting, you "
+"must define a tag to hold that formatting information, and then apply that "
+"tag to the region of text using <code>create_tag(\"tag name\", property)</"
+"code> and <code>apply_tag(tag, start_iter, end_iter)</code> as in, for "
+"instance:"
+msgstr ""
+"Para especificar que algún texto en el búfer debe tener un formato "
+"específico, defina una etiqueta que contenga esa información de formato, y "
+"luego aplíquela a la región de texto usando <code>create_tag(\"nombre de la "
+"etiqueta\", propiedad)</code> y <code>apply_tag(etiqueta, iter_inicial, "
+"iter_final)</code> como en, por ejemplo:"
+
+#. (itstool) path: item/code
+#: C/textview.py.page:68
+#, no-wrap
+msgid ""
+"\n"
+"tag = textbuffer.create_tag(\"orange_bg\", background=\"orange\")\n"
+"textbuffer.apply_tag(tag, start_iter, end_iter)"
+msgstr ""
+"\n"
+"tag = textbuffer.create_tag(\"orange_bg\", background=\"orange\")\n"
+"textbuffer.apply_tag(tag, start_iter, end_iter)"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:71
+msgid "The following are some of the common styles applied to text:"
+msgstr ""
+"A continuación se muestran algunos de los estilos comunes aplicados al texto:"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:73
+msgid "Background colour (\"background\" property)"
+msgstr "Color de fondo (propiedad «background»)"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:74
+msgid "Foreground colour (\"foreground\" property)"
+msgstr "Color de primer plano (propiedad «foreground»)"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:75
+msgid "Underline (\"underline\" property)"
+msgstr "Subrayado (propiedad «underline»)"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:76
+msgid "Bold (\"weight\" property)"
+msgstr "Negrita (propiedad «weight»)"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:77
+msgid "Italics (\"style\" property)"
+msgstr "Cursiva (propiedad «style»)"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:78
+msgid "Strikethrough (\"strikethrough\" property)"
+msgstr "Tachado (propiedad «strikethrough»)"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:79
+msgid "Justification (\"justification\" property)"
+msgstr "Justificación (propiedad «justification»)"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:80
+msgid "Size (\"size\" and \"size-points\" properties)"
+msgstr "Tamaño (propiedades «size» y «size-points»)"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:81
+msgid "Text wrapping (\"wrap-mode\" property)"
+msgstr "Ajuste de texto (propiedad «wrap-mode»)"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:83
+msgid ""
+"You can also delete particular tags later using <code>remove_tag()</code> or "
+"delete all tags in a given region by calling <code>remove_all_tags()</code>."
+msgstr ""
+"También puede eliminar etiquetas particulares más tarde usando "
+"<code>remove_tag()</code> o eliminar todas las etiquetas en una región dada "
+"llamando a <code>remove_all_tags()</code>."
+
+#. (itstool) path: section/p
+#: C/textview.py.page:85
+msgid "Methods for a TextIter widget"
+msgstr "Métodos para un widget «TextIter»"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:87
+msgid ""
+"<code>forward_search(needle, flags, limit)</code> searches forward for "
+"<code>needle</code>. The search will not continue past the <code>Gtk."
+"TextIter</code> limit. The <code>flags</code> can be set to one of the "
+"following, or any combination of it by concatenating them with the bitwise-"
+"OR operator <code>|</code>: <code>0</code> (the match must be exact); "
+"<code>Gtk.TextSearchFlags.VISIBLE_ONLY</code> (the match may have invisible "
+"text interspersed in needle); <code>Gtk.TextSearchFlags.TEXT_ONLY</code> "
+"(the match may have pixbufs or child widgets mixed inside the matched "
+"range); <code>Gtk.TextSearchFlags.CASE_INSENSITIVE</code> (the text will be "
+"matched regardless of what case it is in). The method returns a tuple "
+"containing a <code>Gtk.TextIter</code> pointing to the start and to the "
+"first character after the match; if no match is found, <code>None</code> is "
+"returned."
+msgstr ""
+"<code>forward_search(cadena, banderas, límite)</code> busca <code>cadena</"
+"code> hacia delante. La búsqueda no continuará después del límite <code>Gtk."
+"TextIter</code>. Las <code>banderas</code> pueden ser cualquier combinación "
+"de las siguientes, concatenándolas con el operador OR a nivel de bits <code>|"
+"</code>: <code>0</code> (la coincidencia debe ser exacta); <code>Gtk."
+"TextSearchFlags.VISIBLE_ONLY</code> (la coincidencia puede tener texto "
+"invisible intercalado en «aguja»); <code>Gtk.TextSearchFlags.TEXT_ONLY</"
+"code> (la coincidencia puede tener «pixbufs» o widgets hijos mezclados "
+"dentro del rango coincidente); <code>Gtk.TextSearchFlags.CASE_INSENSITIVE</"
+"code> (el texto coincidirá sin importar su capitalización). El método "
+"devuelve una tupla que contiene un <code>Gtk.TextIter</code> apuntando al "
+"inicio y al primer carácter después de la coincidencia; si no se encuentra, "
+"se devuelve <code>None</code>."
+
+#. (itstool) path: item/p
+#: C/textview.py.page:88
+msgid ""
+"<code>backward_search(needle, flags, limit)</code> does the same as "
+"<code>forward_search()</code>, but moving backwards."
+msgstr ""
+"<code>backward_search(cadena, banderas, límite)</code> hace lo mismo que "
+"<code>forward_search()</code>, pero hacia atrás."
+
+#. (itstool) path: item/p
+#: C/textview.py.page:96
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTextView.html"
+"\">GtkTextView</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTextView.html"
+"\">GtkTextView</link>"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:97
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTextBuffer.html"
+"\">GtkTextBuffer</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTextBuffer.html"
+"\">GtkTextBuffer</link>"
+
+#. (itstool) path: item/p
+#: C/textview.py.page:98
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTextTag.html"
+"\">GtkTextTag</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTextTag.html"
+"\">GtkTextTag</link>"
+
+#. (itstool) path: info/title
+#: C/textview.vala.page:8
+msgctxt "text"
+msgid "TextView (Vala)"
+msgstr "TextView (Vala)"
+
+#. (itstool) path: note/p
+#: C/textview.vala.page:25
+msgid ""
+"If we have a loooooooooooooooooooooooooooooooooooong word, a horizontal "
+"scrollbar will appear."
+msgstr ""
+"Si es escribe una palabra laaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarga, "
+"aparecerá una barra de desplazamiento horizontal."
+
+#. (itstool) path: page/code
+#: C/textview.vala.page:30
+#, no-wrap
+msgid ""
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\t\t/* Create the window of this application. */\n"
+"\t\tnew MyWindow (this).show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the window. */\n"
+"class MyWindow: Gtk.ApplicationWindow {\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"TextView Example\");\n"
+"\t\tthis.set_default_size (220, 200);\n"
+"\n"
+"\t\tvar buffer = new Gtk.TextBuffer (null); //stores text to be displayed\n"
+"\t\tvar textview = new Gtk.TextView.with_buffer (buffer); //displays TextBuffer\n"
+"\t\ttextview.set_wrap_mode (Gtk.WrapMode.WORD); //sets line wrapping\n"
+"\n"
+"\t\tvar scrolled_window = new Gtk.ScrolledWindow (null, null);\n"
+"\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC,\n"
+"\t\t Gtk.PolicyType.AUTOMATIC);\n"
+"\n"
+"\t\tscrolled_window.add (textview);\n"
+"\t\tscrolled_window.set_border_width (5);\n"
+"\n"
+"\t\tthis.add (scrolled_window);\n"
+"\t}\n"
+"}\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"/* This is the application. */\n"
+"public class MyApplication : Gtk.Application {\n"
+"\t/* Override the 'activate' signal of GLib.Application. */\n"
+"\tprotected override void activate () {\n"
+"\t\t/* Create the window of this application. */\n"
+"\t\tnew MyWindow (this).show_all ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the window. */\n"
+"class MyWindow: Gtk.ApplicationWindow {\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"TextView Example\");\n"
+"\t\tthis.set_default_size (220, 200);\n"
+"\n"
+"\t\tvar buffer = new Gtk.TextBuffer (null); //stores text to be displayed\n"
+"\t\tvar textview = new Gtk.TextView.with_buffer (buffer); //displays TextBuffer\n"
+"\t\ttextview.set_wrap_mode (Gtk.WrapMode.WORD); //sets line wrapping\n"
+"\n"
+"\t\tvar scrolled_window = new Gtk.ScrolledWindow (null, null);\n"
+"\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC,\n"
+"\t\t Gtk.PolicyType.AUTOMATIC);\n"
+"\n"
+"\t\tscrolled_window.add (textview);\n"
+"\t\tscrolled_window.set_border_width (5);\n"
+"\n"
+"\t\tthis.add (scrolled_window);\n"
+"\t}\n"
+"}\n"
+"/* main creates and runs the application. */\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/textview.vala.page:35
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TextBuffer.html\">Gtk."
+"TextBuffer</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TextBuffer.html\">Gtk."
+"TextBuffer</link>"
+
+#. (itstool) path: item/p
+#: C/textview.vala.page:36
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TextView.html\">Gtk."
+"TextView</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TextView.html\">Gtk."
+"TextView</link>"
+
+#. (itstool) path: item/p
+#: C/textview.vala.page:38
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.WrapMode.html\">Gtk."
+"WrapMode</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.WrapMode.html\">Gtk."
+"WrapMode</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/togglebutton.c.page:27 C/togglebutton.js.page:22
+#: C/togglebutton.py.page:23 C/togglebutton.vala.page:25
+msgctxt "_"
+msgid ""
+"external ref='media/togglebutton.png' md5='791e062613d4f9bd5936390b0aa18448'"
+msgstr ""
+"external ref='media/togglebutton.png' md5='791e062613d4f9bd5936390b0aa18448'"
+
+#. (itstool) path: info/title
+#: C/togglebutton.c.page:8
+msgctxt "text"
+msgid "ToggleButton (C)"
+msgstr "ToggleButton (C)"
+
+#. (itstool) path: info/desc
+#: C/togglebutton.c.page:22 C/togglebutton.py.page:19
+#: C/togglebutton.vala.page:21
+msgid "A button which retains state"
+msgstr "Un botón que mantiene su estado"
+
+#. (itstool) path: page/title
+#: C/togglebutton.c.page:25 C/togglebutton.js.page:21
+#: C/togglebutton.py.page:22 C/togglebutton.vala.page:24
+msgid "ToggleButton"
+msgstr "ToggleButton"
+
+#. (itstool) path: page/p
+#: C/togglebutton.c.page:28 C/togglebutton.py.page:24
+#: C/togglebutton.vala.page:26
+msgid "When this ToggleButton is in an active state, the spinner spins."
+msgstr "Cuando este ToggleButton está activado, el indicador de progreso gira."
+
+#. (itstool) path: page/code
+#: C/togglebutton.c.page:30
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/*This is the callback function. It is a handler function \n"
+"which reacts to the signal. In this case, it will cause the \n"
+"spinner to start and stop according to how many times the user \n"
+"presses the button.*/\n"
+"static void\n"
+"button_toggled_cb (GtkWidget *button,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *spinner = user_data;\n"
+"\n"
+" if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(button)))\n"
+" gtk_spinner_start (GTK_SPINNER (spinner));\n"
+" else {\n"
+" gtk_spinner_stop (GTK_SPINNER (spinner));\n"
+" }\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *button;\n"
+" GtkWidget *grid;\n"
+" GtkWidget *spinner;\n"
+"\n"
+" /*Create a window with a title, border width and a default size*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"ToggleButton Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);\n"
+" gtk_container_set_border_width(GTK_CONTAINER(window), 30);\n"
+"\n"
+" /*Create a togglebutton with a label*/\n"
+" button = gtk_toggle_button_new_with_label (\"Start/Stop\");\n"
+"\n"
+" /*Create a spinner, with extra horizontal and vertical space*/\n"
+" spinner = gtk_spinner_new ();\n"
+" gtk_widget_set_hexpand (spinner, TRUE);\n"
+" gtk_widget_set_vexpand (spinner, TRUE);\n"
+"\n"
+" /*Create a grid and set the row spacing, attach the togglebutton \n"
+" and spinner onto the grid and position them accordingly*/\n"
+" grid = gtk_grid_new();\n"
+" gtk_grid_set_row_homogeneous (GTK_GRID (grid), FALSE);\n"
+" gtk_grid_set_row_spacing (GTK_GRID (grid), 15);\n"
+" gtk_grid_attach (GTK_GRID (grid), spinner, 0, 0, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), button, 0, 1, 1, 1);\n"
+" \n"
+" gtk_container_add (GTK_CONTAINER (window), grid);\n"
+"\n"
+" /*Connecting the toggled signal to the callback*/\n"
+" g_signal_connect (GTK_TOGGLE_BUTTON (button), \"toggled\", \n"
+" G_CALLBACK (button_toggled_cb), spinner);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"\n"
+"\n"
+"/*This is the callback function. It is a handler function \n"
+"which reacts to the signal. In this case, it will cause the \n"
+"spinner to start and stop according to how many times the user \n"
+"presses the button.*/\n"
+"static void\n"
+"button_toggled_cb (GtkWidget *button,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *spinner = user_data;\n"
+"\n"
+" if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(button)))\n"
+" gtk_spinner_start (GTK_SPINNER (spinner));\n"
+" else {\n"
+" gtk_spinner_stop (GTK_SPINNER (spinner));\n"
+" }\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+" GtkWidget *button;\n"
+" GtkWidget *grid;\n"
+" GtkWidget *spinner;\n"
+"\n"
+" /*Create a window with a title, border width and a default size*/\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"ToggleButton Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);\n"
+" gtk_container_set_border_width(GTK_CONTAINER(window), 30);\n"
+"\n"
+" /*Create a togglebutton with a label*/\n"
+" button = gtk_toggle_button_new_with_label (\"Start/Stop\");\n"
+"\n"
+" /*Create a spinner, with extra horizontal and vertical space*/\n"
+" spinner = gtk_spinner_new ();\n"
+" gtk_widget_set_hexpand (spinner, TRUE);\n"
+" gtk_widget_set_vexpand (spinner, TRUE);\n"
+"\n"
+" /*Create a grid and set the row spacing, attach the togglebutton \n"
+" and spinner onto the grid and position them accordingly*/\n"
+" grid = gtk_grid_new();\n"
+" gtk_grid_set_row_homogeneous (GTK_GRID (grid), FALSE);\n"
+" gtk_grid_set_row_spacing (GTK_GRID (grid), 15);\n"
+" gtk_grid_attach (GTK_GRID (grid), spinner, 0, 0, 1, 1);\n"
+" gtk_grid_attach (GTK_GRID (grid), button, 0, 1, 1, 1);\n"
+" \n"
+" gtk_container_add (GTK_CONTAINER (window), grid);\n"
+"\n"
+" /*Connecting the toggled signal to the callback*/\n"
+" g_signal_connect (GTK_TOGGLE_BUTTON (button), \"toggled\", \n"
+" G_CALLBACK (button_toggled_cb), spinner);\n"
+"\n"
+" gtk_widget_show_all (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/togglebutton.c.page:39
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToggleButton.html"
+"\">GtkTogglebutton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToggleButton.html"
+"\">GtkTogglebutton</link>"
+
+#. (itstool) path: info/title
+#: C/togglebutton.js.page:8
+msgctxt "text"
+msgid "ToggleButton (JavaScript)"
+msgstr "ToggleButton (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/togglebutton.js.page:18
+msgid "Stays pressed until you click it again"
+msgstr "Se mantiene presionado hasta que lo pulsa de nuevo"
+
+#. (itstool) path: page/p
+#: C/togglebutton.js.page:23
+msgid ""
+"A ToggleButton is like a normal <link xref=\"button.js\">Button</link>, "
+"except that it stays pressed in when you click it. You can use it like an on/"
+"off switch, to control things like the <link xref=\"spinner.js\">Spinner</"
+"link> in this example."
+msgstr ""
+"Un «ToggleButton» es como un <link xref=\"button.js\">Button</link> normal, "
+"excepto que se mantiene presionado cuando pulsa en él. Puede usarlo como un "
+"conmutador de encendido/apagado, para controlar cosas como el <link xref="
+"\"spinner.js\">Spinner</link> en este ejemplo."
+
+#. (itstool) path: page/p
+#: C/togglebutton.js.page:24
+msgid ""
+"A ToggleButton's get_active method returns true if it's pressed in, and "
+"false if it's not. Its set_active method is used if you want to change its "
+"state without needing to click on it. When it changes state from pressed in "
+"to popped out and vice-versa, it sends out the \"toggled\" signal, which you "
+"can connect to a function to do something."
+msgstr ""
+"El método «get_active» del ToggleButton devuelve «true» si está presionado, "
+"y «false» si no lo está. Su método «set_active» se usa si quiere cambiar su "
+"estado sin la necesidad de pulsarlo. Cuando cambia su estado de «pulsado» a "
+"«no pulsado» y viceversa, envía la señal «toggled», que puede conectar a una "
+"función para hacer algo."
+
+#. (itstool) path: section/code
+#: C/togglebutton.js.page:41
+#, no-wrap
+msgid ""
+"\n"
+"const ToggleButtonExample = new Lang.Class({\n"
+" Name: 'ToggleButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jstogglebutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+"const ToggleButtonExample = new Lang.Class({\n"
+" Name: 'ToggleButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jstogglebutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: section/code
+#: C/togglebutton.js.page:68
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 300,\n"
+" default_width: 300,\n"
+" border_width: 30,\n"
+" title: \"ToggleButton Example\"});\n"
+msgstr ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 300,\n"
+" default_width: 300,\n"
+" border_width: 30,\n"
+" title: \"ToggleButton Example\"});\n"
+
+#. (itstool) path: section/title
+#: C/togglebutton.js.page:85
+msgid "Creating the ToggleButton and other widgets"
+msgstr "Crear el «ToggleButton» y otros widgets"
+
+#. (itstool) path: section/code
+#: C/togglebutton.js.page:86
+#, no-wrap
+msgid ""
+"\n"
+" // Create the spinner that the button stops and starts\n"
+" this._spinner = new Gtk.Spinner ({hexpand: true, vexpand: true});\n"
+msgstr ""
+"\n"
+" // Create the spinner that the button stops and starts\n"
+" this._spinner = new Gtk.Spinner ({hexpand: true, vexpand: true});\n"
+
+#. (itstool) path: section/p
+#: C/togglebutton.js.page:91
+msgid ""
+"We want this <link xref=\"spinner.js\">Spinner</link> to expand vertically "
+"and horizontally, to take up as much space as possible inside the window."
+msgstr ""
+"Se quiere que este <link xref=\"spinner.js\">Spinner</link> se expanda "
+"vertical y horizontalmente, para llenar tanto espacio como sea posible "
+"dentro de la ventana."
+
+#. (itstool) path: section/code
+#: C/togglebutton.js.page:93
+#, no-wrap
+msgid ""
+"\n"
+" // Create the togglebutton that starts and stops the spinner\n"
+" this._toggleButton = new Gtk.ToggleButton ({label: \"Start/Stop\"});\n"
+" this._toggleButton.connect ('toggled', Lang.bind (this, this._onToggle));\n"
+msgstr ""
+"\n"
+" // Create the togglebutton that starts and stops the spinner\n"
+" this._toggleButton = new Gtk.ToggleButton ({label: \"Start/Stop\"});\n"
+" this._toggleButton.connect ('toggled', Lang.bind (this, this._onToggle));\n"
+
+#. (itstool) path: section/p
+#: C/togglebutton.js.page:99
+msgid ""
+"Creating a ToggleButton is a lot like creating a normal <link xref=\"button."
+"js\">Button</link>. The biggest difference is that you're handling a "
+"\"toggled\" signal instead of a \"clicked\" signal. This code binds the "
+"_onToggle function to that signal, so that it's called whenever our "
+"ToggleButton is toggled."
+msgstr ""
+"Crear un ToggleButton es muy similar a crear un <link xref=\"button.js"
+"\">Button</link> normal. La mayor diferencia es que está manejando una señal "
+"«toggled» en lugar de una «clicked». Este código vincula la función "
+"_onToggle a esa señal, para que se llame cada vez que se conmute el "
+"ToggleButton."
+
+#. (itstool) path: section/code
+#: C/togglebutton.js.page:101
+#, no-wrap
+msgid ""
+"\n"
+" // Create a grid and put everything in it\n"
+" this._grid = new Gtk.Grid ({\n"
+" row_homogeneous: false,\n"
+" row_spacing: 15});\n"
+" this._grid.attach (this._spinner, 0, 0, 1, 1);\n"
+" this._grid.attach (this._toggleButton, 0, 1, 1, 1);\n"
+msgstr ""
+"\n"
+" // Create a grid and put everything in it\n"
+" this._grid = new Gtk.Grid ({\n"
+" row_homogeneous: false,\n"
+" row_spacing: 15});\n"
+" this._grid.attach (this._spinner, 0, 0, 1, 1);\n"
+" this._grid.attach (this._toggleButton, 0, 1, 1, 1);\n"
+
+#. (itstool) path: section/p
+#: C/togglebutton.js.page:109
+msgid ""
+"Here we create a simple <link xref=\"grid.js\">Grid</link> to organize "
+"everything in, then attach the Spinner and ToggleButton to it."
+msgstr ""
+"Aquí se crea una <link xref=\"grid.js\">Rejilla</link> simple para organizar "
+"todo dentro, y después se le adjuntan el «Spinner» y el «ToggleButton»."
+
+#. (itstool) path: section/code
+#: C/togglebutton.js.page:111
+#, no-wrap
+msgid ""
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+msgstr ""
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/togglebutton.js.page:119
+msgid ""
+"Now we add the Grid to the Window, and tell the Window to show itself and "
+"its child widgets when the application is started."
+msgstr ""
+"Ahora se añade la rejilla a la ventana, y se le dice a esta que se muestre "
+"con sus widgets hijos cuando la aplicación arranque."
+
+#. (itstool) path: section/title
+#: C/togglebutton.js.page:123
+msgid "Making something happen when the ToggleButton is toggled"
+msgstr "Hacer que algo suceda cuando se conmute el ToggleButton"
+
+#. (itstool) path: section/code
+#: C/togglebutton.js.page:125
+#, no-wrap
+msgid ""
+"\n"
+" _onToggle: function() {\n"
+"\n"
+" // Start or stop the spinner\n"
+" if (this._toggleButton.get_active ())\n"
+" this._spinner.start ();\n"
+" else this._spinner.stop ();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+msgstr ""
+"\n"
+" _onToggle: function() {\n"
+"\n"
+" // Start or stop the spinner\n"
+" if (this._toggleButton.get_active ())\n"
+" this._spinner.start ();\n"
+" else this._spinner.stop ();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+
+#. (itstool) path: section/p
+#: C/togglebutton.js.page:137
+msgid ""
+"Whenever someone toggles the button, this function checks what its state is "
+"afterwards using get_active and starts or stops the spinner accordingly. We "
+"want it to spin only while the button is pressed in, so if get_active "
+"returns true we start the spinner. Otherwise, we tell it to stop."
+msgstr ""
+"Cada vez que alguien conmuta el botón, esta función verifica cuál es su "
+"estado nuevo usando «get_active» e inicia o detiene el «spinner» "
+"consecuentemente. Se quiere que gire sólo cuando el botón está presionado, "
+"por lo que si «get_active» devuelve «true» se inicia el «spinner». De lo "
+"contrario, se le dice que se detenga."
+
+#. (itstool) path: section/code
+#: C/togglebutton.js.page:139
+#, no-wrap
+msgid ""
+"\n"
+"// Run the application\n"
+"let app = new ToggleButtonExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"// Run the application\n"
+"let app = new ToggleButtonExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/code
+#: C/togglebutton.js.page:149
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ToggleButtonExample = new Lang.Class({\n"
+" Name: 'ToggleButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jstogglebutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 300,\n"
+" default_width: 300,\n"
+" border_width: 30,\n"
+" title: \"ToggleButton Example\"});\n"
+"\n"
+" // Create the spinner that the button stops and starts\n"
+" this._spinner = new Gtk.Spinner ({hexpand: true, vexpand: true});\n"
+"\n"
+" // Create the togglebutton that starts and stops the spinner\n"
+" this._toggleButton = new Gtk.ToggleButton ({label: \"Start/Stop\"});\n"
+" this._toggleButton.connect ('toggled', Lang.bind (this, this._onToggle));\n"
+"\n"
+" // Create a grid and put everything in it\n"
+" this._grid = new Gtk.Grid ({\n"
+" row_homogeneous: false,\n"
+" row_spacing: 15});\n"
+" this._grid.attach (this._spinner, 0, 0, 1, 1);\n"
+" this._grid.attach (this._toggleButton, 0, 1, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _onToggle: function() {\n"
+"\n"
+" // Start or stop the spinner\n"
+" if (this._toggleButton.get_active ())\n"
+" this._spinner.start ();\n"
+" else this._spinner.stop ();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ToggleButtonExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const ToggleButtonExample = new Lang.Class({\n"
+" Name: 'ToggleButton Example',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jstogglebutton',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 300,\n"
+" default_width: 300,\n"
+" border_width: 30,\n"
+" title: \"ToggleButton Example\"});\n"
+"\n"
+" // Create the spinner that the button stops and starts\n"
+" this._spinner = new Gtk.Spinner ({hexpand: true, vexpand: true});\n"
+"\n"
+" // Create the togglebutton that starts and stops the spinner\n"
+" this._toggleButton = new Gtk.ToggleButton ({label: \"Start/Stop\"});\n"
+" this._toggleButton.connect ('toggled', Lang.bind (this, this._onToggle));\n"
+"\n"
+" // Create a grid and put everything in it\n"
+" this._grid = new Gtk.Grid ({\n"
+" row_homogeneous: false,\n"
+" row_spacing: 15});\n"
+" this._grid.attach (this._spinner, 0, 0, 1, 1);\n"
+" this._grid.attach (this._toggleButton, 0, 1, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _onToggle: function() {\n"
+"\n"
+" // Start or stop the spinner\n"
+" if (this._toggleButton.get_active ())\n"
+" this._spinner.start ();\n"
+" else this._spinner.stop ();\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new ToggleButtonExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/togglebutton.js.page:159
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ToggleButton."
+"html\">Gtk.ToggleButton</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ToggleButton."
+"html\">Gtk.ToggleButton</link>"
+
+#. (itstool) path: info/title
+#: C/togglebutton.py.page:8
+msgctxt "text"
+msgid "ToggleButton (Python)"
+msgstr "ToggleButton (Python)"
+
+#. (itstool) path: section/code
+#: C/togglebutton.py.page:31
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(\n"
+" self, title=\"ToggleButton Example\", application=app)\n"
+" self.set_default_size(300, 300)\n"
+" self.set_border_width(30)\n"
+"\n"
+" # a spinner animation\n"
+" self.spinner = Gtk.Spinner()\n"
+" # with extra horizontal space\n"
+" self.spinner.set_hexpand(True)\n"
+" # with extra vertical space\n"
+" self.spinner.set_vexpand(True)\n"
+"\n"
+" # a togglebutton\n"
+" button = Gtk.ToggleButton.new_with_label(\"Start/Stop\")\n"
+" # connect the signal \"toggled\" emitted by the togglebutton\n"
+" # when its state is changed to the callback function toggled_cb\n"
+" button.connect(\"toggled\", self.toggled_cb)\n"
+"\n"
+" # a grid to allocate the widgets\n"
+" grid = Gtk.Grid()\n"
+" grid.set_row_homogeneous(False)\n"
+" grid.set_row_spacing(15)\n"
+" grid.attach(self.spinner, 0, 0, 1, 1)\n"
+" grid.attach(button, 0, 1, 1, 1)\n"
+"\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" # callback function for the signal \"toggled\"\n"
+" def toggled_cb(self, button):\n"
+" # if the togglebutton is active, start the spinner\n"
+" if button.get_active():\n"
+" self.spinner.start()\n"
+" # else, stop it\n"
+" else:\n"
+" self.spinner.stop()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+" # a window\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(\n"
+" self, title=\"ToggleButton Example\", application=app)\n"
+" self.set_default_size(300, 300)\n"
+" self.set_border_width(30)\n"
+"\n"
+" # a spinner animation\n"
+" self.spinner = Gtk.Spinner()\n"
+" # with extra horizontal space\n"
+" self.spinner.set_hexpand(True)\n"
+" # with extra vertical space\n"
+" self.spinner.set_vexpand(True)\n"
+"\n"
+" # a togglebutton\n"
+" button = Gtk.ToggleButton.new_with_label(\"Start/Stop\")\n"
+" # connect the signal \"toggled\" emitted by the togglebutton\n"
+" # when its state is changed to the callback function toggled_cb\n"
+" button.connect(\"toggled\", self.toggled_cb)\n"
+"\n"
+" # a grid to allocate the widgets\n"
+" grid = Gtk.Grid()\n"
+" grid.set_row_homogeneous(False)\n"
+" grid.set_row_spacing(15)\n"
+" grid.attach(self.spinner, 0, 0, 1, 1)\n"
+" grid.attach(button, 0, 1, 1, 1)\n"
+"\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" # callback function for the signal \"toggled\"\n"
+" def toggled_cb(self, button):\n"
+" # if the togglebutton is active, start the spinner\n"
+" if button.get_active():\n"
+" self.spinner.start()\n"
+" # else, stop it\n"
+" else:\n"
+" self.spinner.stop()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/togglebutton.py.page:36
+msgid "Useful methods for a ToggleButton widget"
+msgstr "Métodos útiles para un widget «ToggleButton»"
+
+#. (itstool) path: section/p
+#: C/togglebutton.py.page:37
+msgid ""
+"In line 22 the signal <code>\"toggled\"</code> is connected to the callback "
+"function <code>toggled_cb()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 22, la señal <code>«toggled»</code> se conecta a la función de "
+"retorno de llamada <code>toggled_cb()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
+"detallada."
+
+#. (itstool) path: item/p
+#: C/togglebutton.py.page:45 C/toolbar.py.page:60
+#: C/toolbar_builder.py.page:198 C/widget_drawing.py.page:38
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkWidget.html"
+"\">GtkWidget</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkWidget.html"
+"\">GtkWidget</link>"
+
+#. (itstool) path: info/title
+#: C/togglebutton.vala.page:8
+msgctxt "text"
+msgid "ToggleButton (Vala)"
+msgstr "ToggleButton (Vala)"
+
+#. (itstool) path: page/code
+#: C/togglebutton.vala.page:28
+#, no-wrap
+msgid ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tGtk.Spinner spinner;\n"
+"\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"ToggleButton Example\");\n"
+"\n"
+"\t\tthis.set_default_size (300, 300);\n"
+"\t\tthis.border_width = 30;\n"
+"\n"
+"\t\t/*Spinner*/\n"
+"\t\tspinner = new Gtk.Spinner ();\n"
+"\t\tspinner.set_hexpand (true);\n"
+"\t\tspinner.set_vexpand (true);\n"
+"\n"
+"\t\t/*ToggleButton*/\n"
+"\t\tvar togglebutton = new Gtk.ToggleButton.with_label (\"Start/Stop\");\n"
+"\t\ttogglebutton.toggled.connect (toggled_cb);\n"
+"\n"
+"\t\t/*Grid*/\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tgrid.set_row_homogeneous (false);\n"
+"\t\tgrid.set_row_spacing (15);\n"
+"\t\tgrid.attach (spinner, 0, 0, 1, 1);\n"
+"\t\tgrid.attach (togglebutton, 0, 1, 1, 1);\n"
+"\n"
+"\t\tthis.add (grid);\n"
+"\t}\n"
+"\n"
+"\tvoid toggled_cb (Gtk.ToggleButton button) {\n"
+"\t\tif (button.get_active()) {\n"
+"\t\t\tspinner.start ();\n"
+"\t\t}\n"
+"\t\telse {\n"
+"\t\t\tspinner.stop ();\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t//Show all the things\n"
+"\t\tnew MyWindow (this).show_all ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.spinner\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"public class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\tGtk.Spinner spinner;\n"
+"\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"ToggleButton Example\");\n"
+"\n"
+"\t\tthis.set_default_size (300, 300);\n"
+"\t\tthis.border_width = 30;\n"
+"\n"
+"\t\t/*Spinner*/\n"
+"\t\tspinner = new Gtk.Spinner ();\n"
+"\t\tspinner.set_hexpand (true);\n"
+"\t\tspinner.set_vexpand (true);\n"
+"\n"
+"\t\t/*ToggleButton*/\n"
+"\t\tvar togglebutton = new Gtk.ToggleButton.with_label (\"Start/Stop\");\n"
+"\t\ttogglebutton.toggled.connect (toggled_cb);\n"
+"\n"
+"\t\t/*Grid*/\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tgrid.set_row_homogeneous (false);\n"
+"\t\tgrid.set_row_spacing (15);\n"
+"\t\tgrid.attach (spinner, 0, 0, 1, 1);\n"
+"\t\tgrid.attach (togglebutton, 0, 1, 1, 1);\n"
+"\n"
+"\t\tthis.add (grid);\n"
+"\t}\n"
+"\n"
+"\tvoid toggled_cb (Gtk.ToggleButton button) {\n"
+"\t\tif (button.get_active()) {\n"
+"\t\t\tspinner.start ();\n"
+"\t\t}\n"
+"\t\telse {\n"
+"\t\t\tspinner.stop ();\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class MyApplication : Gtk.Application {\n"
+"\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t//Show all the things\n"
+"\t\tnew MyWindow (this).show_all ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"org.example.spinner\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/togglebutton.vala.page:33
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ToggleButton.html\">Gtk."
+"ToggleButton</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ToggleButton.html\">Gtk."
+"ToggleButton</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/toolbar.c.page:25 C/toolbar.js.page:22 C/toolbar.py.page:25
+#: C/toolbar.vala.page:24 C/toolbar_builder.py.page:38
+#: C/toolbar_builder.vala.page:25
+msgctxt "_"
+msgid "external ref='media/toolbar.png' md5='f0350855eedf6343952b72d6d906f738'"
+msgstr ""
+"external ref='media/toolbar.png' md5='f0350855eedf6343952b72d6d906f738'"
+
+#. (itstool) path: info/title
+#: C/toolbar.c.page:8
+msgctxt "text"
+msgid "Toolbar (C)"
+msgstr "Barra de herramientas (C)"
+
+#. (itstool) path: info/desc
+#: C/toolbar.c.page:20 C/toolbar.vala.page:19 C/toolbar_builder.vala.page:20
+msgid "A bar of buttons"
+msgstr "Una barra de botones"
+
+#. (itstool) path: page/title
+#: C/toolbar.c.page:23 C/toolbar.js.page:21 C/toolbar.py.page:23
+#: C/toolbar.vala.page:22
+msgid "Toolbar"
+msgstr "Barra de herramientas"
+
+#. (itstool) path: page/p
+#: C/toolbar.c.page:26 C/toolbar.js.page:23 C/toolbar.vala.page:25
+msgid ""
+"Toolbar can contain either text or stock icons. In this sample we use stock "
+"icons. This example has fullscreen functionality."
+msgstr ""
+"La barra de herramientas puede contener texto o iconos del almacén. En este "
+"ejemplo se usan iconos del almacén. Este ejemplo funciona a pantalla "
+"completa."
+
+#. (itstool) path: page/p
+#: C/toolbar.c.page:27
+msgid ""
+"This example uses SimpleActions (window and app). App actions can easily be "
+"added to the app menu."
+msgstr ""
+"Este ejemplo usa «SimpleActions» (ventana y aplicación). Las acciones de la "
+"aplicación se pueden añadir fácilmente al menú de la aplicación."
+
+#. (itstool) path: page/code
+#: C/toolbar.c.page:29
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"/* Declare these two Toolbuttons, as they will be used in both the fullscreen\n"
+" * action callback as well as the activate function.\n"
+" */\n"
+"GtkToolItem *fullscreen_button;\n"
+"GtkToolItem *leavefullscreen_button;\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the undo action */\n"
+"static void\n"
+"undo_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"Undo\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the fullscreen action */\n"
+"static void\n"
+"fullscreen_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GdkWindow *window = gtk_widget_get_window (GTK_WIDGET (user_data));\n"
+"\n"
+" GdkWindowState current_state = gdk_window_get_state (window);\n"
+"\n"
+" /* If the window is currently in fullscreen mode */\n"
+" if ( (current_state & GDK_WINDOW_STATE_FULLSCREEN) != 0)\n"
+" {\n"
+" /* Minimize the window and change to the fullscreen button */\n"
+" gdk_window_unfullscreen (window);\n"
+" gtk_widget_hide (GTK_WIDGET(leavefullscreen_button));\n"
+" gtk_widget_show (GTK_WIDGET(fullscreen_button));\n"
+" }\n"
+" else\n"
+" {\n"
+" /* Maximize the window, and change to the unfullscreen button */\n"
+" gdk_window_fullscreen (window);\n"
+" gtk_widget_hide (GTK_WIDGET (fullscreen_button));\n"
+" gtk_widget_show (GTK_WIDGET (leavefullscreen_button));\n"
+" }\n"
+"}\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* Initialize variables */\n"
+" GtkWidget *window;\n"
+" GtkWidget *grid;\n"
+" GtkWidget *toolbar;\n"
+"\n"
+" GtkToolItem *new_button;\n"
+" GtkToolItem *open_button;\n"
+" GtkToolItem *undo_button;\n"
+"\n"
+" GtkStyleContext *style_context;\n"
+"\n"
+" GSimpleAction *undo_action;\n"
+" GSimpleAction *fullscreen_action;\n"
+" GSimpleAction *leavefullscreen_action;\n"
+"\n"
+" /* Create a window with a title and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Toolbar Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n"
+"\n"
+" /* Here we begin to create the toolbar */\n"
+" toolbar = gtk_toolbar_new ();\n"
+" /* Set the toolbar to be the primary toolbar of the application */\n"
+" style_context = gtk_widget_get_style_context (toolbar);\n"
+" gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+" /* Create a button for the \"new\" action, with a stock image */\n"
+" new_button = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);\n"
+" /* Show the \"new\" button's label */\n"
+" gtk_tool_item_set_is_important (new_button, TRUE);\n"
+" /* Insert the button in the desired position within the toolbar */\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), new_button, 0);\n"
+" /* Show the button */\n"
+" gtk_widget_show (GTK_WIDGET (new_button));\n"
+" /* Set the action name for the \"new\" action. We use \"app.new\" to\n"
+" * indicate that the action controls the application.\n"
+" */\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (new_button), \"app.new\");\n"
+"\n"
+" /* Repeat the same steps for the \"open\" action */\n"
+" open_button = gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);\n"
+" gtk_tool_item_set_is_important (open_button, TRUE);\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), open_button, 1);\n"
+" gtk_widget_show (GTK_WIDGET (open_button));\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (open_button), \"app.open\");\n"
+"\n"
+" /* Repeat the same steps for the \"undo\" action */\n"
+" undo_button = gtk_tool_button_new_from_stock (GTK_STOCK_UNDO);\n"
+" gtk_tool_item_set_is_important (undo_button, TRUE);\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), undo_button, 2);\n"
+" gtk_widget_show (GTK_WIDGET (undo_button));\n"
+" /* In this case, we use \"win.undo\" to indicate that\n"
+" * the action controls only the window\n"
+" */\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (undo_button), \"win.undo\");\n"
+"\n"
+" /* Repeat the same steps for the \"fullscreen\" action */\n"
+" fullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_FULLSCREEN);\n"
+" gtk_tool_item_set_is_important (fullscreen_button, TRUE);\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), fullscreen_button, 3);\n"
+" gtk_widget_show (GTK_WIDGET (fullscreen_button));\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (fullscreen_button),\n"
+" \"win.fullscreen\");\n"
+"\n"
+" /*Repeat the same steps for the \"leavefullscreen\" action */\n"
+" leavefullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_LEAVE_FULLSCREEN);\n"
+" gtk_tool_item_set_is_important (leavefullscreen_button, TRUE);\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), leavefullscreen_button, 3);\n"
+" /* The only difference here is that we don't show the leavefullscreen button,\n"
+" * as it will later replace the fullscreen button.\n"
+" */\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (leavefullscreen_button),\n"
+" \"win.leavefullscreen\");\n"
+"\n"
+" /* Once we've created the bare-bones of the toolbar, we make\n"
+" * sure it has enough horizontal space.\n"
+" */\n"
+" gtk_widget_set_hexpand (toolbar, TRUE);\n"
+" gtk_widget_show (toolbar);\n"
+"\n"
+" /* Attach the toolbar to the grid and add it to the overall window */\n"
+" grid = gtk_grid_new ();\n"
+" gtk_grid_attach (GTK_GRID (grid), toolbar, 0, 0, 1, 1);\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
+" gtk_widget_show (GTK_WIDGET (grid));\n"
+"\n"
+" /* Use the action names to create the actions that control the window, and\n"
+" * connect them to the appropriate callbackfunctions.\n"
+" */\n"
+" undo_action = g_simple_action_new (\"undo\", NULL);\n"
+" g_signal_connect (undo_action, \"activate\", G_CALLBACK (undo_callback),\n"
+" GTK_WINDOW (window));\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (undo_action));\n"
+"\n"
+" fullscreen_action = g_simple_action_new (\"fullscreen\", NULL);\n"
+" g_signal_connect (fullscreen_action, \"activate\", G_CALLBACK (fullscreen_callback),\n"
+" GTK_WINDOW (window));\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (fullscreen_action));\n"
+"\n"
+" leavefullscreen_action = g_simple_action_new (\"leavefullscreen\", NULL);\n"
+" g_signal_connect (leavefullscreen_action, \"activate\", G_CALLBACK (fullscreen_callback),\n"
+" GTK_WINDOW (window));\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (leavefullscreen_action));\n"
+"\n"
+" gtk_widget_show (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the new action */\n"
+"static void\n"
+"new_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"New\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the open action */\n"
+"static void\n"
+"open_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"Open\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* In this function, we create the actions in which control the window, and\n"
+" * connect their signals to the appropriate callback function.\n"
+" */\n"
+"static void\n"
+"startup (GApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GSimpleAction *new_action;\n"
+" GSimpleAction *open_action;\n"
+"\n"
+" new_action = g_simple_action_new (\"new\", NULL);\n"
+" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
+"\n"
+" open_action = g_simple_action_new (\"open\", NULL);\n"
+" g_signal_connect (open_action, \"activate\", G_CALLBACK (open_callback), app);\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (open_action));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the application */\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"/* Declare these two Toolbuttons, as they will be used in both the fullscreen\n"
+" * action callback as well as the activate function.\n"
+" */\n"
+"GtkToolItem *fullscreen_button;\n"
+"GtkToolItem *leavefullscreen_button;\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the undo action */\n"
+"static void\n"
+"undo_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"Undo\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the fullscreen action */\n"
+"static void\n"
+"fullscreen_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" GdkWindow *window = gtk_widget_get_window (GTK_WIDGET (user_data));\n"
+"\n"
+" GdkWindowState current_state = gdk_window_get_state (window);\n"
+"\n"
+" /* If the window is currently in fullscreen mode */\n"
+" if ( (current_state & GDK_WINDOW_STATE_FULLSCREEN) != 0)\n"
+" {\n"
+" /* Minimize the window and change to the fullscreen button */\n"
+" gdk_window_unfullscreen (window);\n"
+" gtk_widget_hide (GTK_WIDGET(leavefullscreen_button));\n"
+" gtk_widget_show (GTK_WIDGET(fullscreen_button));\n"
+" }\n"
+" else\n"
+" {\n"
+" /* Maximize the window, and change to the unfullscreen button */\n"
+" gdk_window_fullscreen (window);\n"
+" gtk_widget_hide (GTK_WIDGET (fullscreen_button));\n"
+" gtk_widget_show (GTK_WIDGET (leavefullscreen_button));\n"
+" }\n"
+"}\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* Initialize variables */\n"
+" GtkWidget *window;\n"
+" GtkWidget *grid;\n"
+" GtkWidget *toolbar;\n"
+"\n"
+" GtkToolItem *new_button;\n"
+" GtkToolItem *open_button;\n"
+" GtkToolItem *undo_button;\n"
+"\n"
+" GtkStyleContext *style_context;\n"
+"\n"
+" GSimpleAction *undo_action;\n"
+" GSimpleAction *fullscreen_action;\n"
+" GSimpleAction *leavefullscreen_action;\n"
+"\n"
+" /* Create a window with a title and a default size */\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Toolbar Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n"
+"\n"
+" /* Here we begin to create the toolbar */\n"
+" toolbar = gtk_toolbar_new ();\n"
+" /* Set the toolbar to be the primary toolbar of the application */\n"
+" style_context = gtk_widget_get_style_context (toolbar);\n"
+" gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+" /* Create a button for the \"new\" action, with a stock image */\n"
+" new_button = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);\n"
+" /* Show the \"new\" button's label */\n"
+" gtk_tool_item_set_is_important (new_button, TRUE);\n"
+" /* Insert the button in the desired position within the toolbar */\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), new_button, 0);\n"
+" /* Show the button */\n"
+" gtk_widget_show (GTK_WIDGET (new_button));\n"
+" /* Set the action name for the \"new\" action. We use \"app.new\" to\n"
+" * indicate that the action controls the application.\n"
+" */\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (new_button), \"app.new\");\n"
+"\n"
+" /* Repeat the same steps for the \"open\" action */\n"
+" open_button = gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);\n"
+" gtk_tool_item_set_is_important (open_button, TRUE);\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), open_button, 1);\n"
+" gtk_widget_show (GTK_WIDGET (open_button));\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (open_button), \"app.open\");\n"
+"\n"
+" /* Repeat the same steps for the \"undo\" action */\n"
+" undo_button = gtk_tool_button_new_from_stock (GTK_STOCK_UNDO);\n"
+" gtk_tool_item_set_is_important (undo_button, TRUE);\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), undo_button, 2);\n"
+" gtk_widget_show (GTK_WIDGET (undo_button));\n"
+" /* In this case, we use \"win.undo\" to indicate that\n"
+" * the action controls only the window\n"
+" */\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (undo_button), \"win.undo\");\n"
+"\n"
+" /* Repeat the same steps for the \"fullscreen\" action */\n"
+" fullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_FULLSCREEN);\n"
+" gtk_tool_item_set_is_important (fullscreen_button, TRUE);\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), fullscreen_button, 3);\n"
+" gtk_widget_show (GTK_WIDGET (fullscreen_button));\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (fullscreen_button),\n"
+" \"win.fullscreen\");\n"
+"\n"
+" /*Repeat the same steps for the \"leavefullscreen\" action */\n"
+" leavefullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_LEAVE_FULLSCREEN);\n"
+" gtk_tool_item_set_is_important (leavefullscreen_button, TRUE);\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), leavefullscreen_button, 3);\n"
+" /* The only difference here is that we don't show the leavefullscreen button,\n"
+" * as it will later replace the fullscreen button.\n"
+" */\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (leavefullscreen_button),\n"
+" \"win.leavefullscreen\");\n"
+"\n"
+" /* Once we've created the bare-bones of the toolbar, we make\n"
+" * sure it has enough horizontal space.\n"
+" */\n"
+" gtk_widget_set_hexpand (toolbar, TRUE);\n"
+" gtk_widget_show (toolbar);\n"
+"\n"
+" /* Attach the toolbar to the grid and add it to the overall window */\n"
+" grid = gtk_grid_new ();\n"
+" gtk_grid_attach (GTK_GRID (grid), toolbar, 0, 0, 1, 1);\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
+" gtk_widget_show (GTK_WIDGET (grid));\n"
+"\n"
+" /* Use the action names to create the actions that control the window, and\n"
+" * connect them to the appropriate callbackfunctions.\n"
+" */\n"
+" undo_action = g_simple_action_new (\"undo\", NULL);\n"
+" g_signal_connect (undo_action, \"activate\", G_CALLBACK (undo_callback),\n"
+" GTK_WINDOW (window));\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (undo_action));\n"
+"\n"
+" fullscreen_action = g_simple_action_new (\"fullscreen\", NULL);\n"
+" g_signal_connect (fullscreen_action, \"activate\", G_CALLBACK (fullscreen_callback),\n"
+" GTK_WINDOW (window));\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (fullscreen_action));\n"
+"\n"
+" leavefullscreen_action = g_simple_action_new (\"leavefullscreen\", NULL);\n"
+" g_signal_connect (leavefullscreen_action, \"activate\", G_CALLBACK (fullscreen_callback),\n"
+" GTK_WINDOW (window));\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (leavefullscreen_action));\n"
+"\n"
+" gtk_widget_show (window);\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the new action */\n"
+"static void\n"
+"new_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"New\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Callback function for the open action */\n"
+"static void\n"
+"open_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"Open\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* In this function, we create the actions in which control the window, and\n"
+" * connect their signals to the appropriate callback function.\n"
+" */\n"
+"static void\n"
+"startup (GApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GSimpleAction *new_action;\n"
+" GSimpleAction *open_action;\n"
+"\n"
+" new_action = g_simple_action_new (\"new\", NULL);\n"
+" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
+"\n"
+" open_action = g_simple_action_new (\"open\", NULL);\n"
+" g_signal_connect (open_action, \"activate\", G_CALLBACK (open_callback), app);\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (open_action));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the application */\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/toolbar.c.page:35 C/tooltip.c.page:39 C/tooltip.py.page:60
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToolbar.html"
+"\">GtkToolbar</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToolbar.html"
+"\">GtkToolbar</link>"
+
+#. (itstool) path: item/p
+#: C/toolbar.c.page:36
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToolButton.html"
+"\">GtkToolbutton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkToolButton.html"
+"\">GtkToolbutton</link>"
+
+#. (itstool) path: info/title
+#: C/toolbar.js.page:8
+msgctxt "text"
+msgid "Toolbar (JavaScript)"
+msgstr "Toolbar (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/toolbar.js.page:18
+msgid "A bar of tools"
+msgstr "Una barra de botones"
+
+#. (itstool) path: page/p
+#: C/toolbar.js.page:24 C/toolbar.vala.page:26
+msgid ""
+"This example uses SimpleActions (window and app). App actions can easily be "
+"added the the app menu."
+msgstr ""
+"Este ejemplo usa SimpleActions (ventana y aplicación). Las acciones de la "
+"aplicación se pueden añadir fácilmente al menú de la aplicación."
+
+#. (itstool) path: page/code
+#: C/toolbar.js.page:26
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gdk = imports.gi.Gdk;\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const Application = new Lang.Class({\n"
+" Name: 'Application',\n"
+"\n"
+" //create the application\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.myapp',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" //connect to 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" //create the UI (in this case it's just the ApplicationWindow\n"
+" _buildUI: function() {\n"
+" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Toolbar Example\",\n"
+" default_height: 200,\n"
+" default_width: 400 });\n"
+"\n"
+" this._grid = new Gtk.Grid();\n"
+" this._window.add(this._grid);\n"
+" this._grid.show();\n"
+"\n"
+" this._createToolbar();\n"
+" this._toolbar.set_hexpand(true);\n"
+" this._grid.attach(this._toolbar, 0, 0, 1, 1);\n"
+"\n"
+" //show the toolbar and window\n"
+" this._toolbar.show();\n"
+" this._window.show();\n"
+" },\n"
+"\n"
+" //callback function for 'activate' signal\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" //callback function for 'startup' signal\n"
+" _onStartup: function() {\n"
+" this._initMenus();\n"
+" this._buildUI();\n"
+" },\n"
+"\n"
+" //create the toolbar, its toolbuttons and their actions\n"
+" _createToolbar: function() {\n"
+"\n"
+" this._toolbar = new Gtk.Toolbar();\n"
+" this._toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+" //create the \"New\" ToolButton and its SimpleAction.\n"
+" //Using actions allows you to add them to the app menu\n"
+" //without duplicating code.\n"
+" let newAction = new Gio.SimpleAction({ name: 'new'});\n"
+" newAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._newCB();\n"
+" }));\n"
+" this.application.add_action(newAction);//note: this action is added to the app\n"
+"\n"
+" this._newButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW);\n"
+" this._newButton.is_important = true;\n"
+" this._toolbar.add(this._newButton);\n"
+" this._newButton.show();\n"
+" this._newButton.action_name = \"app.new\";\n"
+"\n"
+" //create the \"Open\" ToolButton and its SimpleAction\n"
+" let openAction = new Gio.SimpleAction({ name: 'open'});\n"
+" openAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._openCB();\n"
+" }));\n"
+" this.application.add_action(openAction);\n"
+"\n"
+" this._openButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN);\n"
+" this._openButton.is_important = true;\n"
+" this._toolbar.add(this._openButton);\n"
+" this._openButton.show();\n"
+" this._openButton.action_name = \"app.open\";\n"
+"\n"
+" //create the \"Undo\" ToolButton and its SimpleAction\n"
+" let undoAction = new Gio.SimpleAction({ name: 'undo'});\n"
+" undoAction.connect('activate', Lang.bind (this,\n"
+" function() {\n"
+" this._undoCB();\n"
+" }));\n"
+" this._window.add_action(undoAction);//note this action is added to the window\n"
+"\n"
+" this._undoButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO);\n"
+" this._undoButton.is_important = true;\n"
+" this._toolbar.add(this._undoButton);\n"
+" this._undoButton.show();\n"
+" this._undoButton.action_name = \"win.undo\";\n"
+"\n"
+" //create the \"Fullscreen\" ToolButton and its SimpleAction\n"
+" let fullscreenToggleAction = new Gio.SimpleAction ({ name: 'fullscreenToggle' });\n"
+" fullscreenToggleAction.connect ('activate', Lang.bind (this,\n"
+" function () {\n"
+" this._fullscreenToggleCB();\n"
+" }));\n"
+" this._window.add_action(fullscreenToggleAction);\n"
+"\n"
+" this._fullscreenButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_FULLSCREEN);\n"
+" this._fullscreenButton.is_important = true;\n"
+" this._toolbar.add(this._fullscreenButton);\n"
+" this._fullscreenButton.show();\n"
+" this._fullscreenButton.action_name = \"win.fullscreenToggle\";\n"
+"\n"
+" //create the \"leaveFullscreen\" ToolButton, and set the action name to \"win.fullscreenToggle\"\n"
+" this._leaveFullscreenButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_LEAVE_FULLSCREEN);\n"
+" this._leaveFullscreenButton.is_important = true;\n"
+" this._toolbar.add(this._leaveFullscreenButton);\n"
+" this._leaveFullscreenButton.action_name = \"win.fullscreenToggle\";\n"
+" },\n"
+"\n"
+" _initMenus: function () {\n"
+" let menu = new Gio.Menu();\n"
+" menu.append(\"New\", 'app.new');\n"
+" menu.append(\"Open\", 'app.open');\n"
+" menu.append(\"Quit\", 'app.quit');\n"
+"\n"
+" this.application.set_app_menu(menu);\n"
+"\n"
+" let quitAction = new Gio.SimpleAction({name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+" },\n"
+"\n"
+" _newCB: function() {\n"
+" print(\"You clicked 'New'.\");\n"
+" },\n"
+"\n"
+" _openCB: function() {\n"
+" print(\"You clicked 'Open'.\");\n"
+" },\n"
+"\n"
+" _undoCB:function () {\n"
+" print (\"You clicked 'Undo'.\");\n"
+" },\n"
+"\n"
+" _fullscreenToggleCB: function() {\n"
+" if ((this._window.get_window().get_state() & Gdk.WindowState.FULLSCREEN) != 0 ) {\n"
+" this._window.unfullscreen();\n"
+" this._leaveFullscreenButton.hide();\n"
+" this._fullscreenButton.show();\n"
+" }\n"
+" else {\n"
+" this._window.fullscreen();\n"
+" this._fullscreenButton.hide();\n"
+" this._leaveFullscreenButton.show();\n"
+" }\n"
+" }\n"
+"});\n"
+"\n"
+"//run the application\n"
+"let app = new Application();\n"
+"app.application.run(ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gdk = imports.gi.Gdk;\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const Application = new Lang.Class({\n"
+" Name: 'Application',\n"
+"\n"
+" //create the application\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.myapp',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" //connect to 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" //create the UI (in this case it's just the ApplicationWindow\n"
+" _buildUI: function() {\n"
+" this._window = new Gtk.ApplicationWindow({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Toolbar Example\",\n"
+" default_height: 200,\n"
+" default_width: 400 });\n"
+"\n"
+" this._grid = new Gtk.Grid();\n"
+" this._window.add(this._grid);\n"
+" this._grid.show();\n"
+"\n"
+" this._createToolbar();\n"
+" this._toolbar.set_hexpand(true);\n"
+" this._grid.attach(this._toolbar, 0, 0, 1, 1);\n"
+"\n"
+" //show the toolbar and window\n"
+" this._toolbar.show();\n"
+" this._window.show();\n"
+" },\n"
+"\n"
+" //callback function for 'activate' signal\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" //callback function for 'startup' signal\n"
+" _onStartup: function() {\n"
+" this._initMenus();\n"
+" this._buildUI();\n"
+" },\n"
+"\n"
+" //create the toolbar, its toolbuttons and their actions\n"
+" _createToolbar: function() {\n"
+"\n"
+" this._toolbar = new Gtk.Toolbar();\n"
+" this._toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+" //create the \"New\" ToolButton and its SimpleAction.\n"
+" //Using actions allows you to add them to the app menu\n"
+" //without duplicating code.\n"
+" let newAction = new Gio.SimpleAction({ name: 'new'});\n"
+" newAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._newCB();\n"
+" }));\n"
+" this.application.add_action(newAction);//note: this action is added to the app\n"
+"\n"
+" this._newButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW);\n"
+" this._newButton.is_important = true;\n"
+" this._toolbar.add(this._newButton);\n"
+" this._newButton.show();\n"
+" this._newButton.action_name = \"app.new\";\n"
+"\n"
+" //create the \"Open\" ToolButton and its SimpleAction\n"
+" let openAction = new Gio.SimpleAction({ name: 'open'});\n"
+" openAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._openCB();\n"
+" }));\n"
+" this.application.add_action(openAction);\n"
+"\n"
+" this._openButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN);\n"
+" this._openButton.is_important = true;\n"
+" this._toolbar.add(this._openButton);\n"
+" this._openButton.show();\n"
+" this._openButton.action_name = \"app.open\";\n"
+"\n"
+" //create the \"Undo\" ToolButton and its SimpleAction\n"
+" let undoAction = new Gio.SimpleAction({ name: 'undo'});\n"
+" undoAction.connect('activate', Lang.bind (this,\n"
+" function() {\n"
+" this._undoCB();\n"
+" }));\n"
+" this._window.add_action(undoAction);//note this action is added to the window\n"
+"\n"
+" this._undoButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO);\n"
+" this._undoButton.is_important = true;\n"
+" this._toolbar.add(this._undoButton);\n"
+" this._undoButton.show();\n"
+" this._undoButton.action_name = \"win.undo\";\n"
+"\n"
+" //create the \"Fullscreen\" ToolButton and its SimpleAction\n"
+" let fullscreenToggleAction = new Gio.SimpleAction ({ name: 'fullscreenToggle' });\n"
+" fullscreenToggleAction.connect ('activate', Lang.bind (this,\n"
+" function () {\n"
+" this._fullscreenToggleCB();\n"
+" }));\n"
+" this._window.add_action(fullscreenToggleAction);\n"
+"\n"
+" this._fullscreenButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_FULLSCREEN);\n"
+" this._fullscreenButton.is_important = true;\n"
+" this._toolbar.add(this._fullscreenButton);\n"
+" this._fullscreenButton.show();\n"
+" this._fullscreenButton.action_name = \"win.fullscreenToggle\";\n"
+"\n"
+" //create the \"leaveFullscreen\" ToolButton, and set the action name to \"win.fullscreenToggle\"\n"
+" this._leaveFullscreenButton = new Gtk.ToolButton.new_from_stock(Gtk.STOCK_LEAVE_FULLSCREEN);\n"
+" this._leaveFullscreenButton.is_important = true;\n"
+" this._toolbar.add(this._leaveFullscreenButton);\n"
+" this._leaveFullscreenButton.action_name = \"win.fullscreenToggle\";\n"
+" },\n"
+"\n"
+" _initMenus: function () {\n"
+" let menu = new Gio.Menu();\n"
+" menu.append(\"New\", 'app.new');\n"
+" menu.append(\"Open\", 'app.open');\n"
+" menu.append(\"Quit\", 'app.quit');\n"
+"\n"
+" this.application.set_app_menu(menu);\n"
+"\n"
+" let quitAction = new Gio.SimpleAction({name: 'quit' });\n"
+" quitAction.connect('activate', Lang.bind(this,\n"
+" function() {\n"
+" this._window.destroy();\n"
+" }));\n"
+" this.application.add_action(quitAction);\n"
+" },\n"
+"\n"
+" _newCB: function() {\n"
+" print(\"You clicked 'New'.\");\n"
+" },\n"
+"\n"
+" _openCB: function() {\n"
+" print(\"You clicked 'Open'.\");\n"
+" },\n"
+"\n"
+" _undoCB:function () {\n"
+" print (\"You clicked 'Undo'.\");\n"
+" },\n"
+"\n"
+" _fullscreenToggleCB: function() {\n"
+" if ((this._window.get_window().get_state() & Gdk.WindowState.FULLSCREEN) != 0 ) {\n"
+" this._window.unfullscreen();\n"
+" this._leaveFullscreenButton.hide();\n"
+" this._fullscreenButton.show();\n"
+" }\n"
+" else {\n"
+" this._window.fullscreen();\n"
+" this._fullscreenButton.hide();\n"
+" this._leaveFullscreenButton.show();\n"
+" }\n"
+" }\n"
+"});\n"
+"\n"
+"//run the application\n"
+"let app = new Application();\n"
+"app.application.run(ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/toolbar.js.page:31
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Window.html"
+"\">Gtk.Window</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Window.html"
+"\">Gtk.Window</link>"
+
+#. (itstool) path: item/p
+#: C/toolbar.js.page:32
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Toolbar.html"
+"\">Gtk.Toolbar</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Toolbar.html"
+"\">Gtk.Toolbar</link>"
+
+#. (itstool) path: item/p
+#: C/toolbar.js.page:33
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ToolButton."
+"html\">Gtk.ToolButton</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ToolButton."
+"html\">Gtk.ToolButton</link>"
+
+#. (itstool) path: item/p
+#: C/toolbar.js.page:34
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.html\">Gtk "
+"Stock items</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.html"
+"\">Elementos del almacén de GTK</link>"
+
+#. (itstool) path: item/p
+#: C/toolbar.js.page:35
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gdk.WindowState."
+"html\">Gdk.WindowState</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gdk.WindowState."
+"html\">Gdk.WindowState</link>"
+
+#. (itstool) path: info/title
+#: C/toolbar.py.page:8
+msgctxt "text"
+msgid "Toolbar (Python)"
+msgstr "Toolbar (Python)"
+
+#. (itstool) path: info/desc
+#: C/toolbar.py.page:20 C/toolbar_builder.py.page:33
+msgid "A bar of buttons and other widgets"
+msgstr "Una barra de botones y otros widgets"
+
+#. (itstool) path: page/p
+#: C/toolbar.py.page:26
+msgid "An example of toolbar with buttons (from stock icons)."
+msgstr ""
+"Un ejemplo de barra de herramientas con botones (con iconos del almacén)."
+
+#. (itstool) path: section/code
+#: C/toolbar.py.page:33
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gdk\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Toolbar Example\", application=app)\n"
+" self.set_default_size(400, 200)\n"
+"\n"
+" # a grid to attach the toolbar\n"
+" grid = Gtk.Grid()\n"
+"\n"
+" # a toolbar created in the method create_toolbar (see below)\n"
+" toolbar = self.create_toolbar()\n"
+" # with extra horizontal space\n"
+" toolbar.set_hexpand(True)\n"
+" # show the toolbar\n"
+" toolbar.show()\n"
+"\n"
+" # attach the toolbar to the grid\n"
+" grid.attach(toolbar, 0, 0, 1, 1)\n"
+"\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" # create the actions that control the window and connect their signal to a\n"
+" # callback method (see below):\n"
+"\n"
+" # undo\n"
+" undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
+" undo_action.connect(\"activate\", self.undo_callback)\n"
+" self.add_action(undo_action)\n"
+"\n"
+" # fullscreen\n"
+" fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
+" fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
+" self.add_action(fullscreen_action)\n"
+"\n"
+" # a method to create the toolbar\n"
+" def create_toolbar(self):\n"
+" # a toolbar\n"
+" toolbar = Gtk.Toolbar()\n"
+"\n"
+" # which is the primary toolbar of the application\n"
+" toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)\n"
+"\n"
+" # create a button for the \"new\" action, with a stock image\n"
+" new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)\n"
+" # label is shown\n"
+" new_button.set_is_important(True)\n"
+" # insert the button at position in the toolbar\n"
+" toolbar.insert(new_button, 0)\n"
+" # show the button\n"
+" new_button.show()\n"
+" # set the name of the action associated with the button.\n"
+" # The action controls the application (app)\n"
+" new_button.set_action_name(\"app.new\")\n"
+"\n"
+" # button for the \"open\" action\n"
+" open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)\n"
+" open_button.set_is_important(True)\n"
+" toolbar.insert(open_button, 1)\n"
+" open_button.show()\n"
+" open_button.set_action_name(\"app.open\")\n"
+"\n"
+" # button for the \"undo\" action\n"
+" undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO)\n"
+" undo_button.set_is_important(True)\n"
+" toolbar.insert(undo_button, 2)\n"
+" undo_button.show()\n"
+" undo_button.set_action_name(\"win.undo\")\n"
+"\n"
+" # button for the \"fullscreen/leave fullscreen\" action\n"
+" self.fullscreen_button = Gtk.ToolButton.new_from_stock(\n"
+" Gtk.STOCK_FULLSCREEN)\n"
+" self.fullscreen_button.set_is_important(True)\n"
+" toolbar.insert(self.fullscreen_button, 3)\n"
+" self.fullscreen_button.set_action_name(\"win.fullscreen\")\n"
+"\n"
+" # return the complete toolbar\n"
+" return toolbar\n"
+"\n"
+" # callback method for undo\n"
+" def undo_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Undo\\\".\")\n"
+"\n"
+" # callback method for fullscreen / leave fullscreen\n"
+" def fullscreen_callback(self, action, parameter):\n"
+" # check if the state is the same as Gdk.WindowState.FULLSCREEN, which\n"
+" # is a bit flag\n"
+" is_fullscreen = self.get_window().get_state(\n"
+" ) & Gdk.WindowState.FULLSCREEN != 0\n"
+" if not is_fullscreen:\n"
+" self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN)\n"
+" self.fullscreen()\n"
+" else:\n"
+" self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN)\n"
+" self.unfullscreen()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # create the actions that control the window and connect their signal to a\n"
+" # callback method (see below):\n"
+"\n"
+" # new\n"
+" new_action = Gio.SimpleAction.new(\"new\", None)\n"
+" new_action.connect(\"activate\", self.new_callback)\n"
+" app.add_action(new_action)\n"
+"\n"
+" # open\n"
+" open_action = Gio.SimpleAction.new(\"open\", None)\n"
+" open_action.connect(\"activate\", self.open_callback)\n"
+" app.add_action(open_action)\n"
+"\n"
+" # callback method for new\n"
+" def new_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"New\\\".\")\n"
+"\n"
+" # callback method for open\n"
+" def open_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Open\\\".\")\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gdk\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Toolbar Example\", application=app)\n"
+" self.set_default_size(400, 200)\n"
+"\n"
+" # a grid to attach the toolbar\n"
+" grid = Gtk.Grid()\n"
+"\n"
+" # a toolbar created in the method create_toolbar (see below)\n"
+" toolbar = self.create_toolbar()\n"
+" # with extra horizontal space\n"
+" toolbar.set_hexpand(True)\n"
+" # show the toolbar\n"
+" toolbar.show()\n"
+"\n"
+" # attach the toolbar to the grid\n"
+" grid.attach(toolbar, 0, 0, 1, 1)\n"
+"\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" # create the actions that control the window and connect their signal to a\n"
+" # callback method (see below):\n"
+"\n"
+" # undo\n"
+" undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
+" undo_action.connect(\"activate\", self.undo_callback)\n"
+" self.add_action(undo_action)\n"
+"\n"
+" # fullscreen\n"
+" fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
+" fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
+" self.add_action(fullscreen_action)\n"
+"\n"
+" # a method to create the toolbar\n"
+" def create_toolbar(self):\n"
+" # a toolbar\n"
+" toolbar = Gtk.Toolbar()\n"
+"\n"
+" # which is the primary toolbar of the application\n"
+" toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)\n"
+"\n"
+" # create a button for the \"new\" action, with a stock image\n"
+" new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)\n"
+" # label is shown\n"
+" new_button.set_is_important(True)\n"
+" # insert the button at position in the toolbar\n"
+" toolbar.insert(new_button, 0)\n"
+" # show the button\n"
+" new_button.show()\n"
+" # set the name of the action associated with the button.\n"
+" # The action controls the application (app)\n"
+" new_button.set_action_name(\"app.new\")\n"
+"\n"
+" # button for the \"open\" action\n"
+" open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)\n"
+" open_button.set_is_important(True)\n"
+" toolbar.insert(open_button, 1)\n"
+" open_button.show()\n"
+" open_button.set_action_name(\"app.open\")\n"
+"\n"
+" # button for the \"undo\" action\n"
+" undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO)\n"
+" undo_button.set_is_important(True)\n"
+" toolbar.insert(undo_button, 2)\n"
+" undo_button.show()\n"
+" undo_button.set_action_name(\"win.undo\")\n"
+"\n"
+" # button for the \"fullscreen/leave fullscreen\" action\n"
+" self.fullscreen_button = Gtk.ToolButton.new_from_stock(\n"
+" Gtk.STOCK_FULLSCREEN)\n"
+" self.fullscreen_button.set_is_important(True)\n"
+" toolbar.insert(self.fullscreen_button, 3)\n"
+" self.fullscreen_button.set_action_name(\"win.fullscreen\")\n"
+"\n"
+" # return the complete toolbar\n"
+" return toolbar\n"
+"\n"
+" # callback method for undo\n"
+" def undo_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Undo\\\".\")\n"
+"\n"
+" # callback method for fullscreen / leave fullscreen\n"
+" def fullscreen_callback(self, action, parameter):\n"
+" # check if the state is the same as Gdk.WindowState.FULLSCREEN, which\n"
+" # is a bit flag\n"
+" is_fullscreen = self.get_window().get_state(\n"
+" ) & Gdk.WindowState.FULLSCREEN != 0\n"
+" if not is_fullscreen:\n"
+" self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN)\n"
+" self.fullscreen()\n"
+" else:\n"
+" self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN)\n"
+" self.unfullscreen()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # create the actions that control the window and connect their signal to a\n"
+" # callback method (see below):\n"
+"\n"
+" # new\n"
+" new_action = Gio.SimpleAction.new(\"new\", None)\n"
+" new_action.connect(\"activate\", self.new_callback)\n"
+" app.add_action(new_action)\n"
+"\n"
+" # open\n"
+" open_action = Gio.SimpleAction.new(\"open\", None)\n"
+" open_action.connect(\"activate\", self.open_callback)\n"
+" app.add_action(open_action)\n"
+"\n"
+" # callback method for new\n"
+" def new_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"New\\\".\")\n"
+"\n"
+" # callback method for open\n"
+" def open_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Open\\\".\")\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/toolbar.py.page:37
+msgid "Useful methods for a Toolbar widget"
+msgstr "Métodos útiles para un widget de barra de herramientas"
+
+#. (itstool) path: section/p
+#: C/toolbar.py.page:38
+msgid ""
+"In line 32 the signal <code>\"activate\"</code> from the action "
+"<code>undo_action</code> is connected to the callback function "
+"<code>undo_callback()</code> using <code><var>action</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 32, la señal <code>«activate»</code> de la acción "
+"<code>undo_action</code> se conecta a la función de retorno de llamada "
+"<code>undo_callback()</code> usando <code><var>action</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
+"detallada."
+
+#. (itstool) path: item/p
+#: C/toolbar.py.page:41
+msgid ""
+"Use <code>insert(tool_item, position)</code> to insert the <code>tool_item</"
+"code> at <code>position</code>. If <code>position</code> is negative, the "
+"item is appended at the end of the toolbar."
+msgstr ""
+"Use <code>insert(tool_item, position)</code> para insertar el "
+"<code>tool_item</code> en <code>position</code>. Si <code>position</code> es "
+"negativo, el elemento se añade al final de la barra de herramientas."
+
+#. (itstool) path: item/p
+#: C/toolbar.py.page:42
+msgid ""
+"<code>get_item_index(tool_item)</code> retrieves the position of "
+"<code>tool_item</code> on the toolbar."
+msgstr ""
+"<code>get_item_index(tool_item)</code> obtiene la posición de "
+"<code>tool_item</code> en la barra de herramientas."
+
+#. (itstool) path: item/p
+#: C/toolbar.py.page:43
+msgid ""
+"<code>get_n_items()</code> returns the number of items on the toolbar; "
+"<code>get_nth_item(position)</code> returns the item in position "
+"<code>position</code>."
+msgstr ""
+"<code>get_n_items()</code> devuelve el número de elementos en la barra de "
+"herramientas; <code>get_nth_item(position)</code> devuelve el elemento en la "
+"posición <code>position</code>."
+
+#. (itstool) path: item/p
+#: C/toolbar.py.page:44
+msgid ""
+"If the toolbar does not have room for all the menu items, and "
+"<code>set_show_arrow(True)</code>, the items that do not have room are shown "
+"through an overflow menu."
+msgstr ""
+"Si la barra de herramientas no tiene espacio para todos los elementos del "
+"menú, y <code>set_show_arrow(True)</code>, los elementos que no entran se "
+"muestran a través de un menú flotante."
+
+#. (itstool) path: item/p
+#: C/toolbar.py.page:45
+msgid ""
+"<code>set_icon_size(icon_size)</code> sets the size of icons in the toolbar; "
+"<code>icon_size</code> can be one of <code>Gtk.IconSize.INVALID, Gtk."
+"IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk.IconSize.LARGE_TOOLBAR, Gtk."
+"IconSize.BUTTON, Gtk.IconSize.DND, Gtk.IconSize.DIALOG</code>. This should "
+"be used only for special-purpose toolbars, normal application toolbars "
+"should respect user preferences for the size of icons. "
+"<code>unset_icon_size()</code> unsets the preferences set with "
+"<code>set_icon_size(icon_size)</code>, so that user preferences are used to "
+"determine the icon size."
+msgstr ""
+"<code>set_icon_size(icon_size)</code> establece el tamaño de los iconos en "
+"la barra de herramientas; <code>icon_size</code> puede ser uno de <code>Gtk."
+"IconSize.INVALID, Gtk.IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk."
+"IconSize.LARGE_TOOLBAR, Gtk.IconSize.BUTTON, Gtk.IconSize.DND, Gtk.IconSize."
+"DIALOG</code>. Esto solo debe usarse para barras de herramientas con "
+"propósitos especiales, las barras de herramientas de aplicaciones normales "
+"deben respetar las preferencias del usuario para el tamaño de los iconos. "
+"<code>unset_icon_size()</code> restablece las preferencias establecidas con "
+"<code>set_icon_size(icon_size)</code>, para que las preferencias de usuario "
+"se usen para determinar el tamaño de los iconos."
+
+#. (itstool) path: item/p
+#: C/toolbar.py.page:46
+msgid ""
+"<code>set_style(style)</code>, where <code>style</code> is one of <code>Gtk."
+"ToolbarStyle.ICONS, Gtk.ToolbarStyle.TEXT, Gtk.ToolbarStyle.BOTH, Gtk."
+"ToolbarStyle.BOTH_HORIZ</code>, sets if the toolbar shows only icons, only "
+"text, or both (vertically stacked or alongside each other). To let user "
+"preferences determine the toolbar style, and unset a toolbar style so set, "
+"use <code>unset_style()</code>."
+msgstr ""
+"<code>set_style(style)</code>, donde <code>style</code> es uno de <code>Gtk."
+"ToolbarStyle.ICONS, Gtk.ToolbarStyle.TEXT, Gtk.ToolbarStyle.BOTH, Gtk."
+"ToolbarStyle.BOTH_HORIZ</code>, determina si la barra de herramientas "
+"muestra solo iconos, solo texto, o ambos (apilados verticalmente o uno al "
+"lado de otro). Para dejar que las preferencias del usuario determinen el "
+"estilo de la barra de herramientas, y restablecer el estilo de barra de "
+"herramientas, use <code>unset_style()</code>."
+
+#. (itstool) path: item/p
+#: C/toolbar.py.page:55
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolbar.html"
+"\">GtkToolbar</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolbar.html"
+"\">GtkToolbar</link>"
+
+#. (itstool) path: item/p
+#: C/toolbar.py.page:56
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolButton.html"
+"\">GtkToolButton</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolButton.html"
+"\">GtkToolButton</link>"
+
+#. (itstool) path: item/p
+#: C/toolbar.py.page:57
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolItem.html"
+"\">GtkToolItem</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkToolItem.html"
+"\">GtkToolItem</link>"
+
+#. (itstool) path: item/p
+#: C/toolbar.py.page:59
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkActionable.html"
+"\">GtkActionable</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkActionable.html"
+"\">GtkActionable</link>"
+
+#. (itstool) path: item/p
+#: C/toolbar.py.page:61 C/toolbar_builder.py.page:199
+msgid ""
+"<link href=\"http://developer.gnome.org/gdk3/unstable/gdk3-Event-Structures."
+"html#GdkEventWindowState\">Event Structures</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gdk3/unstable/gdk3-Event-Structures."
+"html#GdkEventWindowState\">Estructuras de eventos</link>"
+
+#. (itstool) path: info/title
+#: C/toolbar.vala.page:8
+msgctxt "text"
+msgid "Toolbar (Vala)"
+msgstr "Barra de herramientas (Vala)"
+
+#. (itstool) path: page/code
+#: C/toolbar.vala.page:28
+#, no-wrap
+msgid ""
+"/* This is the Window */\n"
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Instance variables belonging to the window */\n"
+"\tGtk.Toolbar toolbar;\n"
+"\tGtk.ToolButton new_button;\n"
+"\tGtk.ToolButton open_button;\n"
+"\tGtk.ToolButton undo_button;\n"
+"\tGtk.ToolButton fullscreen_button;\n"
+"\tGtk.ToolButton leave_fullscreen_button;\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Toolbar Example\");\n"
+"\n"
+"\t\tthis.set_default_size (400, 200);\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tthis.add (grid);\n"
+"\t\tgrid.show ();\n"
+"\n"
+"\t\tcreate_toolbar ();\n"
+"\t\ttoolbar.set_hexpand (true);\n"
+"\t\tgrid.attach (toolbar, 0, 0, 1, 1);\n"
+"\t\ttoolbar.show ();\n"
+"\n"
+"\t\t/* create the \"undo\" window action action */\n"
+"\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
+"\t\tundo_action.activate.connect (undo_callback);\n"
+"\t\tthis.add_action (undo_action);\n"
+"\n"
+"\t\t/* create the \"fullscreen\" window action */\n"
+"\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
+"\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
+"\t\tthis.add_action (fullscreen_action);\n"
+"\t}\n"
+"\n"
+"\t/* This function creates the toolbar, its ToolButtons,\n"
+"\t * and assigns the actions names to the ToolButtons.*/\n"
+"\tvoid create_toolbar () {\n"
+"\t\ttoolbar = new Gtk.Toolbar ();\n"
+"\t\ttoolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+"\t\tnew_button = new Gtk.ToolButton.from_stock (Gtk.Stock.NEW);\n"
+"\t\tnew_button.is_important = true; //decides whether to show the label\n"
+"\t\ttoolbar.add (new_button);\n"
+"\t\tnew_button.show ();\n"
+"\t\tnew_button.action_name = \"app.new\";\n"
+"\n"
+"\t\topen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.OPEN);\n"
+"\t\topen_button.is_important = true;\n"
+"\t\ttoolbar.add (open_button);\n"
+"\t\topen_button.show ();\n"
+"\t\topen_button.action_name = \"app.open\";\n"
+"\n"
+"\t\tundo_button = new Gtk.ToolButton.from_stock (Gtk.Stock.UNDO);\n"
+"\t\tundo_button.is_important = true;\n"
+"\t\ttoolbar.add (undo_button);\n"
+"\t\tundo_button.show ();\n"
+"\t\tundo_button.action_name = \"win.undo\";\n"
+"\n"
+"\t\tfullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.FULLSCREEN);\n"
+"\t\tfullscreen_button.is_important = true;\n"
+"\t\ttoolbar.add (fullscreen_button);\n"
+"\t\tfullscreen_button.show ();\n"
+"\t\tfullscreen_button.action_name = \"win.fullscreen\";\n"
+"\n"
+"\t\tleave_fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.LEAVE_FULLSCREEN)\n"
+";\n"
+"\t\tleave_fullscreen_button.is_important = true;\n"
+"\t\ttoolbar.add (leave_fullscreen_button);\n"
+"\n"
+"\t\tleave_fullscreen_button.action_name = \"win.fullscreen\";\n"
+"\t}\n"
+"\n"
+"\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n"
+"\t\t\tthis.unfullscreen ();\n"
+"\t\t\tleave_fullscreen_button.hide ();\n"
+"\t\t\tfullscreen_button.show ();\n"
+"\t\t}\n"
+"\t\telse {\n"
+"\t\t\tthis.fullscreen ();\n"
+"\t\t\tfullscreen_button.hide ();\n"
+"\t\t\tleave_fullscreen_button.show ();\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application */\n"
+"class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\t/* Create the \"new\" action and add it to the app*/\n"
+"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
+"\t\tnew_action.activate.connect (new_callback);\n"
+"\t\tthis.add_action (new_action);\n"
+"\n"
+"\t\t/* Create the \"open\" action, and add it to the app */\n"
+"\t\tvar open_action = new SimpleAction (\"open\", null);\n"
+"\t\topen_action.activate.connect (open_callback);\n"
+"\t\tthis.add_action (open_action);\n"
+"\n"
+"\t\t/* You could also add the action to the app menu\n"
+"\t\t * if you wanted to.\n"
+"\t\t */\n"
+"\t\t//var menu = new Menu ();\n"
+"\t\t//menu.append (\"New\", \"app.new\");\n"
+"\t\t//this.app_menu = menu;\n"
+"\t}\n"
+"\n"
+"\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates the application and runs it. */\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"/* This is the Window */\n"
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Instance variables belonging to the window */\n"
+"\tGtk.Toolbar toolbar;\n"
+"\tGtk.ToolButton new_button;\n"
+"\tGtk.ToolButton open_button;\n"
+"\tGtk.ToolButton undo_button;\n"
+"\tGtk.ToolButton fullscreen_button;\n"
+"\tGtk.ToolButton leave_fullscreen_button;\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Toolbar Example\");\n"
+"\n"
+"\t\tthis.set_default_size (400, 200);\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tthis.add (grid);\n"
+"\t\tgrid.show ();\n"
+"\n"
+"\t\tcreate_toolbar ();\n"
+"\t\ttoolbar.set_hexpand (true);\n"
+"\t\tgrid.attach (toolbar, 0, 0, 1, 1);\n"
+"\t\ttoolbar.show ();\n"
+"\n"
+"\t\t/* create the \"undo\" window action action */\n"
+"\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
+"\t\tundo_action.activate.connect (undo_callback);\n"
+"\t\tthis.add_action (undo_action);\n"
+"\n"
+"\t\t/* create the \"fullscreen\" window action */\n"
+"\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
+"\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
+"\t\tthis.add_action (fullscreen_action);\n"
+"\t}\n"
+"\n"
+"\t/* This function creates the toolbar, its ToolButtons,\n"
+"\t * and assigns the actions names to the ToolButtons.*/\n"
+"\tvoid create_toolbar () {\n"
+"\t\ttoolbar = new Gtk.Toolbar ();\n"
+"\t\ttoolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+"\t\tnew_button = new Gtk.ToolButton.from_stock (Gtk.Stock.NEW);\n"
+"\t\tnew_button.is_important = true; //decides whether to show the label\n"
+"\t\ttoolbar.add (new_button);\n"
+"\t\tnew_button.show ();\n"
+"\t\tnew_button.action_name = \"app.new\";\n"
+"\n"
+"\t\topen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.OPEN);\n"
+"\t\topen_button.is_important = true;\n"
+"\t\ttoolbar.add (open_button);\n"
+"\t\topen_button.show ();\n"
+"\t\topen_button.action_name = \"app.open\";\n"
+"\n"
+"\t\tundo_button = new Gtk.ToolButton.from_stock (Gtk.Stock.UNDO);\n"
+"\t\tundo_button.is_important = true;\n"
+"\t\ttoolbar.add (undo_button);\n"
+"\t\tundo_button.show ();\n"
+"\t\tundo_button.action_name = \"win.undo\";\n"
+"\n"
+"\t\tfullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.FULLSCREEN);\n"
+"\t\tfullscreen_button.is_important = true;\n"
+"\t\ttoolbar.add (fullscreen_button);\n"
+"\t\tfullscreen_button.show ();\n"
+"\t\tfullscreen_button.action_name = \"win.fullscreen\";\n"
+"\n"
+"\t\tleave_fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.LEAVE_FULLSCREEN)\n"
+";\n"
+"\t\tleave_fullscreen_button.is_important = true;\n"
+"\t\ttoolbar.add (leave_fullscreen_button);\n"
+"\n"
+"\t\tleave_fullscreen_button.action_name = \"win.fullscreen\";\n"
+"\t}\n"
+"\n"
+"\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n"
+"\t\t\tthis.unfullscreen ();\n"
+"\t\t\tleave_fullscreen_button.hide ();\n"
+"\t\t\tfullscreen_button.show ();\n"
+"\t\t}\n"
+"\t\telse {\n"
+"\t\t\tthis.fullscreen ();\n"
+"\t\t\tfullscreen_button.hide ();\n"
+"\t\t\tleave_fullscreen_button.show ();\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application */\n"
+"class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\t/* Create the \"new\" action and add it to the app*/\n"
+"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
+"\t\tnew_action.activate.connect (new_callback);\n"
+"\t\tthis.add_action (new_action);\n"
+"\n"
+"\t\t/* Create the \"open\" action, and add it to the app */\n"
+"\t\tvar open_action = new SimpleAction (\"open\", null);\n"
+"\t\topen_action.activate.connect (open_callback);\n"
+"\t\tthis.add_action (open_action);\n"
+"\n"
+"\t\t/* You could also add the action to the app menu\n"
+"\t\t * if you wanted to.\n"
+"\t\t */\n"
+"\t\t//var menu = new Menu ();\n"
+"\t\t//menu.append (\"New\", \"app.new\");\n"
+"\t\t//this.app_menu = menu;\n"
+"\t}\n"
+"\n"
+"\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates the application and runs it. */\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/toolbar.vala.page:34 C/toolbar_builder.vala.page:151
+#: C/tooltip.vala.page:40
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Toolbar.html\">Gtk.Toolbar</"
+"link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Toolbar.html\">Gtk.Toolbar</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/toolbar.vala.page:35 C/toolbar_builder.vala.page:152
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ToolButton.html\">Gtk."
+"Toolbutton</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.ToolButton.html\">Gtk."
+"Toolbutton</link>"
+
+#. (itstool) path: item/p
+#: C/toolbar.vala.page:36 C/toolbar_builder.vala.page:153
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Stock.html\">Gtk.Stock</"
+"link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Stock.html\">Gtk.Stock</"
+"link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/toolbar_builder.py.page:50 C/toolbar_builder.vala.page:33
+msgctxt "_"
+msgid ""
+"external ref='media/glade_ui.png' md5='baea74fe213bc12ea934f64f6977215a'"
+msgstr ""
+"external ref='media/glade_ui.png' md5='baea74fe213bc12ea934f64f6977215a'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/toolbar_builder.py.page:56 C/toolbar_builder.vala.page:39
+msgctxt "_"
+msgid ""
+"external ref='media/glade_select_toolbar.png' "
+"md5='f7b5b224050b2e387eb04362fc99df00'"
+msgstr ""
+"external ref='media/glade_select_toolbar.png' "
+"md5='f7b5b224050b2e387eb04362fc99df00'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/toolbar_builder.py.page:62 C/toolbar_builder.vala.page:45
+msgctxt "_"
+msgid ""
+"external ref='media/glade_toolbar_general.png' "
+"md5='e31daba6e8a3e526aca89d5f1622edaa'"
+msgstr ""
+"external ref='media/glade_toolbar_general.png' "
+"md5='e31daba6e8a3e526aca89d5f1622edaa'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/toolbar_builder.py.page:68 C/toolbar_builder.vala.page:51
+msgctxt "_"
+msgid ""
+"external ref='media/glade_toolbar_common.png' "
+"md5='d5ec6cc0218ca98e195dbd033feb9ac5'"
+msgstr ""
+"external ref='media/glade_toolbar_common.png' "
+"md5='d5ec6cc0218ca98e195dbd033feb9ac5'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/toolbar_builder.py.page:74 C/toolbar_builder.vala.page:57
+msgctxt "_"
+msgid ""
+"external ref='media/glade_toolbar_edit.png' "
+"md5='feb1e2b7040d24a4d030f94cf07c81fd'"
+msgstr ""
+"external ref='media/glade_toolbar_edit.png' "
+"md5='feb1e2b7040d24a4d030f94cf07c81fd'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/toolbar_builder.py.page:133 C/toolbar_builder.vala.page:116
+msgctxt "_"
+msgid ""
+"external ref='media/glade_toolbar_editor.png' "
+"md5='8af65241e5ca47d5494a7b36640e6f1c'"
+msgstr ""
+"external ref='media/glade_toolbar_editor.png' "
+"md5='8af65241e5ca47d5494a7b36640e6f1c'"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/toolbar_builder.py.page:142 C/toolbar_builder.vala.page:125
+msgctxt "_"
+msgid ""
+"external ref='media/glade_visible_no.png' "
+"md5='dc6c025aa825f4d772fbd283d6330026'"
+msgstr ""
+"external ref='media/glade_visible_no.png' "
+"md5='dc6c025aa825f4d772fbd283d6330026'"
+
+#. (itstool) path: info/title
+#: C/toolbar_builder.py.page:8
+msgctxt "text"
+msgid "Toolbar created using Glade (Python)"
+msgstr "Barra de herramientas creada con Glade (Python)"
+
+#. (itstool) path: page/title
+#: C/toolbar_builder.py.page:36 C/toolbar_builder.vala.page:23
+msgid "Toolbar created using Glade"
+msgstr "Barra de herramientas creada con Glade"
+
+#. (itstool) path: page/p
+#: C/toolbar_builder.py.page:39
+msgid ""
+"This example is similar to <link xref=\"toolbar.py\"/>, except we use Glade "
+"to create the toolbar in an XML .ui file."
+msgstr ""
+"Este ejemplo es similar al de la <link xref=\"toolbar.py\"/>, excepto que se "
+"usa Glade para crear la barra de herramientas en un archivo .ui XML."
+
+#. (itstool) path: section/title
+#: C/toolbar_builder.py.page:44
+msgid "Creating the toolbar with Glade"
+msgstr "Crear la barra de herramientas con Glade"
+
+#. (itstool) path: section/p
+#. (itstool) path: page/p
+#: C/toolbar_builder.py.page:45 C/toolbar_builder.vala.page:28
+msgid ""
+"To create the toolbar using the <link href=\"http://glade.gnome.org/\">Glade "
+"Interface Designer</link>:"
+msgstr ""
+"Para crear la barra de herramientas usando el <link href=\"http://glade."
+"gnome.org/\">diseñador de interfaces Glade</link>:"
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:49 C/toolbar_builder.vala.page:32
+msgid "Open Glade, and save the file as <file>toolbar_builder.ui</file>"
+msgstr "Abra Glade y guarde el archivo como <file>toolbar_builder.ui</file>"
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:50 C/toolbar_builder.vala.page:33
+msgid ""
+"<media type=\"image\" src=\"media/glade_ui.png\" width=\"900\"> Screenshot "
+"of Glade ui </media>"
+msgstr ""
+"<media type=\"image\" src=\"media/glade_ui.png\" width=\"900\"> Captura de "
+"pantalla de la IU de Glade </media>"
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:55 C/toolbar_builder.vala.page:38
+msgid ""
+"Under <gui>Containers</gui> on the left hand side, right click on the "
+"toolbar icon and select <gui>Add widget as toplevel</gui>."
+msgstr ""
+"Bajo <gui>Contenedores</gui> en el lado izquierdo, pulse con el botón "
+"derecho en el icono de la barra de herramientas y seleccione <gui>Añadir "
+"widget como nivel superior</gui>."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:56 C/toolbar_builder.vala.page:39
+msgid ""
+"<media type=\"image\" src=\"media/glade_select_toolbar.png\"> Screenshot of "
+"toolbar icon in Glade ui </media>"
+msgstr ""
+"<media type=\"image\" src=\"media/glade_select_toolbar.png\"> Captura de "
+"pantalla del icono de la barra de herramientas en la IU de Glade </media>"
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:61 C/toolbar_builder.vala.page:44
+msgid ""
+"Under the <gui>General</gui> tab on the bottom right, change the <gui>Name</"
+"gui> to <input>toolbar</input> and <gui>Show Arrow</gui> to <gui>No</gui>."
+msgstr ""
+"Bajo la pestaña <gui>General</gui> en la parte inferior derecha, cambie el "
+"<gui>Nombre</gui> a <input>toolbar</input> y <gui>Mostrar flecha</gui> a "
+"<gui>No</gui>."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:62 C/toolbar_builder.vala.page:45
+msgid ""
+"<media type=\"image\" src=\"media/glade_toolbar_general.png\"> Screenshot of "
+"General tab </media>"
+msgstr ""
+"<media type=\"image\" src=\"media/glade_toolbar_general.png\"> Captura de "
+"pantalla de la pestaña «General» </media>"
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:67 C/toolbar_builder.vala.page:50
+msgid ""
+"Under the <gui>Common</gui> tab, set <gui>Horizontal Expand</gui> to "
+"<gui>Yes</gui>."
+msgstr ""
+"Bajo la pestaña <gui>Comunes</gui>, establezca <gui>Expansión horizontal</"
+"gui> a <gui>Sí</gui>."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:68 C/toolbar_builder.vala.page:51
+msgid ""
+"<media type=\"image\" src=\"media/glade_toolbar_common.png\"> Screenshot of "
+"Common tab </media>"
+msgstr ""
+"<media type=\"image\" src=\"media/glade_toolbar_common.png\"> Captura de "
+"pantalla de la pestaña «Común» </media>"
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:73 C/toolbar_builder.vala.page:56
+msgid ""
+"Right click on the toolbar in the top right and select <gui>Edit</gui>. The "
+"<gui>Tool Bar Editor</gui> window will appear."
+msgstr ""
+"Pulse el botón derecho sobre la barra de herramientas en la parte superior "
+"derecha y seleccione <gui>Editar</gui>. La ventana <gui>Editor de barras de "
+"herramientas</gui> aparecerá."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:74 C/toolbar_builder.vala.page:57
+msgid ""
+"<media type=\"image\" src=\"media/glade_toolbar_edit.png\"> Screenshot of "
+"where to right click to edit toolbar. </media>"
+msgstr ""
+"<media type=\"image\" src=\"media/glade_toolbar_edit.png\"> Captura de "
+"pantalla que muestra dónde pulsar el botón derecho para editar la barra de "
+"herramientas. </media>"
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:79 C/toolbar_builder.vala.page:62
+msgid ""
+"We want to add 5 ToolButtons: New, Open, Undo, Fullscreen and Leave "
+"Fullscreen. First, we will add the New ToolButton."
+msgstr ""
+"Se quieren añadir 5 «ToolButton»: «New», «Open», «Undo», «Fullscreen», y "
+"«Leave Fullscreen». Primero, se añadirá el «ToolButton» «New»."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:82 C/toolbar_builder.vala.page:65
+msgid "Under <gui>Hierarchy</gui> tab, click <gui>Add</gui>."
+msgstr "Bajo la pestaña <gui>Jerarquía</gui>, pulse <gui>Añadir</gui>."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:83 C/toolbar_builder.vala.page:66
+msgid "Change the name of the ToolItem to <input>new_button</input>."
+msgstr "Cambie el nombre del «ToolItem» a <input>new_button</input>."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:84 C/toolbar_builder.vala.page:67
+msgid ""
+"Scroll down and set <gui>Is important</gui> to <gui>Yes</gui>. This will "
+"cause the label of the ToolButton to be shown, when you view the toolbar."
+msgstr ""
+"Deslícese hacia abajo y establezca <gui>Es Importante</gui> a <gui>Sí</gui>. "
+"Esto hará que la etiqueta del «ToolButton» se muestre cuando vea la barra de "
+"herramientas."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:85 C/toolbar_builder.vala.page:68
+msgid "Enter the <gui>action name</gui>: <input>app.new</input>."
+msgstr "Introduzca el <gui>Nombre de la acción</gui>: <input>app.new</input>."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:86 C/toolbar_builder.vala.page:69
+msgid "Change the <gui>Label</gui> to <input>New</input>."
+msgstr "Cambie la <gui>Etiqueta</gui> a <input>New</input>."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:87 C/toolbar_builder.vala.page:70
+msgid ""
+"Select the <gui>New</gui> Stock Id from the drop down menu, or type "
+"<input>gtk-new</input>."
+msgstr ""
+"Seleccione el ID del inventario <gui>Nuevo</gui> desde el menú desplegable, "
+"o escriba <input>gtk-new</input>."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:89 C/toolbar_builder.vala.page:72
+msgid ""
+"Repeat the above steps for the remaining ToolButtons, with the following "
+"properties:"
+msgstr ""
+"Repita los pasos anteriores para los «ToolButton» restantes, con las "
+"siguientes propiedades:"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:96 C/toolbar_builder.vala.page:79
+msgid "Is important"
+msgstr "Es importante"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:97 C/toolbar_builder.vala.page:80
+msgid "Action name"
+msgstr "Nombre de la acción"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:99 C/toolbar_builder.vala.page:82
+msgid "Stock Id"
+msgstr "ID del inventario"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:104 C/toolbar_builder.vala.page:87
+msgid "open_button"
+msgstr "open_button"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:105 C/toolbar_builder.py.page:112
+#: C/toolbar_builder.py.page:119 C/toolbar_builder.py.page:126
+#: C/toolbar_builder.vala.page:88 C/toolbar_builder.vala.page:95
+#: C/toolbar_builder.vala.page:102 C/toolbar_builder.vala.page:109
+msgid "Yes"
+msgstr "Sí"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:106 C/toolbar_builder.vala.page:89
+msgid "app.open"
+msgstr "app.open"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:107 C/toolbar_builder.vala.page:90
+msgid "Open"
+msgstr "Open"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:108 C/toolbar_builder.vala.page:91
+msgid "gtk-open"
+msgstr "gtk-open"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:111 C/toolbar_builder.vala.page:94
+msgid "undo_button"
+msgstr "undo_button"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:113 C/toolbar_builder.vala.page:96
+msgid "win.undo"
+msgstr "win.undo"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:114 C/toolbar_builder.vala.page:97
+msgid "Undo"
+msgstr "Undo"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:115 C/toolbar_builder.vala.page:98
+msgid "gtk-undo"
+msgstr "gtk-undo"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:118 C/toolbar_builder.vala.page:101
+msgid "fullscreen_button"
+msgstr "fullscreen_button"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:120 C/toolbar_builder.py.page:127
+#: C/toolbar_builder.vala.page:103 C/toolbar_builder.vala.page:110
+msgid "win.fullscreen"
+msgstr "win.fullscreen"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:121 C/toolbar_builder.vala.page:104
+msgid "Fullscreen"
+msgstr "Fullscreen"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:122 C/toolbar_builder.vala.page:105
+msgid "gtk-fullscreen"
+msgstr "gtk-fullscreen"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:125 C/toolbar_builder.vala.page:108
+msgid "leave_fullscreen_button"
+msgstr "leave_fullscreen_button"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:128 C/toolbar_builder.vala.page:111
+msgid "Leave Fullscreen"
+msgstr "Leave Fullscreen"
+
+#. (itstool) path: td/p
+#: C/toolbar_builder.py.page:129 C/toolbar_builder.vala.page:112
+msgid "gtk-leave-fullscreen"
+msgstr "gtk-leave-fullscreen"
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:138 C/toolbar_builder.vala.page:121
+msgid "Close the <gui>Tool Bar Editor</gui>."
+msgstr "Cierre el <gui>Editor de la barra de herramientas</gui>."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:141
+msgid ""
+"When our program will first start, we do not want the <gui>Leave Fullscreen</"
+"gui> ToolButton to be visible, since the application will not be in "
+"fullscreen mode. You can set this in the <gui>Common</gui> tab, by clicking "
+"the <gui>Visible</gui> property to <gui>No</gui>. The ToolButton will still "
+"appear in the interface designer, but will behave correctly when the file is "
+"loaded into your program code. Note that the method <code>show_all()</code> "
+"would override this setting - so in the code we have to use <code>show()</"
+"code> separately on all the elements."
+msgstr ""
+"No se quiere que se vea el «ToolButton» <gui>Salir de pantalla completa</"
+"gui> cuando el programa se inicie por primera vez, dado que la aplicación no "
+"estará en modo pantalla completa. Puede establecer esto en la pestaña "
+"<gui>Comunes</gui>, pulsando <gui>No</gui> en la propiedad <gui>Visible</"
+"gui>. El «ToolButton» aparecerá de todos modos en el diseñador de "
+"interfaces, pero se comportará correctamente cuando se cargue el archivo en "
+"el código de su programa. Tenga en cuenta que el método <gui>show_all()</"
+"gui> anularía esta opción, por lo que en el código se tiene que usar "
+"<gui>show()</gui> en todos los elementos por separado."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:142 C/toolbar_builder.vala.page:125
+msgid ""
+"<media type=\"image\" src=\"media/glade_visible_no.png\"> Setting the "
+"visible property to No </media>"
+msgstr ""
+"<media type=\"image\" src=\"media/glade_visible_no.png\"> Establecer la "
+"propiedad «visible» a «No» </media>"
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:147 C/toolbar_builder.vala.page:130
+msgid "Save your work, and close Glade."
+msgstr "Guarde su trabajo y cierre Glade."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:150 C/toolbar_builder.vala.page:133
+msgid ""
+"The XML file created by Glade is shown below. This is the description of the "
+"toolbar. At the time of this writing, the option to add the class Gtk."
+"STYLE_CLASS_PRIMARY_TOOLBAR in the Glade Interface did not exist. We can "
+"manually add this to the XML file. To do this, add the following XML code at "
+"line 9 of <file>toolbar_builder.ui</file>:"
+msgstr ""
+"El archivo XML generado por Glade se muestra debajo. Este es la descripción "
+"de la barra de herramientas. En el momento en el que se escribe esto, la "
+"opción para añadir la clase «Gtk.STYLE_CLASS_PRIMARY_TOOLBAR» en el "
+"diseñador de interfaces Glade no existe. Se puede añadir manualmente al "
+"archivo XML. Para hacer esto, añada el siguiente código XML en la línea 9 de "
+"<file>toolbar_builder.ui</file>:"
+
+#. (itstool) path: item/code
+#: C/toolbar_builder.py.page:151 C/toolbar_builder.vala.page:134
+#, no-wrap
+msgid ""
+"\n"
+" <style>\n"
+" <class name=\"primary-toolbar\"/>\n"
+" </style>\n"
+" "
+msgstr ""
+"\n"
+" <style>\n"
+" <class name=\"primary-toolbar\"/>\n"
+" </style>\n"
+" "
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:156 C/toolbar_builder.vala.page:139
+msgid ""
+"If you do not add this, the program will still work fine. The resulting "
+"toolbar will however look slightly different then the screenshot at the top "
+"of this page."
+msgstr ""
+"Si no añade esto, el programa seguirá funcionando bien. La barra de "
+"herramientas resultante se verá, sin embargo, ligeramente distinta a la de "
+"la captura de pantalla en la parte superior de esta página."
+
+#. (itstool) path: section/code
+#. (itstool) path: page/code
+#: C/toolbar_builder.py.page:159 C/toolbar_builder.vala.page:142
+#, no-wrap
+msgid ""
+"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<interface>\n"
+" <!-- interface-requires gtk+ 3.0 -->\n"
+" <object class=\"GtkToolbar\" id=\"toolbar\">\n"
+" <property name=\"visible\">True</property>\n"
+" <property name=\"can_focus\">False</property>\n"
+" <property name=\"hexpand\">True</property>\n"
+" <property name=\"show_arrow\">False</property>\n"
+" <child>\n"
+" <object class=\"GtkToolButton\" id=\"new_button\">\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"visible\">True</property>\n"
+" <property name=\"can_focus\">False</property>\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"is_important\">True</property>\n"
+" <property name=\"action_name\">app.new</property>\n"
+" <property name=\"label\" translatable=\"yes\">New</property>\n"
+" <property name=\"use_underline\">True</property>\n"
+" <property name=\"stock_id\">gtk-new</property>\n"
+" </object>\n"
+" <packing>\n"
+" <property name=\"expand\">False</property>\n"
+" <property name=\"homogeneous\">True</property>\n"
+" </packing>\n"
+" </child>\n"
+" <child>\n"
+" <object class=\"GtkToolButton\" id=\"open_button\">\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"visible\">True</property>\n"
+" <property name=\"can_focus\">False</property>\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"is_important\">True</property>\n"
+" <property name=\"action_name\">app.open</property>\n"
+" <property name=\"label\" translatable=\"yes\">Open</property>\n"
+" <property name=\"use_underline\">True</property>\n"
+" <property name=\"stock_id\">gtk-open</property>\n"
+" </object>\n"
+" <packing>\n"
+" <property name=\"expand\">False</property>\n"
+" <property name=\"homogeneous\">True</property>\n"
+" </packing>\n"
+" </child>\n"
+" <child>\n"
+" <object class=\"GtkToolButton\" id=\"undo_button\">\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"visible\">True</property>\n"
+" <property name=\"can_focus\">False</property>\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"is_important\">True</property>\n"
+" <property name=\"action_name\">win.undo</property>\n"
+" <property name=\"label\" translatable=\"yes\">Undo</property>\n"
+" <property name=\"use_underline\">True</property>\n"
+" <property name=\"stock_id\">gtk-undo</property>\n"
+" </object>\n"
+" <packing>\n"
+" <property name=\"expand\">False</property>\n"
+" <property name=\"homogeneous\">True</property>\n"
+" </packing>\n"
+" </child>\n"
+" <child>\n"
+" <object class=\"GtkToolButton\" id=\"fullscreen_button\">\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"visible\">True</property>\n"
+" <property name=\"can_focus\">False</property>\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"is_important\">True</property>\n"
+" <property name=\"action_name\">win.fullscreen</property>\n"
+" <property name=\"label\" translatable=\"yes\">Fullscreen</property>\n"
+" <property name=\"use_underline\">True</property>\n"
+" <property name=\"stock_id\">gtk-fullscreen</property>\n"
+" </object>\n"
+" <packing>\n"
+" <property name=\"expand\">False</property>\n"
+" <property name=\"homogeneous\">True</property>\n"
+" </packing>\n"
+" </child>\n"
+" <child>\n"
+" <object class=\"GtkToolButton\" id=\"leave_fullscreen_button\">\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"can_focus\">False</property>\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"is_important\">True</property>\n"
+" <property name=\"action_name\">win.fullscreen</property>\n"
+" <property name=\"label\" translatable=\"yes\">Leave Fullscreen</property>\n"
+" <property name=\"use_underline\">True</property>\n"
+" <property name=\"stock_id\">gtk-leave-fullscreen</property>\n"
+" </object>\n"
+" <packing>\n"
+" <property name=\"expand\">False</property>\n"
+" <property name=\"homogeneous\">True</property>\n"
+" </packing>\n"
+" </child>\n"
+" </object>\n"
+"</interface>\n"
+msgstr ""
+"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<interface>\n"
+" <!-- interface-requires gtk+ 3.0 -->\n"
+" <object class=\"GtkToolbar\" id=\"toolbar\">\n"
+" <property name=\"visible\">True</property>\n"
+" <property name=\"can_focus\">False</property>\n"
+" <property name=\"hexpand\">True</property>\n"
+" <property name=\"show_arrow\">False</property>\n"
+" <child>\n"
+" <object class=\"GtkToolButton\" id=\"new_button\">\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"visible\">True</property>\n"
+" <property name=\"can_focus\">False</property>\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"is_important\">True</property>\n"
+" <property name=\"action_name\">app.new</property>\n"
+" <property name=\"label\" translatable=\"yes\">New</property>\n"
+" <property name=\"use_underline\">True</property>\n"
+" <property name=\"stock_id\">gtk-new</property>\n"
+" </object>\n"
+" <packing>\n"
+" <property name=\"expand\">False</property>\n"
+" <property name=\"homogeneous\">True</property>\n"
+" </packing>\n"
+" </child>\n"
+" <child>\n"
+" <object class=\"GtkToolButton\" id=\"open_button\">\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"visible\">True</property>\n"
+" <property name=\"can_focus\">False</property>\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"is_important\">True</property>\n"
+" <property name=\"action_name\">app.open</property>\n"
+" <property name=\"label\" translatable=\"yes\">Open</property>\n"
+" <property name=\"use_underline\">True</property>\n"
+" <property name=\"stock_id\">gtk-open</property>\n"
+" </object>\n"
+" <packing>\n"
+" <property name=\"expand\">False</property>\n"
+" <property name=\"homogeneous\">True</property>\n"
+" </packing>\n"
+" </child>\n"
+" <child>\n"
+" <object class=\"GtkToolButton\" id=\"undo_button\">\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"visible\">True</property>\n"
+" <property name=\"can_focus\">False</property>\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"is_important\">True</property>\n"
+" <property name=\"action_name\">win.undo</property>\n"
+" <property name=\"label\" translatable=\"yes\">Undo</property>\n"
+" <property name=\"use_underline\">True</property>\n"
+" <property name=\"stock_id\">gtk-undo</property>\n"
+" </object>\n"
+" <packing>\n"
+" <property name=\"expand\">False</property>\n"
+" <property name=\"homogeneous\">True</property>\n"
+" </packing>\n"
+" </child>\n"
+" <child>\n"
+" <object class=\"GtkToolButton\" id=\"fullscreen_button\">\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"visible\">True</property>\n"
+" <property name=\"can_focus\">False</property>\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"is_important\">True</property>\n"
+" <property name=\"action_name\">win.fullscreen</property>\n"
+" <property name=\"label\" translatable=\"yes\">Fullscreen</property>\n"
+" <property name=\"use_underline\">True</property>\n"
+" <property name=\"stock_id\">gtk-fullscreen</property>\n"
+" </object>\n"
+" <packing>\n"
+" <property name=\"expand\">False</property>\n"
+" <property name=\"homogeneous\">True</property>\n"
+" </packing>\n"
+" </child>\n"
+" <child>\n"
+" <object class=\"GtkToolButton\" id=\"leave_fullscreen_button\">\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"can_focus\">False</property>\n"
+" <property name=\"use_action_appearance\">False</property>\n"
+" <property name=\"is_important\">True</property>\n"
+" <property name=\"action_name\">win.fullscreen</property>\n"
+" <property name=\"label\" translatable=\"yes\">Leave Fullscreen</property>\n"
+" <property name=\"use_underline\">True</property>\n"
+" <property name=\"stock_id\">gtk-leave-fullscreen</property>\n"
+" </object>\n"
+" <packing>\n"
+" <property name=\"expand\">False</property>\n"
+" <property name=\"homogeneous\">True</property>\n"
+" </packing>\n"
+" </child>\n"
+" </object>\n"
+"</interface>\n"
+
+#. (itstool) path: section/p
+#. (itstool) path: page/p
+#: C/toolbar_builder.py.page:166 C/toolbar_builder.vala.page:144
+msgid ""
+"We now create the code below, which adds the toolbar from the file we just "
+"created."
+msgstr ""
+"Ahora se crea el código siguiente, que añade la barra de herramientas desde "
+"el archivo que se acaba de crear."
+
+#. (itstool) path: section/code
+#: C/toolbar_builder.py.page:167
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gdk\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Toolbar Example\", application=app)\n"
+" self.set_default_size(400, 200)\n"
+"\n"
+" # a grid to attach the toolbar (see below)\n"
+" grid = Gtk.Grid()\n"
+" self.add(grid)\n"
+" # we have to show the grid (and therefore the toolbar) with show(),\n"
+" # as show_all() would show also the buttons in the toolbar that we want to\n"
+" # be hidden (such as the leave_fullscreen button)\n"
+" grid.show()\n"
+"\n"
+" # a builder to add the UI designed with Glade to the grid:\n"
+" builder = Gtk.Builder()\n"
+" # get the file (if it is there)\n"
+" try:\n"
+" builder.add_from_file(\"toolbar_builder.ui\")\n"
+" except:\n"
+" print(\"file not found\")\n"
+" sys.exit()\n"
+" # and attach it to the grid\n"
+" grid.attach(builder.get_object(\"toolbar\"), 0, 0, 1, 1)\n"
+"\n"
+" # two buttons that will be used later in a method\n"
+" self.fullscreen_button = builder.get_object(\"fullscreen_button\")\n"
+" self.leave_fullscreen_button = builder.get_object(\n"
+" \"leave_fullscreen_button\")\n"
+"\n"
+" # create the actions that control the window, connect their signal to a\n"
+" # callback method (see below), add the action to the window:\n"
+"\n"
+" # undo\n"
+" undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
+" undo_action.connect(\"activate\", self.undo_callback)\n"
+" self.add_action(undo_action)\n"
+"\n"
+" # and fullscreen\n"
+" fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
+" fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
+" self.add_action(fullscreen_action)\n"
+"\n"
+" # callback for undo\n"
+" def undo_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Undo\\\".\")\n"
+"\n"
+" # callback for fullscreen\n"
+" def fullscreen_callback(self, action, parameter):\n"
+" # check if the state is the same as Gdk.WindowState.FULLSCREEN, which\n"
+" # is a bit flag\n"
+" is_fullscreen = self.get_window().get_state(\n"
+" ) & Gdk.WindowState.FULLSCREEN != 0\n"
+" if is_fullscreen:\n"
+" self.unfullscreen()\n"
+" self.leave_fullscreen_button.hide()\n"
+" self.fullscreen_button.show()\n"
+" else:\n"
+" self.fullscreen()\n"
+" self.fullscreen_button.hide()\n"
+" self.leave_fullscreen_button.show()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" # show the window - with show() not show_all() because that would show also\n"
+" # the leave_fullscreen button\n"
+" win.show()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # actions that control the application: create, connect their signal to a\n"
+" # callback method (see below), add the action to the application\n"
+"\n"
+" # new\n"
+" new_action = Gio.SimpleAction.new(\"new\", None)\n"
+" new_action.connect(\"activate\", self.new_callback)\n"
+" app.add_action(new_action)\n"
+"\n"
+" # open\n"
+" open_action = Gio.SimpleAction.new(\"open\", None)\n"
+" open_action.connect(\"activate\", self.open_callback)\n"
+" app.add_action(open_action)\n"
+"\n"
+" # callback for new\n"
+" def new_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"New\\\".\")\n"
+"\n"
+" # callback for open\n"
+" def open_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Open\\\".\")\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gdk\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Toolbar Example\", application=app)\n"
+" self.set_default_size(400, 200)\n"
+"\n"
+" # a grid to attach the toolbar (see below)\n"
+" grid = Gtk.Grid()\n"
+" self.add(grid)\n"
+" # we have to show the grid (and therefore the toolbar) with show(),\n"
+" # as show_all() would show also the buttons in the toolbar that we want to\n"
+" # be hidden (such as the leave_fullscreen button)\n"
+" grid.show()\n"
+"\n"
+" # a builder to add the UI designed with Glade to the grid:\n"
+" builder = Gtk.Builder()\n"
+" # get the file (if it is there)\n"
+" try:\n"
+" builder.add_from_file(\"toolbar_builder.ui\")\n"
+" except:\n"
+" print(\"file not found\")\n"
+" sys.exit()\n"
+" # and attach it to the grid\n"
+" grid.attach(builder.get_object(\"toolbar\"), 0, 0, 1, 1)\n"
+"\n"
+" # two buttons that will be used later in a method\n"
+" self.fullscreen_button = builder.get_object(\"fullscreen_button\")\n"
+" self.leave_fullscreen_button = builder.get_object(\n"
+" \"leave_fullscreen_button\")\n"
+"\n"
+" # create the actions that control the window, connect their signal to a\n"
+" # callback method (see below), add the action to the window:\n"
+"\n"
+" # undo\n"
+" undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
+" undo_action.connect(\"activate\", self.undo_callback)\n"
+" self.add_action(undo_action)\n"
+"\n"
+" # and fullscreen\n"
+" fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
+" fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
+" self.add_action(fullscreen_action)\n"
+"\n"
+" # callback for undo\n"
+" def undo_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Undo\\\".\")\n"
+"\n"
+" # callback for fullscreen\n"
+" def fullscreen_callback(self, action, parameter):\n"
+" # check if the state is the same as Gdk.WindowState.FULLSCREEN, which\n"
+" # is a bit flag\n"
+" is_fullscreen = self.get_window().get_state(\n"
+" ) & Gdk.WindowState.FULLSCREEN != 0\n"
+" if is_fullscreen:\n"
+" self.unfullscreen()\n"
+" self.leave_fullscreen_button.hide()\n"
+" self.fullscreen_button.show()\n"
+" else:\n"
+" self.fullscreen()\n"
+" self.fullscreen_button.hide()\n"
+" self.leave_fullscreen_button.show()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" # show the window - with show() not show_all() because that would show also\n"
+" # the leave_fullscreen button\n"
+" win.show()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" # actions that control the application: create, connect their signal to a\n"
+" # callback method (see below), add the action to the application\n"
+"\n"
+" # new\n"
+" new_action = Gio.SimpleAction.new(\"new\", None)\n"
+" new_action.connect(\"activate\", self.new_callback)\n"
+" app.add_action(new_action)\n"
+"\n"
+" # open\n"
+" open_action = Gio.SimpleAction.new(\"open\", None)\n"
+" open_action.connect(\"activate\", self.open_callback)\n"
+" app.add_action(open_action)\n"
+"\n"
+" # callback for new\n"
+" def new_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"New\\\".\")\n"
+"\n"
+" # callback for open\n"
+" def open_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Open\\\".\")\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/toolbar_builder.py.page:172
+msgid "Useful methods for Gtk.Builder"
+msgstr "Métodos útiles para Gtk.Builder"
+
+#. (itstool) path: section/p
+#: C/toolbar_builder.py.page:173
+msgid ""
+"For the useful methods for a Toolbar widget, see <link xref=\"toolbar.py\"/>"
+msgstr ""
+"Para ver los métodos útiles de un widget de barra de herramientas, consulte "
+"la <link xref=\"toolbar.py\"/>"
+
+#. (itstool) path: section/p
+#: C/toolbar_builder.py.page:175
+msgid "Gtk.Builder builds an interface from an XML UI definition."
+msgstr "Gtk.Builder construye una interfaz desde una definición UI XML."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:178
+msgid ""
+"<code>add_from_file(filename)</code> loads and parses the given file and "
+"merges it with the current contents of the Gtk.Builder."
+msgstr ""
+"<code>add_from_file(filename)</code> carga y procesa el archivo dado y lo "
+"une con el contenido actual del Gtk.Builder."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:179
+msgid ""
+"<code>add_from_string(string)</code> parses the given string and merges it "
+"with the current contents of the Gtk.Builder."
+msgstr ""
+"<code>add_from_string(string)</code> procesa la cadena dada y la une con el "
+"contenido actual del Gtk.Builder."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:180
+msgid ""
+"<code>add_objects_from_file(filename, object_ids)</code> is the same as "
+"<code>add_from_file()</code>, but it loads only the objects with the ids "
+"given in the <code>object_id</code>s list."
+msgstr ""
+"<code>add_objects_from_file(filename, object_ids)</code> es igual a "
+"<code>add_from_file()</code>, pero solo carga los objetos con los ID dados "
+"en la lista de <code>object_id</code>."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:181
+msgid ""
+"<code>add_objects_from_string(string, object_ids)</code> is the same as "
+"<code>add_from_string()</code>, but it loads only the objects with the ids "
+"given in the <code>object_id</code>s list."
+msgstr ""
+"<code>add_objects_from_string(string, object_ids)</code> es lo mismo que "
+"<code>add_from_string()</code>, pero sólo carga los objetos con los ID dados "
+"en la lista de <code>object_id</code>."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:182
+msgid ""
+"<code>get_object(object_id)</code> retrieves the widget with the id "
+"<code>object_id</code> from the loaded objects in the builder."
+msgstr ""
+"<code>get_object(object_id)</code> obtiene el widget con el ID "
+"<code>object_id</code> de los objetos cargados en el constructor."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:183
+msgid "<code>get_objects()</code> returns all loaded objects."
+msgstr "<code>get_objects()</code> devuelve todos los objetos cargados."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.py.page:184
+msgid ""
+"<code>connect_signals(handler_object)</code> connects the signals to the "
+"methods given in the <code>handler_object</code>. This can be any object "
+"which contains keys or attributes that are called like the signal handler "
+"names given in the interface description, e.g. a class or a dict. In line 39 "
+"the signal <code>\"activate\"</code> from the action <code>undo_action</"
+"code> is connected to the callback function <code>undo_callback()</code> "
+"using <code><var>action</var>.connect(<var>signal</var>, <var>callback "
+"function</var>)</code>. See <link xref=\"signals-callbacks.py\"/> for a more "
+"detailed explanation."
+msgstr ""
+"<code>connect_signals(handler_object)</code> conecta las señales a los "
+"métodos dados en el <code>handler_object</code>. Este puede ser cualquier "
+"objeto que contenga claves o atributos que se llamen como los nombres del "
+"manejador de señales dados en la descripción de la interfaz, por ejemplo una "
+"clase o un diccionario. En la línea 39 la señal <code>\"activate\"</code> de "
+"la acción <code>undo_action</code> se conecta a la función de retorno de "
+"llamada <code>undo_callback()</code> usando <code><var>action</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
+"detallada."
+
+#. (itstool) path: info/title
+#: C/toolbar_builder.vala.page:8
+msgctxt "text"
+msgid "Toolbar created using Glade (Vala)"
+msgstr "Barra de herramientas creada con Glade (Vala)"
+
+#. (itstool) path: page/p
+#: C/toolbar_builder.vala.page:26
+msgid ""
+"This example is similar to <link xref=\"toolbar.vala\"/>, except we use "
+"Glade to create the toolbar in an XML ui file."
+msgstr ""
+"Este ejemplo es similar a <link xref=\"toolbar.vala\"/>, excepto que se usa "
+"Glade para crear la barra de herramientas en un archivo ui de XML."
+
+#. (itstool) path: item/p
+#: C/toolbar_builder.vala.page:124
+msgid ""
+"When our program will first start, we don't want the <gui>Leave Fullscreen</"
+"gui> ToolButton to be visible, since the application will not be in "
+"fullscreen mode. You can set this in the <gui>Common</gui> tab, by clicking "
+"the <gui>Visible</gui> property to <gui>No</gui>. The ToolButton will still "
+"appear in the interface designer, but will behave correctly when the file is "
+"loaded into your program code."
+msgstr ""
+"No se quiere que se vea el «ToolButton» <gui>Leave Fullscreen</gui> cuando "
+"el programa se inicie por primera vez, dado que la aplicación no estará en "
+"modo a pantalla completa. Puede establecer esto en la pestaña <gui>Comunes</"
+"gui>, pulsando <gui>No</gui> en la propiedad <gui>Visible</gui>. El "
+"«ToolButton» aparecerá de todos modos en el diseñador de interfaces, pero se "
+"comportará correctamente cuando se cargue el archivo en el código de su "
+"programa."
+
+#. (itstool) path: page/code
+#: C/toolbar_builder.vala.page:145
+#, no-wrap
+msgid ""
+"/* This is the Window */\n"
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Declare these two ToolButtons, as we will get them\n"
+"\t * from the ui file (see lines 32 and 33), so we can\n"
+"\t * hide() and show() them as needed.*/\n"
+"\tGtk.ToolButton fullscreen_button;\n"
+"\tGtk.ToolButton leave_fullscreen_button;\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Toolbar Example\");\n"
+"\n"
+"\t\tthis.set_default_size (400, 200);\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tthis.add (grid);\n"
+"\t\tgrid.show ();\n"
+"\n"
+"\t\t/* add the toolbar from the ui file */\n"
+"\t\tvar builder = new Gtk.Builder ();\n"
+"\t\ttry {\n"
+"\t\t\tbuilder.add_from_file (\"toolbar_builder.ui\");\n"
+"\t\t}\n"
+"\t\t/* Handle the exception */\n"
+"\t\tcatch (Error e) {\n"
+"\t\t\terror (\"Unable to load file: %s\", e.message);\n"
+"\t\t}\n"
+"\n"
+"\t\tgrid.attach (builder.get_object (\"toolbar\") as Gtk.Toolbar, 0, 0, 1, 1);\n"
+"\n"
+"\t\t/* get these objects from the ui file so we can toggle between them */\n"
+"\t\tfullscreen_button = builder.get_object (\"fullscreen_button\") as Gtk.ToolButton;\n"
+"\t\tleave_fullscreen_button = builder.get_object (\"leave_fullscreen_button\") as Gtk.ToolButton;\n"
+"\n"
+"\t\t/* create the \"undo\" window action action */\n"
+"\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
+"\t\tundo_action.activate.connect (undo_callback);\n"
+"\t\tthis.add_action (undo_action);\n"
+"\n"
+"\t\t/* create the \"fullscreen\" window action */\n"
+"\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
+"\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
+"\t\tthis.add_action (fullscreen_action);\n"
+"\t}\n"
+"\n"
+"\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n"
+"\t\t\tthis.unfullscreen ();\n"
+"\t\t\tleave_fullscreen_button.hide ();\n"
+"\t\t\tfullscreen_button.show ();\n"
+"\t\t}\n"
+"\t\telse {\n"
+"\t\t\tthis.fullscreen ();\n"
+"\t\t\tfullscreen_button.hide ();\n"
+"\t\t\tleave_fullscreen_button.show ();\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application */\n"
+"class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\t/* Create the \"new\" action and add it to the app*/\n"
+"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
+"\t\tnew_action.activate.connect (new_callback);\n"
+"\t\tthis.add_action (new_action);\n"
+"\n"
+"\t\t/* Create the \"open\" action, and add it to the app */\n"
+"\t\tvar open_action = new SimpleAction (\"open\", null);\n"
+"\t\topen_action.activate.connect (open_callback);\n"
+"\t\tthis.add_action (open_action);\n"
+"\n"
+"\t\t/* You could also add the action to the app menu\n"
+"\t\t * if you wanted to.\n"
+"\t\t */\n"
+"\t\t//var menu = new Menu ();\n"
+"\t\t//menu.append (\"New\", \"app.new\");\n"
+"\t\t//this.app_menu = menu;\n"
+"\t}\n"
+"\n"
+"\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates the application and runs it. */\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"/* This is the Window */\n"
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Declare these two ToolButtons, as we will get them\n"
+"\t * from the ui file (see lines 32 and 33), so we can\n"
+"\t * hide() and show() them as needed.*/\n"
+"\tGtk.ToolButton fullscreen_button;\n"
+"\tGtk.ToolButton leave_fullscreen_button;\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Toolbar Example\");\n"
+"\n"
+"\t\tthis.set_default_size (400, 200);\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tthis.add (grid);\n"
+"\t\tgrid.show ();\n"
+"\n"
+"\t\t/* add the toolbar from the ui file */\n"
+"\t\tvar builder = new Gtk.Builder ();\n"
+"\t\ttry {\n"
+"\t\t\tbuilder.add_from_file (\"toolbar_builder.ui\");\n"
+"\t\t}\n"
+"\t\t/* Handle the exception */\n"
+"\t\tcatch (Error e) {\n"
+"\t\t\terror (\"Unable to load file: %s\", e.message);\n"
+"\t\t}\n"
+"\n"
+"\t\tgrid.attach (builder.get_object (\"toolbar\") as Gtk.Toolbar, 0, 0, 1, 1);\n"
+"\n"
+"\t\t/* get these objects from the ui file so we can toggle between them */\n"
+"\t\tfullscreen_button = builder.get_object (\"fullscreen_button\") as Gtk.ToolButton;\n"
+"\t\tleave_fullscreen_button = builder.get_object (\"leave_fullscreen_button\") as Gtk.ToolButton;\n"
+"\n"
+"\t\t/* create the \"undo\" window action action */\n"
+"\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
+"\t\tundo_action.activate.connect (undo_callback);\n"
+"\t\tthis.add_action (undo_action);\n"
+"\n"
+"\t\t/* create the \"fullscreen\" window action */\n"
+"\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
+"\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
+"\t\tthis.add_action (fullscreen_action);\n"
+"\t}\n"
+"\n"
+"\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n"
+"\t\t\tthis.unfullscreen ();\n"
+"\t\t\tleave_fullscreen_button.hide ();\n"
+"\t\t\tfullscreen_button.show ();\n"
+"\t\t}\n"
+"\t\telse {\n"
+"\t\t\tthis.fullscreen ();\n"
+"\t\t\tfullscreen_button.hide ();\n"
+"\t\t\tleave_fullscreen_button.show ();\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application */\n"
+"class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\t/* Create the \"new\" action and add it to the app*/\n"
+"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
+"\t\tnew_action.activate.connect (new_callback);\n"
+"\t\tthis.add_action (new_action);\n"
+"\n"
+"\t\t/* Create the \"open\" action, and add it to the app */\n"
+"\t\tvar open_action = new SimpleAction (\"open\", null);\n"
+"\t\topen_action.activate.connect (open_callback);\n"
+"\t\tthis.add_action (open_action);\n"
+"\n"
+"\t\t/* You could also add the action to the app menu\n"
+"\t\t * if you wanted to.\n"
+"\t\t */\n"
+"\t\t//var menu = new Menu ();\n"
+"\t\t//menu.append (\"New\", \"app.new\");\n"
+"\t\t//this.app_menu = menu;\n"
+"\t}\n"
+"\n"
+"\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates the application and runs it. */\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/tooltip.c.page:23 C/tooltip.js.page:23 C/tooltip.py.page:24
+#: C/tooltip.vala.page:23
+msgctxt "_"
+msgid "external ref='media/tooltip.png' md5='41e35860a51e39cb48c71e57bb8fb1d0'"
+msgstr ""
+"external ref='media/tooltip.png' md5='41e35860a51e39cb48c71e57bb8fb1d0'"
+
+#. (itstool) path: info/title
+#: C/tooltip.c.page:8
+msgctxt "text"
+msgid "Tooltip (C)"
+msgstr "Tooltip (C)"
+
+#. (itstool) path: info/desc
+#: C/tooltip.c.page:19 C/tooltip.js.page:19 C/tooltip.py.page:20
+#: C/tooltip.vala.page:19
+msgid "Add tips to your widgets"
+msgstr "Añadir consejos a sus widgets"
+
+#. (itstool) path: page/title
+#: C/tooltip.c.page:22 C/tooltip.js.page:22 C/tooltip.py.page:23
+#: C/tooltip.vala.page:22
+msgid "Tooltip"
+msgstr "Consejo"
+
+#. (itstool) path: page/p
+#: C/tooltip.c.page:24 C/tooltip.js.page:24 C/tooltip.py.page:25
+#: C/tooltip.vala.page:24
+msgid "A toolbar with a tooltip (with an image) for a button."
+msgstr ""
+"Una barra de herramientas con un consejo (con una imagen) para un botón."
+
+#. (itstool) path: note/p
+#: C/tooltip.c.page:26
+msgid ""
+"This example builds on the <link xref=\"toolbar.c\">Toolbar</link> example."
+msgstr "Esto construye el ejemplo de <link xref=\"toolbar.c\">Toolbar</link>."
+
+#. (itstool) path: section/code
+#: C/tooltip.c.page:31
+#, no-wrap
+msgid ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"static gboolean \n"
+"undo_tooltip_callback (GtkStatusIcon *status_icon,\n"
+" gint x,\n"
+" gint y,\n"
+" gboolean keyboard_mode,\n"
+" GtkTooltip *tooltip,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* set the text for the tooltip */\n"
+" gtk_tooltip_set_text (tooltip, \"Undo your last action\");\n"
+" \n"
+" /* set an icon fot the tooltip */\n"
+" gtk_tooltip_set_icon_from_stock(tooltip, \"gtk-undo\", GTK_ICON_SIZE_MENU);\n"
+"\n"
+" /* show the tooltip */\n"
+" return TRUE;\n"
+"}\n"
+"\n"
+"\n"
+"static void\n"
+"undo_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"Undo\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *grid;\n"
+" GtkWidget *window;\n"
+" GtkWidget *toolbar;\n"
+"\n"
+" GtkToolItem *new_button;\n"
+" GtkToolItem *open_button;\n"
+" GtkToolItem *undo_button;\n"
+"\n"
+" GtkStyleContext *style_context;\n"
+"\n"
+" GSimpleAction *undo_action;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Toolbar with Tooltips Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n"
+"\n"
+" /* Here we begin to create the toolbar */\n"
+" toolbar = gtk_toolbar_new ();\n"
+"\n"
+" /* Set the toolbar to be the primary toolbar of the application */\n"
+" style_context = gtk_widget_get_style_context (toolbar);\n"
+" gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+" /* Create a button for the \"new\" action, with a stock image */\n"
+" new_button = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);\n"
+" gtk_tool_item_set_is_important (new_button, TRUE);\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), new_button, 0);\n"
+" gtk_widget_show (GTK_WIDGET (new_button));\n"
+"\n"
+" /* Set the action name for the \"new\" action. We use \"app.new\" to\n"
+" * indicate that the action controls the application.\n"
+" */\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (new_button), \"app.new\");\n"
+"\n"
+" /*******************************\n"
+" * Tooltip for the New ToolItem:\n"
+" * a tooltip with text\n"
+" *******************************/\n"
+" gtk_tool_item_set_tooltip_text (new_button, \"Create a new file\"); \n"
+"\n"
+" /* \"Open\" */\n"
+" open_button = gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);\n"
+" gtk_tool_item_set_is_important (open_button, TRUE);\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), open_button, 1);\n"
+" gtk_widget_show (GTK_WIDGET (open_button));\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (open_button), \"app.open\");\n"
+"\n"
+" /*******************************\n"
+" * Tooltip for the Open ToolItem:\n"
+" * a tooltip using Pango markup \n"
+" * language\n"
+" *******************************/\n"
+" gtk_tool_item_set_tooltip_text (open_button, \"Open an <i>existing</i> file\");\n"
+"\n"
+" /* \"Undo\" */\n"
+" undo_button = gtk_tool_button_new_from_stock (GTK_STOCK_UNDO);\n"
+" gtk_tool_item_set_is_important (undo_button, TRUE);\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), undo_button, 2);\n"
+" gtk_widget_show (GTK_WIDGET (undo_button));\n"
+"\n"
+" /* In this case, we use \"win.undo\" to indicate that\n"
+" * the action controls only the window\n"
+" */\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (undo_button), \"win.undo\");\n"
+"\n"
+" /*******************************\n"
+" * Tooltip for the Undo ToolItem:\n"
+" * a tooltip with an image\n"
+" *******************************/\n"
+" gtk_widget_set_has_tooltip (GTK_WIDGET (undo_button), TRUE);\n"
+"\n"
+" // Next, we connect the query_tooltip signal\n"
+" g_signal_connect (undo_button, \"query-tooltip\", G_CALLBACK (undo_tooltip_callback), NULL);\n"
+"\n"
+" gtk_widget_set_hexpand (toolbar, TRUE);\n"
+" gtk_widget_show (toolbar);\n"
+"\n"
+" grid = gtk_grid_new ();\n"
+" gtk_grid_attach (GTK_GRID (grid), toolbar, 0, 0, 1, 1);\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
+" gtk_widget_show (GTK_WIDGET (grid));\n"
+"\n"
+" /* Use the action names to create the actions that control the window, and\n"
+" * connect them to the appropriate callbackfunctions.\n"
+" */\n"
+" undo_action = g_simple_action_new (\"undo\", NULL);\n"
+" g_signal_connect (undo_action, \"activate\", G_CALLBACK (undo_callback),\n"
+" GTK_WINDOW (window));\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (undo_action));\n"
+"\n"
+" gtk_widget_show (window);\n"
+"}\n"
+"\n"
+"\n"
+"/* Callback function for the new action */\n"
+"static void\n"
+"new_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"New\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"/* Callback function for the open action */\n"
+"static void\n"
+"open_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"Open\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"/* In this function, we create the actions in which control the window, and\n"
+" * connect their signals to the appropriate callback function.\n"
+" */\n"
+"static void\n"
+"startup (GApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GSimpleAction *new_action;\n"
+" GSimpleAction *open_action;\n"
+"\n"
+" new_action = g_simple_action_new (\"new\", NULL);\n"
+" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
+"\n"
+" open_action = g_simple_action_new (\"open\", NULL);\n"
+" g_signal_connect (open_action, \"activate\", G_CALLBACK (open_callback), app);\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (open_action));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the application */\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"#include <gtk/gtk.h>\n"
+"\n"
+"static gboolean \n"
+"undo_tooltip_callback (GtkStatusIcon *status_icon,\n"
+" gint x,\n"
+" gint y,\n"
+" gboolean keyboard_mode,\n"
+" GtkTooltip *tooltip,\n"
+" gpointer user_data)\n"
+"{\n"
+" /* set the text for the tooltip */\n"
+" gtk_tooltip_set_text (tooltip, \"Undo your last action\");\n"
+" \n"
+" /* set an icon fot the tooltip */\n"
+" gtk_tooltip_set_icon_from_stock(tooltip, \"gtk-undo\", GTK_ICON_SIZE_MENU);\n"
+"\n"
+" /* show the tooltip */\n"
+" return TRUE;\n"
+"}\n"
+"\n"
+"\n"
+"static void\n"
+"undo_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"Undo\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *grid;\n"
+" GtkWidget *window;\n"
+" GtkWidget *toolbar;\n"
+"\n"
+" GtkToolItem *new_button;\n"
+" GtkToolItem *open_button;\n"
+" GtkToolItem *undo_button;\n"
+"\n"
+" GtkStyleContext *style_context;\n"
+"\n"
+" GSimpleAction *undo_action;\n"
+"\n"
+" window = gtk_application_window_new (app);\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Toolbar with Tooltips Example\");\n"
+" gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n"
+"\n"
+" /* Here we begin to create the toolbar */\n"
+" toolbar = gtk_toolbar_new ();\n"
+"\n"
+" /* Set the toolbar to be the primary toolbar of the application */\n"
+" style_context = gtk_widget_get_style_context (toolbar);\n"
+" gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+" /* Create a button for the \"new\" action, with a stock image */\n"
+" new_button = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);\n"
+" gtk_tool_item_set_is_important (new_button, TRUE);\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), new_button, 0);\n"
+" gtk_widget_show (GTK_WIDGET (new_button));\n"
+"\n"
+" /* Set the action name for the \"new\" action. We use \"app.new\" to\n"
+" * indicate that the action controls the application.\n"
+" */\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (new_button), \"app.new\");\n"
+"\n"
+" /*******************************\n"
+" * Tooltip for the New ToolItem:\n"
+" * a tooltip with text\n"
+" *******************************/\n"
+" gtk_tool_item_set_tooltip_text (new_button, \"Create a new file\"); \n"
+"\n"
+" /* \"Open\" */\n"
+" open_button = gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);\n"
+" gtk_tool_item_set_is_important (open_button, TRUE);\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), open_button, 1);\n"
+" gtk_widget_show (GTK_WIDGET (open_button));\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (open_button), \"app.open\");\n"
+"\n"
+" /*******************************\n"
+" * Tooltip for the Open ToolItem:\n"
+" * a tooltip using Pango markup \n"
+" * language\n"
+" *******************************/\n"
+" gtk_tool_item_set_tooltip_text (open_button, \"Open an <i>existing</i> file\");\n"
+"\n"
+" /* \"Undo\" */\n"
+" undo_button = gtk_tool_button_new_from_stock (GTK_STOCK_UNDO);\n"
+" gtk_tool_item_set_is_important (undo_button, TRUE);\n"
+" gtk_toolbar_insert (GTK_TOOLBAR (toolbar), undo_button, 2);\n"
+" gtk_widget_show (GTK_WIDGET (undo_button));\n"
+"\n"
+" /* In this case, we use \"win.undo\" to indicate that\n"
+" * the action controls only the window\n"
+" */\n"
+" gtk_actionable_set_action_name (GTK_ACTIONABLE (undo_button), \"win.undo\");\n"
+"\n"
+" /*******************************\n"
+" * Tooltip for the Undo ToolItem:\n"
+" * a tooltip with an image\n"
+" *******************************/\n"
+" gtk_widget_set_has_tooltip (GTK_WIDGET (undo_button), TRUE);\n"
+"\n"
+" // Next, we connect the query_tooltip signal\n"
+" g_signal_connect (undo_button, \"query-tooltip\", G_CALLBACK (undo_tooltip_callback), NULL);\n"
+"\n"
+" gtk_widget_set_hexpand (toolbar, TRUE);\n"
+" gtk_widget_show (toolbar);\n"
+"\n"
+" grid = gtk_grid_new ();\n"
+" gtk_grid_attach (GTK_GRID (grid), toolbar, 0, 0, 1, 1);\n"
+" gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n"
+" gtk_widget_show (GTK_WIDGET (grid));\n"
+"\n"
+" /* Use the action names to create the actions that control the window, and\n"
+" * connect them to the appropriate callbackfunctions.\n"
+" */\n"
+" undo_action = g_simple_action_new (\"undo\", NULL);\n"
+" g_signal_connect (undo_action, \"activate\", G_CALLBACK (undo_callback),\n"
+" GTK_WINDOW (window));\n"
+" g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (undo_action));\n"
+"\n"
+" gtk_widget_show (window);\n"
+"}\n"
+"\n"
+"\n"
+"/* Callback function for the new action */\n"
+"static void\n"
+"new_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"New\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"/* Callback function for the open action */\n"
+"static void\n"
+"open_callback (GSimpleAction *simple,\n"
+" GVariant *parameter,\n"
+" gpointer user_data)\n"
+"{\n"
+" g_print (\"You clicked \\\"Open\\\".\\n\");\n"
+"}\n"
+"\n"
+"\n"
+"/* In this function, we create the actions in which control the window, and\n"
+" * connect their signals to the appropriate callback function.\n"
+" */\n"
+"static void\n"
+"startup (GApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GSimpleAction *new_action;\n"
+" GSimpleAction *open_action;\n"
+"\n"
+" new_action = g_simple_action_new (\"new\", NULL);\n"
+" g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n"
+"\n"
+" open_action = g_simple_action_new (\"open\", NULL);\n"
+" g_signal_connect (open_action, \"activate\", G_CALLBACK (open_callback), app);\n"
+" g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (open_action));\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"/* Startup function for the application */\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+"\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/tooltip.c.page:38 C/tooltip.py.page:59
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkTooltip.html"
+"\">GtkTooltip</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkTooltip.html"
+"\">GtkTooltip</link>"
+
+#. (itstool) path: item/p
+#: C/tooltip.c.page:40 C/tooltip.py.page:61
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkWidget.html"
+"\">GtkWidget</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/GtkWidget.html"
+"\">GtkWidget</link>"
+
+#. (itstool) path: item/p
+#: C/tooltip.c.page:41 C/tooltip.js.page:40 C/tooltip.py.page:62
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Stock-Items.html"
+"\">Stock Items</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/stable/gtk3-Stock-Items.html"
+"\">Elementos del almacén</link>"
+
+#. (itstool) path: info/title
+#: C/tooltip.js.page:8
+msgctxt "text"
+msgid "Tooltip (JavaScript)"
+msgstr "Tooltip (JavaScript)"
+
+#. (itstool) path: note/p
+#: C/tooltip.js.page:25
+msgid ""
+"This example builds on the <link xref=\"toolbar.js\">Toolbar</link> example."
+msgstr "Esto construye el ejemplo de <link xref=\"toolbar.js\">Toolbar</link>."
+
+#. (itstool) path: section/code
+#: C/tooltip.js.page:30
+#, no-wrap
+msgid ""
+"//!/usr/bin/gjs\n"
+"\n"
+"const Gdk = imports.gi.Gdk;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk; \n"
+"const Lang = imports.lang;\n"
+"\n"
+"const TooltipExample = new Lang.Class ({\n"
+" Name: 'Tooltip Example',\n"
+"\n"
+" // Create the application \n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({ application_id: 'org.example.jstooltip' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this.window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Toolbar with Tooltips Example\",\n"
+" default_width: 400,\n"
+" default_height: 200,\n"
+" border_width: 10 });\n"
+"\n"
+" this.grid = new Gtk.Grid();\n"
+"\n"
+" this.toolbar = this._createToolbar();\n"
+" this.toolbar.set_hexpand(true);\n"
+" this.toolbar.show();\n"
+"\n"
+" this.grid.attach(this.toolbar, 0, 0, 1, 1);\n"
+"\n"
+" this.window.add(this.grid);\n"
+"\n"
+" this._newAction = new Gio.SimpleAction({ name: \"new\" });\n"
+" this._newAction.connect(\"activate\", Lang.bind(this, this._newCallback));\n"
+" this.window.add_action(this._newAction);\n"
+"\n"
+" this._openAction = new Gio.SimpleAction({ name: \"open\" });\n"
+" this._openAction.connect(\"activate\", Lang.bind(this, this._openCallback));\n"
+" this.window.add_action(this._openAction);\n"
+"\n"
+" this._undoAction = new Gio.SimpleAction({ name: \"undo\" });\n"
+" this._undoAction.connect(\"activate\", Lang.bind(this, this._undoCallback));\n"
+" this.window.add_action(this._undoAction);\n"
+"\n"
+" this._fullScreenAction = new Gio.SimpleAction({ name: \"fullscreenToggle\" });\n"
+" this._fullScreenAction.connect(\"activate\", Lang.bind(this, this._fullScreenCallback));\n"
+" this.window.add_action(this._fullScreenAction);\n"
+"\n"
+" this.window.show_all();\n"
+" },\n"
+"\n"
+" _createToolbar: function(){\n"
+" this.toolbar = new Gtk.Toolbar();\n"
+" this.toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+" // button for the \"new\" action\n"
+" this.newButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW);\n"
+" // with a tooltip with a given text \n"
+" this.newButton.set_tooltip_text(\"Create a new file\");\n"
+" this.newButton.set_is_important(true);\n"
+" this.toolbar.insert(this.newButton, 0);\n"
+" this.newButton.show();\n"
+" this.newButton.set_action_name(\"win.new\");\n"
+"\n"
+" // button for the \"open\" action\n"
+" this.openButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN);\n"
+" // with a tooltip with a given text in the Pango markup language \n"
+" this.openButton.set_tooltip_markup(\"Open an <i>existing</i> file\");\n"
+" this.openButton.set_is_important(true);\n"
+" this.toolbar.insert(this.openButton, 1);\n"
+" this.openButton.show();\n"
+" this.openButton.set_action_name(\"win.open\");\n"
+"\n"
+" // button for the \"undo\" action\n"
+" this.undoButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO);\n"
+" // with a tooltip with an image\n"
+" // set true the property \"has-tooltip\" \n"
+" this.undoButton.set_property(\"has-tooltip\", true);\n"
+" // connect to the callback function that for the tooltip\n"
+" // with the signal \"query-tooltip\"\n"
+" this.undoButton.connect(\"query-tooltip\", Lang.bind(this, this._undoTooltipCallback));\n"
+" this.undoButton.set_is_important(true);\n"
+" this.toolbar.insert(this.undoButton, 2);\n"
+" this.undoButton.show();\n"
+" this.undoButton.set_action_name(\"win.undo\");\n"
+"\n"
+" // button for the \"fullscreen/leave fullscreen\" action\n"
+" this.fullscreenButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_FULLSCREEN);\n"
+" this.fullscreenButton.set_is_important(true);\n"
+" this.toolbar.insert(this.fullscreenButton, 3);\n"
+" this.fullscreenButton.set_action_name(\"win.fullscreenToggle\");\n"
+"\n"
+" return this.toolbar;\n"
+" },\n"
+"\n"
+" _newCallback: function(action, parameter) {\n"
+" print(\"You clicked \\\"New\\\".\");\n"
+" },\n"
+"\n"
+" _openCallback: function(action, parameter) {\n"
+" print(\"You clicked \\\"Open\\\".\");\n"
+" },\n"
+"\n"
+" // the callback function for the tooltip of the \"undo\" button\n"
+" _undoTooltipCallback: function(widget, x, y, keyboard_mode, tooltip) {\n"
+" // set the text for the tooltip\n"
+" tooltip.set_text(\"Undo your last action\");\n"
+" // set an icon fot the tooltip\n"
+" tooltip.set_icon_from_stock(Gtk.STOCK_UNDO, Gtk.IconSize.MENU);\n"
+" // show the tooltip\n"
+" return true;\n"
+" },\n"
+"\n"
+" _undoCallback: function(action, parameter) {\n"
+" print(\"You clicked \\\"Undo\\\".\");\n"
+" },\n"
+"\n"
+" _fullScreenCallback: function() {\n"
+" if ((this.window.get_window().get_state() & Gdk.WindowState.FULLSCREEN) != 0 ){\n"
+" this.fullscreenButton.set_stock_id(Gtk.STOCK_FULLSCREEN);\n"
+" this.fullscreenButton.set_tooltip_text(\"Make your window fullscreen\");\n"
+" this.window.unfullscreen();\n"
+" } else {\n"
+" this.fullscreenButton.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN);\n"
+" this.fullscreenButton.set_tooltip_text(\"Leave fullscreen\");\n"
+" this.window.fullscreen();\n"
+" }\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new TooltipExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"//!/usr/bin/gjs\n"
+"\n"
+"const Gdk = imports.gi.Gdk;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gio = imports.gi.Gio;\n"
+"const Gtk = imports.gi.Gtk; \n"
+"const Lang = imports.lang;\n"
+"\n"
+"const TooltipExample = new Lang.Class ({\n"
+" Name: 'Tooltip Example',\n"
+"\n"
+" // Create the application \n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({ application_id: 'org.example.jstooltip' });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents windows when active\n"
+" _onActivate: function() {\n"
+" this.window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function () {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function () {\n"
+"\n"
+" // Create the application window\n"
+" this.window = new Gtk.ApplicationWindow ({ application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" title: \"Toolbar with Tooltips Example\",\n"
+" default_width: 400,\n"
+" default_height: 200,\n"
+" border_width: 10 });\n"
+"\n"
+" this.grid = new Gtk.Grid();\n"
+"\n"
+" this.toolbar = this._createToolbar();\n"
+" this.toolbar.set_hexpand(true);\n"
+" this.toolbar.show();\n"
+"\n"
+" this.grid.attach(this.toolbar, 0, 0, 1, 1);\n"
+"\n"
+" this.window.add(this.grid);\n"
+"\n"
+" this._newAction = new Gio.SimpleAction({ name: \"new\" });\n"
+" this._newAction.connect(\"activate\", Lang.bind(this, this._newCallback));\n"
+" this.window.add_action(this._newAction);\n"
+"\n"
+" this._openAction = new Gio.SimpleAction({ name: \"open\" });\n"
+" this._openAction.connect(\"activate\", Lang.bind(this, this._openCallback));\n"
+" this.window.add_action(this._openAction);\n"
+"\n"
+" this._undoAction = new Gio.SimpleAction({ name: \"undo\" });\n"
+" this._undoAction.connect(\"activate\", Lang.bind(this, this._undoCallback));\n"
+" this.window.add_action(this._undoAction);\n"
+"\n"
+" this._fullScreenAction = new Gio.SimpleAction({ name: \"fullscreenToggle\" });\n"
+" this._fullScreenAction.connect(\"activate\", Lang.bind(this, this._fullScreenCallback));\n"
+" this.window.add_action(this._fullScreenAction);\n"
+"\n"
+" this.window.show_all();\n"
+" },\n"
+"\n"
+" _createToolbar: function(){\n"
+" this.toolbar = new Gtk.Toolbar();\n"
+" this.toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+" // button for the \"new\" action\n"
+" this.newButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW);\n"
+" // with a tooltip with a given text \n"
+" this.newButton.set_tooltip_text(\"Create a new file\");\n"
+" this.newButton.set_is_important(true);\n"
+" this.toolbar.insert(this.newButton, 0);\n"
+" this.newButton.show();\n"
+" this.newButton.set_action_name(\"win.new\");\n"
+"\n"
+" // button for the \"open\" action\n"
+" this.openButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN);\n"
+" // with a tooltip with a given text in the Pango markup language \n"
+" this.openButton.set_tooltip_markup(\"Open an <i>existing</i> file\");\n"
+" this.openButton.set_is_important(true);\n"
+" this.toolbar.insert(this.openButton, 1);\n"
+" this.openButton.show();\n"
+" this.openButton.set_action_name(\"win.open\");\n"
+"\n"
+" // button for the \"undo\" action\n"
+" this.undoButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO);\n"
+" // with a tooltip with an image\n"
+" // set true the property \"has-tooltip\" \n"
+" this.undoButton.set_property(\"has-tooltip\", true);\n"
+" // connect to the callback function that for the tooltip\n"
+" // with the signal \"query-tooltip\"\n"
+" this.undoButton.connect(\"query-tooltip\", Lang.bind(this, this._undoTooltipCallback));\n"
+" this.undoButton.set_is_important(true);\n"
+" this.toolbar.insert(this.undoButton, 2);\n"
+" this.undoButton.show();\n"
+" this.undoButton.set_action_name(\"win.undo\");\n"
+"\n"
+" // button for the \"fullscreen/leave fullscreen\" action\n"
+" this.fullscreenButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_FULLSCREEN);\n"
+" this.fullscreenButton.set_is_important(true);\n"
+" this.toolbar.insert(this.fullscreenButton, 3);\n"
+" this.fullscreenButton.set_action_name(\"win.fullscreenToggle\");\n"
+"\n"
+" return this.toolbar;\n"
+" },\n"
+"\n"
+" _newCallback: function(action, parameter) {\n"
+" print(\"You clicked \\\"New\\\".\");\n"
+" },\n"
+"\n"
+" _openCallback: function(action, parameter) {\n"
+" print(\"You clicked \\\"Open\\\".\");\n"
+" },\n"
+"\n"
+" // the callback function for the tooltip of the \"undo\" button\n"
+" _undoTooltipCallback: function(widget, x, y, keyboard_mode, tooltip) {\n"
+" // set the text for the tooltip\n"
+" tooltip.set_text(\"Undo your last action\");\n"
+" // set an icon fot the tooltip\n"
+" tooltip.set_icon_from_stock(Gtk.STOCK_UNDO, Gtk.IconSize.MENU);\n"
+" // show the tooltip\n"
+" return true;\n"
+" },\n"
+"\n"
+" _undoCallback: function(action, parameter) {\n"
+" print(\"You clicked \\\"Undo\\\".\");\n"
+" },\n"
+"\n"
+" _fullScreenCallback: function() {\n"
+" if ((this.window.get_window().get_state() & Gdk.WindowState.FULLSCREEN) != 0 ){\n"
+" this.fullscreenButton.set_stock_id(Gtk.STOCK_FULLSCREEN);\n"
+" this.fullscreenButton.set_tooltip_text(\"Make your window fullscreen\");\n"
+" this.window.unfullscreen();\n"
+" } else {\n"
+" this.fullscreenButton.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN);\n"
+" this.fullscreenButton.set_tooltip_text(\"Leave fullscreen\");\n"
+" this.window.fullscreen();\n"
+" }\n"
+" }\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new TooltipExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/tooltip.js.page:37
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Tooltip.html"
+"\">GtkTooltip</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Tooltip.html"
+"\">GtkTooltip</link>"
+
+#. (itstool) path: item/p
+#: C/tooltip.js.page:38
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Toolbar.html"
+"\">GtkToolbar</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Toolbar.html"
+"\">GtkToolbar</link>"
+
+#. (itstool) path: item/p
+#: C/tooltip.js.page:39
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Widget.html"
+"\">GtkWidget</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Widget.html"
+"\">GtkWidget</link>"
+
+#. (itstool) path: info/title
+#: C/tooltip.py.page:8
+msgctxt "text"
+msgid "Tooltip (Python)"
+msgstr "Consejo (Python)"
+
+#. (itstool) path: note/p
+#: C/tooltip.py.page:26
+msgid ""
+"This example builds on the <link xref=\"toolbar.py\">Toolbar</link> example."
+msgstr "Esto construye el ejemplo de <link xref=\"toolbar.py\">Toolbar</link>."
+
+#. (itstool) path: section/code
+#: C/tooltip.py.page:32
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gdk\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(\n"
+" self, title=\"Toolbar with Tooltips Example\", application=app)\n"
+" self.set_default_size(400, 200)\n"
+"\n"
+" grid = Gtk.Grid()\n"
+"\n"
+" toolbar = self.create_toolbar()\n"
+" toolbar.set_hexpand(True)\n"
+" toolbar.show()\n"
+"\n"
+" grid.attach(toolbar, 0, 0, 1, 1)\n"
+"\n"
+" self.add(grid)\n"
+"\n"
+" undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
+" undo_action.connect(\"activate\", self.undo_callback)\n"
+" self.add_action(undo_action)\n"
+"\n"
+" fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
+" fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
+" self.add_action(fullscreen_action)\n"
+"\n"
+" def create_toolbar(self):\n"
+" toolbar = Gtk.Toolbar()\n"
+" toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)\n"
+"\n"
+" # button for the \"new\" action\n"
+" new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)\n"
+" # with a tooltip with a given text\n"
+" new_button.set_tooltip_text(\"Create a new file\")\n"
+" new_button.set_is_important(True)\n"
+" toolbar.insert(new_button, 0)\n"
+" new_button.show()\n"
+" new_button.set_action_name(\"app.new\")\n"
+"\n"
+" # button for the \"open\" action\n"
+" open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)\n"
+" # with a tooltip with a given text in the Pango markup language\n"
+" open_button.set_tooltip_markup(\"Open an <i>existing</i> file\")\n"
+" open_button.set_is_important(True)\n"
+" toolbar.insert(open_button, 1)\n"
+" open_button.show()\n"
+" open_button.set_action_name(\"app.open\")\n"
+"\n"
+" # button for the \"undo\" action\n"
+" undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO)\n"
+" # with a tooltip with an image\n"
+" # set True the property \"has-tooltip\"\n"
+" undo_button.set_property(\"has-tooltip\", True)\n"
+" # connect to the callback function that for the tooltip\n"
+" # with the signal \"query-tooltip\"\n"
+" undo_button.connect(\"query-tooltip\", self.undo_tooltip_callback)\n"
+" undo_button.set_is_important(True)\n"
+" toolbar.insert(undo_button, 2)\n"
+" undo_button.show()\n"
+" undo_button.set_action_name(\"win.undo\")\n"
+"\n"
+" # button for the \"fullscreen/leave fullscreen\" action\n"
+" self.fullscreen_button = Gtk.ToolButton.new_from_stock(\n"
+" Gtk.STOCK_FULLSCREEN)\n"
+" self.fullscreen_button.set_is_important(True)\n"
+" toolbar.insert(self.fullscreen_button, 3)\n"
+" self.fullscreen_button.set_action_name(\"win.fullscreen\")\n"
+"\n"
+" return toolbar\n"
+"\n"
+" # the callback function for the tooltip of the \"undo\" button\n"
+" def undo_tooltip_callback(self, widget, x, y, keyboard_mode, tooltip):\n"
+" # set the text for the tooltip\n"
+" tooltip.set_text(\"Undo your last action\")\n"
+" # set an icon fot the tooltip\n"
+" tooltip.set_icon_from_stock(\"gtk-undo\", Gtk.IconSize.MENU)\n"
+" # show the tooltip\n"
+" return True\n"
+"\n"
+" def undo_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Undo\\\".\")\n"
+"\n"
+" def fullscreen_callback(self, action, parameter):\n"
+" is_fullscreen = self.get_window().get_state(\n"
+" ) & Gdk.WindowState.FULLSCREEN != 0\n"
+" if not is_fullscreen:\n"
+" self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN)\n"
+" self.fullscreen()\n"
+" else:\n"
+" self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN)\n"
+" self.unfullscreen()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" new_action = Gio.SimpleAction.new(\"new\", None)\n"
+" new_action.connect(\"activate\", self.new_callback)\n"
+" app.add_action(new_action)\n"
+"\n"
+" open_action = Gio.SimpleAction.new(\"open\", None)\n"
+" open_action.connect(\"activate\", self.open_callback)\n"
+" app.add_action(open_action)\n"
+"\n"
+" def new_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"New\\\".\")\n"
+"\n"
+" def open_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Open\\\".\")\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Gdk\n"
+"from gi.repository import Gio\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(\n"
+" self, title=\"Toolbar with Tooltips Example\", application=app)\n"
+" self.set_default_size(400, 200)\n"
+"\n"
+" grid = Gtk.Grid()\n"
+"\n"
+" toolbar = self.create_toolbar()\n"
+" toolbar.set_hexpand(True)\n"
+" toolbar.show()\n"
+"\n"
+" grid.attach(toolbar, 0, 0, 1, 1)\n"
+"\n"
+" self.add(grid)\n"
+"\n"
+" undo_action = Gio.SimpleAction.new(\"undo\", None)\n"
+" undo_action.connect(\"activate\", self.undo_callback)\n"
+" self.add_action(undo_action)\n"
+"\n"
+" fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n"
+" fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n"
+" self.add_action(fullscreen_action)\n"
+"\n"
+" def create_toolbar(self):\n"
+" toolbar = Gtk.Toolbar()\n"
+" toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)\n"
+"\n"
+" # button for the \"new\" action\n"
+" new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)\n"
+" # with a tooltip with a given text\n"
+" new_button.set_tooltip_text(\"Create a new file\")\n"
+" new_button.set_is_important(True)\n"
+" toolbar.insert(new_button, 0)\n"
+" new_button.show()\n"
+" new_button.set_action_name(\"app.new\")\n"
+"\n"
+" # button for the \"open\" action\n"
+" open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)\n"
+" # with a tooltip with a given text in the Pango markup language\n"
+" open_button.set_tooltip_markup(\"Open an <i>existing</i> file\")\n"
+" open_button.set_is_important(True)\n"
+" toolbar.insert(open_button, 1)\n"
+" open_button.show()\n"
+" open_button.set_action_name(\"app.open\")\n"
+"\n"
+" # button for the \"undo\" action\n"
+" undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO)\n"
+" # with a tooltip with an image\n"
+" # set True the property \"has-tooltip\"\n"
+" undo_button.set_property(\"has-tooltip\", True)\n"
+" # connect to the callback function that for the tooltip\n"
+" # with the signal \"query-tooltip\"\n"
+" undo_button.connect(\"query-tooltip\", self.undo_tooltip_callback)\n"
+" undo_button.set_is_important(True)\n"
+" toolbar.insert(undo_button, 2)\n"
+" undo_button.show()\n"
+" undo_button.set_action_name(\"win.undo\")\n"
+"\n"
+" # button for the \"fullscreen/leave fullscreen\" action\n"
+" self.fullscreen_button = Gtk.ToolButton.new_from_stock(\n"
+" Gtk.STOCK_FULLSCREEN)\n"
+" self.fullscreen_button.set_is_important(True)\n"
+" toolbar.insert(self.fullscreen_button, 3)\n"
+" self.fullscreen_button.set_action_name(\"win.fullscreen\")\n"
+"\n"
+" return toolbar\n"
+"\n"
+" # the callback function for the tooltip of the \"undo\" button\n"
+" def undo_tooltip_callback(self, widget, x, y, keyboard_mode, tooltip):\n"
+" # set the text for the tooltip\n"
+" tooltip.set_text(\"Undo your last action\")\n"
+" # set an icon fot the tooltip\n"
+" tooltip.set_icon_from_stock(\"gtk-undo\", Gtk.IconSize.MENU)\n"
+" # show the tooltip\n"
+" return True\n"
+"\n"
+" def undo_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Undo\\\".\")\n"
+"\n"
+" def fullscreen_callback(self, action, parameter):\n"
+" is_fullscreen = self.get_window().get_state(\n"
+" ) & Gdk.WindowState.FULLSCREEN != 0\n"
+" if not is_fullscreen:\n"
+" self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN)\n"
+" self.fullscreen()\n"
+" else:\n"
+" self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN)\n"
+" self.unfullscreen()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+" new_action = Gio.SimpleAction.new(\"new\", None)\n"
+" new_action.connect(\"activate\", self.new_callback)\n"
+" app.add_action(new_action)\n"
+"\n"
+" open_action = Gio.SimpleAction.new(\"open\", None)\n"
+" open_action.connect(\"activate\", self.open_callback)\n"
+" app.add_action(open_action)\n"
+"\n"
+" def new_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"New\\\".\")\n"
+"\n"
+" def open_callback(self, action, parameter):\n"
+" print(\"You clicked \\\"Open\\\".\")\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/tooltip.py.page:36
+msgid "Useful methods for a Tooltip widget"
+msgstr "Métodos útiles para un widget de consejo"
+
+#. (itstool) path: section/p
+#: C/tooltip.py.page:38
+msgid ""
+"<code>set_tooltip_text(text)</code> and <code>set_tooltip_markup(text)</"
+"code> can be used to add a tooltip of plain text (or text in the Pango "
+"Markup Language) to a widget."
+msgstr ""
+"<code>set_tooltip_text(text)</code> y <code>set_tooltip_markup(text)</code> "
+"pueden usarse para añadir un consejo o texto plano (o texto en el lenguaje "
+"de marcado de Pango) a un widget."
+
+#. (itstool) path: section/p
+#: C/tooltip.py.page:39
+msgid "For more complex tooltips, for instance for a tooltip with an image:"
+msgstr ""
+"Para consejos más complejos, por ejemplo para un consejo con una imagen:"
+
+#. (itstool) path: item/p
+#: C/tooltip.py.page:41
+msgid ""
+"Set the <code>\"has-tooltip\"</code> property of the widget to <code>True</"
+"code>; this will make GTK+ monitor the widget for motion and related events "
+"which are needed to determine when and where to show a tooltip."
+msgstr ""
+"Establezca la propiedad <code>\"has-tooltip\"</code> del widget a "
+"<code>True</code>; esto hará que GTK+ monitorice el widget en busca de "
+"movimiento y eventos relacionados que se necesitan para determinar cuándo y "
+"dónde mostrar un consejo."
+
+#. (itstool) path: item/p
+#: C/tooltip.py.page:42
+msgid ""
+"Connect to the <code>\"query-tooltip\"</code> signal. This signal will be "
+"emitted when a tooltip is supposed to be shown. One of the arguments passed "
+"to the signal handler is a GtkTooltip object. This is the object that we are "
+"about to display as a tooltip, and can be manipulated in your callback using "
+"functions like <code>set_icon()</code>. There are functions for setting the "
+"tooltip's markup (<code>set_markup(text)</code>), setting an image from a "
+"stock icon (<code>set_icon_from_stock(stock_id, size)</code>), or even "
+"putting in a custom widget (<code>set_custom(widget)</code>)."
+msgstr ""
+"Conecte a la señal <code>\"query-tooltip\"</code>. Esta señal se emitirá "
+"cuando se deba mostrar un widget. Uno de los argumentos que se le pasan al "
+"manejador de señales es un objeto GtkTooltip. Este es el objeto que se va a "
+"mostrar como un consejo, y puede manipularse en su retorno de llamada usando "
+"funciones como <code>set_icon()</code>. Hay funciones para establecer el "
+"texto marcado del consejo (<code>set_markup(text)</code>), una imagen desde "
+"un icono del almacén (<code>set_icon_from_stock(stock_id, size)</code>), o "
+"incluso poner un widget personalizado (<code>set_custom(widget)</code>)."
+
+#. (itstool) path: item/p
+#: C/tooltip.py.page:43
+msgid ""
+"Return <code>True</code> from your query-tooltip handler. This causes the "
+"tooltip to be show. If you return <code>False</code>, it will not be shown."
+msgstr ""
+"Devuelva <code>True</code> de su manejador de «query-tooltip». Esto hace que "
+"el consejo se muestre. Si devuelve <code>False</code>, no se mostrará."
+
+#. (itstool) path: section/p
+#: C/tooltip.py.page:46
+msgid ""
+"In the probably rare case where you want to have even more control over the "
+"tooltip that is about to be shown, you can set your own GtkWindow which will "
+"be used as tooltip window. This works as follows:"
+msgstr ""
+"En el probablemente raro caso en el que quiera tener aún más control sobre "
+"el consejo que se va a mostrar, puede establecer su propia GtkWindow que se "
+"usará como ventana del consejo. Esto funciona así:"
+
+#. (itstool) path: item/p
+#: C/tooltip.py.page:48
+msgid ""
+"Set <code>\"has-tooltip\"</code> and connect to <code>\"query-tooltip\"</"
+"code> as before."
+msgstr ""
+"Establezca <code>\"has-tooltip\"</code> y conecte con <code>\"query-tooltip"
+"\"</code> como antes."
+
+#. (itstool) path: item/p
+#: C/tooltip.py.page:49
+msgid ""
+"Use <code>set_tooltip_window()</code> on the widget to set a GtkWindow "
+"created by you as tooltip window."
+msgstr ""
+"Use <code>set_tooltip_window()</code> en el widget para establecer una "
+"GtkWindow creada como ventana del consejo."
+
+#. (itstool) path: item/p
+#: C/tooltip.py.page:50
+msgid ""
+"In the <code>\"query-tooltip\"</code> callback you can access your window "
+"using <code>get_tooltip_window()</code> and manipulate as you wish. The "
+"semantics of the return value are exactly as before, return <code>True</"
+"code> to show the window, <code>False</code> to not show it."
+msgstr ""
+"En la devolución de llamada <code>\"query-tooltip\"</code> puede acceder a "
+"su ventana usando <code>get_tooltip_window()</code> y manipularla como "
+"quiera. La semántica del valor de retorno es exactamente la misma que antes, "
+"devuelva <code>True</code> para mostrar el widget o <code>False</code> para "
+"no hacerlo."
+
+#. (itstool) path: info/title
+#: C/tooltip.vala.page:8
+msgctxt "text"
+msgid "Tooltip (Vala)"
+msgstr "Tooltip (Vala)"
+
+#. (itstool) path: note/p
+#: C/tooltip.vala.page:25
+msgid ""
+"This example builds on the <link xref=\"toolbar.vala\">Toolbar</link> "
+"example."
+msgstr ""
+"Esto construye el ejemplo de <link xref=\"toolbar.vala\">Toolbar</link>."
+
+#. (itstool) path: section/code
+#: C/tooltip.vala.page:31
+#, no-wrap
+msgid ""
+"/* This is the Window */\n"
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Instance variables belonging to the window */\n"
+"\tGtk.Toolbar toolbar;\n"
+"\tGtk.ToolButton new_button;\n"
+"\tGtk.ToolButton open_button;\n"
+"\tGtk.ToolButton undo_button;\n"
+"\tGtk.ToolButton fullscreen_button;\n"
+"\tGtk.ToolButton leave_fullscreen_button;\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Toolbar with Tooltips Example\");\n"
+"\n"
+"\t\tthis.set_default_size (400, 200);\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tthis.add (grid);\n"
+"\t\tgrid.show ();\n"
+"\n"
+"\t\tcreate_toolbar ();\n"
+"\t\ttoolbar.set_hexpand (true);\n"
+"\t\tgrid.attach (toolbar, 0, 0, 1, 1);\n"
+"\t\ttoolbar.show ();\n"
+"\n"
+"\t\t/* create the \"undo\" window action action */\n"
+"\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
+"\t\tundo_action.activate.connect (undo_callback);\n"
+"\t\tthis.add_action (undo_action);\n"
+"\n"
+"\t\t/* create the \"fullscreen\" window action */\n"
+"\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
+"\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
+"\t\tthis.add_action (fullscreen_action);\n"
+"\t}\n"
+"\n"
+"\t/* Callback for query_tooltip signal */\n"
+"\tbool undo_tooltip_callback (int x, int y, bool keyboard_tooltip, Gtk.Tooltip tooltip) {\n"
+"\n"
+"\t\t/* set the text for the tooltip */\n"
+" \ttooltip.set_text (\"Undo your last action\");\n"
+"\t\t\n"
+"\t\t/* set an icon fot the tooltip */\n"
+"\t\ttooltip.set_icon_from_stock(\"gtk-undo\", Gtk.IconSize.MENU);\n"
+"\n"
+" \t/* show the tooltip */\n"
+" \treturn true;\n"
+"\t}\n"
+"\n"
+"\t/* This function creates the toolbar, its ToolButtons,\n"
+"\t * and assigns the actions names to the ToolButtons.*/\n"
+"\tvoid create_toolbar () {\n"
+"\t\ttoolbar = new Gtk.Toolbar ();\n"
+"\t\ttoolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+"\t\tnew_button = new Gtk.ToolButton.from_stock (Gtk.Stock.NEW);\n"
+"\n"
+"\t\t/* tooltip with text */\n"
+"\t\tnew_button.set_tooltip_text (\"Create a new file\");\n"
+"\n"
+"\t\tnew_button.is_important = true; //decides whether to show the label\n"
+"\t\ttoolbar.add (new_button);\n"
+"\t\tnew_button.show ();\n"
+"\t\tnew_button.action_name = \"app.new\";\n"
+"\n"
+"\t\topen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.OPEN);\n"
+"\n"
+"\t\t/* a tooltip using Pango markup language */\n"
+"\t\topen_button.set_tooltip_markup (\"Open an <i>existing</i> file\");\n"
+"\n"
+"\t\topen_button.is_important = true;\n"
+"\t\ttoolbar.add (open_button);\n"
+"\t\topen_button.show ();\n"
+"\t\topen_button.action_name = \"app.open\";\n"
+"\n"
+"\t\tundo_button = new Gtk.ToolButton.from_stock (Gtk.Stock.UNDO);\n"
+"\t\n"
+"\t\t/* For a tooltip to have an image, first we must set_has_tooltip to be 'true' */\t\n"
+"\t\t(undo_button as Gtk.Widget).set_has_tooltip (true);\n"
+"\n"
+"\t\t/* Connect the query_tooltip signal to the callback */\n"
+"\t\tundo_button.query_tooltip.connect (undo_tooltip_callback);\n"
+"\t\n"
+"\t\tundo_button.is_important = true;\n"
+"\t\ttoolbar.add (undo_button);\n"
+"\t\tundo_button.show ();\n"
+"\t\tundo_button.action_name = \"win.undo\";\n"
+"\n"
+"\t\tfullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.FULLSCREEN);\n"
+"\t\tfullscreen_button.is_important = true;\n"
+"\t\ttoolbar.add (fullscreen_button);\n"
+"\t\tfullscreen_button.show ();\n"
+"\t\tfullscreen_button.action_name = \"win.fullscreen\";\n"
+"\n"
+"\t\tleave_fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.LEAVE_FULLSCREEN)\n"
+";\n"
+"\t\tleave_fullscreen_button.is_important = true;\n"
+"\t\ttoolbar.add (leave_fullscreen_button);\n"
+"\n"
+"\t\tleave_fullscreen_button.action_name = \"win.fullscreen\";\n"
+"\t}\n"
+"\n"
+"\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n"
+"\t\t\tthis.unfullscreen ();\n"
+"\t\t\tleave_fullscreen_button.hide ();\n"
+"\t\t\tfullscreen_button.show ();\n"
+"\t\t}\n"
+"\t\telse {\n"
+"\t\t\tthis.fullscreen ();\n"
+"\t\t\tfullscreen_button.hide ();\n"
+"\t\t\tleave_fullscreen_button.show ();\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application */\n"
+"class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\t/* Create the \"new\" action and add it to the app*/\n"
+"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
+"\t\tnew_action.activate.connect (new_callback);\n"
+"\t\tthis.add_action (new_action);\n"
+"\n"
+"\t\t/* Create the \"open\" action, and add it to the app */\n"
+"\t\tvar open_action = new SimpleAction (\"open\", null);\n"
+"\t\topen_action.activate.connect (open_callback);\n"
+"\t\tthis.add_action (open_action);\n"
+"\n"
+"\t\t/* You could also add the action to the app menu\n"
+"\t\t * if you wanted to.\n"
+"\t\t */\n"
+"\t\t//var menu = new Menu ();\n"
+"\t\t//menu.append (\"New\", \"app.new\");\n"
+"\t\t//this.app_menu = menu;\n"
+"\t}\n"
+"\n"
+"\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates the application and runs it. */\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"/* This is the Window */\n"
+"class MyWindow : Gtk.ApplicationWindow {\n"
+"\n"
+"\t/* Instance variables belonging to the window */\n"
+"\tGtk.Toolbar toolbar;\n"
+"\tGtk.ToolButton new_button;\n"
+"\tGtk.ToolButton open_button;\n"
+"\tGtk.ToolButton undo_button;\n"
+"\tGtk.ToolButton fullscreen_button;\n"
+"\tGtk.ToolButton leave_fullscreen_button;\n"
+"\n"
+"\t/* Constructor */\n"
+"\tinternal MyWindow (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"Toolbar with Tooltips Example\");\n"
+"\n"
+"\t\tthis.set_default_size (400, 200);\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\t\tthis.add (grid);\n"
+"\t\tgrid.show ();\n"
+"\n"
+"\t\tcreate_toolbar ();\n"
+"\t\ttoolbar.set_hexpand (true);\n"
+"\t\tgrid.attach (toolbar, 0, 0, 1, 1);\n"
+"\t\ttoolbar.show ();\n"
+"\n"
+"\t\t/* create the \"undo\" window action action */\n"
+"\t\tvar undo_action = new SimpleAction (\"undo\", null);\n"
+"\t\tundo_action.activate.connect (undo_callback);\n"
+"\t\tthis.add_action (undo_action);\n"
+"\n"
+"\t\t/* create the \"fullscreen\" window action */\n"
+"\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n"
+"\t\tfullscreen_action.activate.connect (fullscreen_callback);\n"
+"\t\tthis.add_action (fullscreen_action);\n"
+"\t}\n"
+"\n"
+"\t/* Callback for query_tooltip signal */\n"
+"\tbool undo_tooltip_callback (int x, int y, bool keyboard_tooltip, Gtk.Tooltip tooltip) {\n"
+"\n"
+"\t\t/* set the text for the tooltip */\n"
+" \ttooltip.set_text (\"Undo your last action\");\n"
+"\t\t\n"
+"\t\t/* set an icon fot the tooltip */\n"
+"\t\ttooltip.set_icon_from_stock(\"gtk-undo\", Gtk.IconSize.MENU);\n"
+"\n"
+" \t/* show the tooltip */\n"
+" \treturn true;\n"
+"\t}\n"
+"\n"
+"\t/* This function creates the toolbar, its ToolButtons,\n"
+"\t * and assigns the actions names to the ToolButtons.*/\n"
+"\tvoid create_toolbar () {\n"
+"\t\ttoolbar = new Gtk.Toolbar ();\n"
+"\t\ttoolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n"
+"\n"
+"\t\tnew_button = new Gtk.ToolButton.from_stock (Gtk.Stock.NEW);\n"
+"\n"
+"\t\t/* tooltip with text */\n"
+"\t\tnew_button.set_tooltip_text (\"Create a new file\");\n"
+"\n"
+"\t\tnew_button.is_important = true; //decides whether to show the label\n"
+"\t\ttoolbar.add (new_button);\n"
+"\t\tnew_button.show ();\n"
+"\t\tnew_button.action_name = \"app.new\";\n"
+"\n"
+"\t\topen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.OPEN);\n"
+"\n"
+"\t\t/* a tooltip using Pango markup language */\n"
+"\t\topen_button.set_tooltip_markup (\"Open an <i>existing</i> file\");\n"
+"\n"
+"\t\topen_button.is_important = true;\n"
+"\t\ttoolbar.add (open_button);\n"
+"\t\topen_button.show ();\n"
+"\t\topen_button.action_name = \"app.open\";\n"
+"\n"
+"\t\tundo_button = new Gtk.ToolButton.from_stock (Gtk.Stock.UNDO);\n"
+"\t\n"
+"\t\t/* For a tooltip to have an image, first we must set_has_tooltip to be 'true' */\t\n"
+"\t\t(undo_button as Gtk.Widget).set_has_tooltip (true);\n"
+"\n"
+"\t\t/* Connect the query_tooltip signal to the callback */\n"
+"\t\tundo_button.query_tooltip.connect (undo_tooltip_callback);\n"
+"\t\n"
+"\t\tundo_button.is_important = true;\n"
+"\t\ttoolbar.add (undo_button);\n"
+"\t\tundo_button.show ();\n"
+"\t\tundo_button.action_name = \"win.undo\";\n"
+"\n"
+"\t\tfullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.FULLSCREEN);\n"
+"\t\tfullscreen_button.is_important = true;\n"
+"\t\ttoolbar.add (fullscreen_button);\n"
+"\t\tfullscreen_button.show ();\n"
+"\t\tfullscreen_button.action_name = \"win.fullscreen\";\n"
+"\n"
+"\t\tleave_fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.LEAVE_FULLSCREEN)\n"
+";\n"
+"\t\tleave_fullscreen_button.is_important = true;\n"
+"\t\ttoolbar.add (leave_fullscreen_button);\n"
+"\n"
+"\t\tleave_fullscreen_button.action_name = \"win.fullscreen\";\n"
+"\t}\n"
+"\n"
+"\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n"
+"\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n"
+"\t\t\tthis.unfullscreen ();\n"
+"\t\t\tleave_fullscreen_button.hide ();\n"
+"\t\t\tfullscreen_button.show ();\n"
+"\t\t}\n"
+"\t\telse {\n"
+"\t\t\tthis.fullscreen ();\n"
+"\t\t\tfullscreen_button.hide ();\n"
+"\t\t\tleave_fullscreen_button.show ();\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* This is the application */\n"
+"class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\t\tnew MyWindow (this).show ();\n"
+"\t}\n"
+"\n"
+"\tprotected override void startup () {\n"
+"\t\tbase.startup ();\n"
+"\n"
+"\t\t/* Create the \"new\" action and add it to the app*/\n"
+"\t\tvar new_action = new SimpleAction (\"new\", null);\n"
+"\t\tnew_action.activate.connect (new_callback);\n"
+"\t\tthis.add_action (new_action);\n"
+"\n"
+"\t\t/* Create the \"open\" action, and add it to the app */\n"
+"\t\tvar open_action = new SimpleAction (\"open\", null);\n"
+"\t\topen_action.activate.connect (open_callback);\n"
+"\t\tthis.add_action (open_action);\n"
+"\n"
+"\t\t/* You could also add the action to the app menu\n"
+"\t\t * if you wanted to.\n"
+"\t\t */\n"
+"\t\t//var menu = new Menu ();\n"
+"\t\t//menu.append (\"New\", \"app.new\");\n"
+"\t\t//this.app_menu = menu;\n"
+"\t}\n"
+"\n"
+"\tvoid new_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\tprint (\"You clicked \\\"New\\\".\\n\");\n"
+"\t}\n"
+"\n"
+"\tvoid open_callback (SimpleAction action, Variant? parameter) {\n"
+"\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates the application and runs it. */\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/tooltip.vala.page:39
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Tooltip.html\">Gtk.Tooltip</"
+"link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Tooltip.html\">Gtk.Tooltip</"
+"link>"
+
+#. (itstool) path: item/p
+#: C/tooltip.vala.page:41
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Widget.query_tooltip.html"
+"\">Gtk.Widget.query_tooltip</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Widget.query_tooltip.html"
+"\">Gtk.Widget.query_tooltip</link>"
+
+#. (itstool) path: item/p
+#: C/tooltip.vala.page:42
+msgid ""
+"<link href=\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html#GTK-"
+"STOCK-UNDO:CAPS\">Stock Items</link>"
+msgstr ""
+"<link href=\"https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html#GTK-"
+"STOCK-UNDO:CAPS\">Stock Items</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/treeview_advanced_liststore.py.page:23
+msgctxt "_"
+msgid ""
+"external ref='media/treeview_advanced_liststore.png' "
+"md5='102b512197fb9aa4ed9a16462f6af911'"
+msgstr ""
+"external ref='media/treeview_advanced_liststore.png' "
+"md5='102b512197fb9aa4ed9a16462f6af911'"
+
+#. (itstool) path: info/title
+#: C/treeview_advanced_liststore.py.page:8
+msgctxt "text"
+msgid "Simple Treeview with ListStore (Python)"
+msgstr "Treeview sencillo con ListStore (Python)"
+
+#. (itstool) path: info/desc
+#: C/treeview_advanced_liststore.py.page:19
+msgid "A TreeView displaying a ListStore (more complex example)"
+msgstr "Un TreeView mostrando un ListStore (ejemplo más complejo)"
+
+#. (itstool) path: page/title
+#: C/treeview_advanced_liststore.py.page:22
+msgid "More Complex Treeview with ListStore"
+msgstr "Treeview más complejo con ListStore"
+
+#. (itstool) path: page/p
+#: C/treeview_advanced_liststore.py.page:24
+#: C/treeview_simple_liststore.py.page:25
+msgid ""
+"This TreeView displays a simple ListStore with the selection \"changed\" "
+"signal connected."
+msgstr ""
+"Este TreeView muestra un ListStore sencillo con la señal de selección "
+"«changed» conectada."
+
+#. (itstool) path: section/code
+#: C/treeview_advanced_liststore.py.page:31
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Pango\n"
+"import sys\n"
+"\n"
+"list_of_dvd = [[\"The Usual Suspects\"],\n"
+" [\"Gilda\"],\n"
+" [\"The Godfather\"],\n"
+" [\"Pulp Fiction\"],\n"
+" [\"Once Upon a Time in the West\"],\n"
+" [\"Rear Window\"]]\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"My DVDs\", application=app)\n"
+" self.set_default_size(250, 100)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # the data are stored in the model\n"
+" # create a liststore with one column\n"
+" self.listmodel = Gtk.ListStore(str)\n"
+" for i in range(len(list_of_dvd)):\n"
+" self.listmodel.append(list_of_dvd[i])\n"
+"\n"
+" # a treeview to see the data stored in the model\n"
+" view = Gtk.TreeView(model=self.listmodel)\n"
+"\n"
+" # cellrenderer for the first column\n"
+" cell = Gtk.CellRendererText()\n"
+" # the first column is created\n"
+" col = Gtk.TreeViewColumn(\"Title\", cell, text=0)\n"
+" # and it is appended to the treeview\n"
+" view.append_column(col)\n"
+"\n"
+" # when a row of the treeview is selected, it emits a signal\n"
+" self.selection = view.get_selection()\n"
+" self.selection.connect(\"changed\", self.on_changed)\n"
+"\n"
+" # the label we use to show the selection\n"
+" self.label = Gtk.Label()\n"
+" self.label.set_text(\"\")\n"
+"\n"
+" # a button to add new titles, connected to a callback function\n"
+" self.button_add = Gtk.Button(label=\"Add\")\n"
+" self.button_add.connect(\"clicked\", self.add_cb)\n"
+"\n"
+" # an entry to enter titles\n"
+" self.entry = Gtk.Entry()\n"
+"\n"
+" # a button to remove titles, connected to a callback function\n"
+" self.button_remove = Gtk.Button(label=\"Remove\")\n"
+" self.button_remove.connect(\"clicked\", self.remove_cb)\n"
+"\n"
+" # a button to remove all titles, connected to a callback function\n"
+" self.button_remove_all = Gtk.Button(label=\"Remove All\")\n"
+" self.button_remove_all.connect(\"clicked\", self.remove_all_cb)\n"
+"\n"
+" # a grid to attach the widgets\n"
+" grid = Gtk.Grid()\n"
+" grid.attach(view, 0, 0, 4, 1)\n"
+" grid.attach(self.label, 0, 1, 4, 1)\n"
+" grid.attach(self.button_add, 0, 2, 1, 1)\n"
+" grid.attach_next_to(\n"
+" self.entry, self.button_add, Gtk.PositionType.RIGHT, 1, 1)\n"
+" grid.attach_next_to(\n"
+" self.button_remove, self.entry, Gtk.PositionType.RIGHT, 1, 1)\n"
+" grid.attach_next_to(\n"
+" self.button_remove_all, self.button_remove, Gtk.PositionType.RIGHT, 1, 1)\n"
+"\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" def on_changed(self, selection):\n"
+" # get the model and the iterator that points at the data in the model\n"
+" (model, iter) = selection.get_selected()\n"
+" # set the label to a new value depending on the selection, if there is\n"
+" # one\n"
+" if iter is not None:\n"
+" self.label.set_text(\"\\n %s\" % (model[iter][0]))\n"
+" else:\n"
+" self.label.set_text(\"\")\n"
+" return True\n"
+"\n"
+" # callback function for the \"Add\" button\n"
+" def add_cb(self, button):\n"
+" # append to the model the title that is in the entry\n"
+" title = self.entry.get_text()\n"
+" self.listmodel.append([title])\n"
+" # and print a message in the terminal\n"
+" print(\"%s has been added\" % (title))\n"
+"\n"
+" def remove_cb(self, button):\n"
+" # if there is still an entry in the model\n"
+" if len(self.listmodel) != 0:\n"
+" # get the selection\n"
+" (model, iter) = self.selection.get_selected()\n"
+" # if there is a selection, print a message in the terminal\n"
+" # and remove it from the model\n"
+" if iter is not None:\n"
+" print(\"%s has been removed\" % (model[iter][0]))\n"
+" self.listmodel.remove(iter)\n"
+" # otherwise, ask the user to select something to remove\n"
+" else:\n"
+" print(\"Select a title to remove\")\n"
+" # else, if there are no entries in the model, print \"Empty list\"\n"
+" # in the terminal\n"
+" else:\n"
+" print(\"Empty list\")\n"
+"\n"
+" def remove_all_cb(self, button):\n"
+" # if there is still an entry in the model\n"
+" if len(self.listmodel) != 0:\n"
+" # remove all the entries in the model\n"
+" for i in range(len(self.listmodel)):\n"
+" iter = self.listmodel.get_iter(0)\n"
+" self.listmodel.remove(iter)\n"
+" # print a message in the terminal alerting that the model is empty\n"
+" print(\"Empty list\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Pango\n"
+"import sys\n"
+"\n"
+"list_of_dvd = [[\"The Usual Suspects\"],\n"
+" [\"Gilda\"],\n"
+" [\"The Godfather\"],\n"
+" [\"Pulp Fiction\"],\n"
+" [\"Once Upon a Time in the West\"],\n"
+" [\"Rear Window\"]]\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"My DVDs\", application=app)\n"
+" self.set_default_size(250, 100)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # the data are stored in the model\n"
+" # create a liststore with one column\n"
+" self.listmodel = Gtk.ListStore(str)\n"
+" for i in range(len(list_of_dvd)):\n"
+" self.listmodel.append(list_of_dvd[i])\n"
+"\n"
+" # a treeview to see the data stored in the model\n"
+" view = Gtk.TreeView(model=self.listmodel)\n"
+"\n"
+" # cellrenderer for the first column\n"
+" cell = Gtk.CellRendererText()\n"
+" # the first column is created\n"
+" col = Gtk.TreeViewColumn(\"Title\", cell, text=0)\n"
+" # and it is appended to the treeview\n"
+" view.append_column(col)\n"
+"\n"
+" # when a row of the treeview is selected, it emits a signal\n"
+" self.selection = view.get_selection()\n"
+" self.selection.connect(\"changed\", self.on_changed)\n"
+"\n"
+" # the label we use to show the selection\n"
+" self.label = Gtk.Label()\n"
+" self.label.set_text(\"\")\n"
+"\n"
+" # a button to add new titles, connected to a callback function\n"
+" self.button_add = Gtk.Button(label=\"Add\")\n"
+" self.button_add.connect(\"clicked\", self.add_cb)\n"
+"\n"
+" # an entry to enter titles\n"
+" self.entry = Gtk.Entry()\n"
+"\n"
+" # a button to remove titles, connected to a callback function\n"
+" self.button_remove = Gtk.Button(label=\"Remove\")\n"
+" self.button_remove.connect(\"clicked\", self.remove_cb)\n"
+"\n"
+" # a button to remove all titles, connected to a callback function\n"
+" self.button_remove_all = Gtk.Button(label=\"Remove All\")\n"
+" self.button_remove_all.connect(\"clicked\", self.remove_all_cb)\n"
+"\n"
+" # a grid to attach the widgets\n"
+" grid = Gtk.Grid()\n"
+" grid.attach(view, 0, 0, 4, 1)\n"
+" grid.attach(self.label, 0, 1, 4, 1)\n"
+" grid.attach(self.button_add, 0, 2, 1, 1)\n"
+" grid.attach_next_to(\n"
+" self.entry, self.button_add, Gtk.PositionType.RIGHT, 1, 1)\n"
+" grid.attach_next_to(\n"
+" self.button_remove, self.entry, Gtk.PositionType.RIGHT, 1, 1)\n"
+" grid.attach_next_to(\n"
+" self.button_remove_all, self.button_remove, Gtk.PositionType.RIGHT, 1, 1)\n"
+"\n"
+" # add the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" def on_changed(self, selection):\n"
+" # get the model and the iterator that points at the data in the model\n"
+" (model, iter) = selection.get_selected()\n"
+" # set the label to a new value depending on the selection, if there is\n"
+" # one\n"
+" if iter is not None:\n"
+" self.label.set_text(\"\\n %s\" % (model[iter][0]))\n"
+" else:\n"
+" self.label.set_text(\"\")\n"
+" return True\n"
+"\n"
+" # callback function for the \"Add\" button\n"
+" def add_cb(self, button):\n"
+" # append to the model the title that is in the entry\n"
+" title = self.entry.get_text()\n"
+" self.listmodel.append([title])\n"
+" # and print a message in the terminal\n"
+" print(\"%s has been added\" % (title))\n"
+"\n"
+" def remove_cb(self, button):\n"
+" # if there is still an entry in the model\n"
+" if len(self.listmodel) != 0:\n"
+" # get the selection\n"
+" (model, iter) = self.selection.get_selected()\n"
+" # if there is a selection, print a message in the terminal\n"
+" # and remove it from the model\n"
+" if iter is not None:\n"
+" print(\"%s has been removed\" % (model[iter][0]))\n"
+" self.listmodel.remove(iter)\n"
+" # otherwise, ask the user to select something to remove\n"
+" else:\n"
+" print(\"Select a title to remove\")\n"
+" # else, if there are no entries in the model, print \"Empty list\"\n"
+" # in the terminal\n"
+" else:\n"
+" print(\"Empty list\")\n"
+"\n"
+" def remove_all_cb(self, button):\n"
+" # if there is still an entry in the model\n"
+" if len(self.listmodel) != 0:\n"
+" # remove all the entries in the model\n"
+" for i in range(len(self.listmodel)):\n"
+" iter = self.listmodel.get_iter(0)\n"
+" self.listmodel.remove(iter)\n"
+" # print a message in the terminal alerting that the model is empty\n"
+" print(\"Empty list\")\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/treeview_advanced_liststore.py.page:35
+#: C/treeview_cellrenderertoggle.py.page:35
+#: C/treeview_simple_liststore.py.page:36 C/treeview_treestore.py.page:36
+msgid "Useful methods for a TreeView widget"
+msgstr "Métodos útiles para un widget TreeView"
+
+#. (itstool) path: section/p
+#: C/treeview_advanced_liststore.py.page:36
+#: C/treeview_cellrenderertoggle.py.page:36 C/treeview_treestore.py.page:37
+msgid ""
+"The TreeView widget is designed around a <em>Model/View/Controller</em> "
+"design: the <em>Model</em> stores the data; the <em>View</em> gets change "
+"notifications and displays the content of the model; the <em>Controller</"
+"em>, finally, changes the state of the model and notifies the view of these "
+"changes. For more information and for a list of useful methods for TreeModel "
+"see <link xref=\"model-view-controller.py\"/>."
+msgstr ""
+"El widget «TreeView» está construido alrededor del diseño <em>Modelo/Vista/"
+"Controlador</em>: el <em>Modelo</em> almacena los datos; la <em>Vista</em> "
+"obtiene las notificaciones de cambio y muestra el contenido del modelo; el "
+"<em>Controlador</em>, finalmente, cambia el estado del modelo y le notifica "
+"a la vista de los cambios. Para más información y para una lista de métodos "
+"útiles para el «TreeModel» consulte la <link xref=\"model-view-controller.py"
+"\"/>."
+
+#. (itstool) path: section/p
+#: C/treeview_advanced_liststore.py.page:37
+msgid ""
+"In line 36 the <code>\"changed\"</code> signal is connected to the callback "
+"function <code>on_changed()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 36, la señal <code>\"changed\"</code> se conecta a la función de "
+"retorno de llamada <code>on_changed()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
+"detallada."
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/treeview_cellrenderertoggle.py.page:23
+msgctxt "_"
+msgid ""
+"external ref='media/treeview_cellrenderertoggle.png' "
+"md5='ade9b9437f8f83150acf37610dab834d'"
+msgstr ""
+"external ref='media/treeview_cellrenderertoggle.png' "
+"md5='ade9b9437f8f83150acf37610dab834d'"
+
+#. (itstool) path: info/title
+#: C/treeview_cellrenderertoggle.py.page:8 C/treeview_treestore.py.page:8
+msgctxt "text"
+msgid "TreeView with TreeStore (Python)"
+msgstr "TreeView con TreeStore (Python)"
+
+#. (itstool) path: info/desc
+#: C/treeview_cellrenderertoggle.py.page:19
+msgid ""
+"A TreeView displaying a TreeStore (more complex example, with "
+"CellRendererToggle)"
+msgstr ""
+"Un TreeView mostrando un TreeStore (ejemplo más complejo, con "
+"CellRendererToggle)"
+
+#. (itstool) path: page/title
+#: C/treeview_cellrenderertoggle.py.page:22
+msgid "More Complex TreeView with TreeStore"
+msgstr "TreeView más complejo con TreeStore"
+
+#. (itstool) path: page/p
+#: C/treeview_cellrenderertoggle.py.page:24
+msgid ""
+"This TreeView displays a TreeStore with two columns, one of which is "
+"rendered as a toggle."
+msgstr ""
+"Este TreeView muestra un ListStore con dos columnas, una de las cuales se "
+"procesa como un interruptor."
+
+#. (itstool) path: section/code
+#: C/treeview_cellrenderertoggle.py.page:31
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Pango\n"
+"import sys\n"
+"\n"
+"books = [[\"Tolstoy, Leo\", [\"War and Peace\", True], [\"Anna Karenina\", False]],\n"
+" [\"Shakespeare, William\", [\"Hamlet\", False],\n"
+" [\"Macbeth\", True], [\"Othello\", False]],\n"
+" [\"Tolkien, J.R.R.\", [\"The Lord of the Rings\", False]]]\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Library\", application=app)\n"
+" self.set_default_size(250, 100)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # the data are stored in the model\n"
+" # create a treestore with two columns\n"
+" self.store = Gtk.TreeStore(str, bool)\n"
+" # fill in the model\n"
+" for i in range(len(books)):\n"
+" # the iter piter is returned when appending the author in the first column\n"
+" # and False in the second\n"
+" piter = self.store.append(None, [books[i][0], False])\n"
+" # append the books and the associated boolean value as children of\n"
+" # the author\n"
+" j = 1\n"
+" while j < len(books[i]):\n"
+" self.store.append(piter, books[i][j])\n"
+" j += 1\n"
+"\n"
+" # the treeview shows the model\n"
+" # create a treeview on the model self.store\n"
+" view = Gtk.TreeView()\n"
+" view.set_model(self.store)\n"
+"\n"
+" # the cellrenderer for the first column - text\n"
+" renderer_books = Gtk.CellRendererText()\n"
+" # the first column is created\n"
+" column_books = Gtk.TreeViewColumn(\"Books\", renderer_books, text=0)\n"
+" # and it is appended to the treeview\n"
+" view.append_column(column_books)\n"
+"\n"
+" # the cellrenderer for the second column - boolean rendered as a toggle\n"
+" renderer_in_out = Gtk.CellRendererToggle()\n"
+" # the second column is created\n"
+" column_in_out = Gtk.TreeViewColumn(\"Out?\", renderer_in_out, active=1)\n"
+" # and it is appended to the treeview\n"
+" view.append_column(column_in_out)\n"
+" # connect the cellrenderertoggle with a callback function\n"
+" renderer_in_out.connect(\"toggled\", self.on_toggled)\n"
+"\n"
+" # add the treeview to the window\n"
+" self.add(view)\n"
+"\n"
+" # callback function for the signal emitted by the cellrenderertoggle\n"
+" def on_toggled(self, widget, path):\n"
+" # the boolean value of the selected row\n"
+" current_value = self.store[path][1]\n"
+" # change the boolean value of the selected row in the model\n"
+" self.store[path][1] = not current_value\n"
+" # new current value!\n"
+" current_value = not current_value\n"
+" # if length of the path is 1 (that is, if we are selecting an author)\n"
+" if len(path) == 1:\n"
+" # get the iter associated with the path\n"
+" piter = self.store.get_iter(path)\n"
+" # get the iter associated with its first child\n"
+" citer = self.store.iter_children(piter)\n"
+" # while there are children, change the state of their boolean value\n"
+" # to the value of the author\n"
+" while citer is not None:\n"
+" self.store[citer][1] = current_value\n"
+" citer = self.store.iter_next(citer)\n"
+" # if the length of the path is not 1 (that is, if we are selecting a\n"
+" # book)\n"
+" elif len(path) != 1:\n"
+" # get the first child of the parent of the book (the first book of\n"
+" # the author)\n"
+" citer = self.store.get_iter(path)\n"
+" piter = self.store.iter_parent(citer)\n"
+" citer = self.store.iter_children(piter)\n"
+" # check if all the children are selected\n"
+" all_selected = True\n"
+" while citer is not None:\n"
+" if self.store[citer][1] == False:\n"
+" all_selected = False\n"
+" break\n"
+" citer = self.store.iter_next(citer)\n"
+" # if they do, the author as well is selected; otherwise it is not\n"
+" self.store[piter][1] = all_selected\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Pango\n"
+"import sys\n"
+"\n"
+"books = [[\"Tolstoy, Leo\", [\"War and Peace\", True], [\"Anna Karenina\", False]],\n"
+" [\"Shakespeare, William\", [\"Hamlet\", False],\n"
+" [\"Macbeth\", True], [\"Othello\", False]],\n"
+" [\"Tolkien, J.R.R.\", [\"The Lord of the Rings\", False]]]\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Library\", application=app)\n"
+" self.set_default_size(250, 100)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # the data are stored in the model\n"
+" # create a treestore with two columns\n"
+" self.store = Gtk.TreeStore(str, bool)\n"
+" # fill in the model\n"
+" for i in range(len(books)):\n"
+" # the iter piter is returned when appending the author in the first column\n"
+" # and False in the second\n"
+" piter = self.store.append(None, [books[i][0], False])\n"
+" # append the books and the associated boolean value as children of\n"
+" # the author\n"
+" j = 1\n"
+" while j < len(books[i]):\n"
+" self.store.append(piter, books[i][j])\n"
+" j += 1\n"
+"\n"
+" # the treeview shows the model\n"
+" # create a treeview on the model self.store\n"
+" view = Gtk.TreeView()\n"
+" view.set_model(self.store)\n"
+"\n"
+" # the cellrenderer for the first column - text\n"
+" renderer_books = Gtk.CellRendererText()\n"
+" # the first column is created\n"
+" column_books = Gtk.TreeViewColumn(\"Books\", renderer_books, text=0)\n"
+" # and it is appended to the treeview\n"
+" view.append_column(column_books)\n"
+"\n"
+" # the cellrenderer for the second column - boolean rendered as a toggle\n"
+" renderer_in_out = Gtk.CellRendererToggle()\n"
+" # the second column is created\n"
+" column_in_out = Gtk.TreeViewColumn(\"Out?\", renderer_in_out, active=1)\n"
+" # and it is appended to the treeview\n"
+" view.append_column(column_in_out)\n"
+" # connect the cellrenderertoggle with a callback function\n"
+" renderer_in_out.connect(\"toggled\", self.on_toggled)\n"
+"\n"
+" # add the treeview to the window\n"
+" self.add(view)\n"
+"\n"
+" # callback function for the signal emitted by the cellrenderertoggle\n"
+" def on_toggled(self, widget, path):\n"
+" # the boolean value of the selected row\n"
+" current_value = self.store[path][1]\n"
+" # change the boolean value of the selected row in the model\n"
+" self.store[path][1] = not current_value\n"
+" # new current value!\n"
+" current_value = not current_value\n"
+" # if length of the path is 1 (that is, if we are selecting an author)\n"
+" if len(path) == 1:\n"
+" # get the iter associated with the path\n"
+" piter = self.store.get_iter(path)\n"
+" # get the iter associated with its first child\n"
+" citer = self.store.iter_children(piter)\n"
+" # while there are children, change the state of their boolean value\n"
+" # to the value of the author\n"
+" while citer is not None:\n"
+" self.store[citer][1] = current_value\n"
+" citer = self.store.iter_next(citer)\n"
+" # if the length of the path is not 1 (that is, if we are selecting a\n"
+" # book)\n"
+" elif len(path) != 1:\n"
+" # get the first child of the parent of the book (the first book of\n"
+" # the author)\n"
+" citer = self.store.get_iter(path)\n"
+" piter = self.store.iter_parent(citer)\n"
+" citer = self.store.iter_children(piter)\n"
+" # check if all the children are selected\n"
+" all_selected = True\n"
+" while citer is not None:\n"
+" if self.store[citer][1] == False:\n"
+" all_selected = False\n"
+" break\n"
+" citer = self.store.iter_next(citer)\n"
+" # if they do, the author as well is selected; otherwise it is not\n"
+" self.store[piter][1] = all_selected\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/p
+#: C/treeview_cellrenderertoggle.py.page:37
+msgid ""
+"In line 48 the <code>\"toggled\"</code> signal is connected to the callback "
+"function <code>on_toggled()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 48 la señal <code>«toggled»</code> se conecta a una función de "
+"retorno de llamada <code>on_toggled()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
+"detallada."
+
+#. (itstool) path: item/p
+#: C/treeview_cellrenderertoggle.py.page:46 C/treeview_treestore.py.page:46
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeStore.html"
+"\">GtkTreeStore</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkTreeStore.html"
+"\">GtkTreeStore</link>"
+
+#. (itstool) path: item/p
+#: C/treeview_cellrenderertoggle.py.page:48
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererToggle."
+"html\">GtkCellRendererToggle</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkCellRendererToggle."
+"html\">GtkCellRendererToggle</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/treeview_simple_liststore.js.page:25
+msgctxt "_"
+msgid ""
+"external ref='media/treeview_simple_liststore_penguins.png' "
+"md5='d750a0b9fddf8e508753cc639839871d'"
+msgstr ""
+"external ref='media/treeview_simple_liststore_penguins.png' "
+"md5='d750a0b9fddf8e508753cc639839871d'"
+
+#. (itstool) path: info/title
+#: C/treeview_simple_liststore.js.page:8
+msgctxt "text"
+msgid "TreeView with ListStore (JavaScript)"
+msgstr "TreeView con ListStore (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/treeview_simple_liststore.js.page:21
+msgid "A widget that shows a separate list of items"
+msgstr "Un widget que muestra una lista separada de elementos"
+
+#. (itstool) path: page/title
+#: C/treeview_simple_liststore.js.page:24
+msgid "TreeView with ListStore"
+msgstr "TreeView con ListStore"
+
+#. (itstool) path: page/p
+#: C/treeview_simple_liststore.js.page:26
+msgid ""
+"A TreeView is like a window onto the contents of either a ListStore or a "
+"TreeStore. A ListStore is like a spreadsheet: a \"flat\", two-dimensional "
+"list of things broken up into rows and columns. A TreeStore, meanwhile, can "
+"branch out in different directions like a tree can. In this example, we "
+"create a TreeView that shows the contents of a ListStore with (fictitious) "
+"names and phone numbers in it, and set it so that the <link xref=\"label.js"
+"\">Label</link> at the bottom of the window shows more information about "
+"whichever name you click on."
+msgstr ""
+"Un TreeView es como una ventana sobre los contenidos de un ListStore o un "
+"TreeStore. Un ListStore es como una hoja de cálculo: una lista de cosas "
+"«plana», de dos dimensiones, dividida en filas y columnas. Un TreeStore, en "
+"cambio, puede bifurcarse en distintas direcciones como un árbol. En este "
+"ejemplo, se crea un TreeView que muestra el contenido de un ListStore con "
+"nombres y números de teléfono (ficticios), y se configura para que la <link "
+"xref=\"label.js\">Etiqueta</link> en la parte inferior de la ventana muestre "
+"más información acerca de cualquier nombre en el que pulse."
+
+#. (itstool) path: page/p
+#: C/treeview_simple_liststore.js.page:27
+msgid ""
+"The TreeView is not just a single widget, but contains a number of smaller "
+"ones:"
+msgstr ""
+"Un TreeView no es solamente un widget individual, sino que contiene varios "
+"más pequeños."
+
+#. (itstool) path: item/p
+#: C/treeview_simple_liststore.js.page:29
+msgid ""
+"TreeViewColumn widgets show each (vertical) column of information from the "
+"ListStore. Each one has a title which can be shown at the top of the column, "
+"like in the screenshot."
+msgstr ""
+"Los widgets TreeViewColumn muestran cada columna (vertical) de información "
+"del ListStore. Cada uno tiene un título que puede mostrarse en la parte "
+"superior de la columna, como en la captura de pantalla."
+
+#. (itstool) path: item/p
+#: C/treeview_simple_liststore.js.page:30
+msgid ""
+"CellRenderer widgets are \"packed\" into each TreeViewColumn, and contain "
+"the instructions for how to display each individual \"cell\", or item from "
+"the ListStore. There are multiple different types, including the "
+"CellRendererText used here and the CellRendererPixbuf, which displays a "
+"picture (\"pixel buffer\")."
+msgstr ""
+"Los widgets CellRenderer se «empaquetan» en cada TreeViewColumn, y contienen "
+"las instrucciones de cómo mostrar cada «celda» individual, o elemento del "
+"ListStore. Hay varios tipos diferentes, incluyendo el CellRendererText que "
+"se usa aquí y el CellRendererPixbuf, que muestra una imagen («búfer de "
+"píxeles»)."
+
+#. (itstool) path: page/p
+#: C/treeview_simple_liststore.js.page:32
+msgid ""
+"Finally, we're going to use an object called a TreeIter, which isn't a "
+"widget so much as an invisible cursor which points to a (horizontal) row in "
+"the ListStore. Whenever you click on a name in the phonebook, for instance, "
+"we create a TreeIter pointing to the row that's selected, and then use that "
+"to tell the ListStore which entry we want the Label to show more information "
+"about."
+msgstr ""
+"Finalmente, se usará un objeto llamado TreeIter, que no es un widget sino un "
+"cursor invisible que apunta a una fila (horizontal) en el ListStore. Cada "
+"vez que pulsa en un nombre en la libreta de direcciones, por ejemplo, se "
+"crea un TreeIter apuntando a la fila seleccionada, y después se usa para "
+"decirle al ListStore el elemento del que tiene que mostrar más información."
+
+#. (itstool) path: note/p
+#: C/treeview_simple_liststore.js.page:33
+msgid ""
+"The TreeView is probably the most complicated Gtk widget, because of how "
+"many parts it has and how they all have to work together. Give yourself time "
+"to learn how it works and experiment with it, or try something easier first "
+"if you're having trouble."
+msgstr ""
+"El TreeView es probablemente el widget de GTK más complicado, por la "
+"cantidad de partes que tiene y por cómo tienen que trabajar juntas. Tómese "
+"un tiempo para aprender cómo funciona y experimentar con él, o intente algo "
+"más fácil primero si encuentra problemas."
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:38
+#, no-wrap
+msgid ""
+"\n"
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"const Pango = imports.gi.Pango;\n"
+msgstr ""
+"\n"
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"const Pango = imports.gi.Pango;\n"
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:51
+#, no-wrap
+msgid ""
+"\n"
+"const TreeViewExample = new Lang.Class({\n"
+" Name: 'TreeView Example with Simple ListStore',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jstreeviewsimpleliststore'\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+msgstr ""
+"\n"
+"const TreeViewExample = new Lang.Class({\n"
+" Name: 'TreeView Example with Simple ListStore',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jstreeviewsimpleliststore'\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:76
+msgid ""
+"All the code for this sample goes in the TreeViewExample class. The above "
+"code creates a <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> for our widgets and window to "
+"go in."
+msgstr ""
+"Todo el código de este ejemplo va en la clase TreeViewExample. El código "
+"anterior crea una <link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/"
+"Gtk.Application.html\">Gtk.Application</link> en la que van los widgets y la "
+"ventana."
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:77
+#, no-wrap
+msgid ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 250,\n"
+" default_width: 100,\n"
+" border_width: 20,\n"
+" title: \"My Phone Book\"});\n"
+msgstr ""
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 250,\n"
+" default_width: 100,\n"
+" border_width: 20,\n"
+" title: \"My Phone Book\"});\n"
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:95
+#, no-wrap
+msgid ""
+"\n"
+" // Create the underlying liststore for the phonebook\n"
+" this._listStore = new Gtk.ListStore ();\n"
+" this._listStore.set_column_types ([\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING]);\n"
+msgstr ""
+"\n"
+" // Create the underlying liststore for the phonebook\n"
+" this._listStore = new Gtk.ListStore ();\n"
+" this._listStore.set_column_types ([\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING]);\n"
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:104
+msgid ""
+"We first create the ListStore like we would any widget. Then we call its "
+"set_column_types method, and pass it an array of GObject data types. (We "
+"could have put the types all on one line, but here we are breaking them up "
+"to make it easier to read.)"
+msgstr ""
+"Primero se crea el ListStore como cualquier otro widget. Después se llama a "
+"su método set_column_types, y se le pasa una matriz de tipos de datos "
+"GObject (se podrían haber puesto todos los tipos en una sola línea, pero "
+"aquí se separan para hacerlo más fácil de leer)."
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:105
+msgid "The GObject data types you can use include:"
+msgstr "Los tipos de datos GObject que puede usar incluyen:"
+
+#. (itstool) path: item/p
+#: C/treeview_simple_liststore.js.page:110
+msgid "<file>gtk.gdk.Pixbuf</file> -- A picture"
+msgstr "<file>gtk.gdk.Pixbuf</file>: una imagen"
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:112
+msgid ""
+"In this case, we're making a ListStore of four columns, each one containing "
+"string values."
+msgstr ""
+"En este caso, se está haciendo un ListStore de cuatro columnas, cada una "
+"conteniendo valores de cadenas."
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:115
+#, no-wrap
+msgid ""
+"\n"
+" // Data to go in the phonebook\n"
+" this.phonebook =\n"
+" let phonebook =\n"
+" [{ name: \"Jurg\", surname: \"Billeter\", phone: \"555-0123\",\n"
+" description: \"A friendly person.\"},\n"
+" { name: \"Johannes\", surname: \"Schmid\", phone: \"555-1234\",\n"
+" description: \"Easy phone number to remember.\"},\n"
+" { name: \"Julita\", surname: \"Inca\", phone: \"555-2345\",\n"
+" description: \"Another friendly person.\"},\n"
+" { name: \"Javier\", surname: \"Jardon\", phone: \"555-3456\",\n"
+" description: \"Bring fish for his penguins.\"},\n"
+" { name: \"Jason\", surname: \"Clinton\", phone: \"555-4567\",\n"
+" description: \"His cake's not a lie.\"},\n"
+" { name: \"Random J.\", surname: \"Hacker\", phone: \"555-5678\",\n"
+" description: \"Very random!\"}];\n"
+msgstr ""
+"\n"
+" // Data to go in the phonebook\n"
+" this.phonebook =\n"
+" let phonebook =\n"
+" [{ name: \"Jurg\", surname: \"Billeter\", phone: \"555-0123\",\n"
+" description: \"A friendly person.\"},\n"
+" { name: \"Johannes\", surname: \"Schmid\", phone: \"555-1234\",\n"
+" description: \"Easy phone number to remember.\"},\n"
+" { name: \"Julita\", surname: \"Inca\", phone: \"555-2345\",\n"
+" description: \"Another friendly person.\"},\n"
+" { name: \"Javier\", surname: \"Jardon\", phone: \"555-3456\",\n"
+" description: \"Bring fish for his penguins.\"},\n"
+" { name: \"Jason\", surname: \"Clinton\", phone: \"555-4567\",\n"
+" description: \"His cake's not a lie.\"},\n"
+" { name: \"Random J.\", surname: \"Hacker\", phone: \"555-5678\",\n"
+" description: \"Very random!\"}];\n"
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:132
+msgid ""
+"Here we have the information to go in the ListStore. It's an array of "
+"objects, each one corresponding to a single entry in our phone book."
+msgstr ""
+"Aquí se tiene la información que va en el ListStore. Es una matriz de "
+"objetos, cada uno correspondiente a una única entrada en la libreta de "
+"direcciones."
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:133
+msgid ""
+"Note that the TreeView in the screenshot doesn't actually show the data from "
+"the \"description\" properties. Instead, that information's shown in the "
+"Label beneath it, for whichever row that you click on. That's because the "
+"TreeView and ListStore are two separate things, and a TreeView can show all "
+"or part of a ListStore, and display what's in it in different ways. You can "
+"even have multiple widgets show things from the same ListStore, like the "
+"Label in our example or even a second TreeView."
+msgstr ""
+"Tenga en cuenta que el TreeView en la captura de pantalla no muestra en "
+"realidad los datos de las propiedades «description». En su lugar, esa "
+"información se muestra en la etiqueta debajo, para cada fila en la que "
+"pulse. Eso es así porque el TreeView y el ListStore son dos cosas separadas, "
+"y un TreeView puede mostrar todo o parte de un ListStore, y mostrar su "
+"información de maneras diferentes. Puede hacer que varios widgets muestren "
+"cosas del mismo ListStore, como la etiqueta del ejemplo, o incluso un "
+"segundo TreeView."
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:135
+#, no-wrap
+msgid ""
+"\n"
+" for (i = 0; i < phonebook.length; i++ ) {\n"
+" let contact = phonebook [i];\n"
+" this._listStore.set (this._listStore.append(), [0, 1, 2, 3],\n"
+" [contact.name, contact.surname, contact.phone, contact.description]);\n"
+" }\n"
+msgstr ""
+"\n"
+" for (i = 0; i < phonebook.length; i++ ) {\n"
+" let contact = phonebook [i];\n"
+" this._listStore.set (this._listStore.append(), [0, 1, 2, 3],\n"
+" [contact.name, contact.surname, contact.phone, contact.description]);\n"
+" }\n"
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:142
+msgid ""
+"This <file>for</file> loop puts the strings from our phonebook into our "
+"ListStore in order. In order, we pass the ListStore's set method the iter "
+"that points to the correct row, an array which says which columns we want to "
+"set, and an array which contains the data we want to put into those columns."
+msgstr ""
+"Este bucle <file>for</file> pone las cadenas de la libreta de direcciones en "
+"el ListStore ordenadas. En orden, se le pasa al método «set» del ListStore "
+"el iter que apunta a la fila correcta, una matriz que dice qué columnas se "
+"quieren establecer, y una matriz que contiene los datos que se quieren poner "
+"en esas columnas."
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:143
+msgid ""
+"A ListStore's <file>append</file> method adds a horizontal row onto it (it "
+"starts out with none), and returns a TreeIter pointing to that row like a "
+"cursor. So by passing <file>this._listStore.append()</file> to the ListStore "
+"as a property, we're creating a new row and telling the <file>set</file> "
+"method which row to set data for at the same time."
+msgstr ""
+"Un método <file>append</file> del ListStore le añade una fila horizontal "
+"(empieza sin ninguna), y devuelve un TreeIter apuntando a esa fila como un "
+"cursor. Entonces, pasándole <file>this._listStore.append()</file> al "
+"ListStore como una propiedad, se está creando una fila nueva y diciéndole al "
+"método <file>set</file> en qué fila tiene que establecer los datos al mismo "
+"tiempo."
+
+#. (itstool) path: section/title
+#: C/treeview_simple_liststore.js.page:148
+msgid "Creating the TreeView"
+msgstr "Crear el TreeView"
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:149
+#, no-wrap
+msgid ""
+"\n"
+" // Create the treeview\n"
+" this._treeView = new Gtk.TreeView ({\n"
+" expand: true,\n"
+" model: this._listStore });\n"
+msgstr ""
+"\n"
+" // Create the treeview\n"
+" this._treeView = new Gtk.TreeView ({\n"
+" expand: true,\n"
+" model: this._listStore });\n"
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:155
+msgid ""
+"Here we create a basic TreeView widget, that expands both horizontally and "
+"vertically to use as much space as needed. We set it to use the ListStore we "
+"created as its \"model\", or the thing it'll show us stuff from."
+msgstr ""
+"Aquí se crea un widget TreeView básico, que se expande tanto horizontal como "
+"verticalmente para usar tanto espacio como se necesite. Se configura para "
+"usar el ListStore que se creó como su «modelo», o aquello desde donde "
+"mostrará datos."
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:157
+#, no-wrap
+msgid ""
+"\n"
+" // Create the columns for the address book\n"
+" let firstName = new Gtk.TreeViewColumn ({ title: \"First Name\" });\n"
+" let lastName = new Gtk.TreeViewColumn ({ title: \"Last Name\" });\n"
+" let phone = new Gtk.TreeViewColumn ({ title: \"Phone Number\" });\n"
+msgstr ""
+"\n"
+" // Create the columns for the address book\n"
+" let firstName = new Gtk.TreeViewColumn ({ title: \"First Name\" });\n"
+" let lastName = new Gtk.TreeViewColumn ({ title: \"Last Name\" });\n"
+" let phone = new Gtk.TreeViewColumn ({ title: \"Phone Number\" });\n"
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:163
+msgid ""
+"Now we create each of the vertical TreeViewColumns we'll see in the "
+"TreeView. The title for each one goes at the top, as you can see in the "
+"screenshot."
+msgstr ""
+"Ahora se crean todas las TreeViewColumns verticales que se verán en el "
+"TreeView. El título de cada una va en la parte superior, como puede ver en "
+"la captura de pantalla."
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:165
+#, no-wrap
+msgid ""
+"\n"
+" // Create a cell renderer for when bold text is needed\n"
+" let bold = new Gtk.CellRendererText ({\n"
+" weight: Pango.Weight.BOLD });\n"
+"\n"
+" // Create a cell renderer for normal text\n"
+" let normal = new Gtk.CellRendererText ();\n"
+"\n"
+" // Pack the cell renderers into the columns\n"
+" firstName.pack_start (bold, true);\n"
+" lastName.pack_start (normal, true);\n"
+" phone.pack_start (normal, true);\n"
+msgstr ""
+"\n"
+" // Create a cell renderer for when bold text is needed\n"
+" let bold = new Gtk.CellRendererText ({\n"
+" weight: Pango.Weight.BOLD });\n"
+"\n"
+" // Create a cell renderer for normal text\n"
+" let normal = new Gtk.CellRendererText ();\n"
+"\n"
+" // Pack the cell renderers into the columns\n"
+" firstName.pack_start (bold, true);\n"
+" lastName.pack_start (normal, true);\n"
+" phone.pack_start (normal, true);\n"
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:178
+msgid ""
+"Here we create the CellRenderers that we'll use to display the text from our "
+"ListStore, and pack them into the TreeViewColumns. Each CellRendererText is "
+"used for all the entries in that column. Our normal CellRendererText just "
+"creates plain text, while our bold one uses heavier-weight text. We put it "
+"into the first name column, and tell the other two to use copies of the "
+"normal one. The \"true\" used as the second parameter for the "
+"<file>pack_start</file> method tells it to expand the cells when possible, "
+"instead of keeping them compact."
+msgstr ""
+"Aquí se crean los CellRenderer que se usarán para mostrar el texto del "
+"ListStore, y se empaquetan en las TreeViewColumn. Cada CellRendererText se "
+"usa para todas las entradas en esa columna. El CellRendererText normal sólo "
+"crea texto plano, mientras que el «bold» usa texto en negrita. Se pone en la "
+"primera columna de nombre, y se le dice a las otras dos que usen copias de "
+"la normal. El «true» usado como segundo parámetro para el método "
+"<file>pack_start</file> le dice que expanda las celdas cuando sea posible, "
+"en lugar de mantenerlas compactas."
+
+#. (itstool) path: note/p
+#: C/treeview_simple_liststore.js.page:179
+msgid ""
+"<link href=\"http://www.pygtk.org/docs/pygtk/pango-constants.html\">Here is "
+"a list</link> of other text properties you can use. In order to use these "
+"Pango constants, make sure to put the line <file>const Pango = imports.gi."
+"Pango;</file> at the beginning of your code like we did."
+msgstr ""
+"<link href=\"http://www.pygtk.org/docs/pygtk/pango-constants.html\">Aquí hay "
+"una lista</link> de otras propiedades de texto que puede usar. Para usar "
+"estas constantes de Pango, asegúrese de poner la línea <file>const Pango = "
+"imports.gi.Pango;</file> al principio del código como se hizo."
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:181
+#, no-wrap
+msgid ""
+"\n"
+" firstName.add_attribute (bold, \"text\", 0);\n"
+" lastName.add_attribute (normal, \"text\", 1);\n"
+" phone.add_attribute (normal, \"text\", 2);\n"
+"\n"
+" // Insert the columns into the treeview\n"
+" this._treeView.insert_column (firstName, 0);\n"
+" this._treeView.insert_column (lastName, 1);\n"
+" this._treeView.insert_column (phone, 2);\n"
+msgstr ""
+"\n"
+" firstName.add_attribute (bold, \"text\", 0);\n"
+" lastName.add_attribute (normal, \"text\", 1);\n"
+" phone.add_attribute (normal, \"text\", 2);\n"
+"\n"
+" // Insert the columns into the treeview\n"
+" this._treeView.insert_column (firstName, 0);\n"
+" this._treeView.insert_column (lastName, 1);\n"
+" this._treeView.insert_column (phone, 2);\n"
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:191
+msgid ""
+"Now that we've put the CellRenderers into the TreeViewColumns, we use the "
+"<file>add_attribute</file> method to tell each column to pull in text from "
+"the model our TreeView is set to use; in this case, the ListStore with the "
+"phonebook."
+msgstr ""
+"Ahora que se han puesto los CellRenderer en las TreeViewColumn, se usa el "
+"método <file>add_attribute</file> para decirle a cada columna que obtenga "
+"texto del modelo que el TreeView está configurado para usar; en este caso, "
+"el ListStore con la libreta de direcciones."
+
+#. (itstool) path: item/p
+#: C/treeview_simple_liststore.js.page:193
+msgid ""
+"The first parameter is which CellRenderer we're going to use to render what "
+"we're pulling in."
+msgstr ""
+"El primer parámetro es qué CellRenderer se usará para procesar lo que se "
+"está obteniendo."
+
+#. (itstool) path: item/p
+#: C/treeview_simple_liststore.js.page:194
+msgid ""
+"The second parameter is what kind of information we're going to pull in. In "
+"this case, we're letting it know that we're rendering text."
+msgstr ""
+"El segundo parámetro es qué tipo de información se obtendrá. En este caso, "
+"se le está haciendo saber que se procesa texto."
+
+#. (itstool) path: item/p
+#: C/treeview_simple_liststore.js.page:195
+msgid ""
+"The third parameter is which of the ListStore's columns we're pulling that "
+"information in from."
+msgstr ""
+"El tercer parámetro es de cuál de las columnas del ListStore se está "
+"obteniendo la información."
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:197
+msgid ""
+"After we've set that up, we use the TreeView's <file>insert_column</file> "
+"method to put our TreeViewColumns inside it in order. Our TreeView is now "
+"complete."
+msgstr ""
+"Después de haber preparado eso, se usa el método <file>insert_column</file> "
+"del TreeView para poner dentro las TreeViewColumn en orden. El TreeView "
+"ahora está terminado."
+
+#. (itstool) path: note/p
+#: C/treeview_simple_liststore.js.page:198
+msgid ""
+"Normally, you might want to use a loop to initialize your TreeView, but in "
+"this example we're spelling things out step by step for the sake of making "
+"it easier to understand."
+msgstr ""
+"Normalmente, usaría un bucle para inicializar su TreeView, pero en este "
+"ejemplo se hacen las cosas paso a paso para hacerlo más fácil de entender."
+
+#. (itstool) path: section/title
+#: C/treeview_simple_liststore.js.page:202
+msgid "Building the rest of the UI"
+msgstr "Crear el resto de la IU"
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:203
+#, no-wrap
+msgid ""
+"\n"
+" // Create the label that shows details for the name you select\n"
+" this._label = new Gtk.Label ({ label: \"\" });\n"
+"\n"
+" // Get which item is selected\n"
+" this.selection = this._treeView.get_selection();\n"
+"\n"
+" // When something new is selected, call _on_changed\n"
+" this.selection.connect ('changed', Lang.bind (this, this._onSelectionChanged));\n"
+msgstr ""
+"\n"
+" // Create the label that shows details for the name you select\n"
+" this._label = new Gtk.Label ({ label: \"\" });\n"
+"\n"
+" // Get which item is selected\n"
+" this.selection = this._treeView.get_selection();\n"
+"\n"
+" // When something new is selected, call _on_changed\n"
+" this.selection.connect ('changed', Lang.bind (this, this._onSelectionChanged));\n"
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:213
+msgid ""
+"The TreeView's <file>get_selection</file> method returns an object called a "
+"TreeSelection. A TreeSelection is like a TreeIter in that it's basically a "
+"cursor that points at a particular row, except that the one it points to is "
+"the one that's visibly highlighted as selected."
+msgstr ""
+"El método <file>get_selection</file> del TreeView devuelve un objeto llamado "
+"TreeSelection. Una TreeSelection es como un TreeIter en el sentido de que es "
+"básicamente un cursor que apunta a una fila particular, excepto que apunta a "
+"la que está resaltada visiblemente como seleccionada."
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:214
+msgid ""
+"After we get the TreeSelection that goes with our TreeView, we ask it to "
+"tell us when it changes which row it's pointing to. We do this by connecting "
+"its <file>changed</file> signal to the _onSelectionChanged function we "
+"wrote. This function changes the text displayed by the Label we just made."
+msgstr ""
+"Después de obtener la TreeSelection que va con el TreeView, le pedimos que "
+"nos diga cuándo cambia la fila a la que está apuntando. Esto se hace "
+"conectando la señal <file>changed</file> a la función «_onSelectionChanged» "
+"que se escribió. Esta función cambia el texto que muestra la etiqueta que se "
+"acaba de hacer."
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:216
+#, no-wrap
+msgid ""
+"\n"
+" // Create a grid to organize everything in\n"
+" this._grid = new Gtk.Grid;\n"
+"\n"
+" // Attach the treeview and label to the grid\n"
+" this._grid.attach (this._treeView, 0, 0, 1, 1);\n"
+" this._grid.attach (this._label, 0, 1, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+msgstr ""
+"\n"
+" // Create a grid to organize everything in\n"
+" this._grid = new Gtk.Grid;\n"
+"\n"
+" // Attach the treeview and label to the grid\n"
+" this._grid.attach (this._treeView, 0, 0, 1, 1);\n"
+" this._grid.attach (this._label, 0, 1, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:231
+msgid ""
+"After we've gotten that out of the way, we create a <link xref=\"grid.js"
+"\">Grid</link> to put everything in, then add it to our window and tell the "
+"window to show itself and its contents."
+msgstr ""
+"Después de haber terminado eso, se crea una <link xref=\"grid.js\">Rejilla</"
+"link> para poner todo dentro, se añade a la ventana y se le dice a esta que "
+"se muestre y revele su contenido."
+
+#. (itstool) path: section/title
+#: C/treeview_simple_liststore.js.page:235
+msgid "Function which handles a changed selection"
+msgstr "Función que maneja una selección cambiada"
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:237
+#, no-wrap
+msgid ""
+"\n"
+" _onSelectionChanged: function () {\n"
+"\n"
+" // Grab a treeiter pointing to the current selection\n"
+" let [ isSelected, model, iter ] = this.selection.get_selected();\n"
+"\n"
+" // Set the label to read off the values stored in the current selection\n"
+" this._label.set_label (\"\\n\" +\n"
+" this._listStore.get_value (iter, 0) + \" \" +\n"
+" this._listStore.get_value (iter, 1) + \" \" +\n"
+" this._listStore.get_value (iter, 2) + \"\\n\" +\n"
+" this._listStore.get_value (iter, 3));\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+msgstr ""
+"\n"
+" _onSelectionChanged: function () {\n"
+"\n"
+" // Grab a treeiter pointing to the current selection\n"
+" let [ isSelected, model, iter ] = this.selection.get_selected();\n"
+"\n"
+" // Set the label to read off the values stored in the current selection\n"
+" this._label.set_label (\"\\n\" +\n"
+" this._listStore.get_value (iter, 0) + \" \" +\n"
+" this._listStore.get_value (iter, 1) + \" \" +\n"
+" this._listStore.get_value (iter, 2) + \"\\n\" +\n"
+" this._listStore.get_value (iter, 3));\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:254
+msgid ""
+"The line of code with the let statement is a little convoluted, but it's "
+"nonetheless the best way to get a TreeIter pointing to the same row as our "
+"TreeSelection. It has to create a couple of other object references, but "
+"<file>iter</file> is the only one we need."
+msgstr ""
+"La línea de código con la declaración let es un poco compleja, pero sin "
+"embargo es la mejor manera de hacer que un TreeIter apunte a la misma fila "
+"que la TreeSelection. Tiene que crear un par de referencias a otros objetos, "
+"pero <file>iter</file> es la única que se necesita."
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:255
+msgid ""
+"After we've done that, we call the Label's <file>set_label</file> function, "
+"and use the ListStore's <file>get_value</file> function a handful of times "
+"to fill in the data we want to put in it. Its parameters are a TreeIter "
+"pointing to the row we want to get data from, and the column."
+msgstr ""
+"Después de haber hecho eso, se llama a la función <file>set_label</file> de "
+"la etiqueta, y se usa la función <file>get_value</file> del ListStore "
+"algunas veces para llenar los datos que queremos poner en ella. Sus "
+"parámetros son un TreeIter apuntando a la fila de la que queremos obtener "
+"los datos, y la columna."
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:256
+msgid ""
+"Here, we want to get data from all four columns, including the \"hidden\" "
+"one that's not part of the TreeView. This way, we can use our Label to show "
+"strings that are too large to fit in the TreeView, and that we don't need to "
+"see at a glance."
+msgstr ""
+"Aquí, se quieren obtener datos de todas las cuatro columnas, incluyendo la "
+"«escondida» que no es parte del TreeView. De esta manera, se puede usar la "
+"etiqueta para mostrar cadenas que son demasiado largas para entrar en el "
+"TreeView, y que no necesitamos ver de un vistazo."
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:258
+#, no-wrap
+msgid ""
+"\n"
+"// Run the application\n"
+"let app = new TreeViewExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"// Run the application\n"
+"let app = new TreeViewExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.js.page:263
+msgid ""
+"Finally, we create a new instance of the finished TreeViewExample class, and "
+"set the application running."
+msgstr ""
+"Finalmente, se crea una instancia nueva de la clase TreeViewExample "
+"terminada, y se ejecuta la aplicación."
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.js.page:268
+#, no-wrap
+msgid ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"const Pango = imports.gi.Pango;\n"
+"\n"
+"const TreeViewExample = new Lang.Class({\n"
+" Name: 'TreeView Example with Simple ListStore',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jstreeviewsimpleliststore'\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 250,\n"
+" default_width: 100,\n"
+" border_width: 20,\n"
+" title: \"My Phone Book\"});\n"
+"\n"
+" // Create the underlying liststore for the phonebook\n"
+" this._listStore = new Gtk.ListStore ();\n"
+" this._listStore.set_column_types ([\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING]);\n"
+"\n"
+" // Data to go in the phonebook\n"
+" let phonebook =\n"
+" [{ name: \"Jurg\", surname: \"Billeter\", phone: \"555-0123\",\n"
+" description: \"A friendly person.\"},\n"
+" { name: \"Johannes\", surname: \"Schmid\", phone: \"555-1234\",\n"
+" description: \"Easy phone number to remember.\"},\n"
+" { name: \"Julita\", surname: \"Inca\", phone: \"555-2345\",\n"
+" description: \"Another friendly person.\"},\n"
+" { name: \"Javier\", surname: \"Jardon\", phone: \"555-3456\",\n"
+" description: \"Bring fish for his penguins.\"},\n"
+" { name: \"Jason\", surname: \"Clinton\", phone: \"555-4567\",\n"
+" description: \"His cake's not a lie.\"},\n"
+" { name: \"Random J.\", surname: \"Hacker\", phone: \"555-5678\",\n"
+" description: \"Very random!\"}];\n"
+"\n"
+" // Put the data in the phonebook\n"
+" for (let i = 0; i < phonebook.length; i++ ) {\n"
+" let contact = phonebook [i];\n"
+" this._listStore.set (this._listStore.append(), [0, 1, 2, 3],\n"
+" [contact.name, contact.surname, contact.phone, contact.description]);\n"
+" }\n"
+"\n"
+" // Create the treeview\n"
+" this._treeView = new Gtk.TreeView ({\n"
+" expand: true,\n"
+" model: this._listStore });\n"
+"\n"
+" // Create the columns for the address book\n"
+" let firstName = new Gtk.TreeViewColumn ({ title: \"First Name\" });\n"
+" let lastName = new Gtk.TreeViewColumn ({ title: \"Last Name\" });\n"
+" let phone = new Gtk.TreeViewColumn ({ title: \"Phone Number\" });\n"
+"\n"
+" // Create a cell renderer for when bold text is needed\n"
+" let bold = new Gtk.CellRendererText ({\n"
+" weight: Pango.Weight.BOLD });\n"
+"\n"
+" // Create a cell renderer for normal text\n"
+" let normal = new Gtk.CellRendererText ();\n"
+"\n"
+" // Pack the cell renderers into the columns\n"
+" firstName.pack_start (bold, true);\n"
+" lastName.pack_start (normal, true);\n"
+" phone.pack_start (normal, true);\n"
+"\n"
+" // Set each column to pull text from the TreeView's model\n"
+" firstName.add_attribute (bold, \"text\", 0);\n"
+" lastName.add_attribute (normal, \"text\", 1);\n"
+" phone.add_attribute (normal, \"text\", 2);\n"
+"\n"
+" // Insert the columns into the treeview\n"
+" this._treeView.insert_column (firstName, 0);\n"
+" this._treeView.insert_column (lastName, 1);\n"
+" this._treeView.insert_column (phone, 2);\n"
+"\n"
+" // Create the label that shows details for the name you select\n"
+" this._label = new Gtk.Label ({ label: \"\" });\n"
+"\n"
+" // Get which item is selected\n"
+" this.selection = this._treeView.get_selection();\n"
+"\n"
+" // When something new is selected, call _on_changed\n"
+" this.selection.connect ('changed', Lang.bind (this, this._onSelectionChanged));\n"
+"\n"
+" // Create a grid to organize everything in\n"
+" this._grid = new Gtk.Grid;\n"
+"\n"
+" // Attach the treeview and label to the grid\n"
+" this._grid.attach (this._treeView, 0, 0, 1, 1);\n"
+" this._grid.attach (this._label, 0, 1, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _onSelectionChanged: function () {\n"
+"\n"
+" // Grab a treeiter pointing to the current selection\n"
+" let [ isSelected, model, iter ] = this.selection.get_selected();\n"
+"\n"
+" // Set the label to read off the values stored in the current selection\n"
+" this._label.set_label (\"\\n\" +\n"
+" this._listStore.get_value (iter, 0) + \" \" +\n"
+" this._listStore.get_value (iter, 1) + \" \" +\n"
+" this._listStore.get_value (iter, 2) + \"\\n\" +\n"
+" this._listStore.get_value (iter, 3));\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new TreeViewExample ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"#!/usr/bin/gjs\n"
+"\n"
+"const GObject = imports.gi.GObject;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"const Pango = imports.gi.Pango;\n"
+"\n"
+"const TreeViewExample = new Lang.Class({\n"
+" Name: 'TreeView Example with Simple ListStore',\n"
+"\n"
+" // Create the application itself\n"
+" _init: function() {\n"
+" this.application = new Gtk.Application({\n"
+" application_id: 'org.example.jstreeviewsimpleliststore'\n"
+" });\n"
+"\n"
+" // Connect 'activate' and 'startup' signals to the callback functions\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" this.application.connect('startup', Lang.bind(this, this._onStartup));\n"
+" },\n"
+"\n"
+" // Callback function for 'activate' signal presents window when active\n"
+" _onActivate: function() {\n"
+" this._window.present();\n"
+" },\n"
+"\n"
+" // Callback function for 'startup' signal builds the UI\n"
+" _onStartup: function() {\n"
+" this._buildUI ();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" // Build the application's UI\n"
+" _buildUI: function() {\n"
+"\n"
+" // Create the application window\n"
+" this._window = new Gtk.ApplicationWindow({\n"
+" application: this.application,\n"
+" window_position: Gtk.WindowPosition.CENTER,\n"
+" default_height: 250,\n"
+" default_width: 100,\n"
+" border_width: 20,\n"
+" title: \"My Phone Book\"});\n"
+"\n"
+" // Create the underlying liststore for the phonebook\n"
+" this._listStore = new Gtk.ListStore ();\n"
+" this._listStore.set_column_types ([\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING,\n"
+" GObject.TYPE_STRING]);\n"
+"\n"
+" // Data to go in the phonebook\n"
+" let phonebook =\n"
+" [{ name: \"Jurg\", surname: \"Billeter\", phone: \"555-0123\",\n"
+" description: \"A friendly person.\"},\n"
+" { name: \"Johannes\", surname: \"Schmid\", phone: \"555-1234\",\n"
+" description: \"Easy phone number to remember.\"},\n"
+" { name: \"Julita\", surname: \"Inca\", phone: \"555-2345\",\n"
+" description: \"Another friendly person.\"},\n"
+" { name: \"Javier\", surname: \"Jardon\", phone: \"555-3456\",\n"
+" description: \"Bring fish for his penguins.\"},\n"
+" { name: \"Jason\", surname: \"Clinton\", phone: \"555-4567\",\n"
+" description: \"His cake's not a lie.\"},\n"
+" { name: \"Random J.\", surname: \"Hacker\", phone: \"555-5678\",\n"
+" description: \"Very random!\"}];\n"
+"\n"
+" // Put the data in the phonebook\n"
+" for (let i = 0; i < phonebook.length; i++ ) {\n"
+" let contact = phonebook [i];\n"
+" this._listStore.set (this._listStore.append(), [0, 1, 2, 3],\n"
+" [contact.name, contact.surname, contact.phone, contact.description]);\n"
+" }\n"
+"\n"
+" // Create the treeview\n"
+" this._treeView = new Gtk.TreeView ({\n"
+" expand: true,\n"
+" model: this._listStore });\n"
+"\n"
+" // Create the columns for the address book\n"
+" let firstName = new Gtk.TreeViewColumn ({ title: \"First Name\" });\n"
+" let lastName = new Gtk.TreeViewColumn ({ title: \"Last Name\" });\n"
+" let phone = new Gtk.TreeViewColumn ({ title: \"Phone Number\" });\n"
+"\n"
+" // Create a cell renderer for when bold text is needed\n"
+" let bold = new Gtk.CellRendererText ({\n"
+" weight: Pango.Weight.BOLD });\n"
+"\n"
+" // Create a cell renderer for normal text\n"
+" let normal = new Gtk.CellRendererText ();\n"
+"\n"
+" // Pack the cell renderers into the columns\n"
+" firstName.pack_start (bold, true);\n"
+" lastName.pack_start (normal, true);\n"
+" phone.pack_start (normal, true);\n"
+"\n"
+" // Set each column to pull text from the TreeView's model\n"
+" firstName.add_attribute (bold, \"text\", 0);\n"
+" lastName.add_attribute (normal, \"text\", 1);\n"
+" phone.add_attribute (normal, \"text\", 2);\n"
+"\n"
+" // Insert the columns into the treeview\n"
+" this._treeView.insert_column (firstName, 0);\n"
+" this._treeView.insert_column (lastName, 1);\n"
+" this._treeView.insert_column (phone, 2);\n"
+"\n"
+" // Create the label that shows details for the name you select\n"
+" this._label = new Gtk.Label ({ label: \"\" });\n"
+"\n"
+" // Get which item is selected\n"
+" this.selection = this._treeView.get_selection();\n"
+"\n"
+" // When something new is selected, call _on_changed\n"
+" this.selection.connect ('changed', Lang.bind (this, this._onSelectionChanged));\n"
+"\n"
+" // Create a grid to organize everything in\n"
+" this._grid = new Gtk.Grid;\n"
+"\n"
+" // Attach the treeview and label to the grid\n"
+" this._grid.attach (this._treeView, 0, 0, 1, 1);\n"
+" this._grid.attach (this._label, 0, 1, 1, 1);\n"
+"\n"
+" // Add the grid to the window\n"
+" this._window.add (this._grid);\n"
+"\n"
+" // Show the window and all child widgets\n"
+" this._window.show_all();\n"
+" },\n"
+"\n"
+"\n"
+"\n"
+" _onSelectionChanged: function () {\n"
+"\n"
+" // Grab a treeiter pointing to the current selection\n"
+" let [ isSelected, model, iter ] = this.selection.get_selected();\n"
+"\n"
+" // Set the label to read off the values stored in the current selection\n"
+" this._label.set_label (\"\\n\" +\n"
+" this._listStore.get_value (iter, 0) + \" \" +\n"
+" this._listStore.get_value (iter, 1) + \" \" +\n"
+" this._listStore.get_value (iter, 2) + \"\\n\" +\n"
+" this._listStore.get_value (iter, 3));\n"
+"\n"
+" }\n"
+"\n"
+"});\n"
+"\n"
+"// Run the application\n"
+"let app = new TreeViewExample ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: item/p
+#: C/treeview_simple_liststore.js.page:282
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TreeSelection."
+"html\">Gtk.TreeSelection</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TreeSelection."
+"html\">Gtk.TreeSelection</link>"
+
+#. (itstool) path: item/p
+#: C/treeview_simple_liststore.js.page:283
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TreeView.html"
+"\">Gtk.TreeView</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TreeView.html"
+"\">Gtk.TreeView</link>"
+
+#. (itstool) path: item/p
+#: C/treeview_simple_liststore.js.page:284
+msgid ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
+"TreeViewColumn.html\">Gtk.TreeViewColumn</link>"
+msgstr ""
+"<link href=\"http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk."
+"TreeViewColumn.html\">Gtk.TreeViewColumn</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/treeview_simple_liststore.py.page:24
+#: C/treeview_simple_liststore.vala.page:24
+msgctxt "_"
+msgid ""
+"external ref='media/treeview_simple_liststore.png' "
+"md5='2dc501a2b95b094da985d37b66aee90c'"
+msgstr ""
+"external ref='media/treeview_simple_liststore.png' "
+"md5='2dc501a2b95b094da985d37b66aee90c'"
+
+#. (itstool) path: info/title
+#: C/treeview_simple_liststore.py.page:8
+msgctxt "text"
+msgid "Simple TreeView with ListStore (Python)"
+msgstr "TreeView sencillo con ListStore (Python)"
+
+#. (itstool) path: info/desc
+#: C/treeview_simple_liststore.py.page:20
+msgid "A TreeView displaying a ListStore (simpler example)"
+msgstr "Un TreeView mostrando un ListStore (ejemplo más simple)"
+
+#. (itstool) path: page/title
+#: C/treeview_simple_liststore.py.page:23
+msgid "Simple TreeView with ListStore"
+msgstr "TreeView sencillo con ListStore"
+
+#. (itstool) path: section/code
+#: C/treeview_simple_liststore.py.page:32
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Pango\n"
+"import sys\n"
+"\n"
+"columns = [\"First Name\",\n"
+" \"Last Name\",\n"
+" \"Phone Number\"]\n"
+"\n"
+"phonebook = [[\"Jurg\", \"Billeter\", \"555-0123\"],\n"
+" [\"Johannes\", \"Schmid\", \"555-1234\"],\n"
+" [\"Julita\", \"Inca\", \"555-2345\"],\n"
+" [\"Javier\", \"Jardon\", \"555-3456\"],\n"
+" [\"Jason\", \"Clinton\", \"555-4567\"],\n"
+" [\"Random J.\", \"Hacker\", \"555-5678\"]]\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"My Phone Book\", application=app)\n"
+" self.set_default_size(250, 100)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # the data in the model (three strings for each row, one for each\n"
+" # column)\n"
+" listmodel = Gtk.ListStore(str, str, str)\n"
+" # append the values in the model\n"
+" for i in range(len(phonebook)):\n"
+" listmodel.append(phonebook[i])\n"
+"\n"
+" # a treeview to see the data stored in the model\n"
+" view = Gtk.TreeView(model=listmodel)\n"
+" # for each column\n"
+" for i in range(len(columns)):\n"
+" # cellrenderer to render the text\n"
+" cell = Gtk.CellRendererText()\n"
+" # the text in the first column should be in boldface\n"
+" if i == 0:\n"
+" cell.props.weight_set = True\n"
+" cell.props.weight = Pango.Weight.BOLD\n"
+" # the column is created\n"
+" col = Gtk.TreeViewColumn(columns[i], cell, text=i)\n"
+" # and it is appended to the treeview\n"
+" view.append_column(col)\n"
+"\n"
+" # when a row is selected, it emits a signal\n"
+" view.get_selection().connect(\"changed\", self.on_changed)\n"
+"\n"
+" # the label we use to show the selection\n"
+" self.label = Gtk.Label()\n"
+" self.label.set_text(\"\")\n"
+"\n"
+" # a grid to attach the widgets\n"
+" grid = Gtk.Grid()\n"
+" grid.attach(view, 0, 0, 1, 1)\n"
+" grid.attach(self.label, 0, 1, 1, 1)\n"
+"\n"
+" # attach the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" def on_changed(self, selection):\n"
+" # get the model and the iterator that points at the data in the model\n"
+" (model, iter) = selection.get_selected()\n"
+" # set the label to a new value depending on the selection\n"
+" self.label.set_text(\"\\n %s %s %s\" %\n"
+" (model[iter][0], model[iter][1], model[iter][2]))\n"
+" return True\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Pango\n"
+"import sys\n"
+"\n"
+"columns = [\"First Name\",\n"
+" \"Last Name\",\n"
+" \"Phone Number\"]\n"
+"\n"
+"phonebook = [[\"Jurg\", \"Billeter\", \"555-0123\"],\n"
+" [\"Johannes\", \"Schmid\", \"555-1234\"],\n"
+" [\"Julita\", \"Inca\", \"555-2345\"],\n"
+" [\"Javier\", \"Jardon\", \"555-3456\"],\n"
+" [\"Jason\", \"Clinton\", \"555-4567\"],\n"
+" [\"Random J.\", \"Hacker\", \"555-5678\"]]\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"My Phone Book\", application=app)\n"
+" self.set_default_size(250, 100)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # the data in the model (three strings for each row, one for each\n"
+" # column)\n"
+" listmodel = Gtk.ListStore(str, str, str)\n"
+" # append the values in the model\n"
+" for i in range(len(phonebook)):\n"
+" listmodel.append(phonebook[i])\n"
+"\n"
+" # a treeview to see the data stored in the model\n"
+" view = Gtk.TreeView(model=listmodel)\n"
+" # for each column\n"
+" for i in range(len(columns)):\n"
+" # cellrenderer to render the text\n"
+" cell = Gtk.CellRendererText()\n"
+" # the text in the first column should be in boldface\n"
+" if i == 0:\n"
+" cell.props.weight_set = True\n"
+" cell.props.weight = Pango.Weight.BOLD\n"
+" # the column is created\n"
+" col = Gtk.TreeViewColumn(columns[i], cell, text=i)\n"
+" # and it is appended to the treeview\n"
+" view.append_column(col)\n"
+"\n"
+" # when a row is selected, it emits a signal\n"
+" view.get_selection().connect(\"changed\", self.on_changed)\n"
+"\n"
+" # the label we use to show the selection\n"
+" self.label = Gtk.Label()\n"
+" self.label.set_text(\"\")\n"
+"\n"
+" # a grid to attach the widgets\n"
+" grid = Gtk.Grid()\n"
+" grid.attach(view, 0, 0, 1, 1)\n"
+" grid.attach(self.label, 0, 1, 1, 1)\n"
+"\n"
+" # attach the grid to the window\n"
+" self.add(grid)\n"
+"\n"
+" def on_changed(self, selection):\n"
+" # get the model and the iterator that points at the data in the model\n"
+" (model, iter) = selection.get_selected()\n"
+" # set the label to a new value depending on the selection\n"
+" self.label.set_text(\"\\n %s %s %s\" %\n"
+" (model[iter][0], model[iter][1], model[iter][2]))\n"
+" return True\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.py.page:37
+msgid ""
+"The TreeView widget is designed around a <em>Model/View/Controller</em> "
+"design: the <em>Model</em> stores the data; the <em>View</em> gets change "
+"notifications and displays the content of the model; the <em>Controller</"
+"em>, finally, changes the state of the model and notifies the view of these "
+"changes. For more information, and for a list of useful methods for "
+"TreeModel, see <link xref=\"model-view-controller.py\"/>."
+msgstr ""
+"El widget «TreeView» está construido alrededor de un diseño <em>Modelo/Vista/"
+"Controlador</em>: el <em>Modelo</em> almacena los datos; la <em>Vista</em> "
+"obtiene las notificaciones de cambio y muestra el contenido del modelo; El "
+"<em>Controlador</em>; finalmente, cambia el estado del modelo y le notifica "
+"a la vista de estos cambios. Para más información, y para una lista de "
+"métodos útiles del «TreeModel», consulte la <link xref=\"model-view-"
+"controller.py\"/>."
+
+#. (itstool) path: section/p
+#: C/treeview_simple_liststore.py.page:38
+msgid ""
+"In line 44 the <code>\"changed\"</code> signal is connected to the callback "
+"function <code>on_changed()</code> using <code><var>widget</var>."
+"connect(<var>signal</var>, <var>callback function</var>)</code>. See <link "
+"xref=\"signals-callbacks.py\"/> for a more detailed explanation."
+msgstr ""
+"En la línea 44, la señal <code>\"changed\"</code> se conecta a la función de "
+"retorno de llamada <code>on_changed()</code> usando <code><var>widget</var>."
+"connect(<var>señal</var>, <var>función de retorno de llamada</var>)</code>. "
+"Consulte la <link xref=\"signals-callbacks.py\"/> para una explicación más "
+"detallada."
+
+#. (itstool) path: item/p
+#: C/treeview_simple_liststore.py.page:51
+msgid ""
+"<link href=\"http://developer.gnome.org/pango/stable/pango-Fonts.html"
+"\">Fonts</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/pango/stable/pango-Fonts.html"
+"\">Tipografías</link>"
+
+#. (itstool) path: info/title
+#: C/treeview_simple_liststore.vala.page:8
+msgctxt "text"
+msgid "Simple Treeview with ListStore (Vala)"
+msgstr "Treeview sencillo con ListStore (Vala)"
+
+#. (itstool) path: info/desc
+#: C/treeview_simple_liststore.vala.page:20
+msgid "A widget can display any TreeModel implementation (lists and trees)"
+msgstr ""
+"Un widget puede mostrar cualquier implementación de TreeModel (listas y "
+"árboles)"
+
+#. (itstool) path: page/title
+#: C/treeview_simple_liststore.vala.page:23
+msgid "Simple Treeview with ListStore"
+msgstr "Treeview sencillo con ListStore"
+
+#. (itstool) path: page/p
+#: C/treeview_simple_liststore.vala.page:25
+msgid ""
+"This TreeView displays a simple ListStore with the Selection \"changed\" "
+"signal connected."
+msgstr ""
+"Este TreeView muestra un ListStore sencillo con la señal de selección "
+"«changed» conectada."
+
+#. (itstool) path: page/code
+#: C/treeview_simple_liststore.vala.page:27
+#, no-wrap
+msgid ""
+"public class PhoneBookEntry {\n"
+"\tpublic string firstname;\n"
+"\tpublic string lastname;\n"
+"\tpublic string phone;\n"
+"\n"
+"\tpublic PhoneBookEntry (string f, string l, string p) {\n"
+"\t\tthis.firstname = f;\n"
+"\t\tthis.lastname = l;\n"
+"\t\tthis.phone = p;\n"
+"\t}\n"
+"}\n"
+"\n"
+"class TreeViewSimpleListStore : Gtk.ApplicationWindow {\n"
+"\n"
+"\tGtk.Label label;\n"
+"\n"
+"\tPhoneBookEntry[] phonebook = {\n"
+"\t\tnew PhoneBookEntry (\"Jurg\", \"Billeter\", \"555-0123\"),\n"
+"\t\tnew PhoneBookEntry (\"Johannes\", \"Schmid\", \"555-1234\"),\n"
+"\t\tnew PhoneBookEntry (\"Julita\", \"Inca\", \"555-2345\"),\n"
+"\t\tnew PhoneBookEntry (\"Javier\", \"Jardon\", \"555-3456\"),\n"
+"\t\tnew PhoneBookEntry (\"Jason\", \"Clinton\", \"555-4567\"),\n"
+"\t\tnew PhoneBookEntry (\"Random J.\", \"Hacker\", \"555-5678\")\n"
+"\t};\n"
+"\n"
+"\tenum Column {\n"
+"\t\tFIRSTNAME,\n"
+"\t\tLASTNAME,\n"
+"\t\tPHONE\n"
+"\t}\n"
+"\n"
+"\tinternal TreeViewSimpleListStore (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"My Phone Book\");\n"
+"\n"
+"\t\tthis.set_default_size (250, 100);\n"
+"\t\tthis.border_width = 10;\n"
+"\n"
+"\t\tvar view = new Gtk.TreeView ();\n"
+"\t\tthis.setup_treeview (view);\n"
+"\t\tview.expand = true;\n"
+"\n"
+"\t\tlabel = new Gtk.Label (\"\");\n"
+"\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\n"
+"\t\tgrid.attach (view, 0, 0, 1, 1);\n"
+"\t\tgrid.attach (label, 0, 1, 1, 1);\n"
+"\t\tthis.add (grid);\n"
+"\n"
+"\t\tvar selection = view.get_selection ();\n"
+"\t\tselection.changed.connect (this.on_changed);\n"
+"\t}\n"
+"\n"
+"\tvoid setup_treeview (Gtk.TreeView view) {\n"
+"\t\tvar listmodel = new Gtk.ListStore (3, typeof (string),\n"
+" typeof (string),\n"
+" typeof (string));\n"
+"\t\tview.set_model (listmodel);\n"
+"\n"
+"\t\tvar cell = new Gtk.CellRendererText ();\n"
+"\n"
+"\t\t/* 'weight' refers to font boldness.\n"
+"\t\t * 400 is normal.\n"
+"\t\t * 700 is bold.\n"
+"\t\t */\n"
+"\t\tcell.set (\"weight_set\", true);\n"
+"\t\tcell.set (\"weight\", 700);\n"
+"\n"
+"\t\t/*columns*/\n"
+"\t\tview.insert_column_with_attributes (-1, \"First Name\",\n"
+" cell, \"text\",\n"
+" Column.FIRSTNAME);\n"
+"\n"
+"\t\tview.insert_column_with_attributes (-1, \"Last Name\",\n"
+" new Gtk.CellRendererText (),\n"
+" \"text\", Column.LASTNAME);\n"
+"\n"
+"\t\tview.insert_column_with_attributes (-1, \"Phone Number\",\n"
+" new Gtk.CellRendererText (),\n"
+" \"text\", Column.PHONE);\n"
+"\n"
+"\t\t/* Insert the phonebook into the ListStore */\n"
+"\t\tGtk.TreeIter iter;\n"
+"\t\tfor (int i = 0; i < phonebook.length; i++) {\n"
+"\t\t\tlistmodel.append (out iter);\n"
+"\t\t\tlistmodel.set (iter, Column.FIRSTNAME,\n"
+" phonebook[i].firstname,\n"
+" Column.LASTNAME, phonebook[i].lastname,\n"
+" Column.PHONE, phonebook[i].phone);\n"
+"\t\t}\n"
+"\t}\n"
+"\n"
+"\tvoid on_changed (Gtk.TreeSelection selection) {\n"
+"\t\tGtk.TreeModel model;\n"
+"\t\tGtk.TreeIter iter;\n"
+"\t\tstring name;\n"
+"\t\tstring lastname;\n"
+"\t\tstring phone;\n"
+"\n"
+"\t\tif (selection.get_selected (out model, out iter)) {\n"
+"\t\t\tmodel.get (iter,\n"
+" Column.FIRSTNAME, out name,\n"
+" Column.LASTNAME, out lastname,\n"
+" Column.PHONE, out phone);\n"
+"\n"
+"\t\t\tlabel.set_text (\"\\n\" + name + \" \" + lastname + \" \" + phone);\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t/* Create new Window and show all the things. */\n"
+"\t\tnew TreeViewSimpleListStore (this).show_all ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"example.liststore.simple.treeview\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+msgstr ""
+"public class PhoneBookEntry {\n"
+"\tpublic string firstname;\n"
+"\tpublic string lastname;\n"
+"\tpublic string phone;\n"
+"\n"
+"\tpublic PhoneBookEntry (string f, string l, string p) {\n"
+"\t\tthis.firstname = f;\n"
+"\t\tthis.lastname = l;\n"
+"\t\tthis.phone = p;\n"
+"\t}\n"
+"}\n"
+"\n"
+"class TreeViewSimpleListStore : Gtk.ApplicationWindow {\n"
+"\n"
+"\tGtk.Label label;\n"
+"\n"
+"\tPhoneBookEntry[] phonebook = {\n"
+"\t\tnew PhoneBookEntry (\"Jurg\", \"Billeter\", \"555-0123\"),\n"
+"\t\tnew PhoneBookEntry (\"Johannes\", \"Schmid\", \"555-1234\"),\n"
+"\t\tnew PhoneBookEntry (\"Julita\", \"Inca\", \"555-2345\"),\n"
+"\t\tnew PhoneBookEntry (\"Javier\", \"Jardon\", \"555-3456\"),\n"
+"\t\tnew PhoneBookEntry (\"Jason\", \"Clinton\", \"555-4567\"),\n"
+"\t\tnew PhoneBookEntry (\"Random J.\", \"Hacker\", \"555-5678\")\n"
+"\t};\n"
+"\n"
+"\tenum Column {\n"
+"\t\tFIRSTNAME,\n"
+"\t\tLASTNAME,\n"
+"\t\tPHONE\n"
+"\t}\n"
+"\n"
+"\tinternal TreeViewSimpleListStore (MyApplication app) {\n"
+"\t\tObject (application: app, title: \"My Phone Book\");\n"
+"\n"
+"\t\tthis.set_default_size (250, 100);\n"
+"\t\tthis.border_width = 10;\n"
+"\n"
+"\t\tvar view = new Gtk.TreeView ();\n"
+"\t\tthis.setup_treeview (view);\n"
+"\t\tview.expand = true;\n"
+"\n"
+"\t\tlabel = new Gtk.Label (\"\");\n"
+"\n"
+"\t\tvar grid = new Gtk.Grid ();\n"
+"\n"
+"\t\tgrid.attach (view, 0, 0, 1, 1);\n"
+"\t\tgrid.attach (label, 0, 1, 1, 1);\n"
+"\t\tthis.add (grid);\n"
+"\n"
+"\t\tvar selection = view.get_selection ();\n"
+"\t\tselection.changed.connect (this.on_changed);\n"
+"\t}\n"
+"\n"
+"\tvoid setup_treeview (Gtk.TreeView view) {\n"
+"\t\tvar listmodel = new Gtk.ListStore (3, typeof (string),\n"
+" typeof (string),\n"
+" typeof (string));\n"
+"\t\tview.set_model (listmodel);\n"
+"\n"
+"\t\tvar cell = new Gtk.CellRendererText ();\n"
+"\n"
+"\t\t/* 'weight' refers to font boldness.\n"
+"\t\t * 400 is normal.\n"
+"\t\t * 700 is bold.\n"
+"\t\t */\n"
+"\t\tcell.set (\"weight_set\", true);\n"
+"\t\tcell.set (\"weight\", 700);\n"
+"\n"
+"\t\t/*columns*/\n"
+"\t\tview.insert_column_with_attributes (-1, \"First Name\",\n"
+" cell, \"text\",\n"
+" Column.FIRSTNAME);\n"
+"\n"
+"\t\tview.insert_column_with_attributes (-1, \"Last Name\",\n"
+" new Gtk.CellRendererText (),\n"
+" \"text\", Column.LASTNAME);\n"
+"\n"
+"\t\tview.insert_column_with_attributes (-1, \"Phone Number\",\n"
+" new Gtk.CellRendererText (),\n"
+" \"text\", Column.PHONE);\n"
+"\n"
+"\t\t/* Insert the phonebook into the ListStore */\n"
+"\t\tGtk.TreeIter iter;\n"
+"\t\tfor (int i = 0; i < phonebook.length; i++) {\n"
+"\t\t\tlistmodel.append (out iter);\n"
+"\t\t\tlistmodel.set (iter, Column.FIRSTNAME,\n"
+" phonebook[i].firstname,\n"
+" Column.LASTNAME, phonebook[i].lastname,\n"
+" Column.PHONE, phonebook[i].phone);\n"
+"\t\t}\n"
+"\t}\n"
+"\n"
+"\tvoid on_changed (Gtk.TreeSelection selection) {\n"
+"\t\tGtk.TreeModel model;\n"
+"\t\tGtk.TreeIter iter;\n"
+"\t\tstring name;\n"
+"\t\tstring lastname;\n"
+"\t\tstring phone;\n"
+"\n"
+"\t\tif (selection.get_selected (out model, out iter)) {\n"
+"\t\t\tmodel.get (iter,\n"
+" Column.FIRSTNAME, out name,\n"
+" Column.LASTNAME, out lastname,\n"
+" Column.PHONE, out phone);\n"
+"\n"
+"\t\t\tlabel.set_text (\"\\n\" + name + \" \" + lastname + \" \" + phone);\n"
+"\t\t}\n"
+"\t}\n"
+"}\n"
+"\n"
+"class MyApplication : Gtk.Application {\n"
+"\tprotected override void activate () {\n"
+"\n"
+"\t\t/* Create new Window and show all the things. */\n"
+"\t\tnew TreeViewSimpleListStore (this).show_all ();\n"
+"\t}\n"
+"\n"
+"\tinternal MyApplication () {\n"
+"\t\tObject (application_id: \"example.liststore.simple.treeview\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"int main (string[] args) {\n"
+"\treturn new MyApplication ().run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/treeview_simple_liststore.vala.page:32
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TreeView.html\">Gtk."
+"TreeView</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TreeView.html\">Gtk."
+"TreeView</link>"
+
+#. (itstool) path: item/p
+#: C/treeview_simple_liststore.vala.page:34
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TreeSelection.html\">Gtk."
+"TreeSelection</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.TreeSelection.html\">Gtk."
+"TreeSelection</link>"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/treeview_treestore.py.page:24
+msgctxt "_"
+msgid ""
+"external ref='media/treeview_treestore.png' "
+"md5='5ca87bc4acd55c527b3fb5fd46779d85'"
+msgstr ""
+"external ref='media/treeview_treestore.png' "
+"md5='5ca87bc4acd55c527b3fb5fd46779d85'"
+
+#. (itstool) path: info/desc
+#: C/treeview_treestore.py.page:20
+msgid "A TreeView displaying a TreeStore (simpler example)"
+msgstr "Un TreeView mostrando un TreeStore (ejemplo más simple)"
+
+#. (itstool) path: page/title
+#: C/treeview_treestore.py.page:23
+msgid "Simpler TreeView with TreeStore"
+msgstr "TreeView más sencillo con ListStore"
+
+#. (itstool) path: page/p
+#: C/treeview_treestore.py.page:25
+msgid "This TreeView displays a TreeStore."
+msgstr "Este TreeView muestra un TreeStore"
+
+#. (itstool) path: section/code
+#: C/treeview_treestore.py.page:32
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Pango\n"
+"import sys\n"
+"\n"
+"books = [[\"Tolstoy, Leo\", \"War and Peace\", \"Anna Karenina\"],\n"
+" [\"Shakespeare, William\", \"Hamlet\", \"Macbeth\", \"Othello\"],\n"
+" [\"Tolkien, J.R.R.\", \"The Lord of the Rings\"]]\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Library\", application=app)\n"
+" self.set_default_size(250, 100)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # the data are stored in the model\n"
+" # create a treestore with one column\n"
+" store = Gtk.TreeStore(str)\n"
+" for i in range(len(books)):\n"
+" # the iter piter is returned when appending the author\n"
+" piter = store.append(None, [books[i][0]])\n"
+" # append the books as children of the author\n"
+" j = 1\n"
+" while j < len(books[i]):\n"
+" store.append(piter, [books[i][j]])\n"
+" j += 1\n"
+"\n"
+" # the treeview shows the model\n"
+" # create a treeview on the model store\n"
+" view = Gtk.TreeView()\n"
+" view.set_model(store)\n"
+"\n"
+" # the cellrenderer for the column - text\n"
+" renderer_books = Gtk.CellRendererText()\n"
+" # the column is created\n"
+" column_books = Gtk.TreeViewColumn(\n"
+" \"Books by Author\", renderer_books, text=0)\n"
+" # and it is appended to the treeview\n"
+" view.append_column(column_books)\n"
+"\n"
+" # the books are sortable by author\n"
+" column_books.set_sort_column_id(0)\n"
+"\n"
+" # add the treeview to the window\n"
+" self.add(view)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import Pango\n"
+"import sys\n"
+"\n"
+"books = [[\"Tolstoy, Leo\", \"War and Peace\", \"Anna Karenina\"],\n"
+" [\"Shakespeare, William\", \"Hamlet\", \"Macbeth\", \"Othello\"],\n"
+" [\"Tolkien, J.R.R.\", \"The Lord of the Rings\"]]\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Library\", application=app)\n"
+" self.set_default_size(250, 100)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # the data are stored in the model\n"
+" # create a treestore with one column\n"
+" store = Gtk.TreeStore(str)\n"
+" for i in range(len(books)):\n"
+" # the iter piter is returned when appending the author\n"
+" piter = store.append(None, [books[i][0]])\n"
+" # append the books as children of the author\n"
+" j = 1\n"
+" while j < len(books[i]):\n"
+" store.append(piter, [books[i][j]])\n"
+" j += 1\n"
+"\n"
+" # the treeview shows the model\n"
+" # create a treeview on the model store\n"
+" view = Gtk.TreeView()\n"
+" view.set_model(store)\n"
+"\n"
+" # the cellrenderer for the column - text\n"
+" renderer_books = Gtk.CellRendererText()\n"
+" # the column is created\n"
+" column_books = Gtk.TreeViewColumn(\n"
+" \"Books by Author\", renderer_books, text=0)\n"
+" # and it is appended to the treeview\n"
+" view.append_column(column_books)\n"
+"\n"
+" # the books are sortable by author\n"
+" column_books.set_sort_column_id(0)\n"
+"\n"
+" # add the treeview to the window\n"
+" self.add(view)\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: info/title
+#: C/tutorial.py.page:9
+msgctxt "text"
+msgid "Tutorial for beginners (Python)"
+msgstr "Tutorial para principiantes (Python)"
+
+#. (itstool) path: info/desc
+#: C/tutorial.py.page:13
+msgid ""
+"A tutorial for beginners who want to learn how to program GUIs using GTK+ in "
+"Python."
+msgstr ""
+"Un tutorial para principiantes que quieran aprender cómo programar IGU "
+"usando GTK+ en Python."
+
+#. (itstool) path: credit/years
+#: C/tutorial.py.page:22
+msgid "2012 2013"
+msgstr "2012 2013"
+
+#. (itstool) path: credit/name
+#: C/tutorial.py.page:25
+msgid "Jim Campbell"
+msgstr "Jim Campbell"
+
+#. (itstool) path: synopsis/p
+#: C/tutorial.py.page:34
+msgid ""
+"By following these tutorials you will learn the basics of GUI programming "
+"using GTK+ in Python."
+msgstr ""
+"Siguiendo estos tutoriales, aprenderá los conceptos básicos de la "
+"programación de interfaces de usuario usando GTK+ en Python."
+
+#. (itstool) path: synopsis/p
+#: C/tutorial.py.page:36
+msgid ""
+"If you have never programmed before, or are not familiar with the concepts "
+"of object oriented programming, you may need to learn a few basics first. "
+"The book <link href=\"http://learnpythonthehardway.org/book/\">Learn Python "
+"the Hard Way</link> or <link href=\"http://docs.python.org/tutorial/index."
+"html\">The Python Tutorial</link> may be a better place for you to start. "
+"You may also be interested in <link href=\"http://python-gtk-3-tutorial."
+"readthedocs.org/en/latest/index.html\">The Python GTK+ 3 Tutorial</link>. "
+"Once you master the basics, be sure to come back and check out these "
+"tutorials."
+msgstr ""
+"Si nunca antes ha programado, o no está familiarizado con los conceptos de "
+"la programación orientada a objetos, puede necesitar aprender primero unos "
+"conceptos básicos. El libro <link href=\"http://learnpythonthehardway.org/"
+"book/\">Learn Python the Hard Way</link> o <link href=\"http://docs.python."
+"org/tutorial/index.html\">The Python Tutorial</link> pueden ser un buen "
+"comienzo. Tal vez también esté interesado en <link href=\"http://python-"
+"gtk-3-tutorial.readthedocs.org/en/latest/index.html\">The Python GTK+ 3 "
+"Tutorial</link>. Una vez que domine los conceptos básicos, vuelva y revise "
+"estos tutoriales."
+
+#. (itstool) path: section/title
+#: C/tutorial.py.page:42
+msgid "To run the code samples"
+msgstr "Para ejecutar los ejemplos de código"
+
+#. (itstool) path: section/p
+#: C/tutorial.py.page:44
+msgid "To run the code samples in the tutorial:"
+msgstr "Para ejecutar los ejemplos de código en el tutorial:"
+
+#. (itstool) path: item/p
+#: C/tutorial.py.page:46
+msgid ""
+"Type or copy and paste the code into a file, and save the file with a name "
+"like <var>filename</var>.py"
+msgstr ""
+"Escriba o copie y pegue el código en un archivo, y guárdelo con un nombre "
+"como <var>nombre_archivo</var>.py"
+
+#. (itstool) path: item/p
+#: C/tutorial.py.page:47
+msgid "To execute the code, type in the terminal:"
+msgstr "Para ejecutar el código, escriba en la terminal:"
+
+#. (itstool) path: item/screen
+#: C/tutorial.py.page:48
+#, no-wrap
+msgid "python <var>filename</var>.py"
+msgstr "python <var>nombre_archivo</var>.py"
+
+#. (itstool) path: section/p
+#: C/tutorial.py.page:51
+msgid ""
+"After executing the code, you will either see the widget on your screen, or "
+"(if you have mistyped some of the code) you will see an error message that "
+"will help you identify the problem."
+msgstr ""
+"Después de ejecutar el código, verá un widget en su pantalla, o (si ha "
+"escrito mal algo) un mensaje de error que le ayudará a identificar el "
+"problema."
+
+#. (itstool) path: section/title
+#: C/tutorial.py.page:55
+msgid "A path through the widgets (with some theory)"
+msgstr "Un camino a través de los widgets (con algo de teoría)"
+
+#. (itstool) path: section/p
+#: C/tutorial.py.page:56
+msgid ""
+"The tutorial will walk you through increasingly complex examples and "
+"programming theory, but you can also feel free to just go directly to the "
+"tutorial that is most helpful to you."
+msgstr ""
+"El tutorial le llevará a través de ejemplos cada vez más complejos y teoría "
+"de programación, pero también puede ir directamente el tutorial que crea que "
+"le ayudará más."
+
+#. (itstool) path: steps/title
+#: C/tutorial.py.page:58
+msgid "Tutorial"
+msgstr "Tutorial"
+
+#. (itstool) path: steps/title
+#: C/tutorial.py.page:60
+msgid "Basic windows"
+msgstr "Ventanas básicas"
+
+#. (itstool) path: steps/title
+#: C/tutorial.py.page:65
+msgid "Images and labels"
+msgstr "Imágenes y etiquetas"
+
+#. (itstool) path: steps/title
+#: C/tutorial.py.page:71
+msgid "Introduction to properties"
+msgstr "Introducción a las propiedades"
+
+#. (itstool) path: steps/title
+#: C/tutorial.py.page:75
+msgid "Grid, separator and scrolling"
+msgstr "Rejilla, separador y deslizamiento"
+
+#. (itstool) path: steps/title
+#: C/tutorial.py.page:82
+msgid "Signals, callbacks and buttons"
+msgstr "Señales, retornos de llamada y botones"
+
+#. (itstool) path: steps/title
+#: C/tutorial.py.page:96
+msgid "Other display widgets"
+msgstr "Otros widgets de visualización"
+
+#. (itstool) path: steps/title
+#: C/tutorial.py.page:102
+msgid "Entry widgets"
+msgstr "Widgets de entrada"
+
+#. (itstool) path: steps/title
+#: C/tutorial.py.page:108
+msgid "A widget to write and display text"
+msgstr "Un widget para escribir y mostrar texto"
+
+#. (itstool) path: steps/title
+#: C/tutorial.py.page:112
+msgid "Dialogs"
+msgstr "Diálogos"
+
+#. (itstool) path: steps/title
+#: C/tutorial.py.page:118
+msgid "Menus, Toolbars and Tooltips (also: using Glade and GtkBuilder)"
+msgstr ""
+"Menús, barras de herramientas y consejos (también: usar Glade y GtkBuilder)"
+
+#. (itstool) path: steps/title
+#: C/tutorial.py.page:133
+msgid "TreeViews and ComboBoxes (using the M/V/C design)"
+msgstr "TreeViews y ComboBoxes (usando el diseño M/V/C)"
+
+#. (itstool) path: steps/title
+#: C/tutorial.py.page:143
+msgid "Custom widget"
+msgstr "Widget personalizado"
+
+#. (itstool) path: info/title
+#: C/vala.page:7
+msgctxt "link"
+msgid "Vala"
+msgstr "Vala"
+
+#. (itstool) path: page/title
+#: C/vala.page:21
+msgid "Tutorials, code samples and platform demos in Vala"
+msgstr ""
+"Tutoriales, ejemplos de código y demostraciones de la plataforma en Vala"
+
+#. (itstool) path: section/title
+#: C/vala.page:26
+msgid "Code samples and tutorial"
+msgstr "Ejemplos de código y tutorial"
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/weatherApp.js.page:41
+msgctxt "_"
+msgid ""
+"external ref='media/weatherAppJs.png' md5='1fe859ac4854273d72ea8fc9203639b2'"
+msgstr ""
+"external ref='media/weatherAppJs.png' md5='1fe859ac4854273d72ea8fc9203639b2'"
+
+#. (itstool) path: info/title
+#: C/weatherApp.js.page:7
+msgctxt "text"
+msgid "Weather application (JavaScript)"
+msgstr "Aplicación del clima (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/weatherApp.js.page:22
+msgid ""
+"How to plan an application that uses asynchronous calls. Asynchronous calls "
+"will be presented through a weather application."
+msgstr ""
+"Cómo plantear una aplicación que usa llamadas asíncronas. Las llamadas "
+"asíncronas se presentarán mediante una aplicación de información "
+"meteorológica."
+
+#. (itstool) path: page/title
+#: C/weatherApp.js.page:27
+msgid "Weather application"
+msgstr "Aplicación del clima"
+
+#. (itstool) path: synopsis/p
+#: C/weatherApp.js.page:29
+msgid ""
+"In this guide well construct a weather application using asynchronous calls. "
+"Weather information in this example is fetched from geonames.org and the "
+"application is using the <link href=\"http://en.wikipedia.org/wiki/"
+"List_of_airports_by_ICAO_code:_E\">ICAO codes </link> to place your weather "
+"request. To write and run all the code examples yourself, you need an editor "
+"to write code in, Terminal and GNOME 3 or higher installed into your "
+"computer. In this guide we we'll go through the following parts:"
+msgstr ""
+"En esta parte de la guía se construirá una aplicación del clima usando "
+"llamadas asíncronas. En este ejemplo, la información del clima se obtiene de "
+"geonames.org y la aplicación usa los <link href=\"http://en.wikipedia.org/"
+"wiki/List_of_airports_by_ICAO_code:_E\">códigos ICAO</link> para responder a "
+"las peticiones. Para escribir y ejecutar todos los ejemplos de código "
+"necesita un editor de texto en el que escribir el código, una terminal y "
+"GNOME 3 o superior instalado en su equipo. En esta guía se verán las "
+"siguientes partes:"
+
+#. (itstool) path: item/p
+#: C/weatherApp.js.page:32
+msgid "<link xref=\"#planningUi\">Planning the graphical user interface</link>"
+msgstr ""
+"<link xref=\"#planningUi\">Planificar la interfaz gráfica de usuario</link>"
+
+#. (itstool) path: item/p
+#: C/weatherApp.js.page:33
+msgid "<link xref=\"#asynchronous\">Asynchronous calls</link>"
+msgstr "<link xref=\"#asynchronous\">Llamadas asíncronas</link>"
+
+#. (itstool) path: item/p
+#: C/weatherApp.js.page:34
+msgid "<link xref=\"#main\">The main program file</link>"
+msgstr "<link xref=\"#main\">El archivo del programa principal</link>"
+
+#. (itstool) path: item/p
+#: C/weatherApp.js.page:35
+msgid "<link xref=\"#main\">Local library GeoNames</link>"
+msgstr "<link xref=\"#main\">Biblioteca local GeoNames</link>"
+
+#. (itstool) path: item/p
+#: C/weatherApp.js.page:36
+msgid "<link xref=\"#main\">Autotools and Icons</link>"
+msgstr "<link xref=\"#main\">«Autotools» e iconos</link>"
+
+#. (itstool) path: section/title
+#: C/weatherApp.js.page:44
+msgid "Planning the graphical user interface"
+msgstr "Planificar la interfaz gráfica de usuario"
+
+#. (itstool) path: section/p
+#: C/weatherApp.js.page:45
+msgid ""
+"Structuring an application for GNOME 3 means you will be using <link href="
+"\"http://developer.gnome.org/platform-overview/stable/gtk\">GTK+</link>. The "
+"most important thing is to remember that the main window will only accept "
+"one widget. You must plan your structure accordingly (this example is using "
+"Gtk.Grid). A useful method is to draw out the main window and place every "
+"widget needed inside that box. By looking at an image of your future "
+"application it is easier to tell what are the relations between widgets. For "
+"example Gtk.Grid places your widgets in relation to other widgets, so after "
+"the first widget is in place, placing widgets can be done in relation to any "
+"widget on the grid."
+msgstr ""
+"Estructurar una aplicación GNOME 3 significa que usará <link href=\"http://"
+"developer.gnome.org/platform-overview/stable/gtk\">GTK+</link>. Lo más "
+"importante es recordar que la ventana principal sólo aceptará un widget. "
+"Debe planificar su estructura de acuerdo a esto (este ejemplo usa una Gtk."
+"Grid). Un método útil es dibujar la ventana principal y colocar dentro cada "
+"widget que necesite. Mirando la imagen de su futura aplicación es fácil "
+"definir las relaciones entre los widgets. Por ejemplo, Gtk.Grid coloca sus "
+"widgets en relación a otros widgets, por lo que después de colocar el "
+"primero, los demás se pueden colocar en relación al primero en la rejilla."
+
+#. (itstool) path: section/title
+#: C/weatherApp.js.page:48
+msgid "Asynchronous calls"
+msgstr "Llamadas asíncronas"
+
+#. (itstool) path: section/p
+#: C/weatherApp.js.page:49
+msgid ""
+"With many programming languages, all operations are run synchronously - you "
+"tell the program to do something, and it will wait until that action "
+"completes before proceeding. This is however bad for graphical user "
+"interfaces, as then the whole application will be frozen while the program "
+"waits for the operation. Going asynchronous (async) helps here. With async "
+"calls, your UI won't be blocked with any requests. Async calls make your "
+"application more flexible and better equipped to handle situations when "
+"calls take more time than expected or for some reason get jammed. Async "
+"calls can be used for example file system I/O and for slower calculations in "
+"the background."
+msgstr ""
+"En muchos lenguajes de programación, todas las operaciones se ejecutan "
+"síncronamente: le ordena al programa que haga algo, y esperará hasta que esa "
+"acción se complete antes de seguir. Esto, sin embargo, es malo para "
+"interfaces gráficas de usuario, ya que la aplicación entera se detendrá "
+"mientras el programa espera a la operación. Ser asíncrono (async) ayuda en "
+"este caso. Con llamadas async, su IU no se bloqueará con ninguna petición. "
+"Las llamadas async hacen su aplicación más flexible y mejor equipada para "
+"manejar situaciones en las que las llamadas toman más tiempo de lo esperado "
+"o por alguna razón se bloquean. Las llamadas async pueden usarse, por "
+"ejemplo, para E/S del sistema de archivos y para cálculos lentos en segundo "
+"plano."
+
+#. (itstool) path: section/p
+#: C/weatherApp.js.page:52
+msgid ""
+"In this example we have to get data from geonames.org. While we do that we "
+"want the rest of our program to continue. If we wouldn't get any information "
+"from geonames.org for the lack of internet connection and this would be a "
+"synchronous application we would never get to the point where our "
+"main_quit() is processed correctly and the application would have to killed "
+"from Terminal."
+msgstr ""
+"En este ejemplo, se deben obtener datos de geonames.org. Mientras se hace "
+"esto, se quiere que el resto del programa continúe. Si no obtuviéramos "
+"ninguna información de geonames.org por la falta de conexión a internet y "
+"esta fuera una aplicación síncrona, nunca se llegaría al punto en el que el "
+"main_quit() se procesa correctamente y habría que matar la aplicación desde "
+"una terminal."
+
+#. (itstool) path: section/title
+#: C/weatherApp.js.page:55
+msgid "The different parts of the program"
+msgstr "Las diferentes partes del programa"
+
+#. (itstool) path: page/title
+#: C/weatherAppMain.js.page:19
+msgid "The main program file"
+msgstr "El archivo del programa principal"
+
+#. (itstool) path: synopsis/p
+#: C/weatherAppMain.js.page:21
+msgid ""
+"In this part of the guide well construct the main program file of the "
+"weather application. To write and run all the code examples yourself, you "
+"need an editor to write code in, Terminal and GNOME 3 or higher installed "
+"into your computer. In this part we we'll go through the following parts:"
+msgstr ""
+"En esta parte de la guía se construirá el archivo del programa principal de "
+"la aplicación del clima. Para escribir y ejecutar todos los ejemplos de "
+"código necesita un editor de texto en el que escribir el código, una "
+"terminal y GNOME 3 o superior instalado en su equipo. En esta guía se verán "
+"las siguientes partes:"
+
+#. (itstool) path: item/p
+#: C/weatherAppMain.js.page:26
+msgid ""
+"<link xref=\"#widgets\">Adding a grid and all the necessary widgets to it</"
+"link>"
+msgstr ""
+"<link xref=\"#widgets\">Añadir una rejilla y todos los widgets necesarios en "
+"ella</link>"
+
+#. (itstool) path: item/p
+#: C/weatherAppMain.js.page:27
+msgid ""
+"<link xref=\"#asynccall\">Requesting the weather information asynchronously</"
+"link>"
+msgstr ""
+"<link xref=\"#asynccall\">Solicitar la información meteorológica de manera "
+"asíncrona</link>"
+
+#. (itstool) path: item/p
+#: C/weatherAppMain.js.page:28
+msgid ""
+"<link xref=\"#connectingbuttons\">Connecting signals to button and entry</"
+"link>."
+msgstr ""
+"<link xref=\"#connectingbuttons\">Conectar las señales a un botón y a una "
+"entrada</link>"
+
+#. (itstool) path: item/p
+#: C/weatherAppMain.js.page:29
+msgid "<link xref=\"#weatherapp.js\">weatherapp.js</link>"
+msgstr "<link xref=\"#weatherapp.js\">weatherapp.js</link>"
+
+#. (itstool) path: section/p
+#: C/weatherAppMain.js.page:36
+msgid ""
+"This line tells how to run the script. It needs to be the first line of the "
+"code and it needs to be executable. To get the execution rights go to "
+"Terminal and run in right folder: chmod +x scriptname. Or you can use the "
+"graphical filemanager. Just go to the right folder where your code is, right "
+"click you code file, choose properties, click the permissions tab and check "
+"the box for allow executing file as a program"
+msgstr ""
+"Esta línea indica cómo ejecutar el script. Debe ser la primera línea del "
+"código y debe ser ejecutable. Para obtener permisos de ejecución vaya a la "
+"terminal y ejecute lo siguiente en la carpeta adecuada: chmod +x "
+"nombrescript. También puede usar el gestor de archivo. Simplemente vaya a la "
+"carpeta donde está el código, pulse con el botón derecho sobre el archivo de "
+"código y elija «Propiedades», pulse en la pestaña «Permisos» y marque la "
+"casilla para permitir ejecutar el archivo como un programa."
+
+#. (itstool) path: section/code
+#: C/weatherAppMain.js.page:42
+#, no-wrap
+msgid ""
+"\n"
+"var Gtk = imports.gi.Gtk;\n"
+"const WeatherService = imports.geonames;"
+msgstr ""
+"\n"
+"var Gtk = imports.gi.Gtk;\n"
+"const WeatherService = imports.geonames;"
+
+#. (itstool) path: section/p
+#: C/weatherAppMain.js.page:45
+msgid ""
+"In order to have a working program we need to import a GObject Introspection "
+"-library to our use. For working UI, we need Gtk. Gtk is imported in the "
+"beginning so we have it in our use everywhere. We also import our own local "
+"JavaScript library geonames to our use here."
+msgstr ""
+"Para que el programa funcione se debe importar una biblioteca de "
+"introspección de GObject. Para que funcione la IU se necesita GTK+, que se "
+"importa al inicio, por lo que está en uso en todos los sitios. También se "
+"importa la biblioteca local en JavaScript geonames para usarla aquí."
+
+#. (itstool) path: section/code
+#: C/weatherAppMain.js.page:50
+#, no-wrap
+msgid ""
+"\n"
+"// Initialize the gtk\n"
+"Gtk.init(null, 0);\n"
+"//create your window, name it and connect the x to quit function. Remember that window is a taken word\n"
+"var weatherwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n"
+"weatherwindow.title = \"Todays weather\";\n"
+"//Window only accepts one widget and a title. Further structure with Gtk.boxes of similar\n"
+"weatherwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
+"\n"
+"weatherwindow.show_all();\n"
+"//and run it\n"
+"Gtk.main();"
+msgstr ""
+"\n"
+"// Initialize the gtk\n"
+"Gtk.init(null, 0);\n"
+"//create your window, name it and connect the x to quit function. Remember that window is a taken word\n"
+"var weatherwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n"
+"weatherwindow.title = \"Todays weather\";\n"
+"//Window only accepts one widget and a title. Further structure with Gtk.boxes of similar\n"
+"weatherwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
+"\n"
+"weatherwindow.show_all();\n"
+"//and run it\n"
+"Gtk.main();"
+
+#. (itstool) path: section/title
+#: C/weatherAppMain.js.page:64
+msgid "Adding a grid and all the necessary widgets to it"
+msgstr "Añadir una rejilla y todos los widgets necesarios en ella"
+
+#. (itstool) path: section/code
+#: C/weatherAppMain.js.page:65
+#, no-wrap
+msgid ""
+"\n"
+"var grid = new Gtk.Grid();\n"
+"weatherwindow.add(grid);\n"
+"\n"
+"//We initialize the icon here, but deside the file later in geonames.js.\n"
+"var weatherIcon = new Gtk.Image();\n"
+"\n"
+"//Set some labels to your window\n"
+"var label1 = new Gtk.Label({label: \"\"});\n"
+"var label2 = new Gtk.Label({label: \"Looking in the sky...\"});\n"
+"var label3 = new Gtk.Label({label: \"\"});\n"
+"\n"
+"var entry = new Gtk.Entry();\n"
+"entry.set_width_chars(4);\n"
+"entry.set_max_length(4);\n"
+"var label4 = new Gtk.Label({label: \"Enter ICAO station for weather: \"});\n"
+"var button1 = new Gtk.Button({label: \"search!\"});\n"
+"\n"
+"grid.attach(label4, 2, 1, 1, 1);\n"
+"grid.attach_next_to(label1,label4,3,1,1);\n"
+"grid.attach_next_to(label2,label1,3,1,1);\n"
+"grid.attach_next_to(label3,label2,3,1,1);\n"
+"grid.attach_next_to(entry,label4,1,1,1);\n"
+"grid.attach_next_to(button1,entry,1,1,1);\n"
+"grid.attach_next_to(weatherIcon,label2,1,1,1)\n"
+msgstr ""
+"\n"
+"var grid = new Gtk.Grid();\n"
+"weatherwindow.add(grid);\n"
+"\n"
+"//We initialize the icon here, but deside the file later in geonames.js.\n"
+"var weatherIcon = new Gtk.Image();\n"
+"\n"
+"//Set some labels to your window\n"
+"var label1 = new Gtk.Label({label: \"\"});\n"
+"var label2 = new Gtk.Label({label: \"Looking in the sky...\"});\n"
+"var label3 = new Gtk.Label({label: \"\"});\n"
+"\n"
+"var entry = new Gtk.Entry();\n"
+"entry.set_width_chars(4);\n"
+"entry.set_max_length(4);\n"
+"var label4 = new Gtk.Label({label: \"Enter ICAO station for weather: \"});\n"
+"var button1 = new Gtk.Button({label: \"search!\"});\n"
+"\n"
+"grid.attach(label4, 2, 1, 1, 1);\n"
+"grid.attach_next_to(label1,label4,3,1,1);\n"
+"grid.attach_next_to(label2,label1,3,1,1);\n"
+"grid.attach_next_to(label3,label2,3,1,1);\n"
+"grid.attach_next_to(entry,label4,1,1,1);\n"
+"grid.attach_next_to(button1,entry,1,1,1);\n"
+"grid.attach_next_to(weatherIcon,label2,1,1,1)\n"
+
+#. (itstool) path: section/p
+#: C/weatherAppMain.js.page:91
+msgid ""
+"In this section we create the grid we are going to use for positioning the "
+"widgets. All the buttons, labels and entrys are initialized and placed on "
+"the grid. As seen from the placing of the different widgets, they don't need "
+"to be related only to one widget. At this point some of the labels don't "
+"have any content. The content for those widgets is applied later. If you run "
+"the application at this stage, you have the UI ready, but the widgets are "
+"not connected to anything. For this we need to first build the weather "
+"searching local library, and then get the information we need "
+"asynchronously. When we have our local library ready we can connect it to "
+"the necessary widgets."
+msgstr ""
+"En esta sección se crea la rejilla que se usará para posicionar los widgets. "
+"Todos los botones, etiquetas y entradas se inicializan y colocan en la "
+"rejilla. Como se puede ver en la colocación de los diferentes widgets, no es "
+"necesario relacionarlo con un único widget. En este punto, algunas de las "
+"etiquetas no tienen contenido. El contenido para esos widgets se aplica más "
+"tarde. Si ejecuta la aplicación en este punto, tendrá lista la IU, pero los "
+"widgets no estarán conectados con nada. Para esto, se necesita construir "
+"primero la biblioteca de búsqueda de tiempo local, y obtener la información "
+"que se necesita de manera asíncrona. Cuando la biblioteca local esté lista, "
+"se podrá conectar a los widgets necesarios."
+
+#. (itstool) path: section/title
+#: C/weatherAppMain.js.page:95
+msgid "Requesting the weather information asynchronously"
+msgstr "Solicitar la información meteorológica de manera asíncrona"
+
+#. (itstool) path: section/code
+#: C/weatherAppMain.js.page:96
+#, no-wrap
+msgid ""
+"\n"
+"function getWeatherForStation() {\n"
+" var station = entry.get_text();\n"
+"\n"
+" var GeoNames = new WeatherService.GeoNames(station); //\"EFHF\";\n"
+"\n"
+" GeoNames.getWeather(function(error, weather) {\n"
+" //this here works bit like signals. This code will be run when we have weather.\n"
+" if (error) {\n"
+" label2.set_text(\"Suggested ICAO station does not exist Try EFHF\");\n"
+" return; }\n"
+" weatherIcon.file = GeoNames.getIcon(weather);\n"
+"\n"
+" label1.set_text(\"Temperature is \" + weather.weatherObservation.temperature + \" degrees.\");\n"
+" if (weather.weatherObservation.weatherCondition !== \"n/a\"){\n"
+" label2.set_text(\"Looks like there is \" + weather.weatherObservation.weatherCondition + \" in the
sky.\");\n"
+" }\n"
+" else {\n"
+" label2.set_text(\"Looks like there is \" + weather.weatherObservation.clouds + \" in the sky.\");\n"
+" }\n"
+" label3.set_text(\"Windspeed is \" + weather.weatherObservation.windSpeed + \" m/s\")\n"
+" // ...\n"
+" });\n"
+"}\n"
+msgstr ""
+"\n"
+"function getWeatherForStation() {\n"
+" var station = entry.get_text();\n"
+"\n"
+" var GeoNames = new WeatherService.GeoNames(station); //\"EFHF\";\n"
+"\n"
+" GeoNames.getWeather(function(error, weather) {\n"
+" //this here works bit like signals. This code will be run when we have weather.\n"
+" if (error) {\n"
+" label2.set_text(\"Suggested ICAO station does not exist Try EFHF\");\n"
+" return; }\n"
+" weatherIcon.file = GeoNames.getIcon(weather);\n"
+"\n"
+" label1.set_text(\"Temperature is \" + weather.weatherObservation.temperature + \" degrees.\");\n"
+" if (weather.weatherObservation.weatherCondition !== \"n/a\"){\n"
+" label2.set_text(\"Looks like there is \" + weather.weatherObservation.weatherCondition + \" in the
sky.\");\n"
+" }\n"
+" else {\n"
+" label2.set_text(\"Looks like there is \" + weather.weatherObservation.clouds + \" in the sky.\");\n"
+" }\n"
+" label3.set_text(\"Windspeed is \" + weather.weatherObservation.windSpeed + \" m/s\")\n"
+" // ...\n"
+" });\n"
+"}\n"
+
+#. (itstool) path: section/p
+#: C/weatherAppMain.js.page:121
+msgid ""
+"This function is dedicated for calling for the weather information and "
+"updating labels and icons accordingly. In the beginning of the function we "
+"get the user input for the search. So here for the first time we use our own "
+"library and assign it to variable GeoNames. While assigning WeatherService "
+"we give it the station. The firs thing we do with GeoNames is to request "
+"weather. Everything after GeoNames.getWeather(function(error, weather) "
+"happens only if we either get an error message or weather information. If "
+"either doesn't come, the rest of the program works as normal, so main_Quit "
+"works."
+msgstr ""
+"Esta función se dedica a llamar a la información meteorológica y a "
+"actualizar las etiquetas y los iconos correctamente. Al principio de la "
+"función, se obtiene la entrada del usuario para la búsqueda. Por lo tanto, "
+"la primera vez se usa la biblioteca propia y se asigna a la variable "
+"GeoNames. Al asignar WeatherService se da la estación. Lo primero que se "
+"hace con GeoNames es solicitar el tiempo. Todo lo que sucede después de "
+"GeoNames.getWeather(function(error, weather) ocurre sólo si se obtiene un "
+"mensaje de error o información del tiempo incorrecta. Si no pasa nada de "
+"esto, el resto del programa funciona de manera normal, por lo que "
+"«main_Quit» funciona."
+
+#. (itstool) path: section/title
+#: C/weatherAppMain.js.page:125
+msgid "Connecting signals to button and entry."
+msgstr "Conectar señales a un botón y a una entrada"
+
+#. (itstool) path: section/code
+#: C/weatherAppMain.js.page:126
+#, no-wrap
+msgid ""
+"\n"
+"entry.connect(\"key_press_event\", function(widget, event) {\n"
+" if (entry.get_text().length === 4) {\n"
+" // Enough is enough\n"
+" getWeatherForStation();\n"
+" }\n"
+" return false;\n"
+"});\n"
+"\n"
+"button1.connect(\"clicked\", function(){\n"
+" getWeatherForStation();\n"
+"});"
+msgstr ""
+"\n"
+"entry.connect(\"key_press_event\", function(widget, event) {\n"
+" if (entry.get_text().length === 4) {\n"
+" // Enough is enough\n"
+" getWeatherForStation();\n"
+" }\n"
+" return false;\n"
+"});\n"
+"\n"
+"button1.connect(\"clicked\", function(){\n"
+" getWeatherForStation();\n"
+"});"
+
+#. (itstool) path: section/p
+#: C/weatherAppMain.js.page:138
+msgid ""
+"And finally we have the connections that make the whole application run as "
+"it should. We connect both the entry and the button to do the same thing, "
+"getting the weather. So it doesn't matter weather you press enter of click "
+"the search button."
+msgstr ""
+"Finalmente se tienen las conexiones que hacen que la aplicación completa "
+"funcione como debería. Se han conectado la entrada y el botón para que hagan "
+"la misma cosa, obtener el tiempo. Por lo tanto, no importa si pulsa el botón "
+"o si pulsa «Intro»."
+
+#. (itstool) path: section/title
+#: C/weatherAppMain.js.page:142
+msgid "Weatherapp.js"
+msgstr "Weatherapp.js"
+
+#. (itstool) path: section/p
+#: C/weatherAppMain.js.page:143
+msgid "Weatherapp.js file looks like this:"
+msgstr "El archivo Weatherapp.js se parece a esto:"
+
+#. (itstool) path: section/code
+#: C/weatherAppMain.js.page:144
+#, no-wrap
+msgid ""
+"\n"
+"#!/usr/bin/gjs\n"
+"//The previous line is a hash bang tells how to run the script.\n"
+"// Note that the script has to be executable (run in terminal in the right folder: chmod +x scriptname)\n"
+"\n"
+"var Gtk = imports.gi.Gtk;\n"
+"\n"
+"const WeatherService = imports.geonames;\n"
+"//Bring your own library from same folder (as set in GJS_PATH). If using autotools .desktop will take care
of this\n"
+"\n"
+"// Initialize the gtk\n"
+"Gtk.init(null, 0);\n"
+"//create your window, name it and connect the x to quit function. Remember that window is a taken word\n"
+"var weatherwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n"
+"weatherwindow.title = \"Todays weather\";\n"
+"//Window only accepts one widget and a title. Further structure with Gtk.boxes of similar\n"
+"weatherwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
+"//We initialize the icon here, but deside the file later in geonames.js.\n"
+"\n"
+"var weatherIcon = new Gtk.Image();\n"
+"\n"
+"//Set some labels to your window\n"
+"var label1 = new Gtk.Label({label: \"\"});\n"
+"var label2 = new Gtk.Label({label: \"Looking in the sky...\"});\n"
+"var label3 = new Gtk.Label({label: \"\"});\n"
+"\n"
+"var grid = new Gtk.Grid();\n"
+"weatherwindow.add(grid);\n"
+"\n"
+"var entry = new Gtk.Entry();\n"
+"entry.set_width_chars(4);\n"
+"entry.set_max_length(4);\n"
+"var label4 = new Gtk.Label({label: \"Enter ICAO station for weather: \"});\n"
+"var button1 = new Gtk.Button({label: \"search!\"});\n"
+"\n"
+"//some weather\n"
+"\n"
+"entry.connect(\"key_press_event\", function(widget, event) {\n"
+" // FIXME: Get weather on enter (key 13)\n"
+" if (entry.get_text().length === 4) {\n"
+" // Enough is enough\n"
+" getWeatherForStation();\n"
+" }\n"
+" return false;\n"
+"});\n"
+"\n"
+"button1.connect(\"clicked\", function(){\n"
+" getWeatherForStation();\n"
+"});\n"
+"\n"
+"function getWeatherForStation() {\n"
+" var station = entry.get_text();\n"
+"\n"
+" var GeoNames = new WeatherService.GeoNames(station); //\"EFHF\";\n"
+"\n"
+" GeoNames.getWeather(function(error, weather) {\n"
+" //this here works bit like signals. This code will be run when we have weather.\n"
+" if (error) {\n"
+" label2.set_text(\"Suggested ICAO station does not exist Try EFHF\");\n"
+" return; }\n"
+" weatherIcon.file = GeoNames.getIcon(weather);\n"
+"\n"
+" label1.set_text(\"Temperature is \" + weather.weatherObservation.temperature + \" degrees.\");\n"
+" if (weather.weatherObservation.weatherCondition !== \"n/a\"){\n"
+" label2.set_text(\"Looks like there is \" + weather.weatherObservation.weatherCondition + \" in the
sky.\");\n"
+" }\n"
+" else {\n"
+" label2.set_text(\"Looks like there is \" + weather.weatherObservation.clouds + \" in the sky.\");\n"
+" }\n"
+" label3.set_text(\"Windspeed is \" + weather.weatherObservation.windSpeed + \" m/s\")\n"
+" // ...\n"
+" });\n"
+"}\n"
+"\n"
+"grid.attach(label4, 2, 1, 1, 1);\n"
+"grid.attach_next_to(label1,label4,3,1,1);\n"
+"grid.attach_next_to(label2,label1,3,1,1);\n"
+"grid.attach_next_to(label3,label2,3,1,1);\n"
+"grid.attach_next_to(entry,label4,1,1,1);\n"
+"grid.attach_next_to(button1,entry,1,1,1);\n"
+"grid.attach_next_to(weatherIcon,label2,1,1,1)\n"
+"weatherwindow.show_all();\n"
+"//and run it\n"
+"Gtk.main();\n"
+msgstr ""
+"\n"
+"#!/usr/bin/gjs\n"
+"//The previous line is a hash bang tells how to run the script.\n"
+"// Note that the script has to be executable (run in terminal in the right folder: chmod +x scriptname)\n"
+"\n"
+"var Gtk = imports.gi.Gtk;\n"
+"\n"
+"const WeatherService = imports.geonames;\n"
+"//Bring your own library from same folder (as set in GJS_PATH). If using autotools .desktop will take care
of this\n"
+"\n"
+"// Initialize the gtk\n"
+"Gtk.init(null, 0);\n"
+"//create your window, name it and connect the x to quit function. Remember that window is a taken word\n"
+"var weatherwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n"
+"weatherwindow.title = \"Todays weather\";\n"
+"//Window only accepts one widget and a title. Further structure with Gtk.boxes of similar\n"
+"weatherwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n"
+"//We initialize the icon here, but deside the file later in geonames.js.\n"
+"\n"
+"var weatherIcon = new Gtk.Image();\n"
+"\n"
+"//Set some labels to your window\n"
+"var label1 = new Gtk.Label({label: \"\"});\n"
+"var label2 = new Gtk.Label({label: \"Looking in the sky...\"});\n"
+"var label3 = new Gtk.Label({label: \"\"});\n"
+"\n"
+"var grid = new Gtk.Grid();\n"
+"weatherwindow.add(grid);\n"
+"\n"
+"var entry = new Gtk.Entry();\n"
+"entry.set_width_chars(4);\n"
+"entry.set_max_length(4);\n"
+"var label4 = new Gtk.Label({label: \"Enter ICAO station for weather: \"});\n"
+"var button1 = new Gtk.Button({label: \"search!\"});\n"
+"\n"
+"//some weather\n"
+"\n"
+"entry.connect(\"key_press_event\", function(widget, event) {\n"
+" // FIXME: Get weather on enter (key 13)\n"
+" if (entry.get_text().length === 4) {\n"
+" // Enough is enough\n"
+" getWeatherForStation();\n"
+" }\n"
+" return false;\n"
+"});\n"
+"\n"
+"button1.connect(\"clicked\", function(){\n"
+" getWeatherForStation();\n"
+"});\n"
+"\n"
+"function getWeatherForStation() {\n"
+" var station = entry.get_text();\n"
+"\n"
+" var GeoNames = new WeatherService.GeoNames(station); //\"EFHF\";\n"
+"\n"
+" GeoNames.getWeather(function(error, weather) {\n"
+" //this here works bit like signals. This code will be run when we have weather.\n"
+" if (error) {\n"
+" label2.set_text(\"Suggested ICAO station does not exist Try EFHF\");\n"
+" return; }\n"
+" weatherIcon.file = GeoNames.getIcon(weather);\n"
+"\n"
+" label1.set_text(\"Temperature is \" + weather.weatherObservation.temperature + \" degrees.\");\n"
+" if (weather.weatherObservation.weatherCondition !== \"n/a\"){\n"
+" label2.set_text(\"Looks like there is \" + weather.weatherObservation.weatherCondition + \" in the
sky.\");\n"
+" }\n"
+" else {\n"
+" label2.set_text(\"Looks like there is \" + weather.weatherObservation.clouds + \" in the sky.\");\n"
+" }\n"
+" label3.set_text(\"Windspeed is \" + weather.weatherObservation.windSpeed + \" m/s\")\n"
+" // ...\n"
+" });\n"
+"}\n"
+"\n"
+"grid.attach(label4, 2, 1, 1, 1);\n"
+"grid.attach_next_to(label1,label4,3,1,1);\n"
+"grid.attach_next_to(label2,label1,3,1,1);\n"
+"grid.attach_next_to(label3,label2,3,1,1);\n"
+"grid.attach_next_to(entry,label4,1,1,1);\n"
+"grid.attach_next_to(button1,entry,1,1,1);\n"
+"grid.attach_next_to(weatherIcon,label2,1,1,1)\n"
+"weatherwindow.show_all();\n"
+"//and run it\n"
+"Gtk.main();\n"
+
+#. (itstool) path: section/p
+#: C/weatherAppMain.js.page:229
+msgid "Running until you have all the autotools files ready. :"
+msgstr "Ejecútela hasta que tenga listos todos los archivos de autotools:"
+
+#. (itstool) path: section/screen
+#: C/weatherAppMain.js.page:231
+#, no-wrap
+msgid " <output style=\"prompt\">$ </output><input> GJS_PATH=`pwd` gjs weatherapp.js</input>"
+msgstr " <output style=\"prompt\">$ </output><input> GJS_PATH=`pwd` gjs weatherapp.js</input>"
+
+#. (itstool) path: section/p
+#: C/weatherAppMain.js.page:232
+msgid ""
+"Use this command on terminal while developing your modules. When calling "
+"your program in this manner it knows where to find your custom JSlibraries, "
+"in this case geonames.js."
+msgstr ""
+"Use este comando en la terminal cuando desarrolle sus módulos. Al llamar a "
+"su programa de este modo, sabe dónde encontrar las bibliotecas de JavaScript "
+"personalizadas, (geonames.js en este caso)."
+
+#. (itstool) path: page/title
+#: C/weatherAutotools.js.page:19
+msgid "Autotools and Icons"
+msgstr "Autotools e iconos"
+
+#. (itstool) path: synopsis/p
+#: C/weatherAutotools.js.page:21
+msgid ""
+"In this part of the guide well construct the autotools and custom icons "
+"needed for weather application to be a seamless part of your desktop. To "
+"write and run all the code examples yourself, you need an editor to write "
+"code in, Terminal and GNOME 3 or higher installed into your computer. In "
+"this guide we we'll go through the following parts:"
+msgstr ""
+"En esta parte de la guía se construirán las «autotools» y los iconos "
+"necesarios para la aplicación del clima para que sea una parte integral de "
+"su escritorio. Para escribir y ejecutar todos los ejemplos de código "
+"necesita un editor de texto en el que escribir el código, una terminal y "
+"GNOME 3 o superior instalado en su equipo. En esta guía se verán las "
+"siguientes partes:"
+
+#. (itstool) path: item/p
+#: C/weatherAutotools.js.page:24
+msgid "<link xref=\"#autotools\"> Autotools</link>"
+msgstr "<link xref=\"#autotools\"> Autotools</link>"
+
+#. (itstool) path: item/p
+#: C/weatherAutotools.js.page:25
+msgid "<link xref=\"#icons\">Custom icons for your application</link>"
+msgstr "<link xref=\"#icons\">Iconos personalizados para su aplicación</link>"
+
+#. (itstool) path: section/title
+#: C/weatherAutotools.js.page:32
+msgid "Autotools and necessary files"
+msgstr "Autotools y archivos necesarios"
+
+#. (itstool) path: section/p
+#: C/weatherAutotools.js.page:33
+msgid ""
+"Having more than one file in your folder makes using autotools a bit tricky. "
+"You need the .desktop file, autogen.sh, Makefile.am, configure.ac and as a "
+"new file: myapp.sh.in file. Hacking the autotools file is a complicated "
+"field. More information can be found in many different sources, <link href="
+"\"http://en.wikipedia.org/wiki/GNU_build_system\">the wikipedia article</"
+"link> provides a good overview on the subject."
+msgstr ""
+"Tener más de un archivo en la carpeta complica un poco el uso de autotools. "
+"Necesita los archivos .desktop, autogen.sh, Makefile.am, configure.ac y un "
+"archivo nuevo: myapp.sh.in. Hackear el archivo de autotools es complicado. "
+"Puede encontrar más información en diferentes fuentes; <link href=\"http://"
+"en.wikipedia.org/wiki/GNU_build_system\">este artículo de la wikipedia</"
+"link> proporciona una visión general de este tema."
+
+#. (itstool) path: item/p
+#. (itstool) path: section/p
+#: C/weatherAutotools.js.page:36 C/weatherAutotools.js.page:42
+msgid "weatherapp.desktop"
+msgstr "weatherapp.desktop"
+
+#. (itstool) path: item/p
+#. (itstool) path: section/p
+#: C/weatherAutotools.js.page:37 C/weatherAutotools.js.page:57
+msgid "weatherapp.sh.in"
+msgstr "weatherapp.sh.in"
+
+#. (itstool) path: section/code
+#: C/weatherAutotools.js.page:43
+#, no-wrap
+msgid ""
+"\n"
+"[Desktop Entry]\n"
+"Version=1.0\n"
+"Encoding=UTF-8\n"
+"Name=Weather app\n"
+"Comment=Weather showing application\n"
+"Exec=weatherapp.sh\n"
+"Icon=application-default-icon\n"
+"Terminal=false\n"
+"Type=Application\n"
+"StartupNotify=true\n"
+"Categories=GNOME;GTK;Utility;"
+msgstr ""
+"\n"
+"[Desktop Entry]\n"
+"Version=1.0\n"
+"Encoding=UTF-8\n"
+"Name=Weather app\n"
+"Comment=Weather showing application\n"
+"Exec=weatherapp.sh\n"
+"Icon=application-default-icon\n"
+"Terminal=false\n"
+"Type=Application\n"
+"StartupNotify=true\n"
+"Categories=GNOME;GTK;Utility;"
+
+#. (itstool) path: section/p
+#: C/weatherAutotools.js.page:55
+msgid ""
+"The thing to notice in this file is that the Exec line will make this ."
+"desktop file work only after running all the other makefiles. Weatherapp.sh "
+"is a small shell script created with the weatherapp.sh.in."
+msgstr ""
+"Lo importante de este archivo es que la línea Exec hará que el archivo ."
+"desktop funcione sólo después de ejecutar el resto de makefiles. Weatherapp."
+"sh es un pequeño script creado a partir de weatherapp.sh.in."
+
+#. (itstool) path: section/code
+#: C/weatherAutotools.js.page:58
+#, no-wrap
+msgid ""
+"\n"
+"#!/bin/sh\n"
+"export GJS_PATH= bindir@\n"
+"gjs @bindir@/weatherapp.js"
+msgstr ""
+"\n"
+"#!/bin/sh\n"
+"export GJS_PATH= bindir@\n"
+"gjs @bindir@/weatherapp.js"
+
+#. (itstool) path: section/p
+#: C/weatherAutotools.js.page:62
+msgid ""
+"This file is a template to the file Makefile will do to be run from .desktop."
+msgstr ""
+"Este archivo es una plantilla que el Makefile creará para ejecutarlo desde "
+"el .desktop."
+
+#. (itstool) path: section/code
+#: C/weatherAutotools.js.page:65
+#, no-wrap
+msgid ""
+"\n"
+"# The actual runnable program is set to the SCRIPTS primitive. Prefix bin_ tells where to copy this\n"
+"bin_SCRIPTS = weatherapp.js geonames.js weatherapp.sh\n"
+"# List of files to be distributed\n"
+"EXTRA_DIST= \\\n"
+" $(bin_SCRIPTS) \\\n"
+" $(private_icons)\t\\\n"
+"\t $(NULL)\n"
+"\n"
+"CLEANFILES =\n"
+"\n"
+"# The desktop files\n"
+"desktopdir = $(datadir)/applications\n"
+"desktop_DATA =weatherapp.desktop\n"
+"\n"
+"# convenience command for doing Makefile variable substitutions in non-Makefile\n"
+"# files (scripts, service files, etc.)\n"
+"do_subst = sed -e 's|@abs_top_srcdir[ ]|$(abs_top_srcdir)|g' \\\n"
+" -e 's|@abs_top_builddir[ ]|$(abs_top_builddir)|g' \\\n"
+" -e 's|@localedir[ ]|$(localedir)|g' \\\n"
+" -e 's|@bindir[ ]|$(bindir)|g' \\\n"
+" -e 's|@libexecdir[ ]|$(libexecdir)|g' \\\n"
+"\t -e 's|@pkglibdir[ ]|$(pkglibdir)|g' \\\n"
+"\t -e 's|@pkgdatadir[ ]|$(pkgdatadir)|g' \\\n"
+"\t -e 's|@have_libnotify[ ]|$(HAVE_LIBNOTIFY)|g' \\\n"
+"\t -e 's|@have_libsoup[ ]|$(HAVE_LIBSOUP)|g' \\\n"
+"\t -e 's|@have_cheese[ ]|$(HAVE_CHEESE)|g'\n"
+"\n"
+"weatherapp.sh: weatherapp.sh.in\n"
+"\t$(AM_V_GEN) $(do_subst) $< > $ \n"
+"\tchmod +x $ \n"
+"\n"
+"CLEANFILES += weatherapp.sh\n"
+"EXTRA_DIST += weatherapp.sh.in\n"
+"\n"
+"#the application icon\n"
+"appicondir=$(datadir)/icons/hicolor/scalable/apps\n"
+"appicon_DATA=weather-icon.svg\n"
+"\n"
+"#icons in the application\n"
+"NULL =\n"
+"\n"
+"private_icons = \\\n"
+"\tweather-clear.svg \\\n"
+" weather-few-clouds.svg \\\n"
+" weather-fog.svg \\\n"
+" weather-icon.svg \\\n"
+" weather-overcast.svg \\\n"
+" weather-showers.svg \\\n"
+" weather-showers-scattered.svg \\\n"
+" weather-snow.svg \\\n"
+" $(NULL)\n"
+"\n"
+"install-icons:\n"
+"\tfor icon in $(private_icons); do \\\n"
+"\t\tmkdir -p $(DESTDIR)$(pkgdatadir)/icons/; \\\n"
+"\t\t$(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(pkgdatadir)/icons/; \\\n"
+"\tdone\n"
+"\n"
+"install-data-local: install-icons"
+msgstr ""
+"\n"
+"# The actual runnable program is set to the SCRIPTS primitive. Prefix bin_ tells where to copy this\n"
+"bin_SCRIPTS = weatherapp.js geonames.js weatherapp.sh\n"
+"# List of files to be distributed\n"
+"EXTRA_DIST= \\\n"
+" $(bin_SCRIPTS) \\\n"
+" $(private_icons)\t\\\n"
+"\t $(NULL)\n"
+"\n"
+"CLEANFILES =\n"
+"\n"
+"# The desktop files\n"
+"desktopdir = $(datadir)/applications\n"
+"desktop_DATA =weatherapp.desktop\n"
+"\n"
+"# convenience command for doing Makefile variable substitutions in non-Makefile\n"
+"# files (scripts, service files, etc.)\n"
+"do_subst = sed -e 's|@abs_top_srcdir[ ]|$(abs_top_srcdir)|g' \\\n"
+" -e 's|@abs_top_builddir[ ]|$(abs_top_builddir)|g' \\\n"
+" -e 's|@localedir[ ]|$(localedir)|g' \\\n"
+" -e 's|@bindir[ ]|$(bindir)|g' \\\n"
+" -e 's|@libexecdir[ ]|$(libexecdir)|g' \\\n"
+"\t -e 's|@pkglibdir[ ]|$(pkglibdir)|g' \\\n"
+"\t -e 's|@pkgdatadir[ ]|$(pkgdatadir)|g' \\\n"
+"\t -e 's|@have_libnotify[ ]|$(HAVE_LIBNOTIFY)|g' \\\n"
+"\t -e 's|@have_libsoup[ ]|$(HAVE_LIBSOUP)|g' \\\n"
+"\t -e 's|@have_cheese[ ]|$(HAVE_CHEESE)|g'\n"
+"\n"
+"weatherapp.sh: weatherapp.sh.in\n"
+"\t$(AM_V_GEN) $(do_subst) $< > $ \n"
+"\tchmod +x $ \n"
+"\n"
+"CLEANFILES += weatherapp.sh\n"
+"EXTRA_DIST += weatherapp.sh.in\n"
+"\n"
+"#the application icon\n"
+"appicondir=$(datadir)/icons/hicolor/scalable/apps\n"
+"appicon_DATA=weather-icon.svg\n"
+"\n"
+"#icons in the application\n"
+"NULL =\n"
+"\n"
+"private_icons = \\\n"
+"\tweather-clear.svg \\\n"
+" weather-few-clouds.svg \\\n"
+" weather-fog.svg \\\n"
+" weather-icon.svg \\\n"
+" weather-overcast.svg \\\n"
+" weather-showers.svg \\\n"
+" weather-showers-scattered.svg \\\n"
+" weather-snow.svg \\\n"
+" $(NULL)\n"
+"\n"
+"install-icons:\n"
+"\tfor icon in $(private_icons); do \\\n"
+"\t\tmkdir -p $(DESTDIR)$(pkgdatadir)/icons/; \\\n"
+"\t\t$(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(pkgdatadir)/icons/; \\\n"
+"\tdone\n"
+"\n"
+"install-data-local: install-icons"
+
+#. (itstool) path: section/p
+#: C/weatherAutotools.js.page:125
+msgid ""
+"This needs a bit more explaining. Compared to the HelloWorld Makefile.am "
+"this has changed quite a bit. Lets go through all the new blocks:"
+msgstr ""
+"Esto necesita más explicación. Comparado con el Makefile.am de HelloWorld, "
+"esto ha cambiado un poco. Eche un vistazo a los bloques nuevos."
+
+#. (itstool) path: section/p
+#: C/weatherAutotools.js.page:126
+msgid ""
+"bin_scripts are the files that are needed to run your application. In thin "
+"case they are the first two files are the program itself and the third is "
+"the script that launches the application."
+msgstr ""
+"bin_scripts son los archivos necesarios para ejecutar la aplicación. En este "
+"caso, los dos primeros archivos son el programa en sí y el tercero es el "
+"script que lanza la aplicación."
+
+#. (itstool) path: section/p
+#: C/weatherAutotools.js.page:127
+msgid "EXTRA_DIST are the files that are to be distributed"
+msgstr "EXTRA_DIST son los archivos que se deben distribuir"
+
+#. (itstool) path: section/p
+#: C/weatherAutotools.js.page:128
+msgid "do_subst block is bits and pieces that need to be where they are"
+msgstr "El bloque do_subst son partes que deben estar donde están"
+
+#. (itstool) path: section/p
+#: C/weatherAutotools.js.page:129
+msgid ""
+"after the comment #icons in the application there are all the icons that are "
+"used by the program. For them to be useful you need to install the icons in "
+"correct places and that is done byt the install-icons: bit"
+msgstr ""
+"después del comentario «#icons» en la aplicación, están todos los iconos "
+"usados por el programa. Para que sean útiles, debe instalar los iconos en "
+"los lugares correctos, y esto se hace con el bit «install-icons:»"
+
+#. (itstool) path: section/code
+#: C/weatherAutotools.js.page:132
+#, no-wrap
+msgid ""
+"\n"
+"dnl This file is processed by autoconf to create a configure script\n"
+"AC_INIT([Weather App], 1.0)\n"
+"AM_INIT_AUTOMAKE([1.10 no-define foreign])\n"
+"AC_CONFIG_FILES(Makefile)\n"
+"AC_OUTPUT"
+msgstr ""
+"\n"
+"dnl This file is processed by autoconf to create a configure script\n"
+"AC_INIT([Weather App], 1.0)\n"
+"AM_INIT_AUTOMAKE([1.10 no-define foreign])\n"
+"AC_CONFIG_FILES(Makefile)\n"
+"AC_OUTPUT"
+
+#. (itstool) path: section/code
+#: C/weatherAutotools.js.page:139
+#, no-wrap
+msgid ""
+"\n"
+"#!/bin/sh\n"
+"# This will run autoconf, automake, etc. for us\n"
+"autoreconf --force --install"
+msgstr ""
+"\n"
+"#!/bin/sh\n"
+"# This will run autoconf, automake, etc. for us\n"
+"autoreconf --force --install"
+
+#. (itstool) path: section/title
+#: C/weatherAutotools.js.page:145
+msgid "Custom icons for your application"
+msgstr "Iconos personalizados para su aplicación"
+
+#. (itstool) path: section/p
+#: C/weatherAutotools.js.page:146
+msgid ""
+"When thinking about custom icons a good rule of thumb is: do you expect to "
+"see that icon used elsewhere or is it private to your app? If the first (e."
+"g. the icons in the desktop file that are shown by the shell) then you need /"
+"usr/share/hicolor, otherwise (e.g. the weather icons of your app) /usr/share/"
+"$application/bla/bla"
+msgstr ""
+"Cuando piense en iconos personalizados, una buena regla es: ¿espera ver un "
+"este icono en cualquier parte o es privado para su aplicación? En el primer "
+"caso (ej. iconos en el archivo .desktop que se muestran en GNOME Shell) "
+"necesita /usr/share/hicolor; si no, (ej. iconos del tiempo en su "
+"aplicación), necesita /usr/share/$application/bla/bla."
+
+#. (itstool) path: section/p
+#: C/weatherAutotools.js.page:147
+msgid ""
+"Using autotools you have to make some changes to your .desktop and Makefile."
+"am files. In the desktop file you change the Icon's name Icon=weather-icon. "
+"In the Makefile.am file you add these two lines to the end of your "
+"application #the application icon"
+msgstr ""
+"Usando autotools debe hacer algunos cambios en sus archivos .desktop y "
+"Makefile.am. En el archivo .desktop, debe cambiar el nombre del icono a "
+"Icon=weather-icon. En el Makefile.am, debe añadir estas líneas al final del "
+"archivo"
+
+#. (itstool) path: section/p
+#: C/weatherAutotools.js.page:148
+msgid "appicondir=$(datadir)/icons/hicolor/scalable/apps"
+msgstr ""
+"#the application icon\n"
+"appicondir=$(datadir)/icons/hicolor/scalable/apps"
+
+#. (itstool) path: section/p
+#: C/weatherAutotools.js.page:149
+msgid "appicon_DATA=weather-icon.svg"
+msgstr "appicon_DATA=weather-icon.svg"
+
+#. (itstool) path: page/title
+#: C/weatherGeonames.js.page:19
+msgid "Local library geoNames"
+msgstr "Biblioteca local geoNames"
+
+#. (itstool) path: synopsis/p
+#: C/weatherGeonames.js.page:21
+msgid ""
+"In this part of the guide we'll construct the local library geoNames using "
+"asynchronous calls. Weather information in this example is fetched from "
+"geonames.org and the application is using the <link href=\"http://en."
+"wikipedia.org/wiki/List_of_airports_by_ICAO_code:_E\">ICAO codes </link> to "
+"place your weather request. To write and run all the code examples yourself, "
+"you need an editor to write code in, Terminal and GNOME 3 or higher "
+"installed into your computer. In this guide we'll go through the following "
+"parts:"
+msgstr ""
+"En esta parte de la guía se construirá la biblioteca local geoNames usando "
+"llamadas asíncronas. En este ejemplo, la información del clima se obtiene de "
+"geonames.org y la aplicación usa los <link href=\"http://en.wikipedia.org/"
+"wiki/List_of_airports_by_ICAO_code:_E\">códigos ICAO</link> para responder a "
+"las peticiones. Para escribir y ejecutar todos los ejemplos de código "
+"necesita un editor de texto en el que escribir el código, una terminal y "
+"GNOME 3 o superior instalado en su equipo. En esta guía se verán las "
+"siguientes partes:"
+
+#. (itstool) path: item/p
+#: C/weatherGeonames.js.page:24
+msgid ""
+"<link xref=\"#geonamesimports\">Local library for getting the weather</link>"
+msgstr ""
+"<link xref=\"#geonamesimports\">Biblioteca local para obtener el clima</link>"
+
+#. (itstool) path: item/p
+#: C/weatherGeonames.js.page:25
+msgid "<link xref=\"#geonamesfunction\">Creating function geoNames</link>"
+msgstr "<link xref=\"#geonamesfunction\">Crear la función «geoNames»</link>"
+
+#. (itstool) path: item/p
+#: C/weatherGeonames.js.page:26
+msgid "<link xref=\"#geonamesmethods\">Methods for geoNames</link>"
+msgstr "<link xref=\"#geonamesmethods\">Métodos para «geoNames»</link>"
+
+#. (itstool) path: item/p
+#: C/weatherGeonames.js.page:27
+msgid "<link xref=\"#geonames.js\">geonames.js </link>"
+msgstr "<link xref=\"#geonames.js\">geonames.js </link>"
+
+#. (itstool) path: section/title
+#: C/weatherGeonames.js.page:32
+msgid "Local library for getting the weather"
+msgstr "Biblioteca local para obtener el clima"
+
+#. (itstool) path: section/p
+#: C/weatherGeonames.js.page:33
+msgid "For this we need a new file that will be our local library."
+msgstr ""
+"Para esto se necesita un archivo nueva que será nuestra biblioteca local."
+
+#. (itstool) path: section/code
+#: C/weatherGeonames.js.page:34
+#, no-wrap
+msgid ""
+"\n"
+"const Soup = imports.gi.Soup;\n"
+"const _httpSession = new Soup.SessionAsync();\n"
+"Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());\n"
+msgstr ""
+"\n"
+"const Soup = imports.gi.Soup;\n"
+"const _httpSession = new Soup.SessionAsync();\n"
+"Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());\n"
+
+#. (itstool) path: section/p
+#: C/weatherGeonames.js.page:39
+msgid ""
+"In the first lines we'll import and initialize the libraries we need to use "
+"in this local library. Soup handles all the requests we have to make with "
+"http."
+msgstr ""
+"En las primeras líneas se importan y se inicializan las bibliotecas que "
+"necesitamos usar en esta biblioteca local. Soup maneja todas las peticiones "
+"que se hagan con http."
+
+#. (itstool) path: section/title
+#: C/weatherGeonames.js.page:43
+msgid "Creating function GeoNames"
+msgstr "Crear la función geoNames"
+
+#. (itstool) path: section/code
+#: C/weatherGeonames.js.page:44
+#, no-wrap
+msgid ""
+"\n"
+"function GeoNames(station) {\n"
+" this.station = station;\n"
+"}\n"
+"\n"
+"GeoNames.prototype = {\n"
+"\n"
+"}\n"
+msgstr ""
+"\n"
+"function GeoNames(station) {\n"
+" this.station = station;\n"
+"}\n"
+"\n"
+"GeoNames.prototype = {\n"
+"\n"
+"}\n"
+
+#. (itstool) path: section/p
+#: C/weatherGeonames.js.page:53
+msgid ""
+"Here we create the function GeoNames that will handle getting weather for "
+"us. JavaScript allows us to create functions that have little inside at "
+"first and later expand them. This will be done inside the GeoNames.prototype "
+"curly braces{}"
+msgstr ""
+"Aquí se crea la función GeoNames, que manejará la obtención del clima. "
+"JavaScript permite crear funciones sencillas al principio para ampliarlas "
+"más tarde. Esto se hará dentro de las llaves de GeoNames.prototype."
+
+#. (itstool) path: section/title
+#: C/weatherGeonames.js.page:57
+msgid "Methods for GeoNames"
+msgstr "Métodos para geoNames"
+
+#. (itstool) path: section/code
+#: C/weatherGeonames.js.page:58
+#, no-wrap
+msgid ""
+"\n"
+"getWeather: function(callback) {\n"
+" var request = Soup.Message.new('GET', 'http://api.geonames.org/weatherIcaoJSON?ICAO=' + this.station +
'&username=demo');\n"
+" _httpSession.queue_message(request, function(_httpSession, message) {\n"
+" if (message.status_code !== 200) {\n"
+" callback(message.status_code, null);\n"
+" return;\n"
+" }\n"
+" var weatherJSON = request.response_body.data;\n"
+" var weather = JSON.parse(weatherJSON);\n"
+" callback(null, weather);\n"
+" });\n"
+"},\n"
+"\n"
+"getIcon: function(weather){\n"
+" switch (weather.weatherObservation.weatherCondition){\n"
+" case \"drizzle\":\n"
+" case \"light showers rain\":\n"
+" case \"light rain\":\n"
+" return \"weather-showers-scattered.svg\";\n"
+" case \"rain\":\n"
+" return \"weather-showers.svg\";\n"
+" case \"light snow\":\n"
+" case \"snow grains\":\n"
+" return \"weather-snow.svg\";\n"
+" }\n"
+" switch (weather.weatherObservation.clouds){\n"
+" case \"few clouds\":\n"
+" case \"scattered clouds\":\n"
+" return \"weather-few-clouds.svg\";\n"
+" case \"clear sky\":\n"
+" return \"weather-clear.svg\"\n"
+" case \"broken clouds\":\n"
+" case \"overcast\":\n"
+" return \"weather-overcast.svg\";\n"
+" }\n"
+" return \"weather-fog.svg\";\n"
+"}\n"
+msgstr ""
+"\n"
+"getWeather: function(callback) {\n"
+" var request = Soup.Message.new('GET', 'http://api.geonames.org/weatherIcaoJSON?ICAO=' + this.station +
'&username=demo');\n"
+" _httpSession.queue_message(request, function(_httpSession, message) {\n"
+" if (message.status_code !== 200) {\n"
+" callback(message.status_code, null);\n"
+" return;\n"
+" }\n"
+" var weatherJSON = request.response_body.data;\n"
+" var weather = JSON.parse(weatherJSON);\n"
+" callback(null, weather);\n"
+" });\n"
+"},\n"
+"\n"
+"getIcon: function(weather){\n"
+" switch (weather.weatherObservation.weatherCondition){\n"
+" case \"drizzle\":\n"
+" case \"light showers rain\":\n"
+" case \"light rain\":\n"
+" return \"weather-showers-scattered.svg\";\n"
+" case \"rain\":\n"
+" return \"weather-showers.svg\";\n"
+" case \"light snow\":\n"
+" case \"snow grains\":\n"
+" return \"weather-snow.svg\";\n"
+" }\n"
+" switch (weather.weatherObservation.clouds){\n"
+" case \"few clouds\":\n"
+" case \"scattered clouds\":\n"
+" return \"weather-few-clouds.svg\";\n"
+" case \"clear sky\":\n"
+" return \"weather-clear.svg\"\n"
+" case \"broken clouds\":\n"
+" case \"overcast\":\n"
+" return \"weather-overcast.svg\";\n"
+" }\n"
+" return \"weather-fog.svg\";\n"
+"}\n"
+
+#. (itstool) path: section/p
+#: C/weatherGeonames.js.page:97
+msgid ""
+"The first method for GeoNames is getWeather and the second getIcon. In "
+"getWeather we make a http request with soup, handle errors and then parse "
+"the information from the request to form we can use it. In getIcon we simply "
+"compare the results we got from getWeather to the switch we have in order to "
+"get the icon matching current weather. Now that we have our local library "
+"ready, it's time to make use of it."
+msgstr ""
+"El primer método de GeoNames es getWeather, y el segundo es getIcon. En "
+"getWeather se realiza una solicitud http con soup, se gestionan los errores "
+"y se analiza la información de la solicitud para saber que se puede usar. En "
+"getIcon simplemente se comparan los resultados obtenidos en getWeather con "
+"el selector para obtener el icono que representa el clima actual. Ahora que "
+"la biblioteca local está lista, es el momento de usarla."
+
+#. (itstool) path: section/title
+#: C/weatherGeonames.js.page:102
+msgid "geonames.js"
+msgstr "geonames.js"
+
+#. (itstool) path: section/p
+#: C/weatherGeonames.js.page:103
+msgid ""
+"Here is the entire code for our local library. The main program file calls "
+"this asynchronously."
+msgstr ""
+"Aquí está el código completo de la biblioteca. El archivo de programa "
+"principal la llama de manera asíncrona."
+
+#. (itstool) path: section/code
+#: C/weatherGeonames.js.page:104
+#, no-wrap
+msgid ""
+"\n"
+"const Soup = imports.gi.Soup;\n"
+"const _httpSession = new Soup.SessionAsync();\n"
+"Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());\n"
+"\n"
+"function GeoNames(station) {\n"
+" this.station = station;\n"
+"}\n"
+"\n"
+"GeoNames.prototype = {\n"
+" getWeather: function(callback) {\n"
+" var request = Soup.Message.new('GET', 'http://api.geonames.org/weatherIcaoJSON?ICAO=' + this.station +
'&username=demo');\n"
+" _httpSession.queue_message(request, function(_httpSession, message) {\n"
+" if (message.status_code !== 200) {\n"
+" callback(message.status_code, null);\n"
+" return;\n"
+" }\n"
+" var weatherJSON = request.response_body.data;\n"
+" var weather = JSON.parse(weatherJSON);\n"
+" callback(null, weather);\n"
+" });\n"
+" },\n"
+"\n"
+" getIcon: function(weather){\n"
+" switch (weather.weatherObservation.weatherCondition){\n"
+" case \"drizzle\":\n"
+" case \"light showers rain\":\n"
+" case \"light rain\":\n"
+" return \"weather-showers-scattered.svg\";\n"
+" case \"rain\":\n"
+" return \"weather-showers.svg\";\n"
+" case \"light snow\":\n"
+" case \"snow grains\":\n"
+" return \"weather-snow.svg\";\n"
+" }\n"
+" switch (weather.weatherObservation.clouds){\n"
+" case \"few clouds\":\n"
+" case \"scattered clouds\":\n"
+" return \"weather-few-clouds.svg\";\n"
+" case \"clear sky\":\n"
+" return \"weather-clear.svg\"\n"
+" case \"broken clouds\":\n"
+" case \"overcast\":\n"
+" return \"weather-overcast.svg\";\n"
+" }\n"
+" return \"weather-fog.svg\";\n"
+" }\n"
+"}\n"
+"} "
+msgstr ""
+"\n"
+"const Soup = imports.gi.Soup;\n"
+"const _httpSession = new Soup.SessionAsync();\n"
+"Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());\n"
+"\n"
+"function GeoNames(station) {\n"
+" this.station = station;\n"
+"}\n"
+"\n"
+"GeoNames.prototype = {\n"
+" getWeather: function(callback) {\n"
+" var request = Soup.Message.new('GET', 'http://api.geonames.org/weatherIcaoJSON?ICAO=' + this.station +
'&username=demo');\n"
+" _httpSession.queue_message(request, function(_httpSession, message) {\n"
+" if (message.status_code !== 200) {\n"
+" callback(message.status_code, null);\n"
+" return;\n"
+" }\n"
+" var weatherJSON = request.response_body.data;\n"
+" var weather = JSON.parse(weatherJSON);\n"
+" callback(null, weather);\n"
+" });\n"
+" },\n"
+"\n"
+" getIcon: function(weather){\n"
+" switch (weather.weatherObservation.weatherCondition){\n"
+" case \"drizzle\":\n"
+" case \"light showers rain\":\n"
+" case \"light rain\":\n"
+" return \"weather-showers-scattered.svg\";\n"
+" case \"rain\":\n"
+" return \"weather-showers.svg\";\n"
+" case \"light snow\":\n"
+" case \"snow grains\":\n"
+" return \"weather-snow.svg\";\n"
+" }\n"
+" switch (weather.weatherObservation.clouds){\n"
+" case \"few clouds\":\n"
+" case \"scattered clouds\":\n"
+" return \"weather-few-clouds.svg\";\n"
+" case \"clear sky\":\n"
+" return \"weather-clear.svg\"\n"
+" case \"broken clouds\":\n"
+" case \"overcast\":\n"
+" return \"weather-overcast.svg\";\n"
+" }\n"
+" return \"weather-fog.svg\";\n"
+" }\n"
+"}\n"
+"} "
+
+#. (itstool) path: media
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/widget_drawing.py.page:22
+msgctxt "_"
+msgid ""
+"external ref='media/widget_drawing.png' "
+"md5='d00abd8cb9e158018c57fd75b81dfe58'"
+msgstr ""
+"external ref='media/widget_drawing.png' "
+"md5='d00abd8cb9e158018c57fd75b81dfe58'"
+
+#. (itstool) path: info/title
+#: C/widget_drawing.py.page:8
+msgctxt "text"
+msgid "Widget (Python)"
+msgstr "Widget (Python)"
+
+#. (itstool) path: info/desc
+#: C/widget_drawing.py.page:18
+msgid "A widget that uses the Cairo library to draw"
+msgstr "Un widget que usa la biblioteca Cairo para dibujar"
+
+#. (itstool) path: page/title
+#: C/widget_drawing.py.page:21
+msgid "Widget"
+msgstr "Widget"
+
+#. (itstool) path: page/p
+#: C/widget_drawing.py.page:23
+msgid "Enter an angle, visualize it."
+msgstr "Introduzca un ángulo, visualícelo."
+
+#. (itstool) path: section/code
+#: C/widget_drawing.py.page:30
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"from gi.repository import cairo\n"
+"import sys\n"
+"import math\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Choose an angle\", application=app)\n"
+" self.set_default_size(400, 400)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # a default angle\n"
+" self.angle = 360\n"
+"\n"
+" grid = Gtk.Grid()\n"
+"\n"
+" # a spinbutton that takes the value of an angle\n"
+" ad = Gtk.Adjustment(360, 0, 360, 1, 0, 0)\n"
+" self.spin = Gtk.SpinButton(adjustment=ad, climb_rate=1, digits=0)\n"
+" self.spin.connect(\"value-changed\", self.get_angle)\n"
+"\n"
+" # a drawing area for drawing whatever we want\n"
+" self.darea = Gtk.DrawingArea()\n"
+" # that we describe in the method draw(), connected to the signal \"draw\"\n"
+" self.darea.connect(\"draw\", self.draw)\n"
+" # we have to request a minimum size of the drawing area, or it will\n"
+" # disappear\n"
+" self.darea.set_size_request(300, 300)\n"
+"\n"
+" grid.attach(self.spin, 0, 0, 1, 1)\n"
+" grid.attach(self.darea, 0, 1, 1, 1)\n"
+"\n"
+" self.add(grid)\n"
+"\n"
+" # whenever we get a new angle in the spinbutton\n"
+" def get_angle(self, event):\n"
+" self.angle = self.spin.get_value_as_int()\n"
+" # redraw what is in the drawing area\n"
+" self.darea.queue_draw()\n"
+"\n"
+" def draw(self, darea, cr):\n"
+" # a 10-pixels-wide line\n"
+" cr.set_line_width(10)\n"
+" # red\n"
+" cr.set_source_rgba(0.5, 0.0, 0.0, 1.0)\n"
+"\n"
+" # get the width and height of the drawing area\n"
+" w = self.darea.get_allocated_width()\n"
+" h = self.darea.get_allocated_height()\n"
+"\n"
+" # move to the center of the drawing area\n"
+" # (translate from the top left corner to w/2, h/2)\n"
+" cr.translate(w / 2, h / 2)\n"
+" # draw a line to (55, 0)\n"
+" cr.line_to(55, 0)\n"
+" # and get back to (0, 0)\n"
+" cr.line_to(0, 0)\n"
+" # draw an arc centered in the origin, 50 pixels wide, from the angle 0\n"
+" # (in radians) to the angle given by the spinbutton (in degrees)\n"
+" cr.arc(0, 0, 50, 0, self.angle * (math.pi / 180))\n"
+" # draw a line back to the origin\n"
+" cr.line_to(0, 0)\n"
+" # drawing the path, and keeping the path for future use\n"
+" cr.stroke_preserve()\n"
+"\n"
+" # set a colour\n"
+" cr.set_source_rgba(0.0, 0.5, 0.5, 1.0)\n"
+" # and use it to fill the path (that we had kept)\n"
+" cr.fill()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"from gi.repository import cairo\n"
+"import sys\n"
+"import math\n"
+"\n"
+"\n"
+"class MyWindow(Gtk.ApplicationWindow):\n"
+"\n"
+" def __init__(self, app):\n"
+" Gtk.Window.__init__(self, title=\"Choose an angle\", application=app)\n"
+" self.set_default_size(400, 400)\n"
+" self.set_border_width(10)\n"
+"\n"
+" # a default angle\n"
+" self.angle = 360\n"
+"\n"
+" grid = Gtk.Grid()\n"
+"\n"
+" # a spinbutton that takes the value of an angle\n"
+" ad = Gtk.Adjustment(360, 0, 360, 1, 0, 0)\n"
+" self.spin = Gtk.SpinButton(adjustment=ad, climb_rate=1, digits=0)\n"
+" self.spin.connect(\"value-changed\", self.get_angle)\n"
+"\n"
+" # a drawing area for drawing whatever we want\n"
+" self.darea = Gtk.DrawingArea()\n"
+" # that we describe in the method draw(), connected to the signal \"draw\"\n"
+" self.darea.connect(\"draw\", self.draw)\n"
+" # we have to request a minimum size of the drawing area, or it will\n"
+" # disappear\n"
+" self.darea.set_size_request(300, 300)\n"
+"\n"
+" grid.attach(self.spin, 0, 0, 1, 1)\n"
+" grid.attach(self.darea, 0, 1, 1, 1)\n"
+"\n"
+" self.add(grid)\n"
+"\n"
+" # whenever we get a new angle in the spinbutton\n"
+" def get_angle(self, event):\n"
+" self.angle = self.spin.get_value_as_int()\n"
+" # redraw what is in the drawing area\n"
+" self.darea.queue_draw()\n"
+"\n"
+" def draw(self, darea, cr):\n"
+" # a 10-pixels-wide line\n"
+" cr.set_line_width(10)\n"
+" # red\n"
+" cr.set_source_rgba(0.5, 0.0, 0.0, 1.0)\n"
+"\n"
+" # get the width and height of the drawing area\n"
+" w = self.darea.get_allocated_width()\n"
+" h = self.darea.get_allocated_height()\n"
+"\n"
+" # move to the center of the drawing area\n"
+" # (translate from the top left corner to w/2, h/2)\n"
+" cr.translate(w / 2, h / 2)\n"
+" # draw a line to (55, 0)\n"
+" cr.line_to(55, 0)\n"
+" # and get back to (0, 0)\n"
+" cr.line_to(0, 0)\n"
+" # draw an arc centered in the origin, 50 pixels wide, from the angle 0\n"
+" # (in radians) to the angle given by the spinbutton (in degrees)\n"
+" cr.arc(0, 0, 50, 0, self.angle * (math.pi / 180))\n"
+" # draw a line back to the origin\n"
+" cr.line_to(0, 0)\n"
+" # drawing the path, and keeping the path for future use\n"
+" cr.stroke_preserve()\n"
+"\n"
+" # set a colour\n"
+" cr.set_source_rgba(0.0, 0.5, 0.5, 1.0)\n"
+" # and use it to fill the path (that we had kept)\n"
+" cr.fill()\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def __init__(self):\n"
+" Gtk.Application.__init__(self)\n"
+"\n"
+" def do_activate(self):\n"
+" win = MyWindow(self)\n"
+" win.show_all()\n"
+"\n"
+" def do_startup(self):\n"
+" Gtk.Application.do_startup(self)\n"
+"\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: item/p
+#: C/widget_drawing.py.page:39
+msgid ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkDrawingArea.html"
+"\">GtkDrawingArea</link>"
+msgstr ""
+"<link href=\"http://developer.gnome.org/gtk3/unstable/GtkDrawingArea.html"
+"\">GtkDrawingArea</link>"
+
+#. (itstool) path: item/p
+#: C/widget_drawing.py.page:40
+msgid ""
+"<link href=\"http://www.tortall.net/mu/wiki/CairoTutorial\">The Cairo "
+"Tutorial for Python Programmers</link>"
+msgstr ""
+"<link href=\"http://www.tortall.net/mu/wiki/CairoTutorial\">El tutorial de "
+"Cairo para programadores en Python</link>"
+
+#. (itstool) path: info/title
+#: C/window.c.page:8
+msgctxt "text"
+msgid "Window (C)"
+msgstr "Ventana (C)"
+
+#. (itstool) path: info/desc
+#: C/window.c.page:18 C/window.py.page:25 C/window.vala.page:18
+msgid "A toplevel window which can contain other widgets"
+msgstr "Una ventana de nivel superior que puede contener otros widgets"
+
+#. (itstool) path: page/title
+#: C/window.c.page:21 C/window.js.page:21 C/window.py.page:28
+#: C/window.vala.page:21
+msgid "Window"
+msgstr "Ventana"
+
+#. (itstool) path: page/p
+#: C/window.c.page:24
+msgid ""
+"A minimal GtkApplication. Use <link xref=\"GtkApplicationWindow.c"
+"\">Application Window</link> if you need GMenu support."
+msgstr ""
+"Una GtkAplication mínima. Use una <link href=\"GtkApplicationWindow.c"
+"\">ventana de aplicación</link> si necesita soporte para GMenu."
+
+#. (itstool) path: page/code
+#: C/window.c.page:28
+#, no-wrap
+msgid ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+"\n"
+" window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n"
+"\n"
+" gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n"
+"\n"
+" gtk_widget_show_all (GTK_WIDGET (window));\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+msgstr ""
+"\n"
+"#include <gtk/gtk.h>\n"
+"\n"
+"static void\n"
+"activate (GtkApplication *app,\n"
+" gpointer user_data)\n"
+"{\n"
+" GtkWidget *window;\n"
+"\n"
+" window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n"
+"\n"
+" gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n"
+" gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n"
+"\n"
+" gtk_widget_show_all (GTK_WIDGET (window));\n"
+"}\n"
+"\n"
+"int\n"
+"main (int argc, char **argv)\n"
+"{\n"
+" GtkApplication *app;\n"
+" int status;\n"
+"\n"
+" app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n"
+" g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+" status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+" g_object_unref (app);\n"
+" return status;\n"
+"}\n"
+
+#. (itstool) path: info/title
+#: C/window.js.page:8
+msgctxt "text"
+msgid "Window (JavaScript)"
+msgstr "Ventana (JavaScript)"
+
+#. (itstool) path: info/desc
+#: C/window.js.page:18
+msgid "A basic window which can contain other widgets"
+msgstr "Una ventana básica que puede contener otros widgets."
+
+#. (itstool) path: td/p
+#: C/window.js.page:26
+msgid "A minimal GtkApplication"
+msgstr "Una GtkApplication mínima"
+
+#. (itstool) path: td/p
+#: C/window.js.page:29
+msgid ""
+"Use <link xref=\"GtkApplicationWindow.js\">ApplicationWindow</link> if you "
+"need GMenu support."
+msgstr ""
+"Use una <link href=\"GtkApplicationWindow.js\">ventana de aplicación</link> "
+"si necesita soporte para GMenu."
+
+#. (itstool) path: page/code
+#: C/window.js.page:33
+#, no-wrap
+msgid ""
+"\n"
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const Application = new Lang.Class ({\n"
+" Name: 'Application',\n"
+"\n"
+" //create the application\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.myapp',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" },\n"
+"\n"
+" //callback function for 'activate' signal\n"
+" _onActivate: function () {\n"
+"\n"
+" MyWindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n"
+" MyWindow.title = \"Welcome to GNOME\";\n"
+"\n"
+" /* Here are a few ways we can customize our window.\n"
+" Try uncommenting them or changing their values! */\n"
+" //MyWindow.set_default_size (400,200);\n"
+" //MyWindow.set_has_resize_grip (false);\n"
+" //MyWindow.set_opacity (0.5);\n"
+" //MyWindow.maximize ();\n"
+"\n"
+" //show the window and all child widgets (none in this case)\n"
+" MyWindow.show_all();\n"
+" this.application.add_window(MyWindow);\n"
+" }\n"
+"});\n"
+"\n"
+"//run the application\n"
+"let app = new Application ();\n"
+"app.application.run (ARGV);\n"
+msgstr ""
+"\n"
+"#!/usr/bin/gjs\n"
+"\n"
+"const Gio = imports.gi.Gio;\n"
+"const GLib = imports.gi.GLib;\n"
+"const Gtk = imports.gi.Gtk;\n"
+"const Lang = imports.lang;\n"
+"\n"
+"const Application = new Lang.Class ({\n"
+" Name: 'Application',\n"
+"\n"
+" //create the application\n"
+" _init: function () {\n"
+" this.application = new Gtk.Application ({\n"
+" application_id: 'org.example.myapp',\n"
+" flags: Gio.ApplicationFlags.FLAGS_NONE\n"
+" });\n"
+"\n"
+" this.application.connect('activate', Lang.bind(this, this._onActivate));\n"
+" },\n"
+"\n"
+" //callback function for 'activate' signal\n"
+" _onActivate: function () {\n"
+"\n"
+" MyWindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n"
+" MyWindow.title = \"Welcome to GNOME\";\n"
+"\n"
+" /* Here are a few ways we can customize our window.\n"
+" Try uncommenting them or changing their values! */\n"
+" //MyWindow.set_default_size (400,200);\n"
+" //MyWindow.set_has_resize_grip (false);\n"
+" //MyWindow.set_opacity (0.5);\n"
+" //MyWindow.maximize ();\n"
+"\n"
+" //show the window and all child widgets (none in this case)\n"
+" MyWindow.show_all();\n"
+" this.application.add_window(MyWindow);\n"
+" }\n"
+"});\n"
+"\n"
+"//run the application\n"
+"let app = new Application ();\n"
+"app.application.run (ARGV);\n"
+
+#. (itstool) path: page/p
+#: C/window.js.page:35
+msgid "In this example we used the following:"
+msgstr "En este ejemplo se usa lo siguiente:"
+
+#. (itstool) path: item/p
+#: C/window.js.page:40
+msgid ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Window.html"
+"\">Gtk.Window</link>"
+msgstr ""
+"<link href=\"http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Window.html"
+"\">Gtk.Window</link>"
+
+#. (itstool) path: info/title
+#: C/window.py.page:8
+msgctxt "text"
+msgid "Window (Python)"
+msgstr "Ventana (Python)"
+
+#. (itstool) path: td/p
+#: C/window.py.page:34
+msgid "A minimal GTK+ Application: a window with a title."
+msgstr "Una aplicación mínima en GTK+: una ventana con un título."
+
+#. (itstool) path: td/p
+#: C/window.py.page:37
+msgid ""
+"Use <link xref=\"GtkApplicationWindow.py\"/> if you need <link xref=\"gmenu."
+"py\"/> support."
+msgstr ""
+"Use una <link xref=\"GtkApplicationWindow.py\"/> si necesita soporte de "
+"<link xref=\"gmenu.py\"/>."
+
+#. (itstool) path: section/code
+#: C/window.py.page:47
+#, no-wrap
+msgid ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def do_activate(self):\n"
+" # create a Gtk Window belonging to the application itself\n"
+" window = Gtk.Window(application=self)\n"
+" # set the title\n"
+" window.set_title(\"Welcome to GNOME\")\n"
+" # show the window\n"
+" window.show_all()\n"
+"\n"
+"# create and run the application, exit with the value returned by\n"
+"# running the program\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+msgstr ""
+"from gi.repository import Gtk\n"
+"import sys\n"
+"\n"
+"\n"
+"class MyApplication(Gtk.Application):\n"
+"\n"
+" def do_activate(self):\n"
+" # create a Gtk Window belonging to the application itself\n"
+" window = Gtk.Window(application=self)\n"
+" # set the title\n"
+" window.set_title(\"Welcome to GNOME\")\n"
+" # show the window\n"
+" window.show_all()\n"
+"\n"
+"# create and run the application, exit with the value returned by\n"
+"# running the program\n"
+"app = MyApplication()\n"
+"exit_status = app.run(sys.argv)\n"
+"sys.exit(exit_status)\n"
+
+#. (itstool) path: section/title
+#: C/window.py.page:52
+msgid "Useful methods for a Window widget"
+msgstr "Métodos útiles para un widget «Window»"
+
+#. (itstool) path: info/title
+#: C/window.vala.page:8
+msgctxt "text"
+msgid "Window (Vala)"
+msgstr "Ventana (Vala)"
+
+#. (itstool) path: td/p
+#: C/window.vala.page:26
+msgid "The simplest Gtk.Application"
+msgstr "La Gtk.Application más sencilla"
+
+#. (itstool) path: td/p
+#: C/window.vala.page:29
+msgid ""
+"Use <link xref=\"GtkApplicationWindow.vala\">Application Window</link> if "
+"you need GMenu support."
+msgstr ""
+"Use una <link href=\"GtkApplicationWindow.vala\">ventana de aplicación</"
+"link> si necesita soporte para GMenu."
+
+#. (itstool) path: page/code
+#: C/window.vala.page:33
+#, no-wrap
+msgid ""
+"/* This is the application. */\n"
+"public class Application : Gtk.Application {\n"
+"\n"
+"\t/* Constructor */\n"
+"\tpublic Application () {\n"
+"\t\tObject (application_id: \"org.example.window\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application,\n"
+"\t * which is inherited by Gtk.Application. */\n"
+"\tpublic override void activate () {\n"
+"\n"
+"\t\tvar window = new Gtk.Window ();\n"
+"\t\twindow.title = \"Welcome to GNOME\";\n"
+"\n"
+"\t\t/* The following 3 lines are included here to introduce\n"
+"\t\t * you to ways you can adjust the toplevel window to suit\n"
+"\t\t * your needs. Uncomment them to see what they do.\n"
+"\t\t */\n"
+"\n"
+"\t\t//window.border_width = 10;\n"
+"\t\t//window.set_default_size (350, 70);\n"
+"\t\t//window.window_position = Gtk.WindowPosition.CENTER;\n"
+"\n"
+"\t\t/* Add the window to this application. */\n"
+"\t\tthis.add_window (window);\n"
+"\n"
+"\t\t/* Show the window. */\n"
+"\t\twindow.show ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates the application and runs it.*/\n"
+"int main (string[] args) {\n"
+"\tvar app = new Application ();\n"
+"\treturn app.run (args);\n"
+"}\n"
+msgstr ""
+"/* This is the application. */\n"
+"public class Application : Gtk.Application {\n"
+"\n"
+"\t/* Constructor */\n"
+"\tpublic Application () {\n"
+"\t\tObject (application_id: \"org.example.window\");\n"
+"\t}\n"
+"\n"
+"\t/* Override the 'activate' signal of GLib.Application,\n"
+"\t * which is inherited by Gtk.Application. */\n"
+"\tpublic override void activate () {\n"
+"\n"
+"\t\tvar window = new Gtk.Window ();\n"
+"\t\twindow.title = \"Welcome to GNOME\";\n"
+"\n"
+"\t\t/* The following 3 lines are included here to introduce\n"
+"\t\t * you to ways you can adjust the toplevel window to suit\n"
+"\t\t * your needs. Uncomment them to see what they do.\n"
+"\t\t */\n"
+"\n"
+"\t\t//window.border_width = 10;\n"
+"\t\t//window.set_default_size (350, 70);\n"
+"\t\t//window.window_position = Gtk.WindowPosition.CENTER;\n"
+"\n"
+"\t\t/* Add the window to this application. */\n"
+"\t\tthis.add_window (window);\n"
+"\n"
+"\t\t/* Show the window. */\n"
+"\t\twindow.show ();\n"
+"\t}\n"
+"}\n"
+"\n"
+"/* The main function creates the application and runs it.*/\n"
+"int main (string[] args) {\n"
+"\tvar app = new Application ();\n"
+"\treturn app.run (args);\n"
+"}\n"
+
+#. (itstool) path: item/p
+#: C/window.vala.page:39
+msgid ""
+"The widget <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.html"
+"\">Gtk.Window</link>"
+msgstr ""
+"El widget <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.html\">Gtk."
+"Window</link>"
+
+#. (itstool) path: item/p
+#: C/window.vala.page:41
+msgid ""
+"The enum <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.WindowPosition.html"
+"\">Gtk.WindowPosition</link>"
+msgstr ""
+"El enumerado <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.WindowPosition."
+"html\">Gtk.WindowPosition</link>"
+
+#. (itstool) path: item/p
+#: C/window.vala.page:43
+msgid ""
+"The method <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window."
+"set_default_size.html\">set_default_size</link>"
+msgstr ""
+"El método <link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window."
+"set_default_size.html\">set_default_size</link>"
+
+#. (itstool) path: item/p
+#: C/window.vala.page:45
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Container.border_width.html"
+"\">border_width</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Container.border_width.html"
+"\">border_width</link>"
+
+#. (itstool) path: item/p
+#: C/window.vala.page:47
+msgid ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.window_position.html"
+"\">window_position</link>"
+msgstr ""
+"<link href=\"http://www.valadoc.org/gtk+-3.0/Gtk.Window.window_position.html"
+"\">window_position</link>"
+
+#. (itstool) path: credit/name
+#: C/custom-gsource.c.page:11
+msgid "Philip Withnall"
+msgstr "Philip Withnall"
+
+#. (itstool) path: credit/years
+#: C/custom-gsource.c.page:13
+msgid "2015"
+msgstr "2015"
+
+#. (itstool) path: info/desc
+#: C/custom-gsource.c.page:18
+msgid "Tutorial for writing a custom <code>GSource</code> implementation"
+msgstr ""
+"Tutorial para escribir una implementación de <code>GSource</code> "
+"personalizada"
+
+#. (itstool) path: page/title
+#: C/custom-gsource.c.page:23
+msgid "Custom GSources"
+msgstr "GSources personalizadas"
+
+#. (itstool) path: synopsis/title
+#: C/custom-gsource.c.page:26
+msgid "Summary"
+msgstr "Resumen"
+
+#. (itstool) path: synopsis/p
+#: C/custom-gsource.c.page:28
+msgid ""
+"This article is a tutorial on creating a custom <code>GSource</code>. For "
+"the reference documentation, see the <link href=\"https://developer.gnome."
+"org/glib/stable/glib-The-Main-Event-Loop.html#GSource\">GLib API reference</"
+"link>."
+msgstr ""
+"Este artículo es un tutorial para escribir una <code>GSource</code> "
+"personalizada. Para ver la documentación de referencia, consulte la <link "
+"href=\"https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop."
+"html#GSource\"> referencia de la API de GLib</link>."
+
+#. (itstool) path: section/title
+#: C/custom-gsource.c.page:37
+msgid "What is <code>GSource</code>?"
+msgstr "¿qué es <code>GSource</code>?"
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:39
+msgid ""
+"A <link href=\"https://developer.gnome.org/glib/stable/glib-The-Main-Event-"
+"Loop.html#GSource\"><code>GSource</code></link> is an expected event with an "
+"associated callback function which will be invoked when that event is "
+"received. An event could be a timeout or data being received on a socket, "
+"for example."
+msgstr ""
+"Una <link href=\"https://developer.gnome.org/glib/stable/glib-The-Main-Event-"
+"Loop.html#GSource\"><code>GSource</code></link> es un evento esperado con "
+"una función de retorno de llamada asociada que se invocará cuando se reciba "
+"un evento. Un evento puede ser una expiración de tiempo o datos que se "
+"reciben en un socket, por ejemplo."
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:46
+msgid ""
+"GLib contains various types of <code>GSource</code>, but also allows "
+"applications to define their own, allowing custom events to be integrated "
+"into the main loop."
+msgstr ""
+"GLib contiene varios tipos de <code>GSource</code>, pero también permite que "
+"las aplicaciones definan las suyas propias, permitiendo integrar eventos "
+"personalizados en el bucle principal."
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:52
+msgid ""
+"The structure of a <code>GSource</code> and its virtual functions are "
+"documented in detail in the <link href=\"https://developer.gnome.org/glib/"
+"stable/glib-The-Main-Event-Loop.html#GSourceFuncs\">GLib API reference</"
+"link>."
+msgstr ""
+"La estructura de una <code>GSource</code> y sus funciones virtuales están "
+"documentadas detalladamente en la <link href=\"https://developer.gnome.org/"
+"glib/stable/glib-The-Main-Event-Loop.html#GSourceFuncs\">referencia de la "
+"API GLib</link>."
+
+#. (itstool) path: section/title
+#: C/custom-gsource.c.page:61
+msgid "A Message Queue Source"
+msgstr "Una fuente de cola de mensajes"
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:63
+msgid ""
+"As a running example, a message queue source will be used which dispatches "
+"its callback whenever a message is enqueued to a queue internal to the "
+"source (potentially from another thread)."
+msgstr ""
+"Como ejemplo de ejecución, se usará una cola de fuentes de mensajes que "
+"ejecuta su función de retorno de llamada cuando se mete en la cola un "
+"mensaje en la cola interna de la fuente (potencialmente de otro hilo)."
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:69
+msgid ""
+"This type of source is useful for efficiently transferring large numbers of "
+"messages between main contexts. The alternative is transferring each message "
+"as a separate idle <code>GSource</code> using <code>g_source_attach()</"
+"code>. For large numbers of messages, this means a lot of allocations and "
+"frees of <code>GSource</code>s."
+msgstr ""
+"Este tipo de fuente es útil para transferir de manera eficiente un gran "
+"número de mensajes entre contextos principales. LA alternativa es transferir "
+"cada mensaje en una <code>GSource</code> libre separada, usando "
+"<code>g_source_attach()</code>. Para un gran número de mensajes esto implica "
+"reservar y liberar muchas <code>GSource</code>."
+
+#. (itstool) path: section/title
+#: C/custom-gsource.c.page:78
+msgid "Structure"
+msgstr "Estructura"
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:80
+msgid ""
+"Firstly, a structure for the source needs to be declared. This must contain "
+"a <code>GSource</code> as its parent, followed by the private fields for the "
+"source: the queue and a function to call to free each message once finished "
+"with."
+msgstr ""
+"Primero se debe declarar una estructura para la fuente. Esta debe contener "
+"una <code>GSource</code> como su padre, seguida de los campos privados para "
+"la fuente: la cola y una función para llamar a cada mensaje libre cuando "
+"termine con él."
+
+#. (itstool) path: section/code
+#: C/custom-gsource.c.page:86
+#, no-wrap
+msgid ""
+"\n"
+"typedef struct {\n"
+" GSource parent;\n"
+" GAsyncQueue *queue; /* owned */\n"
+" GDestroyNotify destroy_message;\n"
+"} MessageQueueSource;"
+msgstr ""
+"\n"
+"typedef struct {\n"
+" GSource parent;\n"
+" GAsyncQueue *queue; /* owned */\n"
+" GDestroyNotify destroy_message;\n"
+"} MessageQueueSource;"
+
+#. (itstool) path: section/title
+#: C/custom-gsource.c.page:95
+msgid "Prepare Function"
+msgstr "Función de preparación"
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:97
+msgid ""
+"Next, the prepare function for the source must be defined. This determines "
+"whether the source is ready to be dispatched. As this source is using an in-"
+"memory queue, this can be determined by checking the queue’s length: if "
+"there are elements in the queue, the source can be dispatched to handle them."
+msgstr ""
+"Lo siguiente es definir la función de preparación para la fuente. Esto "
+"determina si la fuente está lista para servirse. Dado que esta fuente usa "
+"una cola en memoria, se puede determinar comprobando la longitud de la cola: "
+"si hay elementos en la cola, se puede usar la fuente para gestionarlos."
+
+#. (itstool) path: section/code
+#: C/custom-gsource.c.page:104
+#, no-wrap
+msgid ""
+"\n"
+"return (g_async_queue_length (message_queue_source->queue) > 0);"
+msgstr ""
+"\n"
+"return (g_async_queue_length (message_queue_source->queue) > 0);"
+
+#. (itstool) path: section/title
+#: C/custom-gsource.c.page:109
+msgid "Check Function"
+msgstr "Función de comprobación"
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:111
+msgid ""
+"As this source has no file descriptors, the prepare and check functions "
+"essentially have the same job, so a check function is not needed. Setting "
+"the field to <code>NULL</code> in <code>GSourceFuncs</code> bypasses the "
+"check function for this source type."
+msgstr ""
+"Como esta fuente no tiene descriptores de archivos, las funciones de "
+"preparación y comprobación tienen esencialmente el mismo trabajo, por lo que "
+"no se necesita la función de comprobación. Establecer el campo a <code>NULL</"
+"code> en <code>GSourceFuncs</code> evita la función de comprobación para "
+"este tipo de fuente."
+
+#. (itstool) path: section/title
+#: C/custom-gsource.c.page:120
+msgid "Dispatch Function"
+msgstr "Función de gestión"
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:122
+msgid ""
+"For this source, the dispatch function is where the complexity lies. It "
+"needs to dequeue a message from the queue, then pass that message to the "
+"<code>GSource</code>’s callback function. No messages may be queued: even "
+"through the prepare function returned true, another source wrapping the same "
+"queue may have been dispatched in the mean time and taken the final message "
+"from the queue. Further, if no callback has been set for the <code>GSource</"
+"code> (which is allowed), the message must be destroyed and silently dropped."
+msgstr ""
+"Para esta fuente, es en la función de gestión donde reside la complejidad. "
+"Debe sacar de la cola un mensaje y pasarlo a la función de retorno de "
+"llamada de la <code>GSource</code>. No se deben quedar mensajes en la cola: "
+"aunque la función devuelva verdadero, otra fuente que abstraiga la misma "
+"cola se puede haber gestionado en este tiempo y haber tomado el mensaje "
+"final de la cola. Además, si no se ha establecido una función de retorno de "
+"llamada para la <code>GSource</code> (algo que está permitido), el mensaje "
+"puede destruirse y descartarse silenciosamente."
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:133
+msgid ""
+"If both a message and callback are set, the callback can be invoked on the "
+"message and its return value propagated as the return value of the dispatch "
+"function. This is <code>FALSE</code> to destroy the <code>GSource</code> and "
+"<code>TRUE</code> to keep it alive, just as for <code>GSourceFunc</code> — "
+"these semantics are the same for all dispatch function implementations."
+msgstr ""
+"Si se han definido el mensaje y la función de retorno de llamada, se puede "
+"llamar a esta última sobre el mensaje y devolverá el valor propagado como "
+"valor de retorno de la función de gestión. Este es <code>FALSE</code> para "
+"destruir la <code>GSource</code> y <code>TRUE</code> para mantenerla, igual "
+"que para <code>GSourceFunc</code>: estas consideraciones semánticas son las "
+"mismas para todas las implementaciones de las funciones de gestión."
+
+#. (itstool) path: section/code
+#: C/custom-gsource.c.page:141
+#, no-wrap
+msgid ""
+"\n"
+"/* Pop a message off the queue. */\n"
+"message = g_async_queue_try_pop (message_queue_source->queue);\n"
+"\n"
+"/* If there was no message, bail. */\n"
+"if (message == NULL)\n"
+" {\n"
+" /* Keep the source around to handle the next message. */\n"
+" return TRUE;\n"
+" }\n"
+"\n"
+"/* @func may be %NULL if no callback was specified.\n"
+" * If so, drop the message. */\n"
+"if (func == NULL)\n"
+" {\n"
+" if (message_queue_source->destroy_message != NULL)\n"
+" {\n"
+" message_queue_source->destroy_message (message);\n"
+" }\n"
+"\n"
+" /* Keep the source around to consume the next message. */\n"
+" return TRUE;\n"
+" }\n"
+"\n"
+"return func (message, user_data);"
+msgstr ""
+"\n"
+"/* Pop a message off the queue. */\n"
+"message = g_async_queue_try_pop (message_queue_source->queue);\n"
+"\n"
+"/* If there was no message, bail. */\n"
+"if (message == NULL)\n"
+" {\n"
+" /* Keep the source around to handle the next message. */\n"
+" return TRUE;\n"
+" }\n"
+"\n"
+"/* @func may be %NULL if no callback was specified.\n"
+" * If so, drop the message. */\n"
+"if (func == NULL)\n"
+" {\n"
+" if (message_queue_source->destroy_message != NULL)\n"
+" {\n"
+" message_queue_source->destroy_message (message);\n"
+" }\n"
+"\n"
+" /* Keep the source around to consume the next message. */\n"
+" return TRUE;\n"
+" }\n"
+"\n"
+"return func (message, user_data);"
+
+#. (itstool) path: section/title
+#: C/custom-gsource.c.page:169
+msgid "Callback Functions"
+msgstr "Funciones de retorno de llamada"
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:171
+msgid ""
+"The callback from a <code>GSource</code> does not have to have type "
+"<code>GSourceFunc</code>. It can be whatever function type is called in the "
+"source’s dispatch function, as long as that type is sufficiently documented."
+msgstr ""
+"La función de retorno de llamada de una <code>GSource</code> no tiene que "
+"tener un tipo <code>GSourceFunc</code>. Puede ser una función de cualquier "
+"tipo a la que se llame en la función de gestión de la fuente, ya que este "
+"tipo está suficientemente documentado."
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:178
+msgid ""
+"Normally, <code>g_source_set_callback()</code> is used to set the callback "
+"function for a source instance. With its <code>GDestroyNotify</code>, a "
+"strong reference can be held to keep an object alive while the source is "
+"still alive:"
+msgstr ""
+"Normalmente se usa <code>g_source_set_callback()</code> para configurar la "
+"función de retorno de llamada para una instancia de una fuente. Cuando es "
+"<code>GDestroyNotify</code> se hace una referencia fuerte para mantener vivo "
+"un objeto mientras la fuente sigue viva:"
+
+#. (itstool) path: section/code
+#: C/custom-gsource.c.page:184
+#, no-wrap
+msgid ""
+"\n"
+"g_source_set_callback (source, callback_func,\n"
+" g_object_ref (object_to_strong_ref),\n"
+" (GDestroyNotify) g_object_unref);"
+msgstr ""
+"\n"
+"g_source_set_callback (source, callback_func,\n"
+" g_object_ref (object_to_strong_ref),\n"
+" (GDestroyNotify) g_object_unref);"
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:189
+msgid ""
+"However, <code>GSource</code> has a layer of indirection for retrieving this "
+"callback, exposed as <code>g_source_set_callback_indirect()</code>. This "
+"allows GObject to set a <code>GClosure</code> as the callback for a source, "
+"which allows for sources which are automatically destroyed when an object is "
+"finalized — a <em>weak</em> reference, in contrast to the <em>strong</em> "
+"reference above:"
+msgstr ""
+"Sin embargo, <code>GSource</code> tiene una capa de indirección para obtener "
+"esta función de retorno de llamada, disponible mediante "
+"<code>g_source_set_callback_indirect()</code>. Esto permite a GObject "
+"establecer una <code>GClosure</code> como función de retorno de llamada de "
+"una fuente, lo que permite que las fuentes se destruyan automáticamente "
+"cuando un objeto termina: una referencia <em>débil</em>, en contraste con la "
+"referencia <em>fuerte</em> mencionada anteriormente:"
+
+#. (itstool) path: section/code
+#: C/custom-gsource.c.page:197
+#, no-wrap
+msgid ""
+"\n"
+"g_source_set_closure (source,\n"
+" g_cclosure_new_object (callback_func,\n"
+" object_to_weak_ref));"
+msgstr ""
+"\n"
+"g_source_set_closure (source,\n"
+" g_cclosure_new_object (callback_func,\n"
+" object_to_weak_ref));"
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:202
+msgid ""
+"It also allows for a generic, closure-based ‘dummy’ callback, which can be "
+"used when a source needs to exist but no action needs to be performed in its "
+"callback:"
+msgstr ""
+"También permite una función de retorno de llamada «tonta» basada en el "
+"cierre, que se puede usar cuando una fuente debe existir pero no se necesita "
+"realizar ninguna acción en su retorno:"
+
+#. (itstool) path: section/code
+#: C/custom-gsource.c.page:207
+#, no-wrap
+msgid ""
+"\n"
+"g_source_set_dummy_callback (source);"
+msgstr ""
+"\n"
+"g_source_set_dummy_callback (source);"
+
+#. (itstool) path: section/title
+#: C/custom-gsource.c.page:212
+msgid "Constructor"
+msgstr "Constructor"
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:214
+msgid ""
+"Finally, the <code>GSourceFuncs</code> definition of the <code>GSource</"
+"code> can be written, alongside a construction function. It is typical "
+"practice to expose new source types simply as <code>GSource</code>s, not as "
+"the subtype structure; so the constructor returns a <code>GSource*</code>."
+msgstr ""
+"Finalmente se puede escribir la definición de las <code>GSourceFuncs</code> "
+"de la <code>GSource</code> junto con la función de construcción de las "
+"<code>GSource</code>. Normalmente es práctico exponer los nuevos tipos de "
+"fuentes como <code>GSource</code> y no como el subtipo de la estructura; de "
+"este modo, el constructor devuelve un <code>GSource*</code>."
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:222
+msgid ""
+"The example constructor here also demonstrates use of a child source to "
+"support cancellation conveniently. If the <code>GCancellable</code> is "
+"cancelled, the application’s callback will be dispatched and can check for "
+"cancellation. (The application code will need to make a pointer to the "
+"<code>GCancellable</code> available to its callback, as a field of the "
+"callback’s user data set in <code>g_source_set_callback()</code>)."
+msgstr ""
+"Aquí el constructor de ejemplo también muestra el uso de una fuente hija "
+"para soportar la cancelación adecuadamente. Si se cancela la "
+"<code>GCancellable</code> se gestiona el retorno de la aplicación y se puede "
+"comprobar la cancelación. (El código de la aplicación deberá crear un "
+"puntero a la <code>GCancellable</code> disponible para la función de "
+"retorno, como un campo de los datos de usuario de la función de retorno "
+"configurada en <code>g_source_set_callback()</code>)."
+
+#. (itstool) path: section/code
+#: C/custom-gsource.c.page:230
+#, no-wrap
+msgid ""
+"\n"
+"GSource *\n"
+"message_queue_source_new (GAsyncQueue *queue,\n"
+" GDestroyNotify destroy_message,\n"
+" GCancellable *cancellable)\n"
+"{\n"
+" GSource *source; /* alias of @message_queue_source */\n"
+" MessageQueueSource *message_queue_source; /* alias of @source */\n"
+"\n"
+" g_return_val_if_fail (queue != NULL, NULL);\n"
+" g_return_val_if_fail (cancellable == NULL ||\n"
+" G_IS_CANCELLABLE (cancellable), NULL);\n"
+"\n"
+" source = g_source_new (&message_queue_source_funcs,\n"
+" sizeof (MessageQueueSource));\n"
+" message_queue_source = (MessageQueueSource *) source;\n"
+"\n"
+" /* The caller can overwrite this name with something more useful later. */\n"
+" g_source_set_name (source, \"MessageQueueSource\");\n"
+"\n"
+" message_queue_source->queue = g_async_queue_ref (queue);\n"
+" message_queue_source->destroy_message = destroy_message;\n"
+"\n"
+" /* Add a cancellable source. */\n"
+" if (cancellable != NULL)\n"
+" {\n"
+" GSource *cancellable_source;\n"
+"\n"
+" cancellable_source = g_cancellable_source_new (cancellable);\n"
+" g_source_set_dummy_callback (cancellable_source);\n"
+" g_source_add_child_source (source, cancellable_source);\n"
+" g_source_unref (cancellable_source);\n"
+" }\n"
+"\n"
+" return source;\n"
+"}"
+msgstr ""
+"\n"
+"GSource *\n"
+"message_queue_source_new (GAsyncQueue *queue,\n"
+" GDestroyNotify destroy_message,\n"
+" GCancellable *cancellable)\n"
+"{\n"
+" GSource *source; /* alias of @message_queue_source */\n"
+" MessageQueueSource *message_queue_source; /* alias of @source */\n"
+"\n"
+" g_return_val_if_fail (queue != NULL, NULL);\n"
+" g_return_val_if_fail (cancellable == NULL ||\n"
+" G_IS_CANCELLABLE (cancellable), NULL);\n"
+"\n"
+" source = g_source_new (&message_queue_source_funcs,\n"
+" sizeof (MessageQueueSource));\n"
+" message_queue_source = (MessageQueueSource *) source;\n"
+"\n"
+" /* The caller can overwrite this name with something more useful later. */\n"
+" g_source_set_name (source, \"MessageQueueSource\");\n"
+"\n"
+" message_queue_source->queue = g_async_queue_ref (queue);\n"
+" message_queue_source->destroy_message = destroy_message;\n"
+"\n"
+" /* Add a cancellable source. */\n"
+" if (cancellable != NULL)\n"
+" {\n"
+" GSource *cancellable_source;\n"
+"\n"
+" cancellable_source = g_cancellable_source_new (cancellable);\n"
+" g_source_set_dummy_callback (cancellable_source);\n"
+" g_source_add_child_source (source, cancellable_source);\n"
+" g_source_unref (cancellable_source);\n"
+" }\n"
+"\n"
+" return source;\n"
+"}"
+
+#. (itstool) path: section/title
+#: C/custom-gsource.c.page:270
+msgid "Complete Example"
+msgstr "Ejemplo completo"
+
+#. (itstool) path: listing/title
+#: C/custom-gsource.c.page:273
+msgid "Complete Example Code"
+msgstr "Código de ejemplo completo"
+
+#. (itstool) path: listing/code
+#: C/custom-gsource.c.page:275
+#, no-wrap
+msgid ""
+"/**\n"
+" * MessageQueueSource:\n"
+" *\n"
+" * This is a #GSource which wraps a #GAsyncQueue and is dispatched whenever a\n"
+" * message can be pulled off the queue. Messages can be enqueued from any\n"
+" * thread.\n"
+" *\n"
+" * The callbacks dispatched by a #MessageQueueSource have type\n"
+" * #MessageQueueSourceFunc.\n"
+" *\n"
+" * #MessageQueueSource supports adding a #GCancellable child source which will\n"
+" * additionally dispatch if a provided #GCancellable is cancelled.\n"
+" */\n"
+"typedef struct {\n"
+" GSource parent;\n"
+" GAsyncQueue *queue; /* owned */\n"
+" GDestroyNotify destroy_message;\n"
+"} MessageQueueSource;\n"
+"\n"
+"/**\n"
+" * MessageQueueSourceFunc:\n"
+" * @message: (transfer full) (nullable): message pulled off the queue\n"
+" * @user_data: user data provided to g_source_set_callback()\n"
+" *\n"
+" * Callback function type for #MessageQueueSource.\n"
+" */\n"
+"typedef gboolean (*MessageQueueSourceFunc) (gpointer message,\n"
+" gpointer user_data);\n"
+"\n"
+"static gboolean\n"
+"message_queue_source_prepare (GSource *source,\n"
+" gint *timeout_)\n"
+"{\n"
+" MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n"
+"\n"
+" return (g_async_queue_length (message_queue_source->queue) > 0);\n"
+"}\n"
+"\n"
+"static gboolean\n"
+"message_queue_source_dispatch (GSource *source,\n"
+" GSourceFunc callback,\n"
+" gpointer user_data)\n"
+"{\n"
+" MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n"
+" gpointer message;\n"
+" MessageQueueSourceFunc func = (MessageQueueSourceFunc) callback;\n"
+"\n"
+" /* Pop a message off the queue. */\n"
+" message = g_async_queue_try_pop (message_queue_source->queue);\n"
+"\n"
+" /* If there was no message, bail. */\n"
+" if (message == NULL)\n"
+" {\n"
+" /* Keep the source around to handle the next message. */\n"
+" return TRUE;\n"
+" }\n"
+"\n"
+" /* @func may be %NULL if no callback was specified.\n"
+" * If so, drop the message. */\n"
+" if (func == NULL)\n"
+" {\n"
+" if (message_queue_source->destroy_message != NULL)\n"
+" {\n"
+" message_queue_source->destroy_message (message);\n"
+" }\n"
+"\n"
+" /* Keep the source around to consume the next message. */\n"
+" return TRUE;\n"
+" }\n"
+"\n"
+" return func (message, user_data);\n"
+"}\n"
+"\n"
+"static void\n"
+"message_queue_source_finalize (GSource *source)\n"
+"{\n"
+" MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n"
+"\n"
+" g_async_queue_unref (message_queue_source->queue);\n"
+"}\n"
+"\n"
+"static gboolean\n"
+"message_queue_source_closure_callback (gpointer message,\n"
+" gpointer user_data)\n"
+"{\n"
+" GClosure *closure = user_data;\n"
+" GValue param_value = G_VALUE_INIT;\n"
+" GValue result_value = G_VALUE_INIT;\n"
+" gboolean retval;\n"
+"\n"
+" /* The invoked function is responsible for freeing @message. */\n"
+" g_value_init (&result_value, G_TYPE_BOOLEAN);\n"
+" g_value_init (&param_value, G_TYPE_POINTER);\n"
+" g_value_set_pointer (&param_value, message);\n"
+"\n"
+" g_closure_invoke (closure, &result_value, 1, &param_value, NULL);\n"
+" retval = g_value_get_boolean (&result_value);\n"
+"\n"
+" g_value_unset (&param_value);\n"
+" g_value_unset (&result_value);\n"
+"\n"
+" return retval;\n"
+"}\n"
+"\n"
+"static GSourceFuncs message_queue_source_funcs =\n"
+" {\n"
+" message_queue_source_prepare,\n"
+" NULL, /* check */\n"
+" message_queue_source_dispatch,\n"
+" message_queue_source_finalize,\n"
+" (GSourceFunc) message_queue_source_closure_callback,\n"
+" NULL,\n"
+" };\n"
+"\n"
+"/**\n"
+" * message_queue_source_new:\n"
+" * @queue: the queue to check\n"
+" * @destroy_message: (nullable): function to free a message, or %NULL\n"
+" * @cancellable: (nullable): a #GCancellable, or %NULL\n"
+" *\n"
+" * Create a new #MessageQueueSource, a type of #GSource which dispatches for\n"
+" * each message queued to it.\n"
+" *\n"
+" * If a callback function of type #MessageQueueSourceFunc is connected to the\n"
+" * returned #GSource using g_source_set_callback(), it will be invoked for each\n"
+" * message, with the message passed as its first argument. It is responsible for\n"
+" * freeing the message. If no callback is set, messages are automatically freed\n"
+" * as they are queued.\n"
+" *\n"
+" * Returns: (transfer full): a new #MessageQueueSource\n"
+" */\n"
+"GSource *\n"
+"message_queue_source_new (GAsyncQueue *queue,\n"
+" GDestroyNotify destroy_message,\n"
+" GCancellable *cancellable)\n"
+"{\n"
+" GSource *source; /* alias of @message_queue_source */\n"
+" MessageQueueSource *message_queue_source; /* alias of @source */\n"
+"\n"
+" g_return_val_if_fail (queue != NULL, NULL);\n"
+" g_return_val_if_fail (cancellable == NULL ||\n"
+" G_IS_CANCELLABLE (cancellable), NULL);\n"
+"\n"
+" source = g_source_new (&message_queue_source_funcs,\n"
+" sizeof (MessageQueueSource));\n"
+" message_queue_source = (MessageQueueSource *) source;\n"
+"\n"
+" /* The caller can overwrite this name with something more useful later. */\n"
+" g_source_set_name (source, \"MessageQueueSource\");\n"
+"\n"
+" message_queue_source->queue = g_async_queue_ref (queue);\n"
+" message_queue_source->destroy_message = destroy_message;\n"
+"\n"
+" /* Add a cancellable source. */\n"
+" if (cancellable != NULL)\n"
+" {\n"
+" GSource *cancellable_source;\n"
+"\n"
+" cancellable_source = g_cancellable_source_new (cancellable);\n"
+" g_source_set_dummy_callback (cancellable_source);\n"
+" g_source_add_child_source (source, cancellable_source);\n"
+" g_source_unref (cancellable_source);\n"
+" }\n"
+"\n"
+" return source;\n"
+"}\n"
+msgstr ""
+"/**\n"
+" * MessageQueueSource:\n"
+" *\n"
+" * This is a #GSource which wraps a #GAsyncQueue and is dispatched whenever a\n"
+" * message can be pulled off the queue. Messages can be enqueued from any\n"
+" * thread.\n"
+" *\n"
+" * The callbacks dispatched by a #MessageQueueSource have type\n"
+" * #MessageQueueSourceFunc.\n"
+" *\n"
+" * #MessageQueueSource supports adding a #GCancellable child source which will\n"
+" * additionally dispatch if a provided #GCancellable is cancelled.\n"
+" */\n"
+"typedef struct {\n"
+" GSource parent;\n"
+" GAsyncQueue *queue; /* owned */\n"
+" GDestroyNotify destroy_message;\n"
+"} MessageQueueSource;\n"
+"\n"
+"/**\n"
+" * MessageQueueSourceFunc:\n"
+" * @message: (transfer full) (nullable): message pulled off the queue\n"
+" * @user_data: user data provided to g_source_set_callback()\n"
+" *\n"
+" * Callback function type for #MessageQueueSource.\n"
+" */\n"
+"typedef gboolean (*MessageQueueSourceFunc) (gpointer message,\n"
+" gpointer user_data);\n"
+"\n"
+"static gboolean\n"
+"message_queue_source_prepare (GSource *source,\n"
+" gint *timeout_)\n"
+"{\n"
+" MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n"
+"\n"
+" return (g_async_queue_length (message_queue_source->queue) > 0);\n"
+"}\n"
+"\n"
+"static gboolean\n"
+"message_queue_source_dispatch (GSource *source,\n"
+" GSourceFunc callback,\n"
+" gpointer user_data)\n"
+"{\n"
+" MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n"
+" gpointer message;\n"
+" MessageQueueSourceFunc func = (MessageQueueSourceFunc) callback;\n"
+"\n"
+" /* Pop a message off the queue. */\n"
+" message = g_async_queue_try_pop (message_queue_source->queue);\n"
+"\n"
+" /* If there was no message, bail. */\n"
+" if (message == NULL)\n"
+" {\n"
+" /* Keep the source around to handle the next message. */\n"
+" return TRUE;\n"
+" }\n"
+"\n"
+" /* @func may be %NULL if no callback was specified.\n"
+" * If so, drop the message. */\n"
+" if (func == NULL)\n"
+" {\n"
+" if (message_queue_source->destroy_message != NULL)\n"
+" {\n"
+" message_queue_source->destroy_message (message);\n"
+" }\n"
+"\n"
+" /* Keep the source around to consume the next message. */\n"
+" return TRUE;\n"
+" }\n"
+"\n"
+" return func (message, user_data);\n"
+"}\n"
+"\n"
+"static void\n"
+"message_queue_source_finalize (GSource *source)\n"
+"{\n"
+" MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n"
+"\n"
+" g_async_queue_unref (message_queue_source->queue);\n"
+"}\n"
+"\n"
+"static gboolean\n"
+"message_queue_source_closure_callback (gpointer message,\n"
+" gpointer user_data)\n"
+"{\n"
+" GClosure *closure = user_data;\n"
+" GValue param_value = G_VALUE_INIT;\n"
+" GValue result_value = G_VALUE_INIT;\n"
+" gboolean retval;\n"
+"\n"
+" /* The invoked function is responsible for freeing @message. */\n"
+" g_value_init (&result_value, G_TYPE_BOOLEAN);\n"
+" g_value_init (&param_value, G_TYPE_POINTER);\n"
+" g_value_set_pointer (&param_value, message);\n"
+"\n"
+" g_closure_invoke (closure, &result_value, 1, &param_value, NULL);\n"
+" retval = g_value_get_boolean (&result_value);\n"
+"\n"
+" g_value_unset (&param_value);\n"
+" g_value_unset (&result_value);\n"
+"\n"
+" return retval;\n"
+"}\n"
+"\n"
+"static GSourceFuncs message_queue_source_funcs =\n"
+" {\n"
+" message_queue_source_prepare,\n"
+" NULL, /* check */\n"
+" message_queue_source_dispatch,\n"
+" message_queue_source_finalize,\n"
+" (GSourceFunc) message_queue_source_closure_callback,\n"
+" NULL,\n"
+" };\n"
+"\n"
+"/**\n"
+" * message_queue_source_new:\n"
+" * @queue: the queue to check\n"
+" * @destroy_message: (nullable): function to free a message, or %NULL\n"
+" * @cancellable: (nullable): a #GCancellable, or %NULL\n"
+" *\n"
+" * Create a new #MessageQueueSource, a type of #GSource which dispatches for\n"
+" * each message queued to it.\n"
+" *\n"
+" * If a callback function of type #MessageQueueSourceFunc is connected to the\n"
+" * returned #GSource using g_source_set_callback(), it will be invoked for each\n"
+" * message, with the message passed as its first argument. It is responsible for\n"
+" * freeing the message. If no callback is set, messages are automatically freed\n"
+" * as they are queued.\n"
+" *\n"
+" * Returns: (transfer full): a new #MessageQueueSource\n"
+" */\n"
+"GSource *\n"
+"message_queue_source_new (GAsyncQueue *queue,\n"
+" GDestroyNotify destroy_message,\n"
+" GCancellable *cancellable)\n"
+"{\n"
+" GSource *source; /* alias of @message_queue_source */\n"
+" MessageQueueSource *message_queue_source; /* alias of @source */\n"
+"\n"
+" g_return_val_if_fail (queue != NULL, NULL);\n"
+" g_return_val_if_fail (cancellable == NULL ||\n"
+" G_IS_CANCELLABLE (cancellable), NULL);\n"
+"\n"
+" source = g_source_new (&message_queue_source_funcs,\n"
+" sizeof (MessageQueueSource));\n"
+" message_queue_source = (MessageQueueSource *) source;\n"
+"\n"
+" /* The caller can overwrite this name with something more useful later. */\n"
+" g_source_set_name (source, \"MessageQueueSource\");\n"
+"\n"
+" message_queue_source->queue = g_async_queue_ref (queue);\n"
+" message_queue_source->destroy_message = destroy_message;\n"
+"\n"
+" /* Add a cancellable source. */\n"
+" if (cancellable != NULL)\n"
+" {\n"
+" GSource *cancellable_source;\n"
+"\n"
+" cancellable_source = g_cancellable_source_new (cancellable);\n"
+" g_source_set_dummy_callback (cancellable_source);\n"
+" g_source_add_child_source (source, cancellable_source);\n"
+" g_source_unref (cancellable_source);\n"
+" }\n"
+"\n"
+" return source;\n"
+"}\n"
+
+#. (itstool) path: section/title
+#: C/custom-gsource.c.page:282
+msgid "Further Examples"
+msgstr "Ejemplos adicionales"
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:284
+msgid ""
+"Sources can be more complex than the example given above. In <link href="
+"\"http://nice.freedesktop.org/\">libnice</link>, a custom <code>GSource</"
+"code> is needed to poll a set of sockets which changes dynamically. The "
+"implementation is given as <code>ComponentSource</code> in <link href="
+"\"http://cgit.freedesktop.org/libnice/libnice/tree/agent/component."
+"c#n941\">component.c</link> and demonstrates a more complex use of the "
+"prepare function."
+msgstr ""
+"Las fuentes pueden ser más complejas que las dadas en el ejemplo anterior. "
+"En <link href=\"http://nice.freedesktop.org/\">libnice</link>, se necesita "
+"una <code>GSource</code> personalizada para sondear un conjunto de sockets "
+"que cambia dinámicamente. La implementación se da como "
+"<code>ComponentSource</code> en <link href=\"http://cgit.freedesktop.org/"
+"libnice/libnice/tree/agent/component.c#n941\">component.c</link> y muestra "
+"un uso más complejo de la función de preparación."
+
+#. (itstool) path: section/p
+#: C/custom-gsource.c.page:293
+msgid ""
+"Another example is a custom source to interface GnuTLS with GLib in its "
+"<code>GTlsConnection</code> implementation. <link href=\"https://git.gnome."
+"org/browse/glib-networking/tree/tls/gnutls/gtlsconnection-gnutls."
+"c#n871\"><code>GTlsConnectionGnutlsSource</code></link> synchronizes the "
+"main thread and a TLS worker thread which performs the blocking TLS "
+"operations."
+msgstr ""
+"Otro ejemplo es una fuente personalizada para que sirva de interfaz de "
+"GnuTLS con GLib en su implementación de <code>GTlsConnection</code>. <link "
+"href=\"https://git.gnome.org/browse/glib-networking/tree/tls/gnutls/"
+"gtlsconnection-gnutls.c#n871\"><code>GTlsConnectionGnutlsSource</code></"
+"link> sincroniza el hilo principal y un hilo trabajador TLS que realiza las "
+"operaciones de bloqueo de TLS."
+
+#~ msgid "autohen.sh"
+#~ msgstr "autohen.sh"
+
+#~ msgctxt "text"
+#~ msgid "Tutorial for beginners (C)"
+#~ msgstr "Tutorial para principiantes (C)"
+
+#~ msgid "The C programming language"
+#~ msgstr "El lenguaje de programación C:"
+
+#~ msgid "Tutorials, code samples and plaform demos in C"
+#~ msgstr ""
+#~ "Tutoriales, ejemplos de código y demostraciones de la plataforma en C"
+
+#~| msgid "create a small \"Hello, World\" application using GTK+"
+#~ msgid "Writing a Hello World application in C with GTK+ 3."
+#~ msgstr "Escribir una pequeña aplicación «Hola, mundo» en C con GTK+"
+
+#~ msgid "#include <gtk/gtk.h>\n"
+#~ msgstr "#include <gtk/gtk.h>\n"
+
+#~ msgid ""
+#~ "static void\n"
+#~ "activate (GtkApplication* app,\n"
+#~ " gpointer user_data)\n"
+#~ "{\n"
+#~ " GtkWidget *window;\n"
+#~ "\n"
+#~ " window = gtk_application_window_new (app);\n"
+#~ " gtk_window_set_title (GTK_WINDOW (window), \"Hello World\");\n"
+#~ " gtk_window_set_default_size (GTK_WINDOW (window), 200, 100);\n"
+#~ " gtk_widget_show_all (window);\n"
+#~ "}\n"
+#~ msgstr ""
+#~ "static void\n"
+#~ "activate (GtkApplication* app,\n"
+#~ " gpointer user_data)\n"
+#~ "{\n"
+#~ " GtkWidget *window;\n"
+#~ "\n"
+#~ " window = gtk_application_window_new (app);\n"
+#~ " gtk_window_set_title (GTK_WINDOW (window), \"Hello World\");\n"
+#~ " gtk_window_set_default_size (GTK_WINDOW (window), 200, 100);\n"
+#~ " gtk_widget_show_all (window);\n"
+#~ "}\n"
+
+#~ msgid ""
+#~ "We can start building our first window. We do this by creating a variable "
+#~ "called <var>window</var> and assigning it a gtk_application_window_new"
+#~ msgstr ""
+#~ "Se puede empezar a construir la primera ventana. Esto se hace creando una "
+#~ "variable llamada <var>window</var> y asignándole una "
+#~ "gtk_application_window_new"
+
+#~ msgid ""
+#~ "The window title can be any string you want it to be. To be on the safe "
+#~ "side, it's best to stick to UTF-8 encoding."
+#~ msgstr ""
+#~ "El título de la ventana puede ser la cadena que quiera pero, para estar "
+#~ "seguro, es conveniente que tenga una codificación UTF-8."
+
+#~ msgid ""
+#~ "GtkWidget *label;\n"
+#~ "\n"
+#~ " label = gtk_label_new (\"Hello World!\");\n"
+#~ " gtk_container_add (GTK_CONTAINER (window), label);\n"
+#~ msgstr ""
+#~ "GtkWidget *label;\n"
+#~ "\n"
+#~ " label = gtk_label_new (\"Hello World!\");\n"
+#~ " gtk_container_add (GTK_CONTAINER (window), label);\n"
+
+#~ msgid ""
+#~ "int\n"
+#~ "main (int argc,\n"
+#~ " char **argv)\n"
+#~ "{\n"
+#~ " GtkApplication *app;\n"
+#~ " int status;\n"
+#~ "\n"
+#~ " app = gtk_application_new (NULL, G_APPLICATION_FLAGS_NONE);\n"
+#~ " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+#~ " status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+#~ " g_object_unref (app);\n"
+#~ "\n"
+#~ " return status;\n"
+#~ "}"
+#~ msgstr ""
+#~ "int\n"
+#~ "main (int argc,\n"
+#~ " char **argv)\n"
+#~ "{\n"
+#~ " GtkApplication *app;\n"
+#~ " int status;\n"
+#~ "\n"
+#~ " app = gtk_application_new (NULL, G_APPLICATION_FLAGS_NONE);\n"
+#~ " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n"
+#~ " status = g_application_run (G_APPLICATION (app), argc, argv);\n"
+#~ " g_object_unref (app);\n"
+#~ "\n"
+#~ " return status;\n"
+#~ "}"
+
+#~ msgid ""
+#~ "GtkApplicationWindow can only hold one widget at a time. To construct "
+#~ "more elaborate programs you need to create a holder widget like GtkGrid "
+#~ "inside the window, and then add all the other widgets to it."
+#~ msgstr ""
+#~ "«GtkApplicationWindow» sólo puede contener un widget a la vez. Para "
+#~ "construir programas más elaborados necesita crear un widget contenedor "
+#~ "como «GtkGrid» dentro de la ventana, y después añadirle los otros."
+
+#~ msgid "hello-world.c"
+#~ msgstr "hello-world.c"
+
+#~ msgid ""
+#~ "To run this application, first save it as hello-world.c. Then open "
+#~ "Terminal, go to the folder where your application is stored."
+#~ msgstr ""
+#~ "Para ejecutar esta aplicación, primero guárdela como «hello-world.c». "
+#~ "Luego, vaya a la carpeta donde está la aplicación."
+
+#~ msgid ""
+#~ "gcc <var>hello-world</var>.c `pkg-config --cflags --libs gtk+-3.0` -o "
+#~ "<var>hello-world</var>"
+#~ msgstr ""
+#~ "gcc <var>hello-world</var>.c `pkg-config --cflags --libs gtk+-3.0` -o "
+#~ "<var>hello-world</var>"
+
+#~ msgid ""
+#~ "# The actual runnable program is set to the SCRIPTS primitive.\n"
+#~ "# # Prefix bin_ tells where to copy this\n"
+#~ "bin_PROGRAMS = hello-world\n"
+#~ "hello_world_CFLAGS = $(gtk_CFLAGS)\n"
+#~ "hello_world_LDADD = $(gtk_LIBS)\n"
+#~ "hello_world_SOURCES = hello-world.c\n"
+#~ "\n"
+#~ "desktopdir = $(datadir)/applications\n"
+#~ "desktop_DATA = \\\n"
+#~ "\thello-world.desktop\n"
+#~ msgstr ""
+#~ "# The actual runnable program is set to the SCRIPTS primitive.\n"
+#~ "# # Prefix bin_ tells where to copy this\n"
+#~ "bin_PROGRAMS = hello-world\n"
+#~ "hello_world_CFLAGS = $(gtk_CFLAGS)\n"
+#~ "hello_world_LDADD = $(gtk_LIBS)\n"
+#~ "hello_world_SOURCES = hello-world.c\n"
+#~ "\n"
+#~ "desktopdir = $(datadir)/applications\n"
+#~ "desktop_DATA = \\\n"
+#~ "\thello-world.desktop\n"
+
+#~ msgid ""
+#~ "To build and install this program:\n"
+#~ "\n"
+#~ "./autogen.sh --prefix=/home/your_username/.local\n"
+#~ "make\n"
+#~ "make install\n"
+#~ "\n"
+#~ "-------------\n"
+#~ "Running the first line above creates the following files:\n"
+#~ "\n"
+#~ "aclocal.m4\n"
+#~ "autom4te.cache\n"
+#~ "config.log\n"
+#~ "config.status\n"
+#~ "configure\n"
+#~ "depcomp\n"
+#~ "hello-world\n"
+#~ "hello-world.desktop\n"
+#~ "hello_world-hello-world.o\n"
+#~ "install-sh\n"
+#~ "missing\n"
+#~ "Makefile.in\n"
+#~ "Makefile\n"
+#~ "\n"
+#~ "Running \"make\" links all the appropriate libraries.\n"
+#~ "\n"
+#~ "Running \"make install\", installs the application in /home/"
+#~ "your_username/.local/bin\n"
+#~ "and installs the hello-world.desktop file in /home/your_username/.local/"
+#~ "share/applications\n"
+#~ "\n"
+#~ "You can now run the application by typing \"Hello World\" in the "
+#~ "Overview.\n"
+#~ "\n"
+#~ "----------------\n"
+#~ "To uninstall, type:\n"
+#~ "\n"
+#~ "make uninstall\n"
+#~ "\n"
+#~ "----------------\n"
+#~ "To create a tarball type:\n"
+#~ "\n"
+#~ "make distcheck\n"
+#~ "\n"
+#~ "This will create hello-world-1.0.tar.xz\n"
+#~ msgstr ""
+#~ "Para construir y ejecutar este programa:\n"
+#~ "\n"
+#~ "./autogen.sh --prefix=/home/usuario/.local\n"
+#~ "make\n"
+#~ "make install\n"
+#~ "\n"
+#~ "-------------\n"
+#~ "Al ejecutar la primera línea se crean los siguientes archivos:\n"
+#~ "\n"
+#~ "aclocal.m4\n"
+#~ "autom4te.cache\n"
+#~ "config.log\n"
+#~ "config.status\n"
+#~ "configure\n"
+#~ "depcomp\n"
+#~ "hello-world\n"
+#~ "hello-world.desktop\n"
+#~ "hello_world-hello-world.o\n"
+#~ "install-sh\n"
+#~ "missing\n"
+#~ "Makefile.in\n"
+#~ "Makefile\n"
+#~ "\n"
+#~ "Al ejecutar «make» se enlazan todas las bibliotecas necesarias.\n"
+#~ "\n"
+#~ "Al ejecutar «make install», la aplicación se instala en /home/usuario/."
+#~ "local/bin\n"
+#~ "y se crear un archivo hello-world.desktop en /home/usuario/.local/share/"
+#~ "applications\n"
+#~ "\n"
+#~ "Ahora puede ejecutar la aplicación escribiendo «Hello World» en la vista "
+#~ "general.\n"
+#~ "\n"
+#~ "----------------\n"
+#~ "Para desinstalarla, escriba:\n"
+#~ "\n"
+#~ "make uninstall\n"
+#~ "\n"
+#~ "----------------\n"
+#~ "Para crear un archivador tar escriba:\n"
+#~ "\n"
+#~ "make distcheck\n"
+#~ "\n"
+#~ "Esto creará el archivo hello-world-1.0.tar.xz\n"
+
+#~ msgid "You can also use the Vala compiler to compile these samples:"
+#~ msgstr ""
+#~ "También puede usar el compilador de Vala para compilar estos ejemplos:"
+
+#~ msgid "valac --pkg gtk+-3.0 <var>filename</var>.c"
+#~ msgstr "valac --pkg gtk+-3.0 <var>nombre_archivo</var>.c"
+
+#~ msgid "To run:"
+#~ msgstr "Para ejecutarlos:"
+
+#~ msgid "Creative Commons Share Alike 3.0"
+#~ msgstr "Creative Commons Compartir Igual 3.0"
+
+#~ msgid "Help make <app>GNOME Developer Tutorials</app> better"
+#~ msgstr ""
+#~ "Ayudar a mejorar los <app>Tutoriales del desarrollador de GNOME</app>"
+
+#~ msgid "Report a bug or suggest an improvement"
+#~ msgstr "Informar de un error o proponer una mejora"
+
+#~ msgid ""
+#~ "<app>GNOME Developer Tutorials</app> are maintained by a volunteer "
+#~ "community. You are welcome to participate. If you notice a problem you "
+#~ "can file a <em>bug report</em>. To file a bug, go to <link href=\"https://"
+#~ "bugzilla.gnome.org/\"/>."
+#~ msgstr ""
+#~ "Los <app>Tutoriales del desarrollador de GNOME</app> los mantiene la "
+#~ "comunidad de manera voluntaria. Si quiere participar, es bienvenido. Si "
+#~ "encuentra un error, puede rellenar un <em>informe de error</em>. Para "
+#~ "informar de un error, vaya a <link href=\"https://bugzilla.gnome.org/\"/>."
+
+#~ msgid ""
+#~ "This is a bug tracking system where users and developers can file details "
+#~ "about bugs, crashes and request enhancements."
+#~ msgstr ""
+#~ "Este es el sistema de seguimiento de errores en el que los usuarios y los "
+#~ "desarrolladores pueden archivar detalles sobre los errores, fallos y "
+#~ "solicitudes de mejoras."
+
+#~ msgid ""
+#~ "To participate you need an account which will give you the ability to "
+#~ "gain access, file bugs, and make comments. Also, you need to register so "
+#~ "you can receive updates by e-mail about the status of your bug. If you "
+#~ "don't already have an account, just click on the <gui>New Account</gui> "
+#~ "link to create one."
+#~ msgstr ""
+#~ "Para participar necesita una cuenta, que le permitirá obtener acceso, "
+#~ "informar de errores y hacer comentarios. También debe registrarte para "
+#~ "poder recibir actualizaciones por correo-e sobre el estado de su informe "
+#~ "de error. Si todavía no tiene una cuenta, simplemente pulse en el enlace "
+#~ "<gui>New Account</gui> para crear una."
+
+#~ msgid ""
+#~ "Once you have an account, log in, click on <guiseq><gui>File a Bug</"
+#~ "gui><gui>All</gui><gui>gnome-devel-docs</gui></guiseq>. Before reporting "
+#~ "a bug, please read the <link href=\"https://bugzilla.gnome.org/page.cgi?"
+#~ "id=bug-writing.html\">bug writing guidelines</link>, and please <link "
+#~ "href=\"https://bugzilla.gnome.org/browse.cgi?product=gnome-games"
+#~ "\">browse</link> for the bug to see if it already exists."
+#~ msgstr ""
+#~ "Una vez que tenga su cuenta, inicie sesión y pulse en "
+#~ "<guiseq><gui>Informar de un error</gui><gui>Todas</gui><gui>gnome-devel-"
+#~ "docs</gui></guiseq>. Antes de informar de un error, lea las <link href="
+#~ "\"https://bugzilla.gnome.org/page.cgi?id=bug-writing.html\">guías para "
+#~ "informar de un error</link> y <link href=\"https://bugzilla.gnome.org/"
+#~ "browse.cgi?product=evince\">busque</link> el error para ver si ya existe."
+
+#~ msgid ""
+#~ "To file your bug, choose the component <gui>platform-demos</gui> in the "
+#~ "<gui>Component</gui> menu."
+#~ msgstr ""
+#~ "Para informar de un error, elija el componente <gui>platform-demos</gui> "
+#~ "en el menú <gui>Component</gui>."
+
+#~ msgid ""
+#~ "If you are requesting a new feature, choose <gui>enhancement</gui> in the "
+#~ "<gui>Severity</gui> menu. Fill in the Summary and Description sections "
+#~ "and click <gui>Commit</gui>."
+#~ msgstr ""
+#~ "Si quiere solicitar una característica nueva, elija <gui>enhancement</"
+#~ "gui> en el menú <gui>Severity</gui>. Rellene las secciones «Summary» y "
+#~ "«Description» y pulse <gui>Commit</gui>."
+
+#~ msgid ""
+#~ "Your report will be given an ID number, and its status will be updated as "
+#~ "it is being dealt with. Thanks for helping make <app>GNOME Developer "
+#~ "Tutorials</app> better!"
+#~ msgstr ""
+#~ "Se le asignará un número de ID a su informe y su estado se actualizará a "
+#~ "medida que se trate. Gracias por ayudar a mejorar los <app>Tutoriales del "
+#~ "desarrollador de GNOME</app>."
+
+#~ msgid "Help develop"
+#~ msgstr "Ayudar al desarrollo"
+
+#~ msgid ""
+#~ "The <app>GNOME Developer Tutorials</app> are developed and maintained by "
+#~ "a volunteer community. You are welcome to participate."
+#~ msgstr ""
+#~ "Los <app>Tutoriales del desarrollador de GNOME</app> los desarrolla y los "
+#~ "mantiene una comunidad de voluntarios. Si quiere participar es bienvenido."
+
+#~ msgid ""
+#~ "If you would like to <link href=\"https://live.gnome.org/"
+#~ "DocumentationProject/Tasks/DeveloperDocs\">help develop <app>GNOME "
+#~ "Developer Tutorials</app></link>, you can get in touch with the "
+#~ "developers using <link href=\"https://cbe005.chat.mibbit.com/?url=irc%3A"
+#~ "%2F%2Firc.gnome.org%2Fdocs\">irc</link>, or via our <link href=\"http://"
+#~ "mail.gnome.org/mailman/listinfo/gnome-doc-devel-list\">mailing list</"
+#~ "link>."
+#~ msgstr ""
+#~ "Si quiere <link href=\"https://live.gnome.org/DocumentationProject/Tasks/"
+#~ "DeveloperDocs\">contribuir al desarrollo de los <app>Tutoriales del "
+#~ "desarrollador de GNOME</app></link>, puede ponerse en contacto con los "
+#~ "desarrolladores usando <link href=\"https://cbe005.chat.mibbit.com/?"
+#~ "url=irc%3A%2F%2Firc.gnome.org%2Fdocs\">irc</link>, o mediante la <link "
+#~ "href=\"http://mail.gnome.org/mailman/listinfo/gnome-doc-devel-list"
+#~ "\">lista decorreo</link>."
+
+#~ msgctxt "_"
+#~ msgid ""
+#~ "external ref='media/ubuntu.png' md5='40845e4a40b335b1958da1403f01c13f'"
+#~ msgstr ""
+#~ "external ref='media/ubuntu.png' md5='40845e4a40b335b1958da1403f01c13f'"
+
+#~ msgctxt "_"
+#~ msgid ""
+#~ "external ref='media/fedora.png' md5='19add55f4349fd9e90f3a50b344ba626'"
+#~ msgstr ""
+#~ "external ref='media/fedora.png' md5='19add55f4349fd9e90f3a50b344ba626'"
+
+#~ msgctxt "_"
+#~ msgid ""
+#~ "external ref='media/opensuse.png' md5='a852a94199328e2f978c7f6a55bf8b54'"
+#~ msgstr ""
+#~ "external ref='media/opensuse.png' md5='a852a94199328e2f978c7f6a55bf8b54'"
+
+#~ msgctxt "link"
+#~ msgid "Install GNOME development tools"
+#~ msgstr "Instalar las herramientas de desarrollo de GNOME"
+
+#~ msgid "Getting ready for GNOME development"
+#~ msgstr "Prepárese para desarrollar en GNOME"
+
+#~ msgid "Install the required tools"
+#~ msgstr "Instalar las herramientas necesarias"
+
+#~ msgid ""
+#~ "Before you can start coding you will have to install the required tools "
+#~ "for GNOME development on your computer. This shouldn't take you more than "
+#~ "ten minutes."
+#~ msgstr ""
+#~ "Antes de empezar a programar, deberá instalar las herramientas de "
+#~ "desarrollo de GNOME requeridas en su equipo. Esto no debería llevarle más "
+#~ "de 10 minutos."
+
+#~ msgid "Manual installation"
+#~ msgstr "Instalación manual"
+
+#~ msgid ""
+#~ "If you prefer manual installation you can find the instructions for the "
+#~ "various distributions in the <link href=\"https://wiki.gnome.org/Apps/"
+#~ "DeveloperTools/Installation\">GNOME wiki</link>. Click on the image to go "
+#~ "directly to the installation page for your distribution:"
+#~ msgstr ""
+#~ "Si prefiere la instalación manual, puede encontrar instrucciones para las "
+#~ "diversas distribuciones en el <link href=\"https://wiki.gnome.org/Apps/"
+#~ "DeveloperTools/Installation\">wiki de GNOME</link>. Pulse sobre la imagen "
+#~ "para ir directamente a la página de instalación de su distribución."
+
+#~ msgid ""
+#~ "<link href=\"https://wiki.gnome.org/Apps/DeveloperTools/Installation/"
+#~ "Ubuntu\"> <media type=\"image\" mime=\"image/png\" src=\"media/ubuntu.png"
+#~ "\">Ubuntu</media> </link>"
+#~ msgstr ""
+#~ "<link href=\"https://wiki.gnome.org/Apps/DeveloperTools/Installation/"
+#~ "Ubuntu\"> <media type=\"image\" mime=\"image/png\" src=\"media/ubuntu.png"
+#~ "\">Ubuntu</media> </link>"
+
+#~ msgid ""
+#~ "<link href=\"https://wiki.gnome.org/Apps/DeveloperTools/Installation/"
+#~ "Fedora\"> <media type=\"image\" mime=\"image/png\" src=\"media/fedora.png"
+#~ "\">Fedora</media> </link>"
+#~ msgstr ""
+#~ "<link href=\"https://wiki.gnome.org/Apps/DeveloperTools/Installation/"
+#~ "Fedora\"> <media type=\"image\" mime=\"image/png\" src=\"media/fedora.png"
+#~ "\">Fedora</media> </link>"
+
+#~ msgid ""
+#~ "<link href=\"https://wiki.gnome.org/Apps/DeveloperTools/Installation/"
+#~ "OpenSuSE\"> <media type=\"image\" mime=\"image/png\" src=\"media/opensuse."
+#~ "png\">OpenSuSE</media> </link>"
+#~ msgstr ""
+#~ "<link href=\"https://wiki.gnome.org/Apps/DeveloperTools/Installation/"
+#~ "OpenSuSE\"> <media type=\"image\" mime=\"image/png\" src=\"media/opensuse."
+#~ "png\">OpenSuSE</media> </link>"
+
+#~ msgid "Required versions"
+#~ msgstr "Versiones necesarias"
+
+#~ msgid ""
+#~ "The guides assume that you have at least the following versions of the "
+#~ "tools installed:"
+#~ msgstr ""
+#~ "Las guías asumen que tiene instaladas, al menos, las siguientes versiones "
+#~ "de las herramientas."
+
+#~ msgid "Anjuta - 3.0"
+#~ msgstr "Anjuta - 3.0"
+
+#~ msgid "Devhelp - 3.0"
+#~ msgstr "Devhelp - 3.0"
+
+#~ msgid "Glade - 3.10"
+#~ msgstr "Glade - 3.10"
+
+#~ msgid ""
+#~ "Of course, any newer version will also work. Now, we wish you a lot of "
+#~ "fun with the <link xref=\"index\">Demos</link>."
+#~ msgstr ""
+#~ "Por supuesto, cualquier versión más moderna también funcionará. Ahora, le "
+#~ "deseamos que disfrute con las <link xref=\"index\">demostraciones</link>."
+
+#~ msgid "<_:title-1/> <_:p-2/> <_:list-3/> q"
+#~ msgstr "<_:title-1/> <_:p-2/> <_:list-3/> q"
+
+#~ msgid "How to set up your development environment"
+#~ msgstr "Cómo configurar el entorno de desarrollo"
+
+#~ msgid "Tutorials, code samples, platform demos and more"
+#~ msgstr ""
+#~ "Tutoriales, ejemplos de código, demostraciones de la plataforma y más "
+#~ "cosas"
+
+#~ msgid "Get Involved"
+#~ msgstr "Involucrarse"
+
+#~ msgid "Michael Hill"
+#~ msgstr "Michael Hill"
+
+#~ msgid "Help translate"
+#~ msgstr "Ayudar a traducir"
+
+#~ msgid ""
+#~ "The <app>Tutorial Demos</app> are being translated by a world-wide "
+#~ "volunteer community. You are welcome to participate."
+#~ msgstr ""
+#~ "Los <app>Tutoriales de demostración</app> los traduce una comunidad de "
+#~ "voluntarios de todo el mundo. Si quiere participar, es bienvenido."
+
+#~ msgid ""
+#~ "There are <link href=\"http://l10n.gnome.org/module/gnome-devel-docs/"
+#~ "\">many languages</link> for which translations are still needed."
+#~ msgstr ""
+#~ "Hay <link href=\"http://l10n.gnome.org/module/gnome-devel-docs/\">muchos "
+#~ "idiomas</link> para los que se siguen necesitando traducciones."
+
+#~ msgid ""
+#~ "To start translating you will need to <link href=\"http://l10n.gnome.org"
+#~ "\">create an account</link> and join the <link href=\"http://l10n.gnome."
+#~ "org/teams/\">translation team</link> for your language. This will give "
+#~ "you the ability to upload new translations."
+#~ msgstr ""
+#~ "Para empezar a traducir necesitará <link href=\"http:l10n.gnome.org"
+#~ "\">crear una cuenta</link> y unirse al <link href=\"http://l10n.gnome.org/"
+#~ "teams/\">equipo de traducción</link> de su idioma. Esto le dará la "
+#~ "posibilidad de subir traducciones nuevas."
+
+#~ msgid ""
+#~ "You can chat with GNOME translators using <link href=\"https://cbe003."
+#~ "chat.mibbit.com/?url=irc%3A%2F%2Firc.gnome.org%2Fi18n\">irc</link>. "
+#~ "People on the channel are located worldwide, so you may not get an "
+#~ "immediate response as a result of timezone differences."
+#~ msgstr ""
+#~ "Puede chatear con los traductores de GNOME usando <link href=\"https://"
+#~ "cbe003.chat.mibbit.com/?url=irc%3A%2F%2Firc.gnome.org%2Fi18n\">irc</"
+#~ "link>. La gente de los canales se encuentra en cualquier parte del mundo, "
+#~ "por lo que puede que no obtenga una respuesta inmediata debido a las "
+#~ "diferencias horarias."
+
+#~ msgid ""
+#~ "Alternatively, you can contact the Internationalization Team using their "
+#~ "<link href=\"http://mail.gnome.org/mailman/listinfo/gnome-i18n\">mailing "
+#~ "list</link>."
+#~ msgstr ""
+#~ "Alternativamente, puede contactar con el equipo de internacionalización "
+#~ "usando su <link href=\"http://mail.gnome.org/mailman/listinfo/gnome-i18n"
+#~ "\">lista de correo</link>."
+
+#~ msgid ""
+#~ "This program will not compile with the quit action connected until <link "
+#~ "href=\"https://bugzilla.gnome.org/show_bug.cgi?id=674090\">Bug #674090</"
+#~ "link> is fixed. Therefore, the problematic line has been commented out."
+#~ msgstr ""
+#~ "Este programa no compilará con la opción de «salir» conectada hasta que "
+#~ "se resuelva el <link href=\"https://bugzilla.gnome.org/show_bug.cgi?"
+#~ "id=674090\">error nº 674090</link>. Por lo tanto, esa línea se ha "
+#~ "comentado"
+
+#~ msgid ""
+#~ "To set a stock icon as image, you can use <code>set_from_stock(stock_id, "
+#~ "size)</code> where <code>stock_id</code> is a stock icon such as "
+#~ "<code>Gtk.STOCK_ABOUT</code> (more can be found at <link href=\"http://"
+#~ "developer.gnome.org/gtk3/unstable/gtk3-Stock-Items\">Stock Items</link>, "
+#~ "with the caveat that they should be modified as above) and <code>size</"
+#~ "code> is a stock icon size to be chosen from <code>Gtk.IconSize.INVALID, "
+#~ "Gtk.IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk.IconSize."
+#~ "LARGE_TOOLBAR, Gtk.IconSize.BUTTON, Gtk.IconSize.DND, Gtk.IconSize."
+#~ "DIALOG</code>."
+#~ msgstr ""
+#~ "Para establecer un icono del almacén como imagen, puede usar "
+#~ "<code>set_from_stock(id_almacén, tamaño)</code> donde <code>id_almacén</"
+#~ "code> es un icono del almacén como <code>Gtk.STOCK_ABOUT</code> (puede "
+#~ "encontrar más en <link href=\"http://developer.gnome.org/gtk3/unstable/"
+#~ "gtk3-Stock-Items\">Elementos del almacén</link>, teniendo en cuenta que "
+#~ "deben modificarse como anteriormente) y un <code>tamaño</code> de icono "
+#~ "del almacén, que puede ser <code>Gtk.IconSize.INVALID, Gtk.IconSize.MENU, "
+#~ "Gtk.IconSize.SMALL_TOOLBAR, Gtk.IconSize.LARGE_TOOLBAR, Gtk.IconSize."
+#~ "BUTTON, Gtk.IconSize.DND, Gtk.IconSize.DIALOG</code>."
+
+#~ msgid ""
+#~ "You can also use <code>set_from_icon_name(icon_name, size)</code>, where "
+#~ "<code>icon_name</code> is a stock icon name such as <code>\"gtk-about\"</"
+#~ "code> (more can be found as above) and <code>size</code> is as above."
+#~ msgstr ""
+#~ "También puede usar <code>set_from_icon_name(nombre_icono, tamaño)</code> "
+#~ "donde <code>nombre_icono</code> es un nombre de icono del almacén como "
+#~ "<code>«gtk-about»</code> (puede encontrar más como se mencionó) y "
+#~ "<code>tamaño</code> es igual que con «set_from_stock»."
+
+#~ msgid "which is equivalent to using:"
+#~ msgstr "que es equivalente a usar:"
+
+#~ msgid "Automatic installation"
+#~ msgstr "Instalación automática"
+
+#~ msgid ""
+#~ "On an up-to-date distribution you should be able to simply install the "
+#~ "required packages by clicking on <link href=\"media/gnome-devtools.catalog"
+#~ "\">Install now</link>."
+#~ msgstr ""
+#~ "Un una distribución actualizada, debería ser capaz de instalar los "
+#~ "paquetes simplemente pulsando en <link href=\"media/gnome-devtools.catalog"
+#~ "\">Instalar ahora</link>."
+
+#~ msgctxt "_"
+#~ msgid "external ref='media/03_jssignal_02b.png' md5='__failed__'"
+#~ msgstr "external ref='media/03_jssignal_02b.png' md5='__failed__'"
+
+#~ msgctxt "_"
+#~ msgid ""
+#~ "external ref='media/menubutton.png' md5='1feb7b836a522c3007079d4420621d9d'"
+#~ msgstr ""
+#~ "external ref='media/menubutton.png' md5='1feb7b836a522c3007079d4420621d9d'"
+
+#~ msgid ""
+#~ "For an explanation of signals and callback functions, see <link xref="
+#~ "\"signals-callbacks.py\">this page</link>."
+#~ msgstr ""
+#~ "Para una explicación de señales y funciones de retorno de llamada, "
+#~ "consulte <link xref=\"signals-callbacks.py\">esta página</link>."
+
+#~ msgctxt "text"
+#~ msgid "Beginner's Tutorials (C)"
+#~ msgstr "Tutoriales para principiantes (C)"
+
+#~ msgid "0 Beginner's Tutorials"
+#~ msgstr "0. Tutoriales para principiantes"
+
+#~ msgid "0 Beginner's tutorials and samples"
+#~ msgstr "0. Tutoriales para principiantes y ejemplos"
+
+#~ msgctxt "text"
+#~ msgid "Beginner Tutorials (Vala)"
+#~ msgstr "Tutoriales para principiantes (Vala)"
+
+#~ msgid ""
+#~ "<code>button = Gtk.Button(label=\"Click me\")</code> could also be used "
+#~ "to create a button and set the text directly. For a general discussion of "
+#~ "this, see <link xref=\"properties.py\">here</link>."
+#~ msgstr ""
+#~ "<code>button = Gtk.Button(label=\"Click me\")</code> también podría "
+#~ "usarse para crear un botón y establecer el texto directamente. Para una "
+#~ "discusión general sobre esto, consulte <link xref=\"properties.py\">aquí</"
+#~ "link>."
+
+#~ msgid ""
+#~ "We could also create the CheckButton with <code>button = Gtk.CheckButton."
+#~ "new_with_label(\"Show Title\")</code>."
+#~ msgstr ""
+#~ "También se podría crear la casilla de verificación con <code>button = Gtk."
+#~ "CheckButton.new_with_label(\"Show Title\")</code>."
+
+#~ msgid ""
+#~ "For a discussion on signals and callback functions, see <link xref="
+#~ "\"signals-callbacks.py\">this page</link>."
+#~ msgstr ""
+#~ "Para ver una discusión sobre señales y funciones de retorno de llamada, "
+#~ "consulte <link xref=\"signals-callbacks.py\">esta página</link>."
+
+#~ msgid "2 Guitar Tuner"
+#~ msgstr "2. Afinador de guitarra"
+
+#~ msgid "1 Image Viewer"
+#~ msgstr "1. Visor de imágenes"
+
+#~ msgid ""
+#~ "<code>label = Gtk.Label(label=\"Hello GNOME!\")</code> could also be used "
+#~ "to create a label and set the text directly. For a general discussion of "
+#~ "this, see <link xref=\"properties.py\">here</link>."
+#~ msgstr ""
+#~ "<code>label = Gtk.Label(label=\"Hello GNOME!\")</code> también podría "
+#~ "usarse para crear una etiqueta y establecer el texto directamente. Para "
+#~ "más información general sobre esto, consulte <link xref=\"properties.py"
+#~ "\">aquí</link>."
+
+#~ msgid ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
+#~ "treeview.html\">The Python Gtk+ 3 Tutorial - Tree and List Widgets</link>"
+#~ msgstr ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
+#~ "treeview.html\">El tutorial de GTK+ 3 en Python: widgets de árbol y "
+#~ "lista</link>"
+
+#~ msgid ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
+#~ "cellrenderers.html\">The Python Gtk+ 3 Tutorial - CellRenderers</link>"
+#~ msgstr ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
+#~ "cellrenderers.html\">El tutorial de GTK+ 3 en Python: «CellRenderer»</"
+#~ "link>"
+
+#~ msgid ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
+#~ "combobox.html\">The Python Gtk+ 3 Tutorial - ComboBox</link>"
+#~ msgstr ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
+#~ "combobox.html\">El tutorial de GTK+ 3 en Python: «ComboBox»</link>"
+
+#~ msgid ""
+#~ "\n"
+#~ "int\n"
+#~ "main(int argc, char *argv[])\n"
+#~ "{\n"
+#~ " ClutterColor stage_color = { 16, 16, 16, 255 };\n"
+#~ " ClutterActor *stage = NULL;\n"
+#~ "\n"
+#~ " clutter_init(&argc, &argv);\n"
+#~ "\n"
+#~ " stage = clutter_stage_get_default();\n"
+#~ " clutter_actor_set_size(stage, STAGE_WIDTH, STAGE_HEIGHT);\n"
+#~ " clutter_stage_set_color(CLUTTER_STAGE (stage), &stage_color);\n"
+#~ "\n"
+#~ " load_image_path_names();\n"
+#~ "\n"
+#~ " guint row = 0;\n"
+#~ " guint col = 0;\n"
+#~ " for(row=0; row < ROW_COUNT; ++row)\n"
+#~ " {\n"
+#~ " for(col=0; col < COL_COUNT; ++col)\n"
+#~ " {\n"
+#~ " GSList *img_path_node = g_slist_nth(img_path_list, (row * "
+#~ "COL_COUNT) + col);\n"
+#~ " ClutterActor *actor = clutter_texture_new_from_file((gchar *)"
+#~ "(img_path_node->data), NULL);\n"
+#~ " initialize_actor(actor, row, col);\n"
+#~ " clutter_container_add_actor(CLUTTER_CONTAINER(stage), "
+#~ "actor);\n"
+#~ " actor_list = g_slist_prepend(actor_list, actor);\n"
+#~ " }\n"
+#~ " }\n"
+#~ "\n"
+#~ " /* Show the stage. */\n"
+#~ " clutter_actor_show(stage);\n"
+#~ "\n"
+#~ " /* Start the clutter main loop. */\n"
+#~ " clutter_main();\n"
+#~ "\n"
+#~ " return 0;\n"
+#~ "}"
+#~ msgstr ""
+#~ "\n"
+#~ "int\n"
+#~ "main(int argc, char *argv[])\n"
+#~ "{\n"
+#~ " ClutterColor stage_color = { 16, 16, 16, 255 };\n"
+#~ " ClutterActor *stage = NULL;\n"
+#~ "\n"
+#~ " clutter_init(&argc, &argv);\n"
+#~ "\n"
+#~ " stage = clutter_stage_get_default();\n"
+#~ " clutter_actor_set_size(stage, STAGE_WIDTH, STAGE_HEIGHT);\n"
+#~ " clutter_stage_set_color(CLUTTER_STAGE (stage), &stage_color);\n"
+#~ "\n"
+#~ " load_image_path_names();\n"
+#~ "\n"
+#~ " guint row = 0;\n"
+#~ " guint col = 0;\n"
+#~ " for(row=0; row < ROW_COUNT; ++row)\n"
+#~ " {\n"
+#~ " for(col=0; col < COL_COUNT; ++col)\n"
+#~ " {\n"
+#~ " GSList *img_path_node = g_slist_nth(img_path_list, (row * "
+#~ "COL_COUNT) + col);\n"
+#~ " ClutterActor *actor = clutter_texture_new_from_file((gchar *)"
+#~ "(img_path_node->data), NULL);\n"
+#~ " initialize_actor(actor, row, col);\n"
+#~ " clutter_container_add_actor(CLUTTER_CONTAINER(stage), "
+#~ "actor);\n"
+#~ " actor_list = g_slist_prepend(actor_list, actor);\n"
+#~ " }\n"
+#~ " }\n"
+#~ "\n"
+#~ " /* Show the stage. */\n"
+#~ " clutter_actor_show(stage);\n"
+#~ "\n"
+#~ " /* Start the clutter main loop. */\n"
+#~ " clutter_main();\n"
+#~ "\n"
+#~ " return 0;\n"
+#~ "}"
+
+#~ msgid ""
+#~ "\n"
+#~ "for(row=0; row < ROW_COUNT; ++row)\n"
+#~ "{\n"
+#~ " for(col=0; col < COL_COUNT; ++col)\n"
+#~ " {\n"
+#~ " GSList *img_path_node = g_slist_nth(img_path_list, (row * "
+#~ "COL_COUNT) + col);\n"
+#~ " ClutterActor *actor = clutter_texture_new_from_file((gchar *)"
+#~ "(img_path_node->data), NULL);\n"
+#~ " initialize_actor(actor, row, col);\n"
+#~ " clutter_container_add_actor(CLUTTER_CONTAINER(stage), actor);\n"
+#~ " actor_list = g_slist_prepend(actor_list, actor);\n"
+#~ " }\n"
+#~ "}\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "for(row=0; row < ROW_COUNT; ++row)\n"
+#~ "{\n"
+#~ " for(col=0; col < COL_COUNT; ++col)\n"
+#~ " {\n"
+#~ " GSList *img_path_node = g_slist_nth(img_path_list, (row * "
+#~ "COL_COUNT) + col);\n"
+#~ " ClutterActor *actor = clutter_texture_new_from_file((gchar *)"
+#~ "(img_path_node->data), NULL);\n"
+#~ " initialize_actor(actor, row, col);\n"
+#~ " clutter_container_add_actor(CLUTTER_CONTAINER(stage), actor);\n"
+#~ " actor_list = g_slist_prepend(actor_list, actor);\n"
+#~ " }\n"
+#~ "}\n"
+#~ "\n"
+
+#~ msgid "Line 7: We'll look at this function in a later section."
+#~ msgstr "Línea 7: está función se verá en una sección posterior."
+
+#~ msgid ""
+#~ "Line 9: This adds our <code>ClutterActor</code> to a <code>GSList</code> "
+#~ "so that we can later iterate over the <code>ClutterActor</code>s."
+#~ msgstr ""
+#~ "Línea 9: esto añade el <code>ClutterActor</code> a una <code>GSList</"
+#~ "code> por lo que luego se podrá iterar sobre los <code>ClutterActor</"
+#~ "code>."
+
+#~ msgid ""
+#~ "Interesting to note is that we want to prepend the <code>ClutterActor</"
+#~ "code>s rather than append so that we avoid traversing the list upon each "
+#~ "insertion. You will often see <code>g_slist_prepend</code> followed by "
+#~ "<code>g_slist_reverse</code> because it faster than inserting many "
+#~ "objects at the end of the list."
+#~ msgstr ""
+#~ "Es interesante tener en cuenta que se prefiere anteponer los "
+#~ "<code>ClutterActor</code> en lugar de adjuntarlos, lo que evita atravesar "
+#~ "la lista en cada inserción. A menudo vera <code>g_slist_prepend</code> "
+#~ "seguido de <code>g_slist_reverse</code>, ya que es más rápido que "
+#~ "insertar varios objetos al final de la lista."
+
+#~ msgid ""
+#~ "\n"
+#~ "static gboolean\n"
+#~ "actor_clicked_cb(ClutterActor *actor,\n"
+#~ " ClutterEvent *event,\n"
+#~ " gpointer user_data)\n"
+#~ "{\n"
+#~ " /* Flag to keep track of our state. */\n"
+#~ " static gboolean is_focused = FALSE;\n"
+#~ "\n"
+#~ " g_slist_foreach(actor_list, foreach_set_focus_state, &"
+#~ "is_focused);\n"
+#~ "\n"
+#~ " if(is_focused)\n"
+#~ " {\n"
+#~ " clutter_actor_animate(actor, CLUTTER_LINEAR, "
+#~ "ANIMATION_DURATION_MS,\n"
+#~ " \"x\", origin.x,\n"
+#~ " \"y\", origin.y,\n"
+#~ " \"depth\", UNFOCUS_DEPTH,\n"
+#~ " \"width\", (float) THUMBNAIL_SIZE,\n"
+#~ " \"height\", (float) THUMBNAIL_SIZE,\n"
+#~ " NULL);\n"
+#~ " }\n"
+#~ " else\n"
+#~ " {\n"
+#~ " /*Save the current location before animating. */\n"
+#~ " clutter_actor_get_position(actor, &origin.x, &origin.y);\n"
+#~ " clutter_actor_set_reactive(actor, TRUE);\n"
+#~ " clutter_actor_animate(actor, CLUTTER_LINEAR, "
+#~ "ANIMATION_DURATION_MS,\n"
+#~ " \"x\", (STAGE_WIDTH - STAGE_HEIGHT) / "
+#~ "2.0,\n"
+#~ " \"y\", 0.0,\n"
+#~ " \"depth\", FOCUS_DEPTH,\n"
+#~ " \"width\", (float) STAGE_HEIGHT,\n"
+#~ " \"height\", (float) STAGE_HEIGHT,\n"
+#~ " NULL);\n"
+#~ " }\n"
+#~ "\n"
+#~ " /* Toggle our flag. */\n"
+#~ " is_focused = !is_focused;\n"
+#~ "\n"
+#~ " return TRUE;\n"
+#~ "}"
+#~ msgstr ""
+#~ "\n"
+#~ "static gboolean\n"
+#~ "actor_clicked_cb(ClutterActor *actor,\n"
+#~ " ClutterEvent *event,\n"
+#~ " gpointer user_data)\n"
+#~ "{\n"
+#~ " /* Flag to keep track of our state. */\n"
+#~ " static gboolean is_focused = FALSE;\n"
+#~ "\n"
+#~ " g_slist_foreach(actor_list, foreach_set_focus_state, &"
+#~ "is_focused);\n"
+#~ "\n"
+#~ " if(is_focused)\n"
+#~ " {\n"
+#~ " clutter_actor_animate(actor, CLUTTER_LINEAR, "
+#~ "ANIMATION_DURATION_MS,\n"
+#~ " \"x\", origin.x,\n"
+#~ " \"y\", origin.y,\n"
+#~ " \"depth\", UNFOCUS_DEPTH,\n"
+#~ " \"width\", (float) THUMBNAIL_SIZE,\n"
+#~ " \"height\", (float) THUMBNAIL_SIZE,\n"
+#~ " NULL);\n"
+#~ " }\n"
+#~ " else\n"
+#~ " {\n"
+#~ " /*Save the current location before animating. */\n"
+#~ " clutter_actor_get_position(actor, &origin.x, &origin.y);\n"
+#~ " clutter_actor_set_reactive(actor, TRUE);\n"
+#~ " clutter_actor_animate(actor, CLUTTER_LINEAR, "
+#~ "ANIMATION_DURATION_MS,\n"
+#~ " \"x\", (STAGE_WIDTH - STAGE_HEIGHT) / "
+#~ "2.0,\n"
+#~ " \"y\", 0.0,\n"
+#~ " \"depth\", FOCUS_DEPTH,\n"
+#~ " \"width\", (float) STAGE_HEIGHT,\n"
+#~ " \"height\", (float) STAGE_HEIGHT,\n"
+#~ " NULL);\n"
+#~ " }\n"
+#~ "\n"
+#~ " /* Toggle our flag. */\n"
+#~ " is_focused = !is_focused;\n"
+#~ "\n"
+#~ " return TRUE;\n"
+#~ "}"
+
+#~ msgid ""
+#~ "Line 9: This line of code runs a custom function, "
+#~ "<code>foreach_set_focus_state</code>, for each element in our "
+#~ "<code>actor_list</code>, passing it the address to the <code>is_focused</"
+#~ "code> flag. We'll see the definition of the "
+#~ "<code>foreach_set_focus_state</code> function in the next section."
+#~ msgstr ""
+#~ "Línea 9: esta línea de código ejecuta una función personalizada, "
+#~ "<code>foreach_set_focus_state</code>, para cada elemento de la "
+#~ "<code>actor_list</code>, pasando la dirección al indicador "
+#~ "<code>is_focused</code>. La definición de la función "
+#~ "<code>foreach_set_focus_state</code> se verá en la siguiente sección."
+
+#~ msgid "The address of the <code>ClutterActor</code> to animate"
+#~ msgstr "La dirección del <code>ClutterActor</code> que animar"
+
+#~ msgid ""
+#~ "The animation mode to use. Here we use <code>CLUTTER_LINEAR</code> so "
+#~ "that we have a constant speed for animation."
+#~ msgstr ""
+#~ "El modo de animación que usar. Aquí se ha usado <code>CLUTTER_LINEAR</"
+#~ "code> por lo que se tiene una velocidad constante en la animación."
+
+#~ msgid ""
+#~ "The duration of the animation in milliseconds. I've chosen 500 ms for "
+#~ "this example."
+#~ msgstr ""
+#~ "La duración de la animación, en milisegundos. Se ha escogido 500 ms para "
+#~ "este ejemplo."
+
+#~ msgid ""
+#~ "The remaining arguments are property/value pairs. Here we want to set the "
+#~ "<code>x</code> value to the starting <code>x</code> value this "
+#~ "<code>ClutterActor</code> was at before being brought into focus."
+#~ msgstr ""
+#~ "El resto de argumentos son parejas propiedad/valor. Aquí se quiere "
+#~ "establecer el valor <code>x</code> al valor <code>x</code> inicial en el "
+#~ "que estaba el <code>ClutterActor</code> antes de darle el foco."
+
+#~ msgid ""
+#~ "The last argument must always be <code>NULL</code> to indicate that there "
+#~ "are no more properties to be set."
+#~ msgstr ""
+#~ "El último argumento debe ser siempre <code>NULL</code> para indicar que "
+#~ "no hay más propiedades que configurar."
+
+#~ msgid ""
+#~ "The <code>depth</code> property needs a little more explaining. We need "
+#~ "to raise the focused image so that it doesn't slide behind other "
+#~ "<code>ClutterActor</code>s. In this section we are returning it to the "
+#~ "same depth as the others on the wall."
+#~ msgstr ""
+#~ "La propiedad <code>depth</code> necesita un poco más de explicación. Se "
+#~ "debe elevar la imagen que tiene el foco para que no se deslice por debajo "
+#~ "de otros <code>ClutterActor</code>. En esta sección se está devolviendo a "
+#~ "la misma profundidad que las otras en el mural."
+
+#~ msgid ""
+#~ "Depth also determines which <code>ClutterActor</code>s receive events. A "
+#~ "<code>ClutterActor</code> with a higher depth value receives the click "
+#~ "events and can choose whether the event gets sent to <code>ClutterActor</"
+#~ "code>s under it. We'll see how that works in a few steps."
+#~ msgstr ""
+#~ "La profundidad también determina qué <code>ClutterActor</code> recibe "
+#~ "eventos. Un <code>ClutterActor</code> con una profundidad alta recibe los "
+#~ "eventos de las pulsaciones y puede elegir si el evento se envía a un "
+#~ "<code>ClutterActor</code> que esté debajo de él. Se verá cómo funciona "
+#~ "esto en pocos pasos."
+
+#~ msgid ""
+#~ "Lines 27‒33: This is similar to the above block of code. Notice that we "
+#~ "are setting the the depth to raise it above the other images."
+#~ msgstr ""
+#~ "Líneas 27‒33: esto es similar al bloque de código anterior. Tenga en "
+#~ "cuenta que se está estableciendo la profundidad para elevarlo por encima "
+#~ "del resto de imágenes."
+
+#~ msgid ""
+#~ "The following is the convenience function passed to "
+#~ "<code>g_slist_foreach</code>."
+#~ msgstr ""
+#~ "Lo siguiente es la función de conveniencia pasada a "
+#~ "<code>g_slist_foreach</code>."
+
+#~ msgid ""
+#~ "\n"
+#~ "static void\n"
+#~ "foreach_set_focus_state(gpointer data, gpointer user_data)\n"
+#~ "{\n"
+#~ " ClutterActor *actor = CLUTTER_ACTOR(data);\n"
+#~ " gboolean is_reactive = *((gboolean*)user_data);\n"
+#~ "\n"
+#~ " clutter_actor_set_reactive(actor, is_reactive);\n"
+#~ "}"
+#~ msgstr ""
+#~ "\n"
+#~ "static void\n"
+#~ "foreach_set_focus_state(gpointer data, gpointer user_data)\n"
+#~ "{\n"
+#~ " ClutterActor *actor = CLUTTER_ACTOR(data);\n"
+#~ " gboolean is_reactive = *((gboolean*)user_data);\n"
+#~ "\n"
+#~ " clutter_actor_set_reactive(actor, is_reactive);\n"
+#~ "}"
+
+#~ msgid ""
+#~ "Lines 2‒5: The signature of this function requires two <code>gpointer</"
+#~ "code>s. The first is a pointer to the <code>ClutterActor</code> that our "
+#~ "<code>GSList</code> holds and the other is the <code>is_focused</code> "
+#~ "flag that we've passed in the previous section. We want to cast these and "
+#~ "store them for easy use."
+#~ msgstr ""
+#~ "Líneas 2‒5: la firma de esta función requiere dos <code>gpointer</code>. "
+#~ "El primero es un puntero al <code>ClutterActor</code> contenido en la "
+#~ "<code>GSList</code> y el otro es el indicador <code>is_focused</code> que "
+#~ "se ha pasado en la sección anterior. Se quiere convertir su tipo («cast») "
+#~ "y almacenarlos para que sea fácil usarlos."
+
+#~ msgid ""
+#~ "Line 7: Depending on which boolean value is passed in, the "
+#~ "<code>ClutterActor</code> will be set to respond to events or not."
+#~ msgstr ""
+#~ "Línea 7: dependiendo de qué valor booleano se pasa, el "
+#~ "<code>ClutterActor</code> se establecerá para que responda o no a eventos."
+
+#~ msgid ""
+#~ "For a general discussion of this, see <link xref=\"properties.py\">here</"
+#~ "link>."
+#~ msgstr ""
+#~ "Para una discusión general de esto, consulte <link xref=\"properties.py"
+#~ "\">aquí</link>."
+
+#~ msgid ""
+#~ "For an explanation of signals and callback functions, see <link xref="
+#~ "\"signals-callbacks.py\">this page</link>. An example is the <code>"
+#~ "\"value-changed\"</code> signal, emitted when the value of the scale "
+#~ "changes."
+#~ msgstr ""
+#~ "Para una explicación de señales y funciones de retorno de llamada, "
+#~ "consulte <link xref=\"signals-callbacks.py\">esta página</link>. Un "
+#~ "ejemplo es la señal <code>«value-changed»</code>, que se emite cuando el "
+#~ "cambia el valor de la escala."
+
+#~ msgid ""
+#~ "For an explanation of signals and callback functions, see <link xref="
+#~ "\"signals-callbacks.py\">this page</link>. An example is the <code>"
+#~ "\"value-changed\"</code> signal, emitted when the value of the spinbutton "
+#~ "changes."
+#~ msgstr ""
+#~ "Para una explicación de señales y de funciones de retorno de llamada, "
+#~ "consulte <link xref=\"signals-callbacks.py\">esta página</link>. Un "
+#~ "ejemplo es la señal <code>\"value-changed\"</code>, emitida cuando el "
+#~ "cambia el valor del botón incremental."
+
+#~ msgid "Definitions"
+#~ msgstr "Definiciones"
+
+#~ msgid ""
+#~ "Conceptionally, a <em>string</em> is a list of <em>characters</em> such "
+#~ "as 'A', 'B', 'C' or 'È'. Characters are abstract representations and "
+#~ "their meaning depends on the language and context they are used in. The "
+#~ "<em>Unicode standard</em> describes how characters are represented by "
+#~ "<em>code points</em>. For example the characters above are represented "
+#~ "with the code points U+0041, U+0042, U+0043, and U+00C9, respectively. "
+#~ "Basically, code points are numbers in the range from 0 to 0x10FFFF."
+#~ msgstr ""
+#~ "Conceptualmente, una <em>cadena</em> es una lista de <em>caracteres</em> "
+#~ "como «A», «B», «C», o «È». Los caracteres son representaciones abstractas "
+#~ "y su significado depende del lenguaje y el contexto en el que se usan. El "
+#~ "<em>estándar Unicode</em> describe cómo sus significados se representan "
+#~ "por <em>puntos de código</em>. Por ejemplo, los caracteres anteriores se "
+#~ "representan con los puntos de código U+0041, U+0042, U+0043, y U+00C9, "
+#~ "respectivamente. Básicamente, los puntos de código son números entre 0 y "
+#~ "0x10FFFF"
+
+#~ msgid ""
+#~ "The representation of a string as a list of code points is abstract. In "
+#~ "order to convert this abstract representation into a sequence of bytes "
+#~ "the Unicode string must be <em>encoded</em>. The simplest from of "
+#~ "encoding is ASCII and is performed as follows:"
+#~ msgstr ""
+#~ "La representación de una cadena como una lista de puntos de código es "
+#~ "abstracta. Para convertir esta representación abstracta en una secuencia "
+#~ "de bytes, la cadena de Unicode debe <em>codificarse</em>. La forma más "
+#~ "simple de codificación es ASCII y se ejecuta de la siguiente manera:"
+
+#~ msgid ""
+#~ "If the code point is strictly less than 128, each byte is the same as the "
+#~ "value of the code point."
+#~ msgstr ""
+#~ "Si el punto de código es estrictamente menos de 128, cada byte es igual "
+#~ "al valor del punto de código."
+
+#~ msgid ""
+#~ "If the code point is 128 or greater, the Unicode string can’t be "
+#~ "represented in this encoding. (Python raises a <sys>UnicodeEncodeError</"
+#~ "sys> exception in this case.)"
+#~ msgstr ""
+#~ "Si el punto de código es 128 o mayor, la cadena de Unicode no puede "
+#~ "representarse en esta codificación. (Python eleva una excepción "
+#~ "<sys>UnicodeEncodeError</sys> en este caso)."
+
+#~ msgid ""
+#~ "Although ASCII encoding is simple to apply it can only encode for 128 "
+#~ "different characters which is hardly enough. One of the most commonly "
+#~ "used encodings that addresses this problem is UTF-8 (it can handle any "
+#~ "Unicode code point). UTF stands for “Unicode Transformation Format”, and "
+#~ "the ‘8’ means that 8-bit numbers are used in the encoding."
+#~ msgstr ""
+#~ "A pesar de que la codificación ASCII es simple de aplicar, sólo puede "
+#~ "codificar 128 caracteres diferentes, lo que no es suficiente. Una de las "
+#~ "codificaciones usadas más comúnmente que resuelve este problema es UTF-8 "
+#~ "(puede manejar cualquier punto de código Unicode). UTF significa «Formato "
+#~ "de Transformación de Unicode», y el «8» significa que se usan números de "
+#~ "8 bits en esta codificación."
+
+#~ msgid ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
+#~ "builder.html\">The Python Gtk+ 3 Tutorial - Glade and Gtk.Builder</link>"
+#~ msgstr ""
+#~ "<link href=\"http://python-gtk-3-tutorial.readthedocs.org/en/latest/"
+#~ "builder.html\">El tutorial de GTK+3 en Python: Glade y Gtk.Builder</link>"
+
+#~ msgid ""
+#~ "The TreeView widget is designed around a <em>Model/View/Controller</em> "
+#~ "design. For more information, and for a list of useful methods for "
+#~ "TreeView and the interface TreeModel, see <link xref=\"model-view-"
+#~ "controller.py\">here</link>."
+#~ msgstr ""
+#~ "El widget TreeView está diseñado alrededor de un diseño <em>Modelo/Vista/"
+#~ "Controlador</em>. Para obtener más información, y una lista de métodos "
+#~ "útiles para TreeView y la interfaz TreeModel, consulte <link xref=\"model-"
+#~ "view-controller.py\">aquí</link>."
+
+#~ msgid ""
+#~ "For buttons and callbacks functions, see <link xref=\"signals-callbacks.py"
+#~ "\">here</link>"
+#~ msgstr ""
+#~ "Para botones y funciones de retorno de llamada, consulte <link xref="
+#~ "\"signals-callbacks.py\">aquí</link>."
+
+#~ msgctxt "text"
+#~ msgid "Beginner's Tutorial (Python)"
+#~ msgstr "Tutorial para principiantes (Python)"
+
+#~ msgid "0 Beginner's Tutorial"
+#~ msgstr "0. Tutorial para principiantes"
+
+#~ msgid "Basic buttons"
+#~ msgstr "Botones básicos"
+
+#~ msgid "Entry widgets (with a detour on basic scrolling)"
+#~ msgstr "Widgets de entrada (con algo de desplazamiento básico)"
+
+#~ msgid "Selectors (a recap)"
+#~ msgstr "Selectores (un resumen)"
+
+#~ msgid "More containers"
+#~ msgstr "Más contenedores"
+
+#~ msgid "More scrolling"
+#~ msgstr "Más desplazamiento"
+
+#~ msgid "\"scrollbar.py\""
+#~ msgstr "«scrollbar.py»"
+
+#~ msgid "\"widget.py\""
+#~ msgstr "«widget.py»"
+
+#~ msgid "Some theory to help you"
+#~ msgstr "Algo de teoría para ayudarle"
+
+#~ msgid ""
+#~ "<code>window = Gtk.Window(application=self, title=\"Welcome to GNOME\")</"
+#~ "code> sets the title as well, without the need for the line <code>window."
+#~ "set_title(\"Welcome to GNOME\")</code>. For a general discussion of this, "
+#~ "see <link xref=\"properties.py\">here</link>."
+#~ msgstr ""
+#~ "<code>window = Gtk.Window(application=self, title=\"Welcome to GNOME\")</"
+#~ "code> también establece el título, sin necesitar la línea <code>window."
+#~ "set_title(\"Welcome to GNOME\")</code>. Para obtener más información "
+#~ "sobre esto, consulte <link xref=\"properties.py\">aquí</link>."
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]