/usr/share/help/es/gnome-devel-demos/strings.py.page is in gnome-devel-docs 3.28.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | <?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:e="http://projectmallard.org/experimental/" type="guide" style="task" id="strings.py" xml:lang="es">
<info>
<title type="text">Cadenas (Python)</title>
<link type="guide" xref="beginner.py#theory"/>
<link type="next" xref="label.py"/>
<revision version="0.1" date="2012-06-16" status="draft"/>
<desc>Una explicación de cómo trabajar con cadenas en Python y GTK+.</desc>
<credit type="author copyright">
<name>Sebastian Pölsterl</name>
<email its:translate="no">sebp@k-d-w.org</email>
<years>2011</years>
</credit>
<credit type="editor">
<name>Marta Maria Casetti</name>
<email its:translate="no">mmcasetti@gmail.com</email>
<years>2012</years>
</credit>
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
<mal:name>Daniel Mustieles</mal:name>
<mal:email>daniel.mustieles@gmail.com</mal:email>
<mal:years>2011 - 2017</mal:years>
</mal:credit>
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
<mal:name>Nicolás Satragno</mal:name>
<mal:email>nsatragno@gmail.com</mal:email>
<mal:years>2012 - 2013</mal:years>
</mal:credit>
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
<mal:name>Jorge González</mal:name>
<mal:email>jorgegonz@svn.gnome.org</mal:email>
<mal:years>2011</mal:years>
</mal:credit>
</info>
<title>Cadenas</title>
<links type="section"/>
<note style="warning"><p>GNOME recomienda fuertemente el uso de Python 3 para escribir aplicaciones.</p></note>
<section id="python-2">
<title>Cadenas en Python 2</title>
<p>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.</p>
<code>
>>> unicode_string = u"Fu\u00dfb\u00e4lle"
>>> print unicode_string
Fußbälle
</code>
<p>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>):</p>
<code>
>>> type(unicode_string)
<type 'unicode'>
>>> unicode_string.encode("utf-8")
'Fu\xc3\x9fb\xc3\xa4lle'
>>> utf8_string = unicode_string.encode("utf-8")
>>> type(utf8_string)
<type 'str'>
>>> unicode_string == utf8_string.decode("utf-8")
True</code>
<p>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.</p>
</section>
<section id="python-3">
<title>Cadenas en Python 3</title>
<p>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>.</p>
<p>Además, ya no es posible mezclar cadenas de Unicode con cadenas codificadas, porque se producirá un <code>TypeError</code>:</p>
<code>
>>> text = "Fu\u00dfb\u00e4lle"
>>> data = b" sind rund"
>>> text + data
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't convert 'bytes' object to str implicitly
>>> text + data.decode("utf-8")
'Fußbälle sind rund'
>>> text.encode("utf-8") + data
b'Fu\xc3\x9fb\xc3\xa4lle sind rund'</code>
</section>
<section id="gtk">
<title>Unicode en GTK+</title>
<p>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:</p>
<code>
>>> from gi.repository import Gtk
>>> label = Gtk.Label()
>>> unicode_string = u"Fu\u00dfb\u00e4lle"
>>> label.set_text(unicode_string)
>>> txt = label.get_text()
>>> type(txt)
<type 'str'></code>
<p>Además:</p>
<code>
>>> txt == unicode_string</code>
<p>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).</p>
<p>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.</p>
<p>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>.</p>
<p>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>.</p>
</section>
<section id="references">
<title>Referencias</title>
<p><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></p>
</section>
</page>
|