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