Subido por Esperanza P. Íñiguez

Guia practica de localizacion de apps

Anuncio
TRABAJO DE FIN DE MÁSTER
Guía práctica de localización de apps:
el papel de los lenguajes de programación
Autora: Esperanza Pérez Íñiguez
Tutora: Dra. Cristina A. Huertas Abril
Índice
Índice de figuras................................................................................................................ 2
Índice de tablas ................................................................................................................. 2
1. Introducción .................................................................................................................. 3
2. Metodología y objetivos ............................................................................................... 7
3. Estado de la cuestión..................................................................................................... 9
3.1 La localización de software y apps ....................................................................... 10
3.1.1 Evolución histórica ......................................................................................... 10
3.1.2 Importancia de la localización en la actualidad: GILT .................................. 11
3.1.3 Principales herramientas para la localización de software y apps ................. 15
3.2 Lenguajes de programación y localización ........................................................... 15
3.2.1 Características principales .............................................................................. 15
3.2.2 Comparación de sistemas operativos.............................................................. 20
3.2.3 Implicación en la creación de apps ................................................................ 21
3.3 El proceso de localización de una app .................................................................. 25
3.3.1 iOS: .strings y .xliff ........................................................................................ 25
3.3.2 Android: .xml ................................................................................................. 29
3.3.3 Blackberry: .ts................................................................................................. 32
3.3.4 Windows 10 Mobile: .resx ............................................................................. 33
4. Aplicación práctica ..................................................................................................... 37
4.1 Búsqueda y descarga de la aplicación ................................................................... 37
4.2 Descompilación ..................................................................................................... 38
4.3 Creación de la carpeta values y gestión de archivos traducibles .......................... 43
4.4 Traducción de archivos .xml traducibles .............................................................. 44
4.5 Compilación .......................................................................................................... 47
4.6 Firma de la aplicación ........................................................................................... 49
4.7 Testeo .................................................................................................................... 51
5. Conclusiones ............................................................................................................... 54
6. Bibliografía ................................................................................................................. 55
1
Índice de figuras
Fig. 1. Captura de la app Facturas .................................................................................. 22
Fig. 2. Fragmento de código con variables de una app en inglés y en español. ............. 22
Fig. 3. Captura de pantalla de la app Facebook. ............................................................. 23
Fig. 4. Captura de pantalla de información sobre Android 6.0.1 en alemán. ................. 24
Fig. 5. Captura de página web de la tienda Google Play para apps de Android. ........... 38
Fig. 6. Ruta para descompilar un archivo .apk. .............................................................. 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
Fig. 11. Estructura de la carpeta values de una app de Android..................................... 44
Fig. 12. Vista de archivo xml desde SDL Trados 2015. ................................................. 45
Fig. 13. Vista de archivo strings.xml desde Notepad++. ................................................ 46
Fig. 14. Vista de archivo arrays.xml desde Notepad++. ................................................ 47
Fig. 15. Ruta para compilar la aplicación. ...................................................................... 48
Fig. 16. Ubicación del archivo YML. ............................................................................. 49
Fig. 17. Selección de la ruta del JDK. ............................................................................ 50
Fig. 18. Interfaz del emulador BlueStacks con indicación del icono Instalar apk. ......... 52
Índice de tablas
Tabla 1. Comparación de las características de los SO .................................................. 20
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.
Con la aparición de Internet y la evolución de estos teléfonos, se ha eliminado la
barrera geográfica y ahora podemos comunicarnos e interactuar con personas en
cualquier momento sin importar en qué lugar del mundo se encuentren. Esta capacidad
de comunicación e interacción a nivel mundial ha permitido que las empresas
remodelen sus estrategias de mercado y puedan anunciar y vender sus productos por
todo el mundo aprovechando las ventajas que ofrecen estas aplicaciones: las empresas
pueden realizar transacciones on-line mediante tiendas en línea, ofrecer cursos de
formación, vender videojuegos, alquilar películas… No cabe duda de que esto abre una
infinidad de posibilidades.
Toda esta corriente de globalización obliga, como consecuencia, a pensar en la
traducción y la adaptación de los productos a otras lenguas y culturas para mantener el
atractivo del producto en cada país y facilitar su comercialización y uso. Por este motivo
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).
Este modelo se lleva a cabo en la localización de software, de la que sería
subyacente la localización de apps, pues comparten las mismas particularidades (por
ejemplo, formatos o extensiones de los archivos en los que se encuentra el texto
traducible) y entraña las mismas dificultades de localización y traducción, como la
limitación de espacio, uso de elementos funcionales (por ejemplo, variables y comandos
de control), falta de contexto... No obstante, cuenta con algunas diferencias que nos
obligan a separar ambas modalidades de localización. Estas diferencias derivan de los
sistemas operativos que soportan estas aplicaciones y las plataformas en las que se
ejecutan. A continuación, enumeramos las diferencias entre ambas modalidades de
localización.

En la localización de software se traducen y localizan los siguientes
elementos: la interfaz, la documentación y el material de ayuda relativos
al software. Por otra parte, en la localización de aplicaciones móviles
(apps), se traducen y localizan la interfaz, los metadatos (nombre de la
aplicación, descripción y palabras clave), el material comercial de la
aplicación y el material de ayuda.

En la localización de software se utiliza un registro de lenguaje formal,
mientras que en la localización de aplicaciones móviles (aunque depende
del tipo de app) predomina un registro de lenguaje informal y, en
ocasiones, coloquial.

En la localización de software nos encontramos atajos de teclado y
aceleradores que debemos adaptar a nuestra lengua, mientras que en las
aplicaciones móviles no existen, ya que estas se ejecutan en plataformas
con pantalla táctil que suponen una mayor rapidez.
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.

En la localización de software existe una limitación de espacio o
caracteres salvable mediante el redimensionamiento de los elementos
gráficos (cuadros de diálogo, menús, botones), ya que la plataforma en la
que se ejecutan los programas tiene un tamaño mayor al de las
plataformas móviles. En cambio, la limitación de espacio o caracteres no
siempre será salvable en las aplicaciones móviles debido al tamaño de las
plataformas móviles.

En las aplicaciones móviles existe un mayor apoyo visual (uso de iconos,
imágenes) debido a la limitación de espacio que mencionábamos antes,
por lo que el localizador de apps debe prestar atención a los iconos e
imágenes que aparezcan, evaluar su validez en la cultura meta (y
modificarlos si es necesario) y ser lo más conciso posible en los términos
que acompañen estos elementos gráficos, ya que cuentan con ese apoyo.
Con todo esto, hemos de tener en cuenta también que la evolución en el
desarrollo de las aplicaciones móviles y su proceso de localización avanza de forma
vertiginosa y las fórmulas o métodos que se utilizan actualmente para desarrollar y
localizar aplicaciones pueden cambiar drásticamente en cuestión de meses.
Recientemente, se ha observado una creciente tendencia a utilizar lenguajes
distintos a los tradicionales al desarrollar aplicaciones, lo que ha dado lugar a que
algunos lenguajes caigan en el desuso o se utilicen en conjunción con otros. De hecho,
el lenguaje que goza actualmente de más atención por parte de los desarrolladores y las
empresas debido a su versatilidad y facilidad de uso es el XML en inglés «Extensible
Markup Language», un lenguaje metalenguaje extensible de etiquetas desarrollado por
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.
Así, y con la intención de explicar de la forma más clara posible el proceso de
localización de una aplicación móvil, hacemos una introducción al mundo de las
aplicaciones móviles y el fenómeno de la globalización. Esto nos permitirá explicar en
qué estado se encuentra la investigación en este ámbito y qué trabajos se han realizado
hasta este momento que traten sobre este tema o temas relacionados. Seguidamente,
definimos conceptos clave en el ámbito de la localización y explicamos detalladamente
las características de cada sistema operativo y las dificultades y retos que presentan en
el proceso de localización.
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.
-
Proporcionar una visión general de los sistemas operativos más utilizados
actualmente en dispositivos móviles, sus lenguajes y entornos de
programación, los tipos de archivos y las extensiones de las aplicaciones y el
modo de abordar su localización.
-
Dar a conocer las dificultades y los retos de la internacionalización y la
localización desde el punto de vista del traductor-localizador.
-
Explicar de la forma más fácil y clara posible el proceso de tratamiento y
localización de una aplicación móvil mediante un tutorial paso por paso con
capturas de pantalla.
-
Ofrecer información actualizada sobre el uso de los lenguajes de
programación en el desarrollo de aplicaciones móviles, los cambios que se
están produciendo en el proceso de desarrollo y de localización y las nuevas
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.
Desde el punto de vista del traductor-localizador, se han categorizado los
aspectos lingüísticos, culturales y funcionales de la localización del inglés al español de
aplicaciones (Seghiri, 2013); se ha hablado de las estrategias de cooperación con los
desarrolladores para la localización de aplicaciones (Lachat, 2015), en las que se
presentan fórmulas en las etapas de diseño, internacionalización, elección de iconos e
imágenes y presentación del texto para facilitar la labor de localización; también se ha
tratado la gestión multilingüe de aplicaciones mediante plataformas de traducción en
línea (Jimenez, 2015), los problemas de localización que derivan de productos
informáticos mal internacionalizados (Bernaola, Morales y Payros, 2014) y la
adaptación de los aspectos culturales en la localización de productos multimedia
(Tercedor, 2005).
Desde el punto de vista del desarrollador, se han abordado los problemas de
internacionalización en el sistema operativo Symbian y el lento avance del desarrollo de
la internacionalización en plataformas móviles con respecto a lenguas con alfabetos
diferentes al latino, se han descrito las características y dificultades de estos caracteres y
se han propuesto soluciones para mejorar la situación en el sistema operativo Symbian,
que ya se encuentra obsoleto. Por otro lado, se ha tratado el tema del testeo de las
aplicaciones móviles, los costes que supone esta etapa por falta de automatización del
proceso, las deficiencias que acarrean los emuladores de aplicaciones existentes (que no
simulan sensores, GPS o conectividad) y la necesidad de automatizar el proceso
(Muccini, Di Francesco y Esposito, 2014).
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.
3.1 La localización de software y apps
3.1.1 Evolución histórica
La aparición de las primeras aplicaciones móviles se remonta a finales de los
años 90 (UPSA, 2013), y consistían en agenda, contactos, tonos de llamada, juegos y
correo electrónico. Más adelante, gracias a la tecnología EDGE (acrónimo en inglés
para tasas de Datos Mejoradas para la Evolución del GSM) y su conexión a Internet, se
permite un mayor desarrollo de las aplicaciones ya existentes, pero se encuentran
restringidas a sus propios sistemas operativos por los fabricantes, sin permitir
desarrolladores externos.
La auténtica revolución surge en 2007 a raíz del lanzamiento del iPhone de
Apple, que ofreció su teléfono como plataforma para aplicaciones creadas por
desarrolladores y compañías externas que se publicaban en su App Store. Poco después,
Google presentó el sistema operativo Android OS con su Play Store y cambiaron las
interfaces de Windows Phone OS, BlackBerry OS y Symbian OS para permitir la
misma capacidad de admisión y uso de aplicaciones externas.
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).
No obstante, están apareciendo otros sistemas operativos que ofrecen nuevas
posibilidades, como Maru OS, una ROM basada en Android 5.1 Lollipop. Este sistema
operativo, cuando detecta que el dispositivo está conectado a una pantalla externa,
ejecuta un sistema operativo basado en Debian con GNOME que convierte el teléfono
inteligente en un ordenador convencional en el que se pueden instalar y ejecutar
programas como lo haríamos en un ordenador con sistema operativo Linux (El
Androide Libre, 2016).
3.1.2 Importancia de la localización en la actualidad: GILT
Las aplicaciones informáticas para dispositivos móviles (generalmente
conocidas como apps) han entrado en nuestra vida hace relativamente poco, y han
supuesto un cambio radical de paradigma en nuestra forma de ver el mundo y de
interactuar con nuestro entorno. A medida que avanzan las tecnologías de la
información, también crece la necesidad de internacionalización, que consiste en
adaptar los productos a cada mercado local para poder ofrecerlos a nivel global. Por este
motivo, la localización tiene tanta demanda y ha cobrado, por ende, tanta importancia.
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.
La
LISA
(siglas
de
Localization
Industry
Standards
Association:
Asociación para la Normalización del Sector de la Localización) ideó el modelo GILT
(acrónimo de Globalización, Internacionalización, Localización y Traducción), que se
define
como
la
«tendencia
hacia
un
único
mercado
mundial,
productos
descontextualizados, estandarizados y de lenguaje controlado (que favorece la
traducción automática) para su generalización, localización de un software a distintos
idiomas para su implantación masiva, y traducción adaptada al mercado nacional del
usuario de destino» (Martínez, 2004). A continuación, vamos a explicar en qué consiste
cada uno de los procesos que forman el acrónimo GILT basándonos en las definiciones
que ofrece la LISA (2010):
La globalización, abreviada como «g11n», desde el punto de vista de la
localización, es el proceso de comercialización y marketing de un producto o empresa a
nivel mundial. Aunque el inglés se alza como lengua franca, la lengua de la
comunicación internacionalmente, muchísimas encuestas y estudios afirman que la
forma más efectiva de vender un producto y alcanzar la mejor experiencia de usuario es
ofrecer los productos adaptados a la lengua y la cultura de cada lugar en el que se desea
comercializar. Por este motivo se crea el modelo GILT, en el que podría considerarse
que la globalización abarca los otros tres procesos que conforman el acrónimo. No
obstante, esta no supone ningún proceso por parte del localizador, sino que es la razón
por la que se localizan los productos y solo constituye el punto de partida o la base.
Otra definición válida y clarificadora sobre la globalización sería que es el
«proceso de toma de todas las decisiones técnicas, financieras, administrativas, de
personal, mercadotécnicas y de otra índole empresarial necesarias para facilitar la
localización»; mientras que fuera del ámbito de la localización, podría definirse como
«proceso general de integración económica, política, tecnológica y social de alcance
mundial» (Guerra, 2011).
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).
La localización, abreviada como «l10n», es la adaptación lingüística y cultural
de un producto para el locale (país/región e idioma) meta. En esta etapa se tienen en
cuenta las connotaciones culturales y políticas de los colores, los iconos, los símbolos,
las imágenes y las referencias a personas, costumbres y acontecimientos propios de la
cultura meta, ya que una mala adaptación puede provocar que el resultado sea
inadecuado u ofensivo para el usuario final y el producto no tenga éxito. También se
tienen en cuenta los formatos de las fechas y horas, las direcciones, los números de
teléfono, las unidades de medida, las divisas, ordenamiento y presentación de listas, uso
de nombres personales y formas de tratamiento, y cualquier otro elemento que varíe en
función del país o región.
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».
Por último, la traducción, abreviada como «t9n», es el proceso de reproducir un
texto de una lengua original a una lengua de destino. En esta etapa se tendrán en cuenta
todos los aspectos propiamente lingüísticos: se prestará atención a la gramática, la
ortografía, la coherencia, el registro del lenguaje, el estilo, las frases hechas… todo lo
relacionado con la lengua. La mejor forma de lograr una traducción de calidad en este
tipo de textos es gestionando el archivo traducible desde una herramienta de traducción
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.
3.1.3 Principales herramientas para la localización de software y apps
Aunque cada sistema operativo tiene un lenguaje de programación distinto, si el
producto está bien internacionalizado será posible extraer el archivo que contiene el
texto traducible y traducirlo desde múltiples herramientas compatibles, aparte de las
herramientas propias de desarrollo. Las herramientas TAO (traducción asistida por
ordenador) suponen una gran ayuda para la traducción de archivos en una gran variedad
de formatos. Además de ser compatibles con muchas extensiones de archivos, aceleran
el proceso de traducción gracias a la detección de palabras u oraciones repetidas y a una
gestión eficaz de la terminología mediante bases de datos terminológicas y memorias de
traducción. En el caso de los archivos que contienen código, las herramientas TAO son
capaces de separar el código del texto traducible, lo que facilita el proceso de traducción
y evita que el localizador elimine parte del código por error y estropee la funcionalidad
de este. Son numerosas las herramientas TAO, si bien las que tienen un uso más
extendido y son compatibles con un mayor número de extensiones de archivos son SDL
Trados Studio, MemoQ, Déjà Vu y OmegaT (libre y gratuita). También existen
herramientas TAO especializadas en la localización de software, como SDL Passolo,
Lingobit Localization, Alchemy Catalyst, Sisulizer, PoEditor…
3.2 Lenguajes de programación y localización
3.2.1 Características principales
Cada sistema operativo tiene un lenguaje de programación distinto y, en función
de este, se requiere el uso de unas herramientas concretas de desarrollo.
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).
Debido a la tendencia de «Write once, run everywhere» («Escribir una vez,
ejecutar en todas partes»; eslogan de Sun Microsystems), que consiste en desarrollar
aplicaciones compatibles con múltiples plataformas con el fin de ahorrar tiempo y
costes, los desarrolladores eligen crear sus aplicaciones basándose en lenguajes
multiplataforma (como HTML5, PHP, JavaScript, Java, Python…) y la mayoría tiende a
desarrollar aplicaciones basadas en lenguajes orientados a la web, en lugar de nativos,
especialmente para los sistemas operativos Android y iOS (Soto, 2014). Los lenguajes
orientados a la web más utilizados para el desarrollo de aplicaciones web son HTML5,
CSS3, PHP, JavaScript y Ajax. El mayor inconveniente de las aplicaciones web es que
tienen un acceso limitado al dispositivo y que dependen del navegador web de este. Por
este motivo existen las aplicaciones híbridas, que aprovechan las ventajas de cada
lenguaje de programación para ofrecer una amplia variedad de funcionalidades.
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.
La mayoría de los lenguajes de programación que se usan actualmente para el
desarrollo de aplicaciones móviles nativas son los tradicionales (como Java, ObjectiveC, C++ y Visual Basic), pero cada vez con más frecuencia se utilizan en combinación
con lenguajes más recientes, como el .xml. Al igual que se han ido adoptando nuevos
lenguajes de programación, también se empieza a convertir en norma la separación
entre el lenguaje natural y el lenguaje de programación, el uso de ciertos estándares de
codificación de caracteres (como Unicode: UTF-8) y la posibilidad de que los
elementos gráficos que contienen texto sean adaptables, es decir, que modifiquen sus
dimensiones para albergar el texto que contienen completo y en función del tamaño de
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 continuación, describimos cómo se puede traducir el texto de una app nativa
desde sus IED propios.
a) iOS de Apple
iOS se programa en el lenguaje Objetive-C (y, en ocasiones, Python) y
requiere el uso de la herramienta Xcode en un entorno de Mac. Recientemente,
Apple ha comenzado a utilizar el lenguaje Swift (Apple, 2016), que es de código
abierto y se integra a la perfección con el código escrito en Objective-C, para el
desarrollo de aplicaciones para iOS, Mac, Apple TV y Apple Watch.
La extensión del proyecto es .ipa y el archivo con el texto traducible se
encuentra siguiendo la ruta en.lproj\Localizable.strings. También se puede
exportar un archivo .xliff con el texto traducible desde la herramienta de
desarrollo Xcode. Esta última es la alternativa más fácil para traducir el texto
debido a la versatilidad y compatibilidad del lenguaje .xliff con las herramientas
TAO.
Para descompilar un archivo con extensión .ipa, basta con cambiar la
extensión a .rar y abrirlo desde un programa que abra este tipo de archivos,
como WinRar, 7zip, etc. Para realizar la traducción, se hace una copia de la
carpeta en.lproj y se le llama es.lproj. Dentro de esta carpeta encontraremos el
archivo Localizable.strings y otros archivos que puede que contengan texto
traducible. La traducción de un archivo con extensión .strings se puede llevar a
cabo desde un editor de código de programación como Notepad++ o desde
herramientas
de
traducción
asistida
por
ordenador
como
PoEditor
(https://poeditor.com/localization/files/ios). También tenemos la posibilidad de
realizar la traducción desde la herramienta de desarrollo propia de iOS: Xcode.
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
Android se programa en el lenguaje Java modificado con el uso de varias
herramientas, entre las que destacan NetBeans, Eclipse y Android Studio.
NetBeans es un IDE de código abierto y gratuito para el desarrollo en Java,
JavaScript, HTML5, PHP, C/C++. Eclipse es un programa de software de
código abierto y gratuito que fue creado para la programación en diferentes
lenguajes, especialmente Java, y es uno de los pocos IDE (integrated
development enviroment o entorno de desarrollo integrado) que están preparados
con el SDK (software development kit o kit de desarrollo de software) de
Android. No obstante, desde la llegada de Android Studio 2.0, Eclipse parece
estar cayendo en desuso (El androide libre, 2015).
Las aplicaciones de Android tienen la extensión .apk, que corresponde a
las siglas de «Android Application Package»: aplicación empaquetada de
Android, es decir, un paquete para el sistema operativo Android. Este formato es
una variante del formato JAR de Java y se usa para distribuir e instalar
componentes empaquetados para la plataforma Android para teléfonos
inteligentes y tabletas. El formato .apk es básicamente un archivo comprimido
en ZIP con diferente extensión, por lo que puede ser abierto e inspeccionado
usando un software archivador de ficheros como 7-Zip, Winzip, WinRAR o Ark.
No obstante, esta fórmula de descompilación no es del todo efectiva y a menudo
no muestra todas las carpetas que contiene la aplicación. La mejor forma de
descompilar un archivo .apk es utilizar una herramienta de descompilación,
como APK Tool o APK Studio.
El texto traducible se muestra en la carpeta values, en el archivo
string.xml. Para su localización, se accede a res\values, se hace una copia de la
carpeta values y se le cambia el nombre por values-es. A continuación, se busca
en la carpeta el archivo string.xml, y se borra el resto de archivos. Al tratarse de
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
Para desarrollar aplicaciones para BlackBerry se utiliza el lenguaje C++
y Java. El SDK de BlackBerry 10, también denominado QNX Momentics IDE,
es la nueva plataforma de desarrollo para BlackBerry y permite desarrollar apps
nativas mediante el IDE Cascades (QML + C++), además de apps basadas en
web, que abordan un desarrollo creado con los estándares HTML5, CSS3 y
JavaScript, y apps basadas en AIR, más un Runtime for Android, que permite
ejecutar aplicaciones creadas para el sistema operativo móvil de Google en la
plataforma BB10 (Luna, 2013). Este SDK también actúa como simulador de
aplicaciones.
Los archivos traducibles suelen tener la extensión .ts, aunque también
hay ocasiones en las que el texto traducible se encuentra en archivos de recursos
con extensión .rrh o .rrc. La estructura de un archivo .ts es básicamente la de un
archivo .xml, lo que facilita su manejo al localizarlo.
d) Windows Phone y Windows 10 Mobile de Microsoft
Windows Phone ha sido el sistema operativo de Microsoft desde el 2010.
No obstante, fue sustituido en 2015 por Windows 10 Mobile (Babel, 2016). Los
lenguajes de programación que se utilizan para desarrollar aplicaciones en este
entorno son C# y Visual Basic con XAML, JavaScript con HTML, o C++ con
DirectX y/o XAML (Microsoft, 2016). La extensión de la app es .xap, que tiene
una estructura compleja y contiene muchos archivos de librerías .dll. El texto
traducible se encontrará en la carpeta de recursos, en un archivo .resx. Podemos
usar Telerik JustDecompile para descompilar el archivo .xap y el emulador
19
Build 10240 de Windows 10 Mobile o el Emulador de Microsoft para Windows
10 Mobile para el testeo.
3.2.2 Comparación de sistemas operativos
A continuación, podemos ver una tabla que resume de manera más clara las
diferentes características de cada sistema operativo comentadas anteriormente.
Tabla 1. Comparación de las características de los SO
Empresa
Lenguaje
Herramienta de
iOS
Android
Apple
Google
Objective-C,
Java
Python, Swift
xml
Xcode
programación
Extensión app
.ipa
Extensión texto
.strings
trad.
.xliff
Descompilación
Android
Studio
BlackBerry OS
RIM
Java, C++
Cambio de
Apktool,
extensión a
Android
.rar
Multitool
Mobile
Microsoft
C# y Visual Basic
.NET
JavaME,
Windows SDK,
BlackBerry
Windows App
JDE
Studio
.cod
.xap
.apk
.xml
Windows 10
.ts
.rrh y .rrc
.resx
Coddec (poco
Telerik
fiable)
JustDecompile
Windows Phone
Emulador
iEmu
BlueStacks
BlackBerry
Emulator, Build
JDE
10240 de Windows
10 Mobile
TAO l0n
Tiendas
Xcode
Apple App
Store
Cualquier
BlackBerry
TAO
Java Plug-in
compatible
for Eclipse
con .xml
Crowdin
Google Play
Blackberry
Windows Phone
App World
Marketplace
Fuente: Elaboración propia
20
Notepad++, Jedit
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.
3.2.3 Implicación en la creación de apps
El primer factor que hay que tener en cuenta para permitir la adaptación del
producto a otros países o regiones es la internacionalización. El proceso de
internacionalización se podría dividir en dos: la creación de un código fuente lo más
adaptable posible a las diferentes lenguas y la creación de la documentación. A
continuación, vamos a tratar los aspectos que se han de tener en cuenta en el proceso de
internacionalización, casi todos ellos relacionados con un buen desarrollo del código
fuente de la app.
 Convivencia del lenguaje natural y el lenguaje de programación. Hace unos
años, el texto que incluía un programa de software se encontraba incrustado en
los archivos que contenían el código. Para facilitar y mejorar el proceso de
internacionalización, los desarrolladores comenzaron a aislar el texto traducible
en un archivo aparte que se vinculaba con los archivos que contenían el código
mediante referencias dentro de estos. De esta forma, el texto traducible era más
fácil de localizar y se minimizaba el riesgo de que el traductor-localizador
estropeara alguna cadena (o string) por error.
 Limitación
de
espacio
en
las
interfaces.
Una
aplicación
bien
internacionalizada contará con botones, cuadros de diálogos y menús con
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).
Fig. 1. Captura de la app Facturas
 Redacción de contenido mediante variables. El uso de las variables simplifica
mucho el código, pero a veces dificulta el proceso de traducción por falta de
contexto. El localizador deberá saber a qué se refiere cada variable para procurar
la traducción más correcta y precisa posible e introducirlas correctamente para
evitar problemas de funcionalidad. Hay ocasiones en las que cambiando el orden
de las palabras, logramos una traducción correcta sin necesidad de saber
exactamente a qué se refiere cada variable (véase la Fig. 2). También es
importante saber ubicarlas en los archivos, ya que a veces pueden encontrarse
lejos de las frases en las que se utilizan y quedarse sin traducir.
Fig. 2. Fragmento de código con variables de una app en inglés y en español.
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.
 Falta de contexto. Muchas veces las cadenas de texto consistirán en palabras
fuera de contexto, como, por ejemplo, los elementos de un menú. Para facilitar
la tarea de localización, el desarrollador puede añadir información en el código
que ayude a contextualizar esas palabras y procurar una traducción más precisa
y correcta. En la siguiente imagen (Fig. 3) podemos ver un error por falta de
contexto en el que se ha traducido «Home» por «Inicio», cuando, por contexto,
significaría «Casa».
Fig. 3. Captura de pantalla de la app Facebook. Fuente: https://goo.gl/XkOtlu
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 UTF16). 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.
Fig. 4. Captura de pantalla de información sobre Android 6.0.1 en alemán.
Fuente: https://goo.gl/IQMxLU
 Espacios adicionales. Debemos tener cuidado y no borrar nunca los espacios
adicionales, ya que pueden utilizarse para justificar columnas o concatenaciones
de cadenas de texto.
 Otros elementos no traducibles. Debemos prestar atención a las cadenas de
texto en mayúscula, pues es probable que no se traduzcan. Tampoco debemos
24
traducir palabras unidas por guiones bajos (palabras_con_underscore) y palabras
apocopadas (o CamelWords).
Si nos encontramos con una aplicación mal internacionalizada, o sin siquiera
tener en cuenta la internacionalización, es muy probable que nos encontremos el texto
traducible incrustado en el código. En este caso, el proceso de localización será más
arduo, porque habrá que tener más conocimientos sobre programación para diferenciar
el texto que se debe traducir y el texto que no debe tocarse y porque las herramientas de
traducción asistida por ordenador no siempre serán compatibles con ese lenguaje, por lo
que el texto tendrá que editarse desde el mismo programa de desarrollo o desde un
editor de programación como Notepad++, por ejemplo. No obstante, si la aplicación
está bien internacionalizada, el texto traducible se habrá aislado en un archivo aparte
que, en función del sistema operativo, tendrá una extensión diferente.
3.3 El proceso de localización de una app
En este apartado veremos en qué consiste cada extensión de archivo traducible,
qué aspecto tiene la estructura del lenguaje y de qué forma hay que tratar el archivo para
traducirlo.
3.3.1 iOS: .strings y .xliff
Para el sistema operativo iOS, existen dos tipos de archivos traducibles, .strings
y .xliff (acrónimo de «XML Localization Interchange File Format», formato de archivo
de intercambio de localización XML).
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.
<?xml version="1.0" encoding="UTF-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2"
xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasisopen.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd">
<file original="MyApp/Base.lproj/Main.storyboard" datatype="plaintext"
xml:space=“preserve” source-language="en" target-language="fr">
<body>
<trans-unit id="app.name">
<source>TODO List</source>
<target>TODO List</target>
</trans-unit>
<trans-unit id="app.login.text">
<source>Enter your credentials below to login</source>
<target>Entrez vos identifiants ci-dessous pour vous connecter:</target>
</trans-unit>
<trans-unit id="app.login.message.success">
<source>Login successful !\nWelcome back %s !</source>
<target>Connexion réussie !\nBon retour %s !</target>
</trans-unit>
<trans-unit id="app.login.message.error">
<source>Make sure you've entered the correct username and password</source>
<target>Assurez-vous que vous avez entré le nom d'utilisateur correct et le mot
de passe</target>
</trans-unit>
<trans-unit id="app.login.password.forget">
<source>I forgot my password</source>
<target>J'ai oublié mon mot de passe</target>
</trans-unit>
<trans-unit id="app.login.password.reset">
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 email 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” sourcelanguage="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>
3.3.2 Android: .xml
El XML (Extensible Markup Language) es un lenguaje de etiquetas, es decir,
cada paquete de información está delimitado por dos etiquetas, como se hace también
en el lenguaje HTML, pero separa el contenido de la presentación. Se trata un lenguaje
estándar para el intercambio de información entre diferentes programas de una manera
segura, fiable y libre, ya que no pertenece a ninguna compañía.
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.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">fi-es</string>
<string name="appNameSablon">{0} Dictionary</string>
<string name="rateTitle">Rate {0}</string>
<string name="rateCmd">Rate it</string>
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
All content is licensed under GFDL.
http://en.wikipedia.org/wiki/GNU_Free_Documentation_License"</string>
<string name="lstOtherApps">de_en,fr_en,fi_en,sv_en</string>
<string name="de_en_name">German-English Translate Dictionary</string>
<string name="de_en_url">http://asdasd.com</string>
<string name="fr_en_name">French-English Translate Dictionary</string>
<string name="fr_en_url">http://asdasd.com</string>
<string name="fi_en_name">Finnish-English Translate Dictionary</string>
<string name="fi_en_url">http://asdasd.com</string>
<string name="sv_en_name">Swedish-English Translate Dictionary</string>
<string name="sv_en_url">http://asdasd.com</string>
<string name="unzippingDatabase">Unzipping database...</string>
<string name="noSdCardAvailable">No SD card available. Please install a SD
card and start again.</string>
<string name="notEnoughSpaceAvailableOnSdCard">Not enough space on {1},
about {0} MB required.</string>
<string name="errorCopyingDatabase">Error copying database</string>
<string name="unableToUnzipDatabase">Unable to unzip database</string>
<string name="unableToOpenDatabase">Unable to open database</string>
<string name="databaseLanguageError2">Database error: Could not find two
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>
3.3.3 Blackberry: .ts
La estructura de este tipo de archivos es básicamente la de un archivo .xml. La
etiqueta <source> contiene la cadena por defecto, y la etiqueta <translation> es la que
se deberá editar para que contenga la cadena traducida para ese idioma. A continuación,
podemos ver un ejemplo de la estructura de un archivo .ts con la traducción de inglés a
español.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="es_ES">
<context>
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]
Si este archivo se ha generado al añadir una lengua nueva, cada etiqueta
<translation> contendrá el atributo type="unfinished", que deberá eliminarse al
añadir la traducción; de lo contrario, no se utilizará esta traducción.
3.3.4 Windows 10 Mobile: .resx
Un archivo .resx es un archivo de recursos que consiste en entradas XML, que
especifican objetos y cadenas en etiquetas XML. En una aplicación de Windows 10
Mobile puede haber archivos .resx locales y globales. Los recursos locales se guardan
en carpetas App_LocalResources y los recursos globales se guardan en una única
carpeta llamada App_GlobalResources. El nombre de un fichero de recursos local
será NombrePagina.aspx[.idioma[-cultura]].resx, por ejemplo: Categorias.aspx.engb.resx. El texto traducible se encuentra entre las etiquetas <value> y </value>.
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++.
A continuación, podemos ver un ejemplo de la estructura de un archivo RESX.
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns=""
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"
msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms,
Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
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.
La descripción de este proceso se ofrece meramente con fines de aprendizaje y
práctica; en ningún momento se insta a que los traductores-localizadores conviertan en
norma el proceso de descarga y descompilación de aplicaciones móviles a nivel
profesional, pues el cliente le proporcionará los archivos.
4.1 Búsqueda y descarga de la aplicación
Cualquier aplicación que se encuentre disponible en Google Play (Fig. 5) se
puede descargar y descompilar. Una forma fácil de conseguir el archivo .apk de la
aplicación es copiando su enlace de Google Play en el cuadro que aparece en el
siguiente sitio web: https://apps.evozi.com/apk-downloader/ y descargándola o
instalándola en un dispositivo móvil y transfiriéndola al ordenador, ya sea desde una
app (como APK Extractor) o conectando el móvil al ordenador y buscando en las
carpetas.
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.
Para descompilar el archivo, hacemos clic en el icono de Android o abrimos el
menú File\Open \APK, como se muestra en la siguiente captura de pantalla (Fig. 6).
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.
Posteriormente, nos aparecerá un cuadro para que indiquemos la ruta en la que
deseamos guardar los archivos de la apk descompilada. Si no la cambiamos, estos
archivos se guardarán en la misma carpeta en la que se encuentra el archivo .apk.
Hacemos clic en el botón Decode (Descodificar) para que comience la
descompilación, como se muestra en la siguiente imagen (Fig. 8).
40
Fig. 8. Ventana emergente con información sobre la descompilación.
Si se produce algún error durante la descompilación, aparecerá todo el proceso
de descodificación en el cuadro de la consola (el cuadro negro inferior) y nos indicará el
motivo del error. Por otra parte, si al final del mensaje de la consola aparece «Could not
find the main class: brut.apktool.Main. Program will exit», es muy probable que el error
se deba a que el ordenador no cuenta con la versión más reciente de Java. Así,
deberemos comprobar la versión que tiene el ordenador y, si fuera necesario, instalar la
última versión de Java, reiniciar APK Studio y volver a repetir el proceso.
Si el proceso se está ejecutando correctamente, aparecerá la siguiente pantalla
(Fig. 9).
41
Fig. 9. Proceso de descompilación en curso.
Sabremos que el proceso de descompilación se ha realizado correctamente
cuando aparezca el proyecto correspondiente al archivo .apk en la interfaz de APK
Studio, como se muestra en la siguiente imagen (Fig. 10).
42
Fig. 10. Proceso de descompilación realizado correctamente.
4.3 Creación de la carpeta values y gestión de archivos traducibles
Tras haber descompilado la aplicación, debemos ir a la carpeta donde se han
guardado todos los archivos del proyecto y buscar la carpeta values siguiendo la ruta
res\values. A continuación, debemos hacer una copia de esta carpeta y añadirle el
código de la lengua a la que vamos a traducir nuestra app. En este caso, la carpeta se
llamaría values-es. También cabe la posibilidad de que ya existe la carpeta values-es,
pero el texto de los archivos no esté traducido o esté traducido parcialmente. En este
caso, podemos completar la traducción usando los archivos existentes o borrar la
carpeta y crearla de nuevo, por si acaso no se encuentra el texto original completo.
Dentro de la carpeta values-es encontraremos el archivo o los archivos
traducibles. Generalmente, el texto se encuentra en el archivo strings.xml, pero en
ocasiones es posible que nos encontremos con otros archivos que también contengan
texto, como arrays.xml (que contiene listas de objetos), dimens.xml y styles.xml, entre
otros. Estos dos últimos (y cualquier otro archivo .xml que no contenga texto traducible)
son irrelevantes para la traducción, por lo que, al crear la carpeta values-es, los
43
borraremos. No obstante, los archivos strings.xml y arrays.xml deberán permanecer en
la carpeta con el texto traducido.
A continuación, podemos ver la estructura de la carpeta values y todos los
archivos .xml que contiene la app con la que estamos trabajando (Fig. 11).
Fig. 11. Estructura de la carpeta values de una app de Android.
4.4 Traducción de archivos .xml traducibles
Una vez que hemos encontrado los archivos .xml traducibles, en este caso,
strings.xml y arrays.xml, podemos proceder a su traducción de varias formas: podemos
traducirlos desde una herramienta TAO que sea compatible con esta extensión o
podemos abrir los archivos desde un editor de código de programación (como
Notepad++) e ir modificando el texto por la traducción. Tratándose de la extensión
.xml, la compatibilidad no será un problema, pues está creado con el fin de ser
compatible en el mayor número de plataformas posible.
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.
En la siguiente imagen (Fig. 12) podemos ver cómo se presentaría el texto
traducible si se gestionara mediante la herramienta de traducción asistida SDL Trados
2015.
Fig. 12. Vista de archivo xml desde SDL Trados 2015.
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.
Como podemos ver en las figuras 13 y 14, en el archivo strings.xml, el texto
traducible se encontrará entre las etiquetas <string> y </string>, mientras que en el
archivo arrays.xml, se encontrará entre las etiquetas <item> y </item>.
Fig. 13. Vista de archivo strings.xml desde Notepad++.
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.
Para compilar la aplicación, debemos abrir de nuevo el programa APK Studio y
seguir la ruta File\Open\Directory, como se muestra en la siguiente imagen (Fig. 15).
47
Fig. 15. Ruta para compilar la aplicación.
A continuación, aparecerá una ventana en la que debemos buscar el archivo
.yml, que se encuentra en la carpeta de la aplicación descompilada, como se muestra en
la siguiente imagen (Fig. 16). Cuando encontremos el archivo, lo seleccionamos y
hacemos clic en Abrir.
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.
4.6 Firma de la aplicación
Para firmar la aplicación, utilizaremos el programa APK Signer, que nos
podemos descargar del siguiente enlace: https://goo.gl/aJdD3U. Una vez que se haya
descargado, descomprimimos el archivo .zip y ejecutamos el archivo .jar que contiene.
Entonces nos aparecerá un cuadro que debemos rellenar con la información
correspondiente:
1. En el primer campo (JDK Path), tenemos que seleccionar la ruta en la que se
encuentra el JDK (no JRE) que tiene nuestro ordenador, que debe ser una
versión superior a la 6. Este archivo se encuentra en la ruta C:\Archivos de
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).
Fig. 17. Selección de la ruta del JDK.
2. En el campo Target file de la pestaña Key Generator, hacemos clic en [Save
as…], damos un nombre y una ubicación al archivo de firma (keyfile) que
tenemos que crear y hacemos clic en Guardar.
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.
4. Escribimos las contraseñas (password y alias password) que deseemos.
Estas deben tener más de seis caracteres y pueden ser la misma. Las
repetimos en los campos de la derecha para confirmarlas.
5. Dejamos el campo validity con el dato «25».
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.
7. Vamos a la pestaña Signer, hacemos clic en Load Keyfile, buscamos el
archivo de firma que se acaba de generar y lo cargamos.
8. Escribimos la contraseña y la contraseña de alias. El campo Alias se rellenará
automáticamente.
9. Hacemos clic en [Load target file…] y cargamos el archivo .apk que se
generó en la compilación. A continuación, hacemos clic en Sign!
Si no se produce ningún error, se generará la aplicación firmada, que incluirá la
marca “SIGNED”, en la misma carpeta en la que se encontraba el .apk compilado. Tras
esto, ya podemos abrir el .apk desde el emulador y probar la aplicación.
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.
Posteriormente, se instalará la aplicación y su icono nos aparecerá en la pantalla
principal. Al hacer clic en el icono se nos abrirá la aplicación en otra pestaña y
podremos comenzar a probarla, comprobando que todo el texto está traducido y cabe
perfectamente en el cuadro de diálogo o botón en el que se encuentra.
Debemos tener en cuenta que la aplicación se mostrará en el idioma que esté
elegido para la interfaz de BlueStacks. Si deseamos ver la aplicación en otro idioma,
debemos acceder al menú Configuración (haciendo clic en el icono de tuerca que
aparece en la parte superior derecha de la pantalla), hacer clic en Cambiar idioma y
seleccionar el idioma deseado.
Mientras estamos probando la aplicación, podemos tener los archivos de texto
traducible (strings.xml y arrays.xml) para ir corrigiendo los errores a medida que los
vamos viendo. Cuando lo hayamos probado y corregido todo, debemos guardar los
cambios en los archivos .xml y repetir el proceso de compilación y firma de la
aplicación (véanse los apartados 4.5 y 4.6).
Recomendamos volver a probar la aplicación después de haberla modificado y
compilado de nuevo para verificar que se han resuelto todos los problemas. Para instalar
la versión nueva de la aplicación en BlueStacks, primero debemos desinstalar la
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.
Aunque la base del proceso de desarrollo, internacionalización y localización sea
la misma, van apareciendo diferentes lenguajes de programación y diferentes
plataformas de desarrollo que permiten crear aplicaciones híbridas que combinan varios
lenguajes de programación (nativos y web) con la intención de ahorrar tiempo y costes.
De hecho, todo avance que se produce en este ámbito viene motivado por el mismo
interés: crear aplicaciones de la forma más rápida y barata posible para el mayor número
de plataformas posible. Esto se consigue simplificando y facilitando el proceso de
desarrollo de aplicaciones mediante el uso de herramientas de desarrollo y lenguajes
multiplataforma, de forma que se escriba el código en un lenguaje fácil y versátil una
sola vez y luego sea compatible y se pueda ejecutar en múltiples plataformas.
Desde el punto de vista de la localización, podemos ver que la mayoría de las
aplicaciones móviles que encontramos en las tiendas en línea están bien
internacionalizadas y que el texto traducible se encuentra aislado en un archivo aparte,
que suele tener la estructura de un archivo .xml. Esto supone una gran ventaja para el
traductor-localizador, ya que las herramientas TAO que existen actualmente son
compatibles con esta extensión de archivo y pueden facilitar y acelerar mucho el
proceso de traducción y revisión del texto traducible.
Por último, también hemos podido comprobar que desde la herramienta de
desarrollo de iOS, Xcode, se puede exportar el texto traducible en formato .xliff, que es
aún más simple y fácil de gestionar que .xml. Puede que en un futuro se ofrezca la
misma opción en los entornos de desarrollo para otros sistemas operativos móviles.
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
De la Cova, E.; Alonso Jiménez, E. (2013). Introducción a la localización: Materiales
docentes. Universidad Pablo de Olavide de Sevilla. Recuperado de: DIALNET,
https://dialnet.unirioja.es/servlet/libro?codigo=557492
Guerra Maya, C. (2011). La localización de un software: Principios básicos para no
morir en el intento. Recuperado de: https://goo.gl/tiJon1
iOS
Developer
Library
(2015).
Localizing
Your
App.
Recuperado
de:
https://goo.gl/aoFbhn
Jimenez Ramalho, M. (2015). Gestión de traducción de aplicaciones móviles en
diferentes
idiomas.
Universidad
de
Granada.
Recuperado
de:
http://hdl.handle.net/2117/77671
Lachat Leal, C. (2015). Localización de aplicaciones: estrategias de cooperación con
los desarrolladores. Asociación Ibérica de Estudios de Traducción e Interpretación
(AIETI). Recuperado de: http://hdl.handle.net/10481/35067
Luna, F. (2013). Desarrollo BlackBerry 10 – Cascades. Datta Maganize. Recuperado
de: http://www.dattamagazine.com/desarrollo-blackberry-10-cascades/
Martínez Robledo, M. I. (2004). La tecnología multimedia: enseñanza de lenguas,
terminología y traducción. (Tesis doctoral). Universidad de Granada. Recuperado
de: http://digibug.ugr.es/bitstream/10481/4574/1/TESIS%20DOCTORAL.pdf
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
Muccini, H.; Di Francesco, A.; Esposito, P. (2014). Software Testing of Mobile
Applications: Challenges and Future Research Directions. University of L’Aquila,
Italia. Recuperado de: reposto.di.univaq.it/aigon2/index.php/attachments/single/133
Pérez, D. (2016). Maru OS, convergencia entre PC y móvil: Continuum para Android.
El Androide libre. Recuperado de: http://goo.gl/rXJsEJ
Rivera González, I. C. (2003). Desarrollo de Aplicaciones para Dispositivos Móviles.
Recuperado de: https://goo.gl/e12Aa3
Roturier,
J. (2015). Localizing Apps: A Practical Guide for Translators and
Translation Students. Recuperado de: http://goo.gl/l0KX0X
Seghiri, M. (2013). La localización del inglés al español de aplicaciones para
dispositivos móviles inteligentes. Recuperado de: http://hdl.handle.net/10630/6437
Soto, M. (2014). Lenguajes de programación: ¿Cuál prefiere el desarrollador de
aplicaciones móviles? Tecnobitt. Recuperado de: http://goo.gl/EJ1lLA
Statista (2016). Apple: most popular app store categories 2016. Recuperado de:
http://goo.gl/0Ltf5k
Tercedor, M. (2005). Aspectos culturales en la localización de productos multimedia.
Recuperado de: http://goo.gl/X4Q5wl
Zamora, J. A. (2015). Eclipse ha muerto, larga vida a Android Studio. El androide libre.
Recuperado de: http://goo.gl/xkSIwk
56
Descargar