О плагине автоперевода

Плагины автоматического перевода поддерживаются начиная с версии 1.6.2, однако мы только сейчас открыли интерфейс для разработчиков. Для создания плагинов вы должны разработать автономное приложение, которое может получить запрос на перевод, выполнить его и затем возвратить результат. Вот простое описание того, как разработать плагин перевода.

 

Получение запроса на перевод

Мы передаём запрос перевода через TranslateItem, который определяется как:

 

package com.gmail.heagoo.apkeditor.translate;

 

import java.io.Serializable;

 

// ДОЛЖНО быть определено как здесь, не может быть proguarded

открытый класс TranslateItem использует 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;

    }

}

 

И, пожалуйста, используйте следующий код, чтобы получить все передаваемые параметры:

    @Override

    protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       // ...

       Intent intent = getIntent();

       Bundle bundle = intent.getExtras();

       // Код целевого языка, например "-de"

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

       // Переведённые элементы также проходят, так что можно будет пересмотреть их

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

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

       // Непереведённые элементы, которые должны быть переведены

           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;

    }

 

Получение результата перевода

После выполнения перевода вы должны вернуть результат, используя следующий код:

 

    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);

       }

    }

 

Разрешения AndroidManifest

Запрашиваемые разрешения (так мы сможем использовать онлайн-переводчики):

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

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

 

И, чтобы APK Editor мог найти плагин, вы должны декларировать активность:

       <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>