Traducir Aplicaciones

logo

Todos nos hemos encontrado alguna vez con alguna ROM, aplicación o juego al que le hemos echado en falta tenerlo en nuestro propio idioma, el castellano. Hoy vamos a mostraros de un modo muy sencillo como incorporar otro idioma a una aplicación. En mi caso todo empezó el día que me propuse traducir por completo una ROM de la que hemos hablado ya aquí en 4ndroid, la RoDrIgUeZ, de xda-developers. Posteriormente he seguido traduciendo otras ROMs y aplicaciones de las cuales hoy en día siguen teniendo mi soporte como es el caso de QuickPic.

Para poder añadir un idioma a una aplicación con Windows necesitamos varias herramientas, todas ellas fácilmente localizables con Google:

  • Apktool
  • Apktool Windows Instaler
  • Java
  • Notepad2
  • 7zip

Tanto el Apktool como el Apktool Windows Instaler (aapt.exe, apktool.bat y apktool.jar) hay que copiarlo directamente en “c:WindowsSystem32”, de este modo siempre tendremos indexado esta aplicación y podremos, desde cualquier directorio, llamarlo para trabajar con el.

1.- Si lo que queremos traducir es una ROM entera usaremos el 7zip para extraer de ella las apks (aplicaciones) que queremos traducir. Si lo que queremos hacer es simplemente traducir una apk en concreto podemos pasar directamente al paso 4. Ojo, no debemos descomprimir el zip puesto que si así lo hacemos quedará inutilizado al no estar firmado y haber perdido su compresión.

2.- Ahora necesitamos extraer el “framework-res.apk” de la ROM y copiarlo en una carpeta de fácil acceso (por ejemplo “c:Temp”).

Inicio

3.- Abrimos la consola del DOS (CMD) y escribimos:

apktool if framework-res.apk

Con esto lo que hacemos es asegurarnos que los recursos necesarios que usa la aplicación y están enlazados con el núcleo de la ROM (“framework-res”) se enlazarán correctamente y no tendremos errores al decompilar (desmontar) o compilar (montar) la aplicación.

4.- Colocamos nuestra apk en una carpeta de fácil acceso tipo “c:Temp”. Para poder explicarlo de modo sencillo vamos a tomar como ejemplo la aplicación  “calculator.apk” que ya lleva el idioma español incorporado. Luego cada uno pondrá el nombre de la aplicación que quiere traducir en lugar de la “calculator.apk” que tomamos como ejemplo. Abrimos la consola del DOS (CMD) y nos situamos en la carpeta donde hemos colocado la apk (si habéis seguido el ejemplo sería en “c:Temp”). Una vez allí dentro escribimos:

apktool d calculator.apk

En este momento se pondrá el motor del apktool en marcha y procederá a decompilar la apk. Una vez haya finalizado el proceso nos habrá creado una carpeta con el nombre de la aplicación que hemos decompilado.

CMD decompiled

5.- Abrimos la carpeta nueva que se nos ha creado. Dentro encontraremos que nos ha creado varias subcarpetas (res, smail, AndroidManifest.xml y apktool.yml). La subcarpeta que nos interesa a nosotros es la que pone “res”. Dentro de esta subcarpeta  se haya la parte de los  idiomas y los gráficos. (como el tema que nos ocupa hoy es la traducción vamos a dejar la parte gráfica para explicarlo en otra ocasión).

6.- Abrimos la subcarpeta “res” y vemos que existen otras muchas subcarpetas. A nosotros nos interesa la carpeta “values”. La carpeta “values” sería la principal y es la que coje el sistema por defecto para poder entender que es lo que se le está pidiendo. Luego vendría la propia del idioma que tiene el teléfono seleccionado por defecto, en nuestro caso sería “values-es”.

Res decompilada

7.- Ahora cogemos la carpeta “values” y hacemos una copia de la misma añadiendo la terminación “–es”de modo que nos quedará así “values-es”.

8.- Abrimos la carpeta que hemos creado, “values-es”, y vemos que dentro hay varios archivos (en nuestro caso solo uno). El archivo que siempre se ha de traducir es el “strings.xml”. Las traducciones deben ser las que están dentro de los símbolos “<” y” >” y lo haremos usando el notepad2. En otras ocasiones también es necesario traducir el “arrays.xml” y “plurals.xml”. Con estos archivos debemos llevar cuidado ya que no se deben traducir todos los strings. Sólo aquellos que no estén denominados como values. Para saber cuales se deben traducir y cuáles no lo mejor es cogerse otra carpeta de otro idioma (tipo “values-it” por ejemplo) y ver que cadenas se han traducido y cuáles no. Si se tradujera un valor que no se debe  traducir, al ejecutar la aplicación nos daría un FC.

Ejemplo:

Original     –> <string name=”basic”>Basic panel</string>

Traducido–> <string name=”basic”>Panel de funciones básicas</string>

9.- Una vez hemos traducido todas las cadenas nos queda compilar la aplicación. Para ello abrimos la consola del DOS (CMD) y nos situamos en la carpeta donde hemos colocado la apk (si habéis seguido el ejemplo sería en “c:Temp”). Una vez allí dentro escribimos:

apktool b calculator calculator-es.apk

Haciendo esto lo que hemos conseguido, si toda ha ido bien, es crear una compilación nueva con nuestra traducción incorporada llamada “calculator-es.apk”.

CMD build

10.- La aplicación creada no nos sirve como sustituta de la original que tenemos. Tened en cuenta que el uso del apktool es una manera de entrada a la aplicación por la puerta trasera, es decir, forzada, no creada por programación. Sin embargo no todo está perdido. Para solventar este problema y poder tener la aplicación traducida, debemos abrir ambas apks (original y la compilada por nosotros) con el 7zip y simplemente sustituir el archivo “resources.arsc” de nuestra compilación por el que tiene la original. Tan sencillo como arrastrar de una ventana a otra sobrescribiéndolo y listo. Ya tenemos nuestra apk con el idioma que le hemos añadido.

Resources

En otra ocasión os enseñaremos a manejar una aplicación, creada por xda-developers, que automatiza mucho más este método e incluye numerosas opciones más como, por ejemplo, el firmado de las aplicaciones o creación de zips.

Share