Acerca de los Plugins de Traduccion Automática

El soporte para los Plugins de Traducción Automática está disponible en APK Editor desde la versión 1.6.2. Sin embargo, acabamos de abrir la interfaz a los Desarrolladores. Para desarrollar uno de estos Plugins, primero necesitaremos desarrollar una aplicación autónoma, la cual, tendría que recoger la petición de traducción, hacer la traducción, y a continuación, aplicar los resultados de esa traducción. En las líneas que siguen más abajo, Ud. puede leer una sencilla descripción sobre cómo crear un Plugin de Traducción.

 

Obtener la Petición de Traducción

Transferiremos la petición de traducción a TranslateItem, la cual ha de definirse como:

 

package com.gmail.heagoo.apkeditor.translate;

 

import java.io.Serializable;

 

// ¡ATENCIÓN: DEBE DEFINIRSE DE ESTA FORMA, Y DE NINGÚN MODO PUEDE ALTERARSE!

 

public class TranslateItem implements Serializable {

 

    private static final long serialVersionUID = -3101805950698159689L;

    public String name;

    public String originValue;

    public String translatedValue;

 

    public TranslateItem(String _n, String _o) {

       this.name = _n;

       this.originValue = _o;

    }

 

    public TranslateItem(String _n, String _o, String _t) {

       this.name = _n;

       this.originValue = _o;

       this.translatedValue = _t;

    }

}

 

– Y por favor; referirse al siguiente código para obtener todos los parámetros transferidos:

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       // ...

       Intent intent = getIntent();

       Bundle bundle = intent.getExtras();

       // Código del idioma de destino, por ejemplo, el alemán: "-de"

           this.targetLanguageCode = bundle.getString("targetLanguageCode");

       // También son transferidos los elementos traducidos, así que podremos revisarlos

           this.translatedFilePath = bundle.getString("translatedList_file");

           this.translatedList = (List<TranslateItem>) readObjectFromFile(translatedFilePath);

       // Elementos no traducidos, y que han de traducirse

           String path =bundle.getString("untranslatedList_file");

           this.untranslatedList = (List<TranslateItem>) readObjectFromFile(path);

       // ...

       }

 

    public static Object readObjectFromFile(String filePath) {

       Object result = null;

       File file = new File(filePath);

       ObjectInputStream objIn = null;

       try {

           objIn = new ObjectInputStream(new FileInputStream(file));

           result = objIn.readObject();

       } catch (IOException e) {

           e.printStackTrace();

       } catch (ClassNotFoundException e) {

           e.printStackTrace();

       } finally {

           closeWithoutThrow(objIn);

       }

       return result;

    }

 

Aplicar el Resultado de la Traducción

Después de la traducción, deberemos retornar el resultado utilizando el siguiente código:

 

    private void setResult(List<TranslateItem> stringValues) {

       Intent intent = new Intent();

       intent.putExtra("targetLanguageCode", this.targetLanguageCode);

       writeObjectToFile(this.translatedFilePath, stringValues);

       intent.putExtra("translatedList_file", this.translatedFilePath);

 

       this.setResult(RESULT_OK, intent);

    }

 

    public static void writeObjectToFile(String filePath, Object obj) {

       File file = new File(filePath);

       ObjectOutputStream objOut = null;

       try {

           objOut = new ObjectOutputStream(new FileOutputStream(file));

           objOut.writeObject(obj);

           objOut.flush();

       } catch (IOException e) {

           e.printStackTrace();

       } finally {

           closeWithoutThrow(objOut);

       }

    }

 

Requerimientos del Archivo AndroidManifest

– En general, deberíamos solicitar permisos tales como los siguientes (puesto que podemos usar Traductores On-Line):

 

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.INTERNET" />

 

– Y para que APK Editor pueda encontrar el Plugin, deberíamos declarar la actividad del siguiente modo:

 

       <activity android:name="xx.xx.TranslateActivity" android:exported="true" >

           <intent-filter>

               <action android:name="android.intent.action.VIEW" />

               <category android:name="android.intent.category.DEFAULT" />

               <data android:mimeType="application/com.gmail.heagoo.apkeditor-translate" />

           </intent-filter>

       </activity>