Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TFM Guia Practica de Localizacion de App
TFM Guia Practica de Localizacion de App
1
Índice de figuras
Fig. 2. Fragmento de código con variables de una app en inglés y en español. ............. 22
Fig. 5. Captura de página web de la tienda Google Play para apps de Android. ........... 38
Fig. 12. Vista de archivo xml desde SDL Trados 2015. ................................................. 45
Fig. 18. Interfaz del emulador BlueStacks con indicación del icono Instalar apk. ......... 52
Índice de tablas
2
1. Introducción
La llegada de los teléfonos inteligentes (smartphones) a nuestras vidas ha
supuesto un cambio radical en nuestra forma de interactuar con el mundo. Aunque el
uso inicial y principal de los teléfonos era comunicarse con otras personas mediante
llamadas de voz, en la actualidad estos dispositivos proporcionan muchísimas más
funciones que facilitan y simplifican muchas de nuestras actividades cotidianas,
convirtiéndose en uno de los dispositivos más versátiles que existen. Todas estas
funciones se encuentran disponibles a través de aplicaciones móviles y la mayoría de
ellas funcionan con acceso a Internet. Con las aplicaciones de hoy en día podemos
utilizar nuestro dispositivo móvil para guardar contactos, anotar cosas, jugar a
videojuegos, conocer gente, buscar sitios en un mapa, leer libros, comprar y vender
artículos, navegar por Internet, hacer fotos, realizar pagos, etc.
Los primeros teléfonos inteligentes contaban con aplicaciones que brindaban las
funciones de correo electrónico, navegación web, reloj mundial, un teclado QWERTY
físico, modo avión, puerto infrarrojo, conexión a PC, etc. Más adelante se añadieron las
pantallas táctiles y sistemas operativos que permitían añadir aplicaciones desarrolladas
por terceros. En este sentido, el primero en lanzar un teléfono con sistema operativo
propio que permitiera añadir aplicaciones fue Apple con el iPhone y el sistema
operativo iOS en 2007.
3
se creó el modelo GILT (acrónimo de Globalización, Internacionalización, Localización
y Traducción), que busca la creación de unos estándares que permitan que el producto
sea lo más neutro posible para permitir y facilitar su adaptación a los diferentes
mercados y culturas (véase el apartado 2.1.2 para obtener más información sobre el
modelo GILT).
4
En la localización de software, el volumen de palabras será mucho mayor
que en la localización de aplicaciones móviles, pues las plataformas en
las que se ejecutan los programas de software permiten que quepa más
texto. Además, estos últimos cuentan con manuales o guías de uso, que
suelen ser bastante exhaustivos y tener un gran número de páginas,
mientras que los manuales no son habituales en el caso de las apps.
5
el World Wide Web Consortium que permite definir la gramática de lenguajes
específicos y se considera un estándar para compartir datos en la Web. Cada vez con
más frecuencia, los desarrolladores utilizan este lenguaje para desarrollar ciertas partes
de la estructura de la aplicación, además de ser el formato de los archivos que contienen
el texto traducible en los sistemas operativos Android, BlackBerry y Windows 10
Mobile.
Pensamos que este trabajo puede ser de interés, pues ofrece un acercamiento
gradual a las aplicaciones móviles, su estructura y su proceso de localización. De esta
forma, un traductor sin experiencia en este ámbito puede obtener una visión general y,
posteriormente, más específica de todo lo que conlleva este proceso, para aprenderlo y
practicarlo paso por paso. Por último, no hemos de olvidar que también podría incluirlo
entre sus servicios profesionales si lo desea, ampliando así su versatilidad.
Con este fin en mente, en este trabajo abordamos los diferentes sistemas
operativos para dispositivos móviles que existen, las características que tienen y los
desafíos y dificultades que entrañan a la hora de localizar aplicaciones compatibles con
ellos.
6
2. Metodología y objetivos
El objeto de estudio de este trabajo consiste en analizar el papel de los lenguajes
de programación en la localización de las aplicaciones para dispositivos móviles o apps,
un campo fundamental en el desarrollo tecnológico actual.
Todo lo anterior nos permite explicar paso a paso el proceso para localizar una
app determinada en el entorno de Android, sistema operativo elegido para este trabajo.
Así, el objetivo principal de este trabajo es elaborar un manual que pueda servir de guía
o tutorial para la localización de aplicaciones móviles en los sistemas operativos de uso
más extendido.
7
estrategias que se van proponiendo para facilitar y automatizar los procesos
de forma que se reduzcan los costes y el tiempo.
8
3. Estado de la cuestión
La localización de software y aplicaciones móviles es un tema que está muy
presente hoy en día en el sector de la Ingeniería Informática, así como en el sector de la
Traducción. Por ello, no ha sido difícil encontrar trabajos que traten diferentes aspectos
de este ámbito. No obstante, hasta el momento no existe ninguno en el que se hable
concretamente del papel de los lenguajes de programación en la localización de
aplicaciones móviles.
Por último, nos encontramos con la obra Localizing Apps: A Practical Guide for
Translators and Translation Students (Roturier, 2015), que es la que trata en mayor
profundidad la localización de apps, tanto desde el punto de vista del traductor como del
9
localizador. El autor habla sobre conceptos de software, lenguajes de programación,
codificación, archivos, expresiones regulares, problemas y soluciones de
internacionalización, retos ante la falta de internacionalización, el proceso de
localización (básica y avanzada) y el proceso de traducción. No obstante, no se centra
en la localización de aplicaciones móviles, sino que se enfoca en la localización de
software y decide ahondar en el lenguaje de programación Python, que apenas ejerce
influencia en la localización de apps para dispositivos móviles. Tampoco ofrece ningún
tipo de tutorial paso a paso ni se apoya en recursos visuales (imágenes o capturas de
pantalla) para facilitar la comprensión de algunos conceptos o procedimientos que
describe.
En este contexto, hemos de señalar que una aplicación móvil (app), tal y como la
conocemos hoy en día, se define como un pequeño programa desarrollado para su uso
en un dispositivo móvil, como un teléfono inteligente, una tableta o un reproductor
MP3, que se puede descargar de Internet (en muchos casos mediante tiendas en línea) e
10
instalarse en un dispositivo compatible. Una característica de las aplicaciones móviles
es que tienen que desarrollarse específicamente para un sistema operativo, ya que cada
uno tiene una estructura diferente y es compatible con unos lenguajes de programación
determinados. Así, la transferencia de una aplicación móvil de un sistema operativo a
otro supone el rediseño y desarrollo íntegro de la aplicación con los lenguajes de
programación de ese sistema operativo.
Existe una amplia variedad de sistemas operativos para dispositivos móviles,
entre los que destacan iOS de Apple, Android de Google, BlackBerry de RIM y
Windows 10 Mobile de Microsoft, que ha condenado a la obsolescencia a Windows
Phone y Symbian (de Nokia), aunque este último fue desbancado ya en 2012 con el
lanzamiento de Windows 8. Los sistemas operativos móviles más utilizados
actualmente (o con mejores previsiones de futuro) son iOS y Android, con más de dos
millones de aplicaciones disponibles en sus respectivas tiendas: Apple Store
(Wayerless, 2016) y Google Play (Statista, 2016).
11
A raíz de esto, muchos profesionales del sector de la traducción han encontrado
un nuevo nicho de mercado. Por ello, actualmente en la mayoría de las universidades en
las que se imparten estudios de Traducción existen asignaturas dedicadas a la
localización en alguna de sus modalidades (software, sitios web, videojuegos, imágenes
y apps) y proliferan posgrados y cursos de formación dedicados a ella.
12
La internacionalización, abreviada como «i18n», consiste en aplicar un modo de
diseño y desarrollo que elimine obstáculos a la localización o la distribución
internacional, de modo que se pueda cambiar el lenguaje sin tener que rediseñar el
producto. Se podría decir que abarca dos ámbitos: la internacionalización del código
fuente y la internacionalización de la documentación. Un ejemplo claro del primer
ámbito sería el uso de Unicode (UTF-8 o UTF-16) para evitar problemas de
codificación del lenguaje, de forma que no haya que modificar el código para que sea
compatible con lenguas que no tengan el alfabeto latino o en las que la orientación del
texto esté en vertical o invertida (hacia la izquierda). Otro aspecto que hay que tener en
cuenta es el tamaño de los botones, cuadros, menús, etc.: el desarrollador (o, en última
instancia, el localizador, si está en su mano) debe establecer unas dimensiones que
permitan que quepa el texto en lenguas que son más extensas de forma natural. Hay
lenguas que necesitan muy poco espacio (como el inglés o la mayoría de las lenguas
orientales) y lenguas que necesitan mucho más espacio (generalmente, lenguas
aglutinantes como el alemán, el sueco o el finés).
Aunque sea el localizador el que deba tener en cuenta todos estos aspectos en el
momento de localizar el producto, es muy probable que el éxito resida en la calidad de
la internacionalización llevada a cabo por el desarrollador. Si el producto no está bien
internacionalizado, será necesario modificar o incluso rediseñar el producto para
permitir la adaptación a otras lenguas. Por regla general, cuanto más relacionadas se
encuentren dos lenguas o dos culturas, menos cambios será necesario realizar. A nivel
lingüístico, las lenguas que compartan el mismo alfabeto exigirán menos cambios en el
13
código fuente para permitir su internacionalización. A nivel cultural, entre América y
Europa, por ejemplo, hay menos diferencias culturales, pues hay mucha mayor
influencia entre ambos continentes y presentan muchas más semejanzas en su forma de
concebir el mundo, la sociedad, los valores, las costumbres, etc. Normalmente, las
grandes diferencias se dan entre el mundo occidental y el mundo oriental. Por ejemplo,
en el caso de los colores se debe tener en cuenta que en China el color blanco se
considera negativo y es el color del luto, mientras que en Europa simboliza la paz, la
inocencia, la pureza y es el color del vestido de bodas. En cuanto a los iconos, uno de
los casos de error más comunes en la localización de software y sitios web se da al
indicar las lenguas con las banderas de los países, ya que algunas lenguas se hablan en
diferentes países y, habitualmente, con bastantes variaciones. Un rasgo característico del
mundo oriental es que se prefieren interfaces muy dinámicas, coloridas y con una
apabullante cantidad de imágenes y enlaces, mientras que el mundo occidental se siente
más cómodo con interfaces claras y minimalistas.
Otra característica propia del software con la que los localizadores deben saber
lidiar es con las variables. Las variables son elementos que se emplean para almacenar y
hacer referencia a otro valor y generalmente aparecen con el símbolo de porcentaje % y
una letra; por ejemplo, «%s». Estas deben permanecer igual, pero pueden cambiar de
posición en una frase. La dificultad que conllevan las variables es que muchas veces no
se sabe a qué van referidas y, por tanto, cuesta más redactar la frase. Esto ocurre
especialmente cuando pueden referirse a elementos en femenino o masculino y singular
o plural. Por ejemplo, para «New %s successfully created!», el localizador tendría que
averiguar a qué va referida esa variable para poder seleccionar la opción más correcta.
No obstante, hay otros casos en los que se puede cambiar la posición de la variable para
solucionar el problema; por ejemplo: «You found a %s!» podría traducirse por «Has
encontrado: %s».
14
asistida por ordenador, ya que podrán utilizarse glosarios y memorias de traducción para
mantener la coherencia terminológica y de estilo y se podrá revisar el texto con mayor
facilidad, de forma que se detecten y corrijan los posibles errores gramaticales y
ortotipográficos que pueda haber. En cambio, si se realiza la traducción desde un editor
de lenguaje de programación, la revisión y la corrección de errores lingüísticos serán
más arduas.
15
Además del sistema operativo, debemos tener en cuenta si la aplicación es
nativa, web o híbrida (Appio, 2013): una aplicación nativa está completamente
desarrollada en el lenguaje de programación adecuado para su sistema operativo; una
aplicación web es una web a la que se accede a través de una URL en el navegador del
dispositivo y se adapta al tamaño de este; y una aplicación híbrida es una aplicación
nativa en cuyo desarrollo se utilizan frameworks de desarrollo basados en lenguajes de
programación web (como HTML, CSS y JavaScript).
En este trabajo nos centraremos, por tanto, en las aplicaciones nativas e híbridas,
es decir, en aplicaciones basadas en lenguajes de programación de software nativos de
cada sistema operativo móvil.
16
la plataforma en la que se ejecuten las aplicaciones. Todos estos cambios se encuentran
dentro del proceso de internacionalización. Cuanto mejor internacionalizada esté una
aplicación móvil, menos problemas se darán en el posterior proceso de localización y
traducción.
a) iOS de Apple
17
Cuando tengamos la traducción realizada, podemos probarla desde iEmu, que es
el emulador de aplicaciones más utilizado para este sistema operativo.
b) Android de Google
18
un archivo xml, se puede traducir con Android Studio, Notepad++ y con la
mayoría de herramientas de traducción asistida (Trados, MemoQ, Déjà Vu,
OmegaT, PoEditor…).
c) BlackBerry de RIM
19
Build 10240 de Windows 10 Mobile o el Emulador de Microsoft para Windows
10 Mobile para el testeo.
Windows 10
iOS Android BlackBerry OS
Mobile
Empresa Apple Google RIM Microsoft
Objective-C, Java C# y Visual Basic
Lenguaje Java, C++
Python, Swift xml .NET
JavaME, Windows SDK,
Herramienta de Android
Xcode BlackBerry Windows App
programación Studio
JDE Studio
20
Aunque cada plataforma continua teniendo sus propios lenguajes de
programación, existen iniciativas como Java ME, una plataforma de dispositivos
móviles que fue creada con el objetivo de lograr una portabilidad de aplicaciones entre
plataformas móviles, de forma que fueran compatibles con todos los sistemas
operativos.
Desde el punto de vista empresarial, pueden existir muchas causas por las que no
quieran adoptar este lenguaje pero, desde el punto de vista del desarrollador y el
localizador, es irrelevante, pues el texto traducible se encontraría aislado del código en
un archivo .xml o similar.
21
espacio suficiente para que quepa el texto completo correctamente esté en la
lengua que esté. En última instancia, se permitirá realizar un
redimensionamiento de los elementos gráficos (como los botones, por ejemplo).
22
Códigos de control. Los códigos de control (por ejemplo, \n como salto de línea
o \t como tabulador) se encuentran introducidos en el texto traducible, al igual
que las variables, por lo que el localizador debe tener cuidado de no borrarlos,
ya que su eliminación estropearía el formato del texto y podría crear problemas
de funcionalidad.
23
Codificación de caracteres. La mejor forma de que una aplicación pueda
adaptarse a todas las lenguas sin que haya problemas de codificación del
lenguaje, especialmente en lenguas que no utilizan el alfabeto latino, es
configurar el estándar de codificación de caracteres en Unicode (UTF-8 o UTF-
16). En la siguiente imagen (Fig. 4) podemos ver un ejemplo de un problema de
codificación en una pantalla de información sobre la versión Android 6.0.1 en
alemán.
24
traducir palabras unidas por guiones bajos (palabras_con_underscore) y palabras
apocopadas (o CamelWords).
3.3.1.1 .strings
Un archivo .strings contiene una estructura muy limpia y sencilla que indica el
texto traducible entre comillas (“”) y los comentarios del desarrollador o ingeniero de
localización entre asteriscos (*). A continuación, podemos ver un ejemplo de la
estructura de un archivo localizable.strings.
25
/*Please don't change the name of the application*/
"app.name" = "TODO List";
/*Fuzzy*/
"app.login.text" = "Enter your credentials below to login";
"app.login.message.success" = "Login successful !\nWelcome back %s !";
"app.login.message.error" = "Make sure you've entered the correct username and
password";
"app.login.password.forget" = "I forgot my password";
"app.login.password.reset" = "Enter your address in the field below. A new password
will be sent to your inbox.";
"app.register.text" = "Sign up for free! No credit card required!";
"app.register.message.success" = "Thank you for signing up !\nPlease check your
email address to activate your account.";
"app.register.message.error" = "We were unable to sign you up.\nPlease correct the
marked fields.";
"app.menu.terms" = "Terms and conditions";
/*form_label*/
"app.login.text" = "Username";
"app.users.active" = "Just one user online";
/*form_label*/
"app.login.pass" = "Password";
3.3.1.2 XLIFF
La extensión .xliff consiste en un formato basado en xml específico para
procesos de traducción que contiene etiquetas que distinguen el texto original y el texto
traducido. En el caso de iOS, la herramienta Xcode permite exportar un archivo .xliff
para traducirlo e importarlo posteriormente para añadirlo a la aplicación y realizar el
testeo (Apple, 2015).
26
A continuación, podemos ver un ejemplo de la estructura de un archivo .xliff. La
etiqueta <source> contiene el texto original y la etiqueta <target> contiene el texto
traducido.
27
<source>Enter your address in the field below. A new password will be sent to
your inbox.</source>
<target>Entrez votre adresse dans le champ ci-dessous. Un nouveau mot de
passe sera envoyé à votre boîte de réception.</target>
</trans-unit>
<trans-unit id="app.register.text">
<source>Sign up for free! No credit card required!</source>
<target>Inscrivez-vous gratuitement ! Aucune carte de crédit !</target>
</trans-unit>
<trans-unit id="app.register.message.success">
<source>Thank you for signing up !\nPlease check your email address to
activate your account.</source>
<target>Je vous remercie pour vous inscrire !\nVeuillez vérifier votre adresse e-
mail pour activer votre compte.</target>
</trans-unit>
<trans-unit id="app.register.message.error">
<source>We were unable to sign you up.\nPlease correct the marked
fields.</source>
<target>Nous n'avons pas pu vous inscrire.\nVeuillez corriger les champs
marqués.</target>
</trans-unit>
<trans-unit id="app.menu.terms">
<source>Terms and conditions</source>
<target>Termes et conditions</target>
</trans-unit>
<trans-unit id="app.users.active">
<source>Just one user online</source>
<target>Un seul utilisateur en ligne</target>
</trans-unit>
</body>
</file>
<file original="form_label" datatype="plaintext" xml:space=“preserve” source-
language="en" target-language="fr">
<body>
<trans-unit id="app.login.text">
28
<source>Username</source>
<target>Nom d'utilisateur</target>
</trans-unit>
<trans-unit id="app.login.pass">
<source>Password</source>
<target>Mot de passe</target>
</trans-unit>
</body>
</file>
</xliff>
Para traducir una aplicación, hay que seguir la ruta \res\values\strings.xml. Para
crear un archivo con la traducción, se debe hacer una copia de la carpeta values
añadiéndole el código de la lengua, por ejemplo, values-es. Se debe traducir el archivo
strings.xml que aparece dentro de esa carpeta creada. El texto traducible se encuentra
entre los signos > y <. A continuación, mostramos un ejemplo de la estructura de un
archivo strings.xml (solo un fragmento) de una aplicación en inglés de un diccionario de
finés a español.
29
<string name="rateQuestion">If you enjoy using {0}, please take a moment to rate
it. Thanks for your support!</string>
<string name="rateLater">Remind me later</string>
<string name="rateNoThanks">No, thanks</string>
<string name="titleInfo">Info</string>
<string name="sorryCrash">Sorry, last time the application crashed because of an
exception.</string>
<string name="btnStacktrace">Stacktrace</string>
<string name="btnSendMail">Send mail</string>
<string name="btnContinue">Continue</string>
<string name="btnExit">Exit</string>
<string name="select_rating">Select Rating</string>
<string name="btnReset">Cancel</string>
<string name="btnBoth">Both</string>
<string name="btnInfo">Info</string>
<string name="infoExplanation">"To search for words, simply type text into
search field.
Click a table cell to reveal detailed information about a word, such as spelling and
definitions."</string>
<string name="questionDeleteDatabase">Do you really want to delete the
database?</string>
<string name="yes">Yes</string>
<string name="no">No</string>
<string name="btnRemoveDatabase">Remove App Data</string>
<string name="couldNotDeleteDatabase">Could not delete database</string>
<string name="otherApps">Other Apps</string>
<string name="otherAppsLong">Check out our other apps, including languages
such as Finnish, Swedish, French, German, Norwegian, Turkish etc.</string>
<string name="otherAppsLink">More Dictionaries</string>
<string name="otherInformation">Other Information</string>
<string name="sourcesAndLicence">"The dictionary was gathered from following
sources:
http://en.wiktionary.org
30
http://de.wiktionary.org
http://fi.wiktionary.org
http://sv.wiktionary.org
http://fr.wiktionary.org
http://es.wiktionary.org
http://nl.wiktionary.org
http://no.wiktionary.org
http://hu.wiktionary.org
http://tr.wiktionary.org
http://pt.wiktionary.org
http://pl.wiktionary.org
http://ru.wiktionary.org
http://xdxf.revdanica.com/down/
http://wikipedia.org
31
languages</string>
<string name="sdCard">SD-Card</string>
<string name="internalStorage">internal memory</string>
<string name="details">Details</string>
<string name="translations">Translations</string>
<string name="synonyms">Synonyms</string>
<string name="definitions">Definitions</string>
<string name="examples">Examples</string>
<string name="WordTypeNoun">Noun</string>
<string name="WordTypeVerb">Verb</string>
<string name="WordTypeAdverb">Adverb</string>
<string name="WordTypeAdjective">Adjective</string>
<string name="WordTypeNumeral">Numeral</string>
<string name="WordTypePronoun">Pronoun</string>
<string name="WordTypeParticle">Particle</string>
<string name="WordTypePreposition">Preposition</string>
<string name="WordTypeOther">Other</string>
<string name="WordTypeConjunction">Conjunction</string>
<string name="WordTypeInterjection">Interjection</string>
<string name="WordTypePhrase">Phrase</string>
<string name="WordTypeUnknown">Unknown</string>
</resources>
32
<name>main</name>
<message>
<location filename="../assets/app.cpp" line="6"/>
<source>My String</source>
<comment>My Context</comment>
<translation>Mi cadena</translation>
</message>
<message>
<location filename="../assets/main.qml" line="12"/>
<source>Hello world</source>
<translation>Hola, mundo</translation>
</message>
</context>
</TS>
[Recuperado de: https://goo.gl/WRZcHV]
Para crear la versión en español de la aplicación, debemos hacer una copia del
archivo Resources.resx y añadirle al nombre el código de nuestra lengua. En nuestro
caso, el archivo se llamaría Resources-es-ES.resx, en la que el segundo ES indicaría la
variante de España. Si queremos hacer una traducción de español neutro, el archivo
33
debe llamarse Resources-es.resx. Al tratarse de un archivo con estructura de .xml,
podemos traducirlo con cualquier herramienta TAO que admita esa extensión o con un
editor de lenguaje de programación como Notepad++.
34
<value>System.Resources.ResXResourceWriter, System.Windows.Forms,
Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="app.name" xml:space=“preserve”>
<value>TODO List</value>
<comment>Please don't change the name of the
application</comment>
</data>
<data name="app.login.text" xml:space=“preserve”>
<value>Enter your credentials below to login</value>
<comment>Fuzzy</comment>
</data>
<data name="app.login.message.success" xml:space=“preserve”>
<value>Login successful !
Welcome back %s !</value>
</data>
<data name="app.login.message.error" xml:space=“preserve”>
<value>Make sure you've entered the correct username
and password</value>
</data>
<data name="app.login.password.forget" xml:space=“preserve”>
<value>I forgot my password</value>
</data>
<data name="app.login.password.reset" xml:space=“preserve”>
<value>Enter your address in the field below. A new password
will be sent to your inbox.</value>
</data>
<data name="app.register.text" xml:space=“preserve”>
<value>Sign up for free! No credit card required!</value>
</data>
<data name="app.register.message.success" xml:space=“preserve”>
<value>Thank you for signing up !
Please check your email address to activate your account.</value>
</data>
35
<data name="app.register.message.error" xml:space=“preserve”>
<value>We were unable to sign you up.
Please correct the marked fields.</value>
</data>
<data name="app.menu.terms" xml:space=“preserve”>
<value>Terms and conditions</value>
</data>
<data name="app.login.text" xml:space=“preserve”>
<value>Username</value>
<comment>form_label</comment>
</data>
<data name="app.users.active" xml:space=“preserve”>
<value>Just one user online</value>
</data>
<data name="app.login.pass" xml:space=“preserve”>
<value>Password</value>
<comment>form_label</comment>
</data>
</root>
36
4. Aplicación práctica
En este apartado vamos a describir paso por paso el proceso de localización de
una aplicación de Android, desde la descompilación del archivo .apk hasta la fase de
testeo.
37
Fig. 5. Captura de página web de la tienda Google Play para apps de Android.
4.2 Descompilación
La forma más fácil de descompilar una aplicación es con el programa APK
Studio. Podemos encontrar el enlace de descarga en el siguiente sitio web:
http://www.vaibhavpandey.com/apkstudio/ . A continuación, ejecutamos el programa.
Debemos asegurarnos de que tenemos instalado en nuestro ordenador la versión más
reciente de Java, pues, de lo contrario, podrían aparecernos errores al descompilar algún
.apk.
38
Fig. 6. Ruta para descompilar un archivo .apk.
Nos aparecerá la siguiente ventana (Fig. 7) para que indiquemos la ruta en la que
se encuentra el archivo .apk que deseamos descompilar. Lo buscamos, lo seleccionamos
y pulsamos Abrir.
39
Fig. 7. Búsqueda del archivo .apk que se desea descompilar.
40
Fig. 8. Ventana emergente con información sobre la descompilación.
41
Fig. 9. Proceso de descompilación en curso.
42
Fig. 10. Proceso de descompilación realizado correctamente.
43
borraremos. No obstante, los archivos strings.xml y arrays.xml deberán permanecer en
la carpeta con el texto traducido.
En caso de traducirlo desde una herramienta TAO, solo tenemos que abrir el
archivo desde esta, ya sea creando un proyecto o abriéndolo como un documento
individual.
44
Algunas de las ventajas de este tipo de herramienta radican en que se pueden
utilizar glosarios o memorias de traducción que faciliten y aceleren la tarea de
traducción, permiten hacer un recuento de las palabras traducibles (y repeticiones) para
presentar un presupuesto o estimar el tiempo que llevaría la traducción, y se puede
evitar que se modifique el código xml por error y se estropee la funcionalidad, ya que la
herramienta lo aísla del texto traducible y no lo muestra. No obstante, sí que debemos
tener en cuenta las variables y los códigos de control que puedan aparecer: el
localizador debe tener cuidado de no borrarlos y colocarlos en el lugar correcto.
También debemos prestar atención a los espacios en blanco adicionales y no borrarlos
tampoco, ya que podrían tener importancia para las concatenaciones. De igual modo,
algunas herramientas TAO permiten configurar el proyecto de forma que las variables
se conviertan en bloques de etiqueta que no pueden ser modificados por el traductor.
45
En caso de querer traducir el texto (o corregir los errores durante el testeo) desde
Notepad++, por ejemplo, el texto traducible aparecerá en negro (siempre y cuando esté
seleccionado el lenguaje .xml en el programa), como se muestra en las siguientes
imágenes (Fig. 13 y Fig. 14), que se corresponden a los archivos strings.xml y
arrays.xml, y el localizador debe tener cuidado de no tocar las etiquetas, pues podría
poner en peligro la funcionalidad del archivo. Si el programa no reconoce la extensión
.xml y, por tanto, todo el texto aparece de color negro, podemos seleccionarlo desde el
menú Lenguaje\XML.
46
Fig. 14. Vista de archivo arrays.xml desde Notepad++.
4.5 Compilación
Cuando tengamos la traducción finalizada, debemos guardar los cambios (en el
caso de una herramienta TAO generaremos el archivo de destino) y asegurarnos de que
los archivos traducidos sustituyen los archivos que había anteriormente en la carpeta
values-es cuando la creamos. También debemos asegurarnos de que en esta carpeta solo
se encuentren los archivos .xml traducibles. Si hay alguno más, debemos borrarlo.
Una vez que tengamos los archivos traducidos en la carpeta values-es y hayamos
borrado el resto, será el momento de compilar de nuevo la aplicación para verla desde
un emulador, probarla y corregir los errores.
47
Fig. 15. Ruta para compilar la aplicación.
48
Fig. 16. Ubicación del archivo YML.
Una vez que finalice el proceso de compilación, que puede durar unos minutos,
encontraremos la aplicación compilada (.apk) junto a la carpeta que contiene la
aplicación descompilada. Es muy importante que borremos el resto de archivos .xml
que no contengan texto traducible, ya que APK Studio puede reconocer esos archivos
duplicados y provocar errores que impidan que la aplicación se vuelva a compilar.
49
programa\Java\jdk. Si no aparece ninguno, podemos descargarlo del enlace
anterior e instalarlo en nuestro ordenador. Luego, debemos seleccionar la
subcarpeta bin y hacer clic en Abrir, como se muestra en la siguiente imagen
(Fig. 17).
3. Introducimos todos los datos que nos piden o, al menos, los obligatorios, que
son los campos de las contraseñas, el alias y Validity. A veces puede que sea
necesario rellenar algún otro campo para generar el archivo, así que
rellenamos uno más.
50
6. Hacemos clic en Generate Keyfile para generar el archivo de firma. Nos
aparecerá un mensaje que indique que se ha generado el archivo
correctamente.
4.7 Testeo
El testeo consiste en probar un producto de software para ver si tiene errores y
poder corregirlos. Estos errores pueden estar relacionados con la funcionalidad del
código, con los textos y con la apariencia general del producto. Para realizar el testeo de
la app vamos a utilizar el emulador BlueStacks. Este puede descargarse del siguiente
enlace: http://www.bluestacks.com/es/index.html.
Cuando esté instalado, debemos iniciar sesión con nuestro correo electrónico o
crear una cuenta nueva. A continuación, podemos abrir la aplicación de dos formas:
haciendo clic sobre el archivo .apk o abriendo el emulador BlueStacks y pulsando el
icono de Instalar apk que se encuentra en el panel de la izquierda, como se muestra en la
siguiente imagen (Fig. 18).
51
Fig. 18. Interfaz del emulador BlueStacks con indicación del icono Instalar apk.
52
aplicación. Para ello, accedemos al menú Configuración, hacemos clic en Aplicaciones,
seleccionamos la aplicación que deseamos desinstalar y hacemos clic en Desinstalar.
Por último, volvemos a hacer clic en el icono de Instalar apk e instalamos la última
versión de la aplicación.
53
5. Conclusiones
En este trabajo, y durante su elaboración, nos percatamos de que el desarrollo de
aplicaciones móviles es un ámbito que se encuentra en constante cambio, como
cualquier otro ámbito relacionado con la Informática y las Nuevas Tecnologías, por lo
que tanto los desarrolladores como los traductores-localizadores tienen que estar
actualizándose constantemente.
54
6. Bibliografía
Ahmad W., Sirhindi R., Adeeba F. y Hussain, S. (s.d.). Localization of Mobile
Platforms. Recuperado de: http://goo.gl/A1bLL3
Appio. (2013). Tipos de apps: nativas, híbridas y web apps. Recuperado de:
http://appio.es/tipos-de-apps/
Apple (s.d.). Swift. Un lenguaje potente y abierto a todos para crear apps increíbles.
Recuperado de: http://www.apple.com/es/swift/
Bernaola, I.; Morales, A. I.; Payros, I. (2014). Con mala escoba mal se barre: los
problemas de la localización de productos informáticos no internacionalizados.
Recuperado de: http://www.translationdirectory.com/article1117.htm
55
Miranda, L. (2016). Apple anunció que la App Store ya llegó a los dos millones de
aplicaciones. Wayerless. Recuperado de: https://goo.gl/Xnhl2q
Pérez, D. (2016). Maru OS, convergencia entre PC y móvil: Continuum para Android.
El Androide libre. Recuperado de: http://goo.gl/rXJsEJ
Statista (2016). Apple: most popular app store categories 2016. Recuperado de:
http://goo.gl/0Ltf5k
Zamora, J. A. (2015). Eclipse ha muerto, larga vida a Android Studio. El androide libre.
Recuperado de: http://goo.gl/xkSIwk
56