Über das Auto Translate Plugin

Das Auto Translate Plugin wird seit Version 1.6.2 unterstützt. Allerdings haben wir gerade für Entwickler die Schnittstelle geöffnet. Um ein Plugin zu entwickeln, müssen wir eine eigenständige App entwickeln, welche die Übersetzung durchführen und das Ergebnis weiterverarbeiten kann. Hier ist eine einfache Beschreibung für die Entwicklung eines Translate Plugins.

Anfrage nach der Übersetzung erhalten

Wir passen die Anfrage nach der Übersetzung durch TranslateItem an, welches definiert ist als:

package com.gmail.heagoo.apkeditor.translate;

import java.io.Serializable;

// Muss definiert werden, da dies nicht möglich ist

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;

}

}

Und bitte, beziehen Sie sich auf den folgenden Code, um alle übergebenen Parameter zu erhalten:

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// ...

Intent intent = getIntent();

Bundle bundle = intent.getExtras();

// Code für die Zielsprache wie z. B. "-de"

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

// Übersetzte Elemente werden auch übergeben, damit wir sie überarbeiten können

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

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

// Unübersetzte Elemente, die übersetzt werden sollen

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;

}

Ergebnis der Übersetzung

Nach der Übersetzung sollte das Ergebnis mit folgenden Code zurückgegeben werden:

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 Anforderung

Im Allgemeinen sollten wir Berechtigungen (wie wir Online-Übersetzer verwenden können) anfordern:

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

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

Und, damit APK Editor das Plugin finden kann, sollten wir es beschreiben durch:

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