Tema: [ TUTORIAL ] Traduccion de ROMs
Ver Mensaje Individual
  #1  
Viejo 02/11/10, 23:53:02
Array

[xs_avatar]
vauss vauss no está en línea
Flaseador compulsivo
· Votos compra/venta: (6)
 
Fecha de registro: may 2007
Localización: Valencia City
Mensajes: 6,272
Modelo de smartphone: Iphone7+Nexus7 2013
Tu operador: Vodafone
Traduccion de ROMs

En vista a que tenemos varios "intrepidos" por el foro, me animo a hacer un pequeño manual desde mi poca experiencia pero que de momento me ha servido para realizar mi primera ROM

Requisitos:
- 7zip
- Apktool
- Notepad2
- Y saber algo de ingles, todo no lo voy a explicar y es minimamente necesario para entender el funcionamiento del apktool (por ejemplo)

Todos estos programas se encuentran facilmente con ayuda de google.

Proceso:
1. Por supuesto descargar la rom a traducir y los programas necesarios.

2. Extraer los apks a traducir
Abrimos con 7zip el archivo .zip de la ROM y sacamos los apks que queremos traducir. Hay que guardar el archivo zip orginal ya que mas tarde susstituiremos las apks "viejas" por las traducidas. Nunca podremos crear un zip nuevo si no es con la cocina ya que se pierde la compresion y el "firmado"

3. Traducir los apks
Necesitamos el apktool, no voy a explcar como funciona. En xda y en la web oficial ya esta explicado.
Se debe decompilar el apk y nos creara varias carpetas, por ejemplo algo asi:

[carpeta] res
[carpeta] smali
AndroidManifest.xml
apktool.yml


La parte a traducir siempre esta en la carpeta res, dentro de ella veremos algo asi:

[carpeta] anim
[carpeta] color
[carpeta] color-finger
[carpeta] drawable
[carpeta] drawable-hdpi
...
[carpeta] values
[carpeta] values-fr
[carpeta] values-zh-rCN


Pueden haber más carpetas pero con esto nos valdra para entenderlo. vamos a ir a las carpetas values. El resto para traducir no sirven...

carpeta values --> es la carpeta original, la que utilizaremos para traducir (normalmente en ingles o chino algunas partes si hablamos de la miui)
carpeta values-fr --> carpeta traduccion francesa
el resto de values son de otros idiomas: italiano, aleman, ingles, ect

Dependiendo de la apk, dentro del values original pueden haber hasta 8-9 archivos pero nosotros nos centraremos en el strings.xml, arrays.xml y dependiendo de la apk es posible que tambien tengamos un plurals.xml o algun otro que requiera de traduccion.
¿como lo sabemos? indagando y comparando con las otras traducciones es el mejor camino, si en la version francesa solo esta el strings y el arrays es posible que solo haga falta eso, pero si despues de traducir, compilar y flasear nos encontramos con cosas en otro idioma de esa aplicacion es que algo nos falta.

Aclarado esto, pasamos a traducir. Creamos una carpeta values-es junto al resto de values y dentro copiamos los archivos necesarios a traducir (strings, arrays, etc...)
Se abre con notepad2 y traducimos.

Es facil saber que hay que traducir, las cadenas son asi:
<string name="new_message">New message</string>
Y se traduce lo que esta dentro de los simbolos de mayor que y menor de algebra ><
<string name="new_message">Nuevo mensaje</string>
Cuando lo tenemos todo traducido se le da a control+s (guardar) y podemos proceder a compilar con apktool

Aviso: en los arrays hay unos codigos llamados values (si se repite el nombre) y estos no se deben traducir. Ejemplo:

<string-array name="led_color_entries">
<item>Blanco (por defecto)</item>
<item>Verde</item>
<item>Rojo</item>
<item>Azul</item>
<item>Amarillo</item>
<item>Cyan</item>
<item>Magenta</item>
<item>Rosa</item>
<item>Naranja</item>
<item>Azul cielo</item>
</string-array>
<string-array name="led_color_values">
<item>white</item>
<item>green</item>
<item>red</item>
<item>blue</item>
<item>yellow</item>
<item>cyan</item>
<item>\#800080</item>
<item>\#ffc0cb</item>
<item>\#ffa500</item>
<item>\#add8e6</item>


Los entries los podriamos traducir, los values no. El OS los busca para ejecutar las ordenes que le damos. Si traducimos el green (por ejemplo) al elegir el trackball verde nos daria un FC.


4.Añadir esta traduccion a nuestro apk original.
Tras compilar con apktool nos aparecen 2 carpetas junto a las carpetas res y smali. Son las carpetas build y dist. Dentro de la carpeta dist tenemos el nuevo apk pero este apk nunca vale, una vez cocinado siempre da error la aplicacion.
¿como solucionamos esto?
Abrimos con 7zip los 2 apk, el traducido y el original (son 2 ventanas de 7zip diferentes, sin extraer, solo abrir) y copiamos el archivo resources.arsc desde el nuevo al orginal (sustituyendo el que hay alli) de una ventana a otra sin sacar el archivo a ninguna carpeta ni escritorio.

No tengo claro si esto lo estoy explicando bien, el objetivo es pasar ese nuevo resources.asrc de un apk a otro sin que toque nada mas. De un archivo a otro. Una vez pasado veremos que el tamaño del apk original ha cambiado

5. Meter los apks traducidos en el zip.
Pues nada mas facil que abrir el zip con 7zip y arrastrar dentro el apk sobreescribiendo el antiguo. Aqui tampoco hay que descomprimir.

6. Una vez traducidos todos los apks ---> Cambiar el idioma por defecto de la ROM
De momento hasta aqui. Otro dia os pongo lo del idioma


Esto y bastante mas lo aprendi en 2 dias, asi que no teneis escusa.
__________________
Apple Iphone 7 32Gb + Asus Nexus 7 2013 WiFi 32GB


Última edición por vauss Día 03/11/10 a las 10:24:33.
Responder Con Cita
Los siguientes 3 usuarios han agradecido a vauss su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]